diff options
author | rubidium <rubidium@openttd.org> | 2008-01-12 14:10:35 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-01-12 14:10:35 +0000 |
commit | ac528411df2e42e066ab301517bd85743162f356 (patch) | |
tree | dd717901825d2b9701f42a6a4bedb895deb3017a /src/player_base.h | |
parent | cbbc53e8f84067cae60c6f2e8e00682c968430a7 (diff) | |
download | openttd-ac528411df2e42e066ab301517bd85743162f356.tar.xz |
(svn r11818) -Codechange: split player.h into smaller pieces.
Diffstat (limited to 'src/player_base.h')
-rw-r--r-- | src/player_base.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/player_base.h b/src/player_base.h new file mode 100644 index 000000000..ce068e9e4 --- /dev/null +++ b/src/player_base.h @@ -0,0 +1,97 @@ +/* $Id$ */ + +/** @file player_base.h Definition of stuff that is very close to a player, like the player struct itself. */ + +#ifndef PLAYER_BASE_H +#define PLAYER_BASE_H + +#include "road_type.h" +#include "rail_type.h" +#include "date_type.h" +#include "engine.h" +#include "livery.h" +#include "autoreplace_type.h" +#include "economy_type.h" +#include "tile_type.h" + +struct PlayerEconomyEntry { + Money income; + Money expenses; + int32 delivered_cargo; + int32 performance_history; ///< player score (scale 0-1000) + Money company_value; +}; + +struct Player { + uint32 name_2; + uint16 name_1; + + uint16 president_name_1; + uint32 president_name_2; + + PlayerFace face; + + Money player_money; + Money current_loan; + + byte player_color; + Livery livery[LS_END]; + byte player_money_fraction; + RailTypes avail_railtypes; + RoadTypes avail_roadtypes; + byte block_preview; + PlayerByte index; + + uint16 cargo_types; ///< which cargo types were transported the last year + + TileIndex location_of_house; + TileIndex last_build_coordinate; + + PlayerByte share_owners[4]; + + Year inaugurated_year; + byte num_valid_stat_ent; + + byte quarters_of_bankrupcy; + byte bankrupt_asked; ///< which players were asked about buying it? + int16 bankrupt_timeout; + Money bankrupt_value; + + bool is_active; + bool is_ai; + + Money yearly_expenses[3][13]; + PlayerEconomyEntry cur_economy; + PlayerEconomyEntry old_economy[24]; + EngineRenewList engine_renew_list; ///< Defined later + bool engine_renew; + bool renew_keep_length; + int16 engine_renew_months; + uint32 engine_renew_money; + uint16 num_engines[TOTAL_NUM_ENGINES]; ///< caches the number of engines of each type the player owns (no need to save this) +}; + +extern Player _players[MAX_PLAYERS]; +#define FOR_ALL_PLAYERS(p) for (p = _players; p != endof(_players); p++) + +static inline byte ActivePlayerCount() +{ + const Player *p; + byte count = 0; + + FOR_ALL_PLAYERS(p) { + if (p->is_active) count++; + } + + return count; +} + +static inline Player *GetPlayer(PlayerID i) +{ + assert(IsInsideBS(i, PLAYER_FIRST, lengthof(_players))); + return &_players[i]; +} + +Money CalculateCompanyValue(const Player *p); + +#endif /* PLAYER_BASE_H */ |