diff options
author | rubidium <rubidium@openttd.org> | 2008-01-09 16:40:02 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-01-09 16:40:02 +0000 |
commit | b4337eba83e34ddaac29684d78202ae9623e9240 (patch) | |
tree | 9569d5da425e71768a78a6ffdbad415f3fb38811 /src/ai/trolly/trolly.h | |
parent | a27a240b879ab555f36695ba30c9dea0e2a6817e (diff) | |
download | openttd-b4337eba83e34ddaac29684d78202ae9623e9240.tar.xz |
(svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
Diffstat (limited to 'src/ai/trolly/trolly.h')
-rw-r--r-- | src/ai/trolly/trolly.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/ai/trolly/trolly.h b/src/ai/trolly/trolly.h index 52bad9aa1..c367867f5 100644 --- a/src/ai/trolly/trolly.h +++ b/src/ai/trolly/trolly.h @@ -239,6 +239,22 @@ typedef void AiNew_StateFunction(Player *p); // ai_new.c void AiNewDoGameLoop(Player *p); +struct Ai_PathFinderInfo { + TileIndex start_tile_tl; ///< tl = top-left + TileIndex start_tile_br; ///< br = bottom-right + TileIndex end_tile_tl; ///< tl = top-left + TileIndex end_tile_br; ///< br = bottom-right + DiagDirection start_direction; ///< 0 to 3 or AI_PATHFINDER_NO_DIRECTION + DiagDirection end_direction; ///< 0 to 3 or AI_PATHFINDER_NO_DIRECTION + + TileIndex route[500]; + byte route_extra[500]; ///< Some extra information about the route like bridge/tunnel + int route_length; + int position; ///< Current position in the build-path, needed to build the path + + bool rail_or_road; ///< true = rail, false = road +}; + // ai_pathfinder.c AyStar *new_AyStar_AiPathFinder(int max_tiles_around, Ai_PathFinderInfo *PathFinderInfo); void clean_AyStar_AiPathFinder(AyStar *aystar, Ai_PathFinderInfo *PathFinderInfo); @@ -259,4 +275,64 @@ EngineID AiNew_PickVehicle(Player *p); CommandCost AiNew_Build_Vehicle(Player *p, TileIndex tile, byte flag); CommandCost AiNew_Build_Depot(Player* p, TileIndex tile, DiagDirection direction, byte flag); +/* The amount of memory reserved for the AI-special-vehicles */ +#define AI_MAX_SPECIAL_VEHICLES 100 + +struct Ai_SpecialVehicle { + VehicleID veh_id; + uint32 flag; +}; + +struct PlayerAiNew { + uint8 state; + uint tick; + uint idle; + + int temp; ///< A value used in more than one function, but it just temporary + ///< The use is pretty simple: with this we can 'think' about stuff + ///< in more than one tick, and more than one AI. A static will not + ///< do, because they are not saved. This way, the AI is almost human ;) + int counter; ///< For the same reason as temp, we have counter. It can count how + ///< long we are trying something, and just abort if it takes too long + + /* Pathfinder stuff */ + Ai_PathFinderInfo path_info; + AyStar *pathfinder; + + /* Route stuff */ + + CargoID cargo; + byte tbt; ///< train/bus/truck 0/1/2 AI_TRAIN/AI_BUS/AI_TRUCK + Money new_cost; + + byte action; + + int last_id; ///< here is stored the last id of the searched city/industry + Date last_vehiclecheck_date; // Used in CheckVehicle + Ai_SpecialVehicle special_vehicles[AI_MAX_SPECIAL_VEHICLES]; ///< Some vehicles have some special flags + + TileIndex from_tile; + TileIndex to_tile; + + DiagDirectionByte from_direction; + DiagDirectionByte to_direction; + + bool from_deliver; ///< True if this is the station that GIVES cargo + bool to_deliver; + + TileIndex depot_tile; + DiagDirectionByte depot_direction; + + byte amount_veh; ///< How many vehicles we are going to build in this route + byte cur_veh; ///< How many vehicles did we bought? + VehicleID veh_id; ///< Used when bought a vehicle + VehicleID veh_main_id; ///< The ID of the first vehicle, for shared copy + + int from_ic; ///< ic = industry/city. This is the ID of them + byte from_type; ///< AI_NO_TYPE/AI_CITY/AI_INDUSTRY + int to_ic; + byte to_type; +}; +extern PlayerAiNew _players_ainew[MAX_PLAYERS]; + #endif /* AI_TROLLY_H */ |