player.h
changeset 0 29654efe3188
child 84 1e0721c29bad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/player.h	Mon Aug 09 17:04:08 2004 +0000
@@ -0,0 +1,123 @@
+#ifndef PLAYER_H
+#define PLAYER_H
+
+typedef struct PlayerEconomyEntry {
+	int32 income;
+	int32 expenses;
+	int32 delivered_cargo;
+	int32 performance_history;
+	int32 company_value;
+} PlayerEconomyEntry;
+
+typedef struct AiBuildRec {
+	TileIndex spec_tile;
+	TileIndex use_tile;
+	byte rand_rng;
+	byte cur_building_rule;
+	byte unk6;
+	byte unk7;
+	byte buildcmd_a;
+	byte buildcmd_b;
+	byte direction;
+	byte cargo;
+} AiBuildRec;
+
+typedef struct PlayerAI {
+	byte state;
+	byte tick; // Used to determine how often to move
+	uint16 state_counter;
+	uint16 timeout_counter;
+
+	byte state_mode;
+	byte banned_tile_count;
+	byte railtype_to_use;
+
+	byte cargo_type;
+	byte num_wagons;
+	byte build_kind;
+	byte num_build_rec;
+	byte num_loco_to_build;
+	byte num_want_fullload;
+
+	byte route_type_mask;
+
+	TileIndex start_tile_a;
+	TileIndex cur_tile_a;
+	byte cur_dir_a;
+	byte start_dir_a;
+	
+	TileIndex start_tile_b;
+	TileIndex cur_tile_b;
+	byte cur_dir_b;
+	byte start_dir_b;
+
+	Vehicle *cur_veh; /* only used by some states */
+		
+	AiBuildRec src, dst, mid1, mid2;
+	
+	VehicleID wagon_list[9];
+	byte order_list_blocks[20];
+	
+	TileIndex banned_tiles[16];
+	byte banned_val[16];
+} PlayerAI;
+
+typedef struct Player {
+	uint32 name_2;
+	uint16 name_1;
+
+	uint16 president_name_1;
+	uint32 president_name_2;
+
+	uint32 face;
+
+	int32 player_money;
+	int32 current_loan;
+	int64 money64; // internal 64-bit version of the money. the 32-bit field will be clamped to plus minus 2 billion
+
+	byte player_color;
+	byte player_money_fraction;
+	byte max_railtype;
+	byte block_preview;
+	byte index;
+
+	uint16 cargo_types; /* which cargo types were transported the last year */
+
+	TileIndex location_of_house;
+	TileIndex last_build_coordinate;
+	
+	byte share_owners[4];
+	
+	byte inaugurated_year;
+	byte num_valid_stat_ent;
+	
+	byte quarters_of_bankrupcy;
+	byte bankrupt_asked; // which players were asked about buying it?
+	int16 bankrupt_timeout;
+	int32 bankrupt_value;
+
+	bool is_active;
+	byte is_ai;
+	PlayerAI ai;
+	
+	int64 yearly_expenses[3][13];
+	PlayerEconomyEntry cur_economy;
+	PlayerEconomyEntry old_economy[24];
+} Player;
+
+void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player);
+void GetNameOfOwner(byte owner, uint tile);
+uint32 CalculateCompanyValue(Player *p);
+void InvalidatePlayerWindows(Player *p);
+void AiDoGameLoop(Player *p);
+void UpdatePlayerMoney32(Player *p);
+#define DEREF_PLAYER(i) (&_players[i])
+#define FOR_ALL_PLAYERS(p) for(p=_players; p != endof(_players); p++)
+
+#define MAX_PLAYERS 8
+VARDEF Player _players[MAX_PLAYERS];
+
+#define IS_HUMAN_PLAYER(p) (!DEREF_PLAYER((byte)(p))->is_ai)
+#define IS_INTERACTIVE_PLAYER(p) (((byte)p) == _local_player)
+
+#endif /* PLAYER_H */