 a32d8553e7
			
		
	
	a32d8553e7
	
	
	
		
			
			except for German Townnames (also fix one typo on English town-names) -CodeChange: *act_paper to *act_water in Town to more resemble its use -Fix: AI players now retain AI status. Since TTDLX savegame status is not fully documented, some holes exist (AI state is set to one without a vehicle, otherwise it crashes)
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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)
 | |
| 	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 */
 |