10 #include "../stdafx.h" 11 #include "../company_func.h" 12 #include "../company_manager_face.h" 14 #include "../tunnelbridge_map.h" 15 #include "../tunnelbridge.h" 16 #include "../station_base.h" 17 #include "../strings_func.h" 21 #include "table/strings.h" 23 #include "../safeguards.h" 61 uint lips =
GB(face, 10, 4);
67 lips = lips * 15 / 16;
75 uint nose =
GB(face, 13, 3);
77 nose = (nose * 3 >> 3) * 3 >> 2;
84 uint tie_earring =
GB(face, 24, 4);
131 FOR_ALL_ROADTRAMTYPES(rtt) {
132 RoadType rt = GetRoadType(tile, rtt);
147 case STATION_WAYPOINT:
152 case STATION_TRUCK: {
154 FOR_ALL_ROADTRAMTYPES(rtt) {
155 RoadType rt = GetRoadType(tile, rtt);
199 if (tile < other_end) {
212 FOR_ALL_ROADTRAMTYPES(rtt) {
213 RoadType rt = GetRoadType(tile, rtt);
242 static const SaveLoad _company_desc[] = {
300 static const SaveLoad _company_settings_desc[] = {
321 static const SaveLoad _company_settings_skip_desc[] = {
343 static const SaveLoad _company_economy_desc[] = {
365 static const SaveLoad _company_ai_desc[] = {
396 static const SaveLoad _company_ai_build_rec_desc[] = {
405 static const SaveLoad _company_livery_desc[] = {
418 SlObject(c, _company_settings_desc);
421 SlObject(¬hing, _company_settings_skip_desc);
429 SlObject(&old_ai, _company_ai_desc);
430 for (i = 0; i != old_ai.num_build_rec; i++) {
431 SlObject(¬hing, _company_ai_build_rec_desc);
448 for (i = 0; i < num_liveries; i++) {
449 SlObject(&c->livery[i], _company_livery_desc);
450 if (update_in_use && i != LS_DEFAULT) {
451 if (c->livery[i].
in_use == 0) {
460 if (num_liveries < LS_END) {
462 memmove(&c->livery[LS_FREIGHT_WAGON], &c->livery[LS_PASSENGER_WAGON_MONORAIL], (LS_END - LS_FREIGHT_WAGON) *
sizeof(c->livery[0]));
463 c->livery[LS_PASSENGER_WAGON_MONORAIL] = c->livery[LS_MONORAIL];
464 c->livery[LS_PASSENGER_WAGON_MAGLEV] = c->livery[LS_MAGLEV];
467 if (num_liveries == LS_END - 4) {
469 c->livery[LS_PASSENGER_TRAM] = c->livery[LS_BUS];
470 c->livery[LS_FREIGHT_TRAM] = c->livery[LS_TRUCK];
475 for (i = 0; i < num_liveries; i++) {
476 SlObject(&dummy_livery, _company_livery_desc);
481 static void SaveLoad_PLYR(
Company *c)
483 SaveLoad_PLYR_common(c, c);
486 static void Save_PLYR()
489 SlSetArrayIndex(c->
index);
494 static void Load_PLYR()
504 static void Check_PLYR()
509 SaveLoad_PLYR_common(
nullptr, cprops);
514 cprops->
name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE;
522 if (cprops->
name ==
nullptr && !
IsInsideMM(cprops->
name_1, SPECSTR_COMPANY_NAME_START, SPECSTR_COMPANY_NAME_LAST + 1) &&
523 cprops->
name_1 != STR_GAME_SAVELOAD_NOT_AVAILABLE && cprops->
name_1 != STR_SV_UNNAMED &&
524 cprops->
name_1 != SPECSTR_ANDCO_NAME && cprops->
name_1 != SPECSTR_PRESIDENT_NAME &&
525 cprops->
name_1 != SPECSTR_SILLY_NAME) {
526 cprops->
name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE;
533 static void Ptrs_PLYR()
536 SlObject(c, _company_settings_desc);
542 {
'PLYR', Save_PLYR, Load_PLYR, Ptrs_PLYR, Check_PLYR, CH_ARRAY |
CH_LAST},
#define SLE_CONDNULL(length, from, to)
Empty space in some savegame versions.
static TileType GetTileType(TileIndex tile)
Get the tiletype of a given tile.
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
static TransportType GetTunnelBridgeTransportType(TileIndex t)
Tunnel: Get the transport type of the tunnel (road or rail) Bridge: Get the transport type of the bri...
static bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor=0)
Checks whether the savegame is below major.
static byte GetLockPart(TileIndex t)
Get the part of a lock.
char * name
Name of the company if the user changed it.
A female of Caucasian origin (white)
static const uint LEVELCROSSING_TRACKBIT_FACTOR
Multiplier for how many regular track bits a level crossing counts.
2.0 0.3.0 2.1 0.3.1, 0.3.2
void AfterLoadCompanyStats()
Rebuilding of company statistics after loading a savegame.
#define SLE_CONDSTR(base, variable, type, length, from, to)
Storage of a string in some savegame versions.
#define SLE_CONDREF(base, variable, type, from, to)
Storage of a reference in some savegame versions.
void NORETURN SlErrorCorrupt(const char *msg)
Error handler for corrupt savegames.
static Titem * Get(size_t index)
Returns Titem with given index.
static WaterClass GetWaterClass(TileIndex t)
Get the water class at a tile.
static T SetBit(T &x, const uint8 y)
Set a bit in a variable.
This bit set means a female, otherwise male.
A tile with road (or tram tracks)
Maximal number of cargo types in a game.
fluid_settings_t * settings
FluidSynth settings handle.
#define SLE_ARR(base, variable, type, length)
Storage of an array in every version of a savegame.
Tindex index
Index of this pool item.
flag for invalid roadtype
static Pool::IterateWrapper< Station > Iterate(size_t from=0)
Returns an iterable ensemble of all valid stations of type T.
static StringTab GetStringTab(StringID str)
Extract the StringTab from a StringID.
Contains objects such as transmitters and owned land.
A male of Caucasian origin (white)
uint32 station
Count of company owned station tiles.
static bool IsLevelCrossing(TileIndex t)
Return whether a tile is a level crossing.
RoadType
The different roadtypes we support.
static T max(const T a, const T b)
Returns the maximum of two values.
static StationType GetStationType(TileIndex t)
Get the station type of this tile.
static uint ClampU(const uint a, const uint min, const uint max)
Clamp an unsigned integer between an interval.
static bool IsLock(TileIndex t)
Is there a lock on a given water tile?
static uint GetPresentSignals(TileIndex tile)
Get whether the given signals are present (Along/AgainstTrackDir)
static bool IsInsideMM(const T x, const size_t min, const size_t max)
Checks if a value is in an interval.
LoadCheckData _load_check_data
Data loaded from save during SL_LOAD_CHECK.
uint32 CompanyManagerFace
Company manager face bits, info see in company_manager_face.h.
Load/save a reference to an engine renewal (autoreplace).
Functions/types related to saving and loading games.
uint32 signal
Count of company owned signals.
#define SLE_CONDVAR(base, variable, type, from, to)
Storage of a variable in some savegame versions.
static bool IsBuoy(TileIndex t)
Is tile t a buoy tile?
byte num_valid_stat_ent
Number of valid statistical entries in old_economy.
Highest possible saveload version.
static RoadBits GetRoadBits(TileIndex t, RoadTramType rtt)
Get the present road bits for a specific road type.
205 PR#7108 Livery storage change and group liveries.
allow control codes in the strings
CompanyPropertiesMap companies
Company information.
Statically loadable part of Company pool item.
static Owner GetTileOwner(TileIndex tile)
Returns the owner of a tile.
static uint GetTunnelBridgeLength(TileIndex begin, TileIndex end)
Calculates the length of a tunnel or a bridge (without end tiles)
uint32 road[ROADTYPE_END]
Count of company owned track bits for each road type.
Information about a particular livery.
static const uint TUNNELBRIDGE_TRACKBIT_FACTOR
Multiplier for how many regular track bits a tunnel/bridge counts.
TrackBits
Bitfield corresponding to Track.
static void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge, uint val)
Sets the company manager's face bits for the given company manager's face variable.
CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32 face)
Converts an old company manager's face format to the new company manager's face format.
bool is_ai
If true, the company is (also) controlled by the computer (a NoAI program).
bool Insert(const T &key, const U &data)
Adds new item to this map.
#define lengthof(x)
Return the length of an fixed size array.
static uint ScaleCompanyManagerFaceValue(CompanyManagerFaceVariable cmfv, GenderEthnicity ge, uint val)
Scales a company manager's face bits variable to the correct scope.
byte colour2
Second colour, for vehicles with 2CC support.
int SlIterateArray()
Iterate through the elements of an array and read the whole thing.
Handlers and description of chunk.
static bool HasSignals(TileIndex t)
Checks if a rail tile has signals.
static TrackBits GetTrackBits(TileIndex tile)
Gets the track bits of the given tile.
CompanyInfrastructure infrastructure
NOSAVE: Counts of company owned infrastructure.
uint32 rail[RAILTYPE_END]
Count of company owned track bits for each rail type.
#define SLE_END()
End marker of a struct/class save or load.
static TileIndex GetOtherTunnelBridgeEnd(TileIndex t)
Determines type of the wormhole and returns its other end.
static uint MapSize()
Get the size of the map.
static Owner GetRoadOwner(TileIndex t, RoadTramType rtt)
Get the owner of a specific road type.
bool IsStationTileBlocked(TileIndex tile)
Check whether a rail station tile is NOT traversable.
Tunnel entry/exit and bridge heads.
static Pool::IterateWrapper< Titem > Iterate(size_t from=0)
Returns an iterable ensemble of all valid Titem.
#define SLE_CONDARR(base, variable, type, length, from, to)
Storage of an array in some savegame versions.
static bool IsShipDepot(TileIndex t)
Is it a water tile with a ship depot on it?
uint32 TileIndex
The index/ID of a Tile.
StringID name_1
Name of the company if the user did not change it.
static const uint LOCK_DEPOT_TILE_FACTOR
Multiplier for how many regular tiles a lock counts.
byte colour
Company colour.
StringID president_name_1
Name of the president if the user did not change it.
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
CompanyEconomyEntry old_economy[MAX_HISTORY_QUARTERS]
Economic data of the company of the last MAX_HISTORY_QUARTERS quarters.
void SlObject(void *object, const SaveLoad *sld)
Main SaveLoad function.
Transport by road vehicle.
static uint CountBits(T value)
Counts the number of set bits in a variable.
byte in_use
Bit 0 set if this livery should override the default livery first colour, Bit 1 for the second colour...
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-nullptr) Titem.
This bit set means black, otherwise white.
Colours _company_colours[MAX_COMPANIES]
NOSAVE: can be determined from company structs.
void SlAutolength(AutolengthProc *proc, void *arg)
Do something of which I have no idea what it is :P.
static bool IsNormalRoad(TileIndex t)
Return whether a tile is a normal road.
GenderEthnicity
The gender/race combinations that we have faces for.
Statistics about the economy.
#define SLE_VAR(base, variable, type)
Storage of a variable in every version of a savegame.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
byte colour1
First colour, for all vehicles.
#define SLE_STR(base, variable, type, length)
Storage of a string in every savegame version.
static bool IsPlainRail(TileIndex t)
Returns whether this is plain rails, with or without signals.
199 PR#6802 Extend cargotypes to 64
CompanyEconomyEntry cur_economy
Economic data of the company of this quarter.
static bool IsRoadDepot(TileIndex t)
Return whether a tile is a road depot.
static RailType GetRailType(TileIndex t)
Gets the rail type of the given tile.
static bool TracksOverlap(TrackBits bits)
Checks if the given tracks overlap, ie form a crossing.
Last chunk in this array.
4.0 1 4.1 122 0.3.3, 0.3.4 4.2 1222 0.3.5 4.3 1417 4.4 1426
static void MemSetT(T *ptr, byte value, size_t num=1)
Type-safe version of memset().
uint32 water
Count of company owned track bits for canals.