Files
@ r716:ae3edbaa50e7
Branch filter:
Location: cpp/openttd-patchpack/source/town.h
r716:ae3edbaa50e7
2.4 KiB
text/x-c
(svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
and 'void' where needed, prefixed all functions, typedefs and global
vars with 'Network' and organized all externals nicely.
and 'void' where needed, prefixed all functions, typedefs and global
vars with 'Network' and organized all externals nicely.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #ifndef TOWN_H
#define TOWN_H
#include "player.h"
struct Town {
TileIndex xy;
// Current population of people and amount of houses.
uint16 num_houses;
uint32 population;
// Town name
uint16 townnametype;
uint32 townnameparts;
// NOSAVE: Location of name sign, UpdateTownVirtCoord updates this.
ViewportSign sign;
// Makes sure we don't build certain house types twice.
byte flags12;
// Which players have a statue?
byte statues;
// Sort index in listings
byte sort_index_obsolete;
// Player ratings as well as a mask that determines which players have a rating.
byte have_ratings;
uint8 unwanted[MAX_PLAYERS]; // how many months companies aren't wanted by towns (bribe)
uint8 exclusivity; // which player has exslusivity
uint8 exclusive_counter; // months till the exclusivity expires
int16 ratings[MAX_PLAYERS];
// Maximum amount of passengers and mail that can be transported.
uint16 max_pass;
uint16 max_mail;
uint16 new_max_pass;
uint16 new_max_mail;
uint16 act_pass;
uint16 act_mail;
uint16 new_act_pass;
uint16 new_act_mail;
// Amount of passengers that were transported.
byte pct_pass_transported;
byte pct_mail_transported;
// Amount of food and paper that was transported. Actually a bit mask would be enough.
uint16 act_food;
uint16 act_water;
uint16 new_act_food;
uint16 new_act_water;
// Time until we rebuild a house.
byte time_until_rebuild;
// When to grow town next time.
byte grow_counter;
byte growth_rate;
// Fund buildings program in action?
byte fund_buildings_months;
// Fund road reconstruction in action?
byte road_build_months;
// Index in town array
byte index;
// NOSAVE: UpdateTownRadius updates this given the house count.
uint16 radius[5];
};
void InitializeTown();
void ShowTownViewWindow(uint town);
void DeleteTown(Town *t);
void ExpandTown(Town *t);
bool GrowTown(Town *t);
Town *CreateRandomTown();
enum {
ROAD_REMOVE = 0,
UNMOVEABLE_REMOVE = 1,
TUNNELBRIDGE_REMOVE = 1,
INDUSTRY_REMOVE = 2
};
bool CheckforTownRating(uint tile, uint32 flags, Town *t, byte type);
#define DEREF_TOWN(i) (&_towns[i])
#define FOR_ALL_TOWNS(c) for(c=_towns; c != endof(_towns); c++)
VARDEF Town _towns[70];
VARDEF int _total_towns; // For the AI: the amount of towns active
VARDEF bool _town_sort_dirty;
VARDEF byte _town_sort_order;
VARDEF Town *_cleared_town;
VARDEF int _cleared_town_rating;
#endif /* TOWN_H */
|