#pragma once
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct Unit_ Unit;
typedef struct Player_ Player;
typedef struct Region_ Region;
typedef struct Force_ Force;
typedef struct Bullet_ Bullet;
typedef struct Game_ Game;
typedef struct Client_ Client;
typedef struct Race { int id; } Race;
typedef struct Order { int id; } Order;
typedef struct Color { int color; } Color;
typedef struct TextSize { int size; } TextSize;
typedef struct CoordinateType { int id; } CoordinateType;
typedef struct MouseButton { int id; } MouseButton;
typedef struct KeyButton { int id; } KeyButton;
typedef struct Error { int id; } Error;
typedef struct UnitType { int id; } UnitType;
typedef struct PlayerType { int id; } PlayerType;
typedef struct WeaponType { int id; } WeaponType;
typedef struct TechType { int id; } TechType;
typedef struct UpgradeType { int id; } UpgradeType;
typedef struct UnitCommandType { int id; } UnitCommandType;
typedef struct BulletType { int id; } BulletType;
typedef struct GameType { int id; } GameType;
typedef struct Position { int x; int y; } Position;
typedef struct TilePosition { int x; int y; } TilePosition;
typedef struct WalkPosition { int x; int y; } WalkPosition;
typedef struct UnitCommand {
Unit* unit;
UnitCommandType type;
Unit* target;
int x;
int y;
int extra;
} UnitCommand;
typedef struct BwString_ BwString;
typedef struct EventType { int id; } EventType;
typedef struct Event {
Position position;
void* text;
Unit* unit;
Player* player;
EventType type;
bool winner;
} Event;
typedef struct Iterator_ Iterator;
typedef struct UnitIterator_ UnitIterator;
typedef struct PlayerIterator_ PlayerIterator;
typedef struct ForceIterator_ ForceIterator;
typedef struct BulletIterator_ BulletIterator;
typedef struct RegionIterator_ RegionIterator;
typedef struct PositionIterator_ PositionIterator;
typedef struct TilePositionIterator_ TilePositionIterator;
typedef struct EventIterator_ EventIterator;
typedef struct UnitTypeIterator_ UnitTypeIterator;
typedef bool (*UnaryUnitFilter)(Unit* unit);
typedef Unit* (*BestUnitFilter)(Unit* left, Unit* right);
#ifdef __cplusplus
} #endif