src/oldloader.cpp
author rubidium
Mon, 07 Jul 2008 09:23:54 +0000
changeset 11121 c257c3ae547c
parent 11118 f66e0a4ce878
permissions -rw-r--r--
(svn r13679) -Fix [FS#2131]: saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
10429
1b99254f9607 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 10420
diff changeset
     3
/** @file oldloader.cpp Loading of old TTD(patch) savegames. */
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
92a3b0aa0946 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1537
diff changeset
     6
#include "openttd.h"
3558
36ca79c931f2 (svn r4432) Make use of map access functions
tron
parents: 3431
diff changeset
     7
#include "station_map.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     8
#include "town.h"
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     9
#include "industry.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8725
diff changeset
    10
#include "player_func.h"
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8725
diff changeset
    11
#include "player_base.h"
7048
06b931095b26 (svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents: 6987
diff changeset
    12
#include "aircraft.h"
06b931095b26 (svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents: 6987
diff changeset
    13
#include "roadveh.h"
06b931095b26 (svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents: 6987
diff changeset
    14
#include "ship.h"
06b931095b26 (svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents: 6987
diff changeset
    15
#include "train.h"
9286
d446bf9f4a68 (svn r12501) -Codechange: split signs.h.
rubidium
parents: 9282
diff changeset
    16
#include "signs_base.h"
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    17
#include "debug.h"
10222
b6919c94cc77 (svn r12754) -Codechange: split depot.h into depot_map.h, depot_func.h and depot_base.h and remove quite a lot of unneeded (before this) includes of depot.h.
rubidium
parents: 10111
diff changeset
    18
#include "depot_base.h"
7394
75d35728b8b1 (svn r10145) -Fix: make compiling with networking disabled (again) possible.
rubidium
parents: 7315
diff changeset
    19
#include "newgrf_config.h"
2814
0f534d66544e (svn r3362) Fix issue with loading old (TTD) savegames:
peter1138
parents: 2752
diff changeset
    20
#include "ai/ai.h"
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
    21
#include "ai/default/default.h"
8619
c2434269c3eb (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents: 8617
diff changeset
    22
#include "zoom_func.h"
8627
448ebf3a8291 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8619
diff changeset
    23
#include "functions.h"
8636
2b158acb649c (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents: 8635
diff changeset
    24
#include "date_func.h"
8640
1e93b81e96d2 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium
parents: 8636
diff changeset
    25
#include "vehicle_func.h"
8707
55835d8fbfcd (svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents: 8640
diff changeset
    26
#include "variables.h"
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
    27
#include "saveload.h"
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    28
#include "strings_func.h"
10272
2014f0bdc800 (svn r12804) -Codechange: move the effect vehicle handling out of vehicle.cpp
rubidium
parents: 10271
diff changeset
    29
#include "effectvehicle_base.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    30
8760
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8756
diff changeset
    31
#include "table/strings.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8756
diff changeset
    32
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    33
enum {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    34
	HEADER_SIZE = 49,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    35
	BUFFER_SIZE = 4096,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    36
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    37
	OLD_MAP_SIZE = 256 * 256
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    38
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    39
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
    40
struct LoadgameState {
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    41
	FILE *file;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    43
	uint chunk_size;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    44
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    45
	bool decoding;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    46
	byte decode_char;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    47
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    48
	uint buffer_count;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    49
	uint buffer_cur;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    50
	byte buffer[BUFFER_SIZE];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    51
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    52
	uint total_read;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    53
	bool failed;
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
    54
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    55
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    56
/* OldChunk-Type */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
    57
enum OldChunkType {
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    58
	OC_SIMPLE    = 0,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    59
	OC_NULL      = 1,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    60
	OC_CHUNK     = 2,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    61
	OC_ASSERT    = 3,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    62
	/* 8 bytes allocated (256 max) */
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    63
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    64
	OC_VAR_I8    = 1 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    65
	OC_VAR_U8    = 2 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    66
	OC_VAR_I16   = 3 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    67
	OC_VAR_U16   = 4 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    68
	OC_VAR_I32   = 5 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    69
	OC_VAR_U32   = 6 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    70
	OC_VAR_I64   = 7 << 8,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    71
	/* 8 bytes allocated (256 max) */
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    72
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    73
	OC_FILE_I8   = 1 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    74
	OC_FILE_U8   = 2 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    75
	OC_FILE_I16  = 3 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    76
	OC_FILE_U16  = 4 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    77
	OC_FILE_I32  = 5 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    78
	OC_FILE_U32  = 6 << 16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    79
	/* 8 bytes allocated (256 max) */
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    80
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    81
	OC_INT8      = OC_VAR_I8   | OC_FILE_I8,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    82
	OC_UINT8     = OC_VAR_U8   | OC_FILE_U8,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    83
	OC_INT16     = OC_VAR_I16  | OC_FILE_I16,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    84
	OC_UINT16    = OC_VAR_U16  | OC_FILE_U16,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    85
	OC_INT32     = OC_VAR_I32  | OC_FILE_I32,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    86
	OC_UINT32    = OC_VAR_U32  | OC_FILE_U32,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
    87
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    88
	OC_TILE      = OC_VAR_U32  | OC_FILE_U16,
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    89
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    90
	/**
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    91
	 * Dereference the pointer once before writing to it,
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    92
	 * so we do not have to use big static arrays.
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    93
	 */
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    94
	OC_DEREFERENCE_POINTER = 1 << 31,
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
    95
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    96
	OC_END       = 0 ///< End of the whole chunk, all 32bits set to zero
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
    97
};
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
    98
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
    99
DECLARE_ENUM_AS_BIT_SET(OldChunkType);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
   100
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   101
typedef bool OldChunkProc(LoadgameState *ls, int num);
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   102
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
   103
struct OldChunks {
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   104
	OldChunkType type;   ///< Type of field
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   105
	uint32 amount;       ///< Amount of fields
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   106
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   107
	void *ptr;           ///< Pointer where to save the data (may only be set if offset is 0)
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   108
	uint offset;         ///< Offset from basepointer (may only be set if ptr is NULL)
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   109
	OldChunkProc *proc;  ///< Pointer to function that is called with OC_CHUNK
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
   110
};
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   111
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   112
/* If it fails, check lines above.. */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   113
assert_compile(sizeof(TileIndex) == 4);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   114
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   115
extern SavegameType _savegame_type;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   116
extern uint32 _ttdp_version;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   117
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   118
static uint32 _bump_assert_value;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   119
static bool   _read_ttdpatch_flags;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   120
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
   121
static OldChunkType GetOldChunkType(OldChunkType type)     {return (OldChunkType)GB(type, 0, 8);}
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
   122
static OldChunkType GetOldChunkVarType(OldChunkType type)  {return (OldChunkType)(GB(type, 8, 8) << 8);}
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
   123
static OldChunkType GetOldChunkFileType(OldChunkType type) {return (OldChunkType)(GB(type, 16, 8) << 16);}
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   124
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   125
static inline byte CalcOldVarLen(OldChunkType type)
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   126
{
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   127
	static const byte type_mem_size[] = {0, 1, 1, 2, 2, 4, 4, 8};
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   128
	byte length = GB(type, 8, 8);
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   129
	assert(length != 0 && length < lengthof(type_mem_size));
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   130
	return type_mem_size[length];
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   131
}
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   132
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   133
/**
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   134
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   135
 * Reads a byte from a file (do not call yourself, use ReadByte())
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   136
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   137
 */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   138
static byte ReadByteFromFile(LoadgameState *ls)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   139
{
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   140
	/* To avoid slow reads, we read BUFFER_SIZE of bytes per time
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   141
	and just return a byte per time */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   142
	if (ls->buffer_cur >= ls->buffer_count) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   143
		/* Read some new bytes from the file */
4321
b763b7007162 (svn r5974) -Codechange: added casts all around the place to make Windows 64bit happy (michi_cc)
truelight
parents: 4286
diff changeset
   144
		int count = (int)fread(ls->buffer, 1, BUFFER_SIZE, ls->file);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   145
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   146
		/* We tried to read, but there is nothing in the file anymore.. */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   147
		if (count == 0) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
   148
			DEBUG(oldloader, 0, "Read past end of file, loading failed");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   149
			ls->failed = true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   150
		}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   151
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   152
		ls->buffer_count = count;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   153
		ls->buffer_cur   = 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   154
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   155
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   156
	return ls->buffer[ls->buffer_cur++];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   157
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   158
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   159
/**
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   160
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   161
 * Reads a byte from the buffer and decompress if needed
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   162
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   163
 */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   164
static byte ReadByte(LoadgameState *ls)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   165
{
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   166
	/* Old savegames have a nice compression algorithm (RLE)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   167
	which means that we have a chunk, which starts with a length
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   168
	byte. If that byte is negative, we have to repeat the next byte
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6677
diff changeset
   169
	that many times ( + 1). Else, we need to read that amount of bytes.
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   170
	Works pretty good if you have many zero's behind eachother */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   171
2453
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   172
	if (ls->chunk_size == 0) {
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   173
		/* Read new chunk */
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   174
		int8 new_byte = ReadByteFromFile(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   175
2453
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   176
		if (new_byte < 0) {
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   177
			/* Repeat next char for new_byte times */
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   178
			ls->decoding    = true;
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   179
			ls->decode_char = ReadByteFromFile(ls);
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   180
			ls->chunk_size  = -new_byte + 1;
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   181
		} else {
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   182
			ls->decoding    = false;
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   183
			ls->chunk_size  = new_byte + 1;
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   184
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   185
	}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 123
diff changeset
   186
2453
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   187
	ls->total_read++;
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   188
	ls->chunk_size--;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   189
2453
f2f861c22557 (svn r2979) Avoid unnecessary recursion
tron
parents: 2452
diff changeset
   190
	return ls->decoding ? ls->decode_char : ReadByteFromFile(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   191
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   192
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   193
static inline uint16 ReadUint16(LoadgameState *ls)
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   194
{
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   195
	byte x = ReadByte(ls);
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   196
	return x | ReadByte(ls) << 8;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   197
}
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   198
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   199
static inline uint32 ReadUint32(LoadgameState *ls)
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   200
{
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   201
	uint16 x = ReadUint16(ls);
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   202
	return x | ReadUint16(ls) << 16;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   203
}
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   204
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   205
/**
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   206
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   207
 * Loads a chunk from the old savegame
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   208
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   209
 */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   210
static bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   211
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   212
	const OldChunks *chunk = chunks;
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
   213
	byte *base_ptr = (byte*)base;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   214
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   215
	while (chunk->type != OC_END) {
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
   216
		byte *ptr = (byte*)chunk->ptr;
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
   217
		if ((chunk->type & OC_DEREFERENCE_POINTER) != 0) ptr = *(byte**)ptr;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   218
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
   219
		for (uint i = 0; i < chunk->amount; i++) {
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   220
			if (ls->failed) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   221
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   222
			/* Handle simple types */
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   223
			if (GetOldChunkType(chunk->type) != 0) {
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   224
				switch (GetOldChunkType(chunk->type)) {
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   225
					/* Just read the byte and forget about it */
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   226
					case OC_NULL: ReadByte(ls); break;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   227
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   228
					case OC_CHUNK:
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   229
						/* Call function, with 'i' as parameter to tell which item we
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   230
						 * are going to read */
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   231
						if (!chunk->proc(ls, i)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   232
						break;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   233
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   234
					case OC_ASSERT:
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
   235
						DEBUG(oldloader, 4, "Assert point: 0x%X / 0x%X", ls->total_read, chunk->offset + _bump_assert_value);
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   236
						if (ls->total_read != chunk->offset + _bump_assert_value) ls->failed = true;
3629
04bdfc82b48b (svn r4528) - Fix: fix idiotic gcc warning
Darkvater
parents: 3627
diff changeset
   237
					default: break;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   238
				}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   239
			} else {
8239
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
   240
				uint64 res = 0;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   241
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   242
				/* Reading from the file: bits 16 to 23 have the FILE type */
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   243
				switch (GetOldChunkFileType(chunk->type)) {
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   244
					case OC_FILE_I8:  res = (int8)ReadByte(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   245
					case OC_FILE_U8:  res = ReadByte(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   246
					case OC_FILE_I16: res = (int16)ReadUint16(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   247
					case OC_FILE_U16: res = ReadUint16(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   248
					case OC_FILE_I32: res = (int32)ReadUint32(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   249
					case OC_FILE_U32: res = ReadUint32(ls); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   250
					default: NOT_REACHED();
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   251
				}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   252
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   253
				/* Sanity check */
1325
80f83e8ae77b (svn r1829) -Fix: fixed some compiler warnings (tnx to Tron for the Makefile-flag)
truelight
parents: 1322
diff changeset
   254
				assert(base_ptr != NULL || chunk->ptr != NULL);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   255
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   256
				/* Writing to the var: bits 8 to 15 have the VAR type */
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   257
				if (chunk->ptr == NULL) ptr = base_ptr + chunk->offset;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   258
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   259
				/* Write the data */
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   260
				switch (GetOldChunkVarType(chunk->type)) {
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   261
					case OC_VAR_I8: *(int8  *)ptr = GB(res, 0, 8); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   262
					case OC_VAR_U8: *(uint8 *)ptr = GB(res, 0, 8); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   263
					case OC_VAR_I16:*(int16 *)ptr = GB(res, 0, 16); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   264
					case OC_VAR_U16:*(uint16*)ptr = GB(res, 0, 16); break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   265
					case OC_VAR_I32:*(int32 *)ptr = res; break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   266
					case OC_VAR_U32:*(uint32*)ptr = res; break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   267
					case OC_VAR_I64:*(int64 *)ptr = res; break;
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   268
					default: NOT_REACHED();
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   269
				}
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   270
3627
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   271
				/* Increase pointer base for arrays when looping */
14c1566323fd (svn r4526) - CodeChange: do some more cleanup, mainly changing the OldChunkTypes from full bitmasks into segmented values like in SaveLoad.
Darkvater
parents: 3626
diff changeset
   272
				if (chunk->amount > 1 && chunk->ptr != NULL) ptr += CalcOldVarLen(chunk->type);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   273
			}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   274
		}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   275
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   276
		chunk++;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   277
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   278
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   279
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   280
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   281
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   282
/**
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   283
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   284
 * Initialize some data before reading
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   285
 *
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   286
 */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   287
static void InitLoading(LoadgameState *ls)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   288
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   289
	ls->chunk_size   = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   290
	ls->total_read   = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   291
	ls->failed       = false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   292
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   293
	ls->decoding     = false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   294
	ls->decode_char  = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   295
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   296
	ls->buffer_cur   = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   297
	ls->buffer_count = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   298
	memset(ls->buffer, 0, BUFFER_SIZE);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   299
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   300
	_bump_assert_value = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   301
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   302
	_savegame_type   = SGT_TTD;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   303
	_ttdp_version    = 0;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   304
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   305
	_read_ttdpatch_flags = false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   306
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   307
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   308
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   309
/*
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   310
 * Begin -- Stuff to fix the savegames to be OpenTTD compatible
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   311
 */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   312
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   313
extern uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   314
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6557
diff changeset
   315
static void FixOldTowns()
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   316
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   317
	Town *town;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   318
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   319
	/* Convert town-names if needed */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   320
	FOR_ALL_TOWNS(town) {
8450
dce58137301f (svn r11510) -Codechange: merge the IS_*INSIDE* functions and rename them fitting to the naming style
skidd13
parents: 8425
diff changeset
   321
		if (IsInsideMM(town->townnametype, 0x20C1, 0x20C3)) {
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
   322
			town->townnametype = SPECSTR_TOWNNAME_ENGLISH + _settings_game.game_creation.town_name;
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
   323
			town->townnameparts = GetOldTownName(town->townnameparts, _settings_game.game_creation.town_name);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   324
		}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 123
diff changeset
   325
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   326
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   327
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6557
diff changeset
   328
static void FixOldStations()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   329
{
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   330
	Station *st;
919
b0d6c7642f99 (svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents: 875
diff changeset
   331
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   332
	FOR_ALL_STATIONS(st) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   333
		/* Check if we need to swap width and height for the station */
3558
36ca79c931f2 (svn r4432) Make use of map access functions
tron
parents: 3431
diff changeset
   334
		if (st->train_tile != 0 && GetRailStationAxis(st->train_tile) != AXIS_X) {
5984
fbef81292ff9 (svn r8276) -Fix
tron
parents: 5967
diff changeset
   335
			Swap(st->trainst_w, st->trainst_h);
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   336
		}
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   337
	}
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   338
}
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   339
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6557
diff changeset
   340
static void FixOldVehicles()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   341
{
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   342
	/* Check for shared orders, and link them correctly */
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   343
	Vehicle* v;
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   344
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   345
	FOR_ALL_VEHICLES(v) {
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   346
		Vehicle *u;
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   347
7127
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
   348
		/* We haven't used this bit for stations for ages */
7396
9376076d058e (svn r10147) -Fix: the oldloader did clear some bits for road vehicles that shouldn't be cleared in some cases.
rubidium
parents: 7394
diff changeset
   349
		if (v->type == VEH_ROAD &&
9376076d058e (svn r10147) -Fix: the oldloader did clear some bits for road vehicles that shouldn't be cleared in some cases.
rubidium
parents: 7394
diff changeset
   350
				v->u.road.state != RVSB_IN_DEPOT &&
9376076d058e (svn r10147) -Fix: the oldloader did clear some bits for road vehicles that shouldn't be cleared in some cases.
rubidium
parents: 7394
diff changeset
   351
				v->u.road.state != RVSB_WORMHOLE) {
8425
72a71d480c5f (svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents: 8424
diff changeset
   352
			ClrBit(v->u.road.state, RVS_IS_STOPPING);
7396
9376076d058e (svn r10147) -Fix: the oldloader did clear some bits for road vehicles that shouldn't be cleared in some cases.
rubidium
parents: 7394
diff changeset
   353
		}
7127
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
   354
9220
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   355
		/* The subtype should be 0, but it sometimes isn't :( */
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   356
		if (v->type == VEH_ROAD) v->subtype = 0;
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   357
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   358
		/* Sometimes primary vehicles would have a nothing (invalid) order
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   359
		 * or vehicles that could not have an order would still have a
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   360
		 * (loading) order which causes assertions and the like later on.
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   361
		 */
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   362
		if (!IsPlayerBuildableVehicleType(v) ||
9332
2e120d0bd632 (svn r12584) -Codechange: do not access the order type directly.
rubidium
parents: 9331
diff changeset
   363
				(v->IsPrimaryVehicle() && v->current_order.IsType(OT_NOTHING))) {
2e120d0bd632 (svn r12584) -Codechange: do not access the order type directly.
rubidium
parents: 9331
diff changeset
   364
			v->current_order.MakeDummy();
9220
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   365
		}
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
   366
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   367
		FOR_ALL_VEHICLES_FROM(u, v->index + 1) {
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   368
			/* If a vehicle has the same orders, add the link to eachother
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   369
			 * in both vehicles */
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   370
			if (v->orders == u->orders) {
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   371
				v->next_shared = u;
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   372
				u->prev_shared = v;
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   373
				break;
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   374
			}
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   375
		}
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents: 988
diff changeset
   376
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   377
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   378
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   379
/*
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   380
 * End -- Stuff to fix the savegames to be OpenTTD compatible
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   381
 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   382
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 123
diff changeset
   383
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   384
/* Help:
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   385
 *  - OCL_SVAR: load 'type' to offset 'offset' in a struct of type 'base', which must also
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   386
 *       be given via base in LoadChunk() as real pointer
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   387
 *  - OCL_VAR: load 'type' to a global var
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   388
 *  - OCL_END: every struct must end with this
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   389
 *  - OCL_NULL: read 'amount' of bytes and send them to /dev/null or something
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   390
 *  - OCL_CHUNK: load an other proc to load a part of the savegame, 'amount' times
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   391
 *  - OCL_ASSERT: to check if we are really at the place we expect to be.. because old savegames are too binary to be sure ;)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   392
 */
5922
510e1bbc5992 (svn r8131) -Fix (r8125): g++ warning: 'invalid access to non-static data member ?<class>::<member>? of NULL object'. It is weird, but renaming the 'offsetof' macro helped.
KUDr
parents: 5865
diff changeset
   393
#define OCL_SVAR(type, base, offset)         { type,          1, NULL,    (uint)cpp_offsetof(base, offset), NULL }
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   394
#define OCL_VAR(type, amount, pointer)       { type,     amount, pointer, 0,                      NULL }
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   395
#define OCL_END()                                   { OC_END,        0, NULL,    0,                      NULL }
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   396
#define OCL_NULL(amount)                            { OC_NULL,  amount, NULL,    0,                      NULL }
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   397
#define OCL_CHUNK(amount, proc)                     { OC_CHUNK, amount, NULL,    0,                      proc }
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   398
#define OCL_ASSERT(size)                            { OC_ASSERT,     1, NULL, size,                      NULL }
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   399
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   400
/* The savegames has some hard-coded pointers, because it always enters the same
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   401
    piece of memory.. we don't.. so we need to remap ;)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   402
   Old Towns are 94 bytes big
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   403
   Old Orders are 2 bytes big */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   404
#define REMAP_TOWN_IDX(x) ((x) - (0x0459154 - 0x0458EF0)) / 94
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   405
#define REMAP_ORDER_IDX(x) ((x) - (0x045AB08 - 0x0458EF0)) / 2
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   406
8190
efd1f3b110a2 (svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents: 8033
diff changeset
   407
extern TileIndex *_animated_tile_list;
efd1f3b110a2 (svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents: 8033
diff changeset
   408
extern uint _animated_tile_count;
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
   409
extern char *_old_name_array;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   410
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   411
static byte   _old_vehicle_multiplier;
10251
b41d7d8c873b (svn r12783) -Codechange: do not statically allocate the 'temporary map3 array' in the oldloader.
rubidium
parents: 10250
diff changeset
   412
static uint8  *_old_map3;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   413
static uint32 _old_town_index;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   414
static uint16 _old_string_id;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   415
static uint16 _old_string_id_2;
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
   416
static uint16 _old_extra_chunk_nums;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   417
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6557
diff changeset
   418
static void ReadTTDPatchFlags()
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   419
{
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
   420
	if (_read_ttdpatch_flags) return;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   421
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   422
	_read_ttdpatch_flags = true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   423
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   424
	/* TTDPatch misuses _old_map3 for flags.. read them! */
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   425
	_old_vehicle_multiplier = _old_map3[0];
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   426
	/* Somehow.... there was an error in some savegames, so 0 becomes 1
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   427
	and 1 becomes 2. The rest of the values are okay */
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   428
	if (_old_vehicle_multiplier < 2) _old_vehicle_multiplier++;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   429
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
   430
	/* TTDPatch increases the Vehicle-part in the middle of the game,
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   431
	so if the multipler is anything else but 1, the assert fails..
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   432
	bump the assert value so it doesn't!
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   433
	(1 multipler == 850 vehicles
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   434
	1 vehicle   == 128 bytes */
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   435
	_bump_assert_value = (_old_vehicle_multiplier - 1) * 850 * 128;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   436
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   437
	for (uint i = 0; i < 17; i++) { // check tile 0, too
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   438
		if (_old_map3[i] != 0) _savegame_type = SGT_TTDP1;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   439
	}
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   440
1326
f37b6aa28829 (svn r1830) -Codechange: small stuff to make the file more beautiful (tnx Tron)
truelight
parents: 1325
diff changeset
   441
	/* Check if we have a modern TTDPatch savegame (has extra data all around) */
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   442
	if (memcmp(&_old_map3[0x1FFFA], "TTDp", 4) == 0) _savegame_type = SGT_TTDP2;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   443
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   444
	_old_extra_chunk_nums = _old_map3[_savegame_type == SGT_TTDP2 ? 0x1FFFE : 0x2];
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
   445
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   446
	/* Clean the misused places */
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   447
	for (uint i = 0;       i < 17;      i++) _old_map3[i] = 0;
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   448
	for (uint i = 0x1FE00; i < 0x20000; i++) _old_map3[i] = 0;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   449
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
   450
	if (_savegame_type == SGT_TTDP2) DEBUG(oldloader, 2, "Found TTDPatch game");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   451
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
   452
	DEBUG(oldloader, 3, "Vehicle-multiplier is set to %d (%d vehicles)", _old_vehicle_multiplier, _old_vehicle_multiplier * 850);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   453
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   454
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   455
static const OldChunks town_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   456
	OCL_SVAR(   OC_TILE, Town, xy ),
9203
55b0289562a8 (svn r12381) -Fix [FS1835] [FS1535] (r11855): The number of houses wasn't computed right. A few other things regaring the updating had to be changed. Big thanks for support to frosch123 and SmatZ, to name just a few. (Inspired by a patch of bilbo)
skidd13
parents: 9061
diff changeset
   457
	OCL_NULL( 2 ),         ///< population,        no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   458
	OCL_SVAR( OC_UINT16, Town, townnametype ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   459
	OCL_SVAR( OC_UINT32, Town, townnameparts ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   460
	OCL_SVAR(  OC_UINT8, Town, grow_counter ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   461
	OCL_NULL( 1 ),         ///< sort_index,        no longer in use
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   462
	OCL_NULL( 4 ),         ///< sign-coordinates,  no longer in use
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   463
	OCL_NULL( 2 ),         ///< namewidth,         no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   464
	OCL_SVAR( OC_UINT16, Town, flags12 ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   465
	OCL_NULL( 10 ),        ///< radius,            no longer in use
988
2482369a61ff (svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents: 974
diff changeset
   466
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   467
	OCL_SVAR( OC_UINT16, Town, ratings[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   468
	OCL_SVAR( OC_UINT16, Town, ratings[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   469
	OCL_SVAR( OC_UINT16, Town, ratings[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   470
	OCL_SVAR( OC_UINT16, Town, ratings[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   471
	OCL_SVAR( OC_UINT16, Town, ratings[4] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   472
	OCL_SVAR( OC_UINT16, Town, ratings[5] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   473
	OCL_SVAR( OC_UINT16, Town, ratings[6] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   474
	OCL_SVAR( OC_UINT16, Town, ratings[7] ),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   475
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   476
	/* XXX - This is pretty odd.. we read 32bit, but only write 8bit.. sure there is
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6677
diff changeset
   477
	nothing changed ? ? */
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   478
	OCL_SVAR( OC_FILE_U32 | OC_VAR_U8, Town, have_ratings ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   479
	OCL_SVAR( OC_FILE_U32 | OC_VAR_U8, Town, statues ),
9203
55b0289562a8 (svn r12381) -Fix [FS1835] [FS1535] (r11855): The number of houses wasn't computed right. A few other things regaring the updating had to be changed. Big thanks for support to frosch123 and SmatZ, to name just a few. (Inspired by a patch of bilbo)
skidd13
parents: 9061
diff changeset
   480
	OCL_NULL( 2 ),         ///< num_houses,        no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   481
	OCL_SVAR(  OC_UINT8, Town, time_until_rebuild ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   482
	OCL_SVAR(  OC_UINT8, Town, growth_rate ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   483
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   484
	OCL_SVAR( OC_UINT16, Town, new_max_pass ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   485
	OCL_SVAR( OC_UINT16, Town, new_max_mail ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   486
	OCL_SVAR( OC_UINT16, Town, new_act_pass ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   487
	OCL_SVAR( OC_UINT16, Town, new_act_mail ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   488
	OCL_SVAR( OC_UINT16, Town, max_pass ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   489
	OCL_SVAR( OC_UINT16, Town, max_mail ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   490
	OCL_SVAR( OC_UINT16, Town, act_pass ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   491
	OCL_SVAR( OC_UINT16, Town, act_mail ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   492
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   493
	OCL_SVAR(  OC_UINT8, Town, pct_pass_transported ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   494
	OCL_SVAR(  OC_UINT8, Town, pct_mail_transported ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   495
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   496
	OCL_SVAR( OC_UINT16, Town, new_act_food ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   497
	OCL_SVAR( OC_UINT16, Town, new_act_water ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   498
	OCL_SVAR( OC_UINT16, Town, act_food ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   499
	OCL_SVAR( OC_UINT16, Town, act_water ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   500
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   501
	OCL_SVAR(  OC_UINT8, Town, road_build_months ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   502
	OCL_SVAR(  OC_UINT8, Town, fund_buildings_months ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   503
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   504
	OCL_NULL( 8 ),         ///< some junk at the end of the record
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   505
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   506
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   507
};
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   508
static bool LoadOldTown(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   509
{
7895
62a61dc1930a (svn r10771) -Codechange: remove some code duplication from the old loader.
rubidium
parents: 7886
diff changeset
   510
	return LoadChunk(ls, new (num) Town(), town_chunk);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   511
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   512
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   513
static uint16 _old_order;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   514
static const OldChunks order_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   515
	OCL_VAR ( OC_UINT16,   1, &_old_order ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   516
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   517
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   518
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   519
static bool LoadOldOrder(LoadgameState *ls, int num)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   520
{
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   521
	if (!LoadChunk(ls, NULL, order_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   522
9335
18d3658adc60 (svn r12587) -Codechange: unduplicate some code in the Unpack*Order functions and move the 'normal' case Pack/Unpack to Order.
rubidium
parents: 9332
diff changeset
   523
	new (num) Order(UnpackOldOrder(_old_order));
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   524
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   525
	/* Relink the orders to eachother (in TTD(Patch) the orders for one
6589
addf4b6946d0 (svn r9072) -Codechange: [Orders] added methods to orders to free them and check if they are in use
bjarni
parents: 6585
diff changeset
   526
	vehicle are behind eachother, with an invalid order (OT_NOTHING) as indication that
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   527
	it is the last order */
6589
addf4b6946d0 (svn r9072) -Codechange: [Orders] added methods to orders to free them and check if they are in use
bjarni
parents: 6585
diff changeset
   528
	if (num > 0 && GetOrder(num)->IsValid())
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   529
		GetOrder(num - 1)->next = GetOrder(num);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   530
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   531
	return true;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   532
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   533
8207
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   534
static bool LoadOldAnimTileList(LoadgameState *ls, int num)
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   535
{
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   536
	/* This is sligthly hackish - we must load a chunk into an array whose
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   537
	 * address isn't static, but instead pointed to by _animated_tile_list.
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   538
	 * To achieve that, create an OldChunks list on the stack on the fly.
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   539
	 * The list cannot be static because the value of _animated_tile_list
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   540
	 * can change between calls. */
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   541
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   542
	const OldChunks anim_chunk[] = {
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   543
		OCL_VAR (   OC_TILE, 256, _animated_tile_list ),
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   544
		OCL_END ()
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   545
	};
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   546
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   547
	if (!LoadChunk(ls, NULL, anim_chunk)) return false;
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   548
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   549
	/* Update the animated tile counter by counting till the first zero in the array */
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   550
	for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) {
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   551
		if (_animated_tile_list[_animated_tile_count] == 0) break;
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   552
	}
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   553
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   554
	return true;
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   555
}
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
   556
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   557
static const OldChunks depot_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   558
	OCL_SVAR(   OC_TILE, Depot, xy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   559
	OCL_VAR ( OC_UINT32,   1, &_old_town_index ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   560
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   561
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   562
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   563
static bool LoadOldDepot(LoadgameState *ls, int num)
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   564
{
7895
62a61dc1930a (svn r10771) -Codechange: remove some code duplication from the old loader.
rubidium
parents: 7886
diff changeset
   565
	if (!LoadChunk(ls, new (num) Depot(), depot_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   566
7885
4eb9b01e37ff (svn r10758) -Codechange: make the depot struct use the pool item class as super class.
rubidium
parents: 7830
diff changeset
   567
	if (IsValidDepotID(num)) {
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   568
		GetDepot(num)->town_index = REMAP_TOWN_IDX(_old_town_index);
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   569
	}
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   570
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   571
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   572
}
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   573
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   574
static int32 _old_price;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   575
static uint16 _old_price_frac;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   576
static const OldChunks price_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   577
	OCL_VAR (  OC_INT32,   1, &_old_price ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   578
	OCL_VAR ( OC_UINT16,   1, &_old_price_frac ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   579
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   580
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   581
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   582
static bool LoadOldPrice(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   583
{
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   584
	if (!LoadChunk(ls, NULL, price_chunk)) return false;
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   585
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   586
	/* We use a struct to store the prices, but they are ints in a row..
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   587
	so just access the struct as an array of int32's */
7453
67ba4a6fc014 (svn r10212) -Fix [FS#723]: money overflow bugs in many locations.
rubidium
parents: 7448
diff changeset
   588
	((Money*)&_price)[num] = _old_price;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   589
	_price_frac[num] = _old_price_frac;
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   590
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   591
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   592
}
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   593
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   594
static const OldChunks cargo_payment_rate_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   595
	OCL_VAR (  OC_INT32,   1, &_old_price ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   596
	OCL_VAR ( OC_UINT16,   1, &_old_price_frac ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   597
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   598
	OCL_NULL( 2 ),         ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   599
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   600
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   601
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   602
static bool LoadOldCargoPaymentRate(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   603
{
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   604
	if (!LoadChunk(ls, NULL, cargo_payment_rate_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   605
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   606
	_cargo_payment_rates[num] = -_old_price;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   607
	_cargo_payment_rates_frac[num] = _old_price_frac;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   608
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   609
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   610
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   611
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   612
static uint8  _old_platforms;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   613
static uint   _current_station_id;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   614
static uint16 _waiting_acceptance;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   615
static uint8  _cargo_source;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   616
static uint8  _cargo_days;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   617
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   618
static const OldChunks goods_chunk[] = {
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   619
	OCL_VAR ( OC_UINT16, 1,          &_waiting_acceptance ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   620
	OCL_SVAR(  OC_UINT8, GoodsEntry, days_since_pickup ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   621
	OCL_SVAR(  OC_UINT8, GoodsEntry, rating ),
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   622
	OCL_VAR (  OC_UINT8, 1,          &_cargo_source ),
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   623
	OCL_VAR (  OC_UINT8, 1,          &_cargo_days ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   624
	OCL_SVAR(  OC_UINT8, GoodsEntry, last_speed ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   625
	OCL_SVAR(  OC_UINT8, GoodsEntry, last_age ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   626
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   627
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   628
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   629
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   630
static bool LoadOldGood(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   631
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   632
	Station *st = GetStation(_current_station_id);
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   633
	GoodsEntry *ge = &st->goods[num];
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   634
	bool ret = LoadChunk(ls, ge, goods_chunk);
7970
204ece3a05d5 (svn r10981) -Fix [FS#1156] (r10970): stations gave ratings for accepted cargo too.
rubidium
parents: 7895
diff changeset
   635
	if (!ret) return false;
204ece3a05d5 (svn r10981) -Fix [FS#1156] (r10970): stations gave ratings for accepted cargo too.
rubidium
parents: 7895
diff changeset
   636
8424
4a488a90ccab (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents: 8418
diff changeset
   637
	SB(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15));
7970
204ece3a05d5 (svn r10981) -Fix [FS#1156] (r10970): stations gave ratings for accepted cargo too.
rubidium
parents: 7895
diff changeset
   638
	SB(ge->acceptance_pickup, GoodsEntry::PICKUP, 1, _cargo_source != 0xFF);
204ece3a05d5 (svn r10981) -Fix [FS#1156] (r10970): stations gave ratings for accepted cargo too.
rubidium
parents: 7895
diff changeset
   639
	if (GB(_waiting_acceptance, 0, 12) != 0) {
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   640
		CargoPacket *cp = new CargoPacket();
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   641
		cp->source          = (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   642
		cp->count           = GB(_waiting_acceptance, 0, 12);
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   643
		cp->days_in_transit = _cargo_days;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   644
		ge->cargo.Append(cp);
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   645
	}
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
   646
	return ret;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   647
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   648
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   649
static const OldChunks station_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   650
	OCL_SVAR(   OC_TILE, Station, xy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   651
	OCL_VAR ( OC_UINT32,   1, &_old_town_index ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   652
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   653
	OCL_NULL( 4 ), ///< bus/lorry tile
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   654
	OCL_SVAR(   OC_TILE, Station, train_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   655
	OCL_SVAR(   OC_TILE, Station, airport_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   656
	OCL_SVAR(   OC_TILE, Station, dock_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   657
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   658
	OCL_VAR (  OC_UINT8,   1, &_old_platforms ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   659
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   660
	OCL_NULL( 1 ),         ///< sort-index, no longer in use
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   661
	OCL_NULL( 2 ),         ///< sign-width, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   662
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   663
	OCL_VAR ( OC_UINT16,   1, &_old_string_id ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   664
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   665
	OCL_NULL( 4 ),         ///< sign left/top, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   666
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   667
	OCL_SVAR( OC_UINT16, Station, had_vehicle_of_type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   668
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   669
	OCL_CHUNK( 12, LoadOldGood ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   670
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   671
	OCL_SVAR(  OC_UINT8, Station, time_since_load ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   672
	OCL_SVAR(  OC_UINT8, Station, time_since_unload ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   673
	OCL_SVAR(  OC_UINT8, Station, delete_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   674
	OCL_SVAR(  OC_UINT8, Station, owner ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   675
	OCL_SVAR(  OC_UINT8, Station, facilities ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   676
	OCL_SVAR(  OC_UINT8, Station, airport_type ),
6128
46154e074b58 (svn r8475) -Fix
tron
parents: 6074
diff changeset
   677
	/* Bus/truck status, no longer in use
46154e074b58 (svn r8475) -Fix
tron
parents: 6074
diff changeset
   678
	 * Blocked months
46154e074b58 (svn r8475) -Fix
tron
parents: 6074
diff changeset
   679
	 * Unknown
46154e074b58 (svn r8475) -Fix
tron
parents: 6074
diff changeset
   680
	 */
46154e074b58 (svn r8475) -Fix
tron
parents: 6074
diff changeset
   681
	OCL_NULL( 4 ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   682
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Station, airport_flags ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   683
	OCL_NULL( 2 ),         ///< last_vehicle. now last_vehicle_type
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   684
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   685
	OCL_NULL( 4 ),         ///< Junk at end of chunk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   686
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   687
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   688
};
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   689
static bool LoadOldStation(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   690
{
7127
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
   691
	Station *st = new (num) Station();
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   692
	_current_station_id = num;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   693
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   694
	if (!LoadChunk(ls, st, station_chunk))
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   695
		return false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   696
6322
3d191e6e89bc (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar
parents: 6222
diff changeset
   697
	if (st->IsValid()) {
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   698
		if (st->train_tile) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   699
			/* Calculate the trainst_w and trainst_h */
2140
d708eb80ab8b (svn r2650) Convert many explicit shifts+ands to extract bits to invocations of GB - should be a bit nicer to read
tron
parents: 2099
diff changeset
   700
			uint w = GB(_old_platforms, 3, 3);
d708eb80ab8b (svn r2650) Convert many explicit shifts+ands to extract bits to invocations of GB - should be a bit nicer to read
tron
parents: 2099
diff changeset
   701
			uint h = GB(_old_platforms, 0, 3);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   702
			st->trainst_w = w;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   703
			st->trainst_h = h;
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   704
		}
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   705
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   706
		st->town    = GetTown(REMAP_TOWN_IDX(_old_town_index));
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   707
		st->string_id = RemapOldStringID(_old_string_id);
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   708
	}
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   709
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   710
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   711
}
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   712
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   713
static const OldChunks industry_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   714
	OCL_SVAR(   OC_TILE, Industry, xy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   715
	OCL_VAR ( OC_UINT32,   1, &_old_town_index ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   716
	OCL_SVAR(  OC_UINT8, Industry, width ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   717
	OCL_SVAR(  OC_UINT8, Industry, height ),
7132
08abbae3073e (svn r9867) -Codechange: Remove data duplication. The exact same values can be found in the industry spec, so take it from there instead.
belugas
parents: 7127
diff changeset
   718
	OCL_NULL( 2 ),  ///< used to be industry's produced_cargo
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   719
7661
40c7a63ad9a1 (svn r10439) -Codechange: initial steps for customized industry productions.
rubidium
parents: 7506
diff changeset
   720
	OCL_SVAR( OC_UINT16, Industry, produced_cargo_waiting[0] ),
40c7a63ad9a1 (svn r10439) -Codechange: initial steps for customized industry productions.
rubidium
parents: 7506
diff changeset
   721
	OCL_SVAR( OC_UINT16, Industry, produced_cargo_waiting[1] ),
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   722
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   723
	OCL_SVAR(  OC_UINT8, Industry, production_rate[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   724
	OCL_SVAR(  OC_UINT8, Industry, production_rate[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   725
7132
08abbae3073e (svn r9867) -Codechange: Remove data duplication. The exact same values can be found in the industry spec, so take it from there instead.
belugas
parents: 7127
diff changeset
   726
	OCL_NULL( 3 ),  ///< used to be industry's accepts_cargo
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   727
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   728
	OCL_SVAR(  OC_UINT8, Industry, prod_level ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   729
7315
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   730
	OCL_SVAR( OC_UINT16, Industry, this_month_production[0] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   731
	OCL_SVAR( OC_UINT16, Industry, this_month_production[1] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   732
	OCL_SVAR( OC_UINT16, Industry, this_month_transported[0] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   733
	OCL_SVAR( OC_UINT16, Industry, this_month_transported[1] ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   734
7315
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   735
	OCL_SVAR(  OC_UINT8, Industry, last_month_pct_transported[0] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   736
	OCL_SVAR(  OC_UINT8, Industry, last_month_pct_transported[1] ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   737
7315
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   738
	OCL_SVAR( OC_UINT16, Industry, last_month_production[0] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   739
	OCL_SVAR( OC_UINT16, Industry, last_month_production[1] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   740
	OCL_SVAR( OC_UINT16, Industry, last_month_transported[0] ),
f1b2591ad082 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 7132
diff changeset
   741
	OCL_SVAR( OC_UINT16, Industry, last_month_transported[1] ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   742
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   743
	OCL_SVAR(  OC_UINT8, Industry, type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   744
	OCL_SVAR(  OC_UINT8, Industry, owner ),
4942
f990abfa4438 (svn r6930) -Codechange: Move industry name into IndustrySpec
belugas
parents: 4845
diff changeset
   745
	OCL_SVAR(  OC_UINT8, Industry, random_color ),
4326
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
   746
	OCL_SVAR( OC_FILE_U8 | OC_VAR_I32, Industry, last_prod_year ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   747
	OCL_SVAR( OC_UINT16, Industry, counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   748
	OCL_SVAR(  OC_UINT8, Industry, was_cargo_delivered ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   749
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   750
	OCL_NULL( 9 ), ///< Random junk at the end of this chunk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   751
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   752
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   753
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   754
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   755
static bool LoadOldIndustry(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   756
{
7895
62a61dc1930a (svn r10771) -Codechange: remove some code duplication from the old loader.
rubidium
parents: 7886
diff changeset
   757
	Industry *i = new (num) Industry();
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   758
	if (!LoadChunk(ls, i, industry_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   759
7886
b02aa3532d1d (svn r10759) -Codechange: make the industry struct use the pool item class as super class.
rubidium
parents: 7885
diff changeset
   760
	if (i->IsValid()) {
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   761
		i->town = GetTown(REMAP_TOWN_IDX(_old_town_index));
8216
12d1cff88d38 (svn r11255) -Fix [FS#1332]: industry counter was not updated on TTD savegame loading
glx
parents: 8207
diff changeset
   762
		IncIndustryTypeCount(i->type);
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   763
	}
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   764
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   765
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   766
}
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   767
2498
befad2fe53d2 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2453
diff changeset
   768
static PlayerID _current_player_id;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   769
static int32 _old_yearly;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   770
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   771
static const OldChunks player_yearly_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   772
	OCL_VAR(  OC_INT32,   1, &_old_yearly ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   773
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   774
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   775
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   776
static bool OldPlayerYearly(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   777
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   778
	int i;
1962
51ee4f459268 (svn r2468) -Codechange: Got rid of DEREF_PLAYER and replaced it by GetPlayer
celestar
parents: 1926
diff changeset
   779
	Player *p = GetPlayer(_current_player_id);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   780
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   781
	for (i = 0; i < 13; i++) {
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   782
		if (!LoadChunk(ls, NULL, player_yearly_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   783
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   784
		p->yearly_expenses[num][i] = _old_yearly;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   785
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   786
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   787
	return true;
436
6d8fb39a154f (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents: 410
diff changeset
   788
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   789
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   790
static const OldChunks player_economy_chunk[] = {
8239
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
   791
	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, income ),
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
   792
	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, expenses ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   793
	OCL_SVAR( OC_INT32, PlayerEconomyEntry, delivered_cargo ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   794
	OCL_SVAR( OC_INT32, PlayerEconomyEntry, performance_history ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   795
	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, company_value ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   796
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   797
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   798
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   799
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   800
static bool OldPlayerEconomy(LoadgameState *ls, int num)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   801
{
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   802
	int i;
1962
51ee4f459268 (svn r2468) -Codechange: Got rid of DEREF_PLAYER and replaced it by GetPlayer
celestar
parents: 1926
diff changeset
   803
	Player *p = GetPlayer(_current_player_id);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   804
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   805
	if (!LoadChunk(ls, &p->cur_economy, player_economy_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   806
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   807
	/* Don't ask, but the number in TTD(Patch) are inversed to OpenTTD */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   808
	p->cur_economy.income   = -p->cur_economy.income;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   809
	p->cur_economy.expenses = -p->cur_economy.expenses;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   810
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   811
	for (i = 0; i < 24; i++) {
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   812
		if (!LoadChunk(ls, &p->old_economy[i], player_economy_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   813
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   814
		p->old_economy[i].income   = -p->old_economy[i].income;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   815
		p->old_economy[i].expenses = -p->old_economy[i].expenses;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   816
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   817
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   818
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   819
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   820
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   821
static const OldChunks player_ai_build_rec_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   822
	OCL_SVAR(   OC_TILE, AiBuildRec, spec_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   823
	OCL_SVAR(   OC_TILE, AiBuildRec, use_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   824
	OCL_SVAR(  OC_UINT8, AiBuildRec, rand_rng ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   825
	OCL_SVAR(  OC_UINT8, AiBuildRec, cur_building_rule ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   826
	OCL_SVAR(  OC_UINT8, AiBuildRec, unk6 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   827
	OCL_SVAR(  OC_UINT8, AiBuildRec, unk7 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   828
	OCL_SVAR(  OC_UINT8, AiBuildRec, buildcmd_a ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   829
	OCL_SVAR(  OC_UINT8, AiBuildRec, buildcmd_b ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   830
	OCL_SVAR(  OC_UINT8, AiBuildRec, direction ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   831
	OCL_SVAR(  OC_UINT8, AiBuildRec, cargo ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   832
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   833
	OCL_NULL( 8 ),  ///< Junk...
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   834
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   835
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   836
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   837
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   838
static bool OldLoadAIBuildRec(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   839
{
1962
51ee4f459268 (svn r2468) -Codechange: Got rid of DEREF_PLAYER and replaced it by GetPlayer
celestar
parents: 1926
diff changeset
   840
	Player *p = GetPlayer(_current_player_id);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   841
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   842
	switch (num) {
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   843
		case 0: return LoadChunk(ls, &_players_ai[p->index].src, player_ai_build_rec_chunk);
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   844
		case 1: return LoadChunk(ls, &_players_ai[p->index].dst, player_ai_build_rec_chunk);
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   845
		case 2: return LoadChunk(ls, &_players_ai[p->index].mid1, player_ai_build_rec_chunk);
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   846
		case 3: return LoadChunk(ls, &_players_ai[p->index].mid2, player_ai_build_rec_chunk);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   847
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   848
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   849
	return false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   850
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   851
static const OldChunks player_ai_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   852
	OCL_SVAR(  OC_UINT8, PlayerAI, state ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   853
	OCL_NULL( 1 ),         ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   854
	OCL_SVAR(  OC_UINT8, PlayerAI, state_mode ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   855
	OCL_SVAR( OC_UINT16, PlayerAI, state_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   856
	OCL_SVAR( OC_UINT16, PlayerAI, timeout_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   857
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   858
	OCL_CHUNK( 4, OldLoadAIBuildRec ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   859
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   860
	OCL_NULL( 20 ),        ///< More junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   861
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   862
	OCL_SVAR(  OC_UINT8, PlayerAI, cargo_type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   863
	OCL_SVAR(  OC_UINT8, PlayerAI, num_wagons ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   864
	OCL_SVAR(  OC_UINT8, PlayerAI, build_kind ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   865
	OCL_SVAR(  OC_UINT8, PlayerAI, num_build_rec ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   866
	OCL_SVAR(  OC_UINT8, PlayerAI, num_loco_to_build ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   867
	OCL_SVAR(  OC_UINT8, PlayerAI, num_want_fullload ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   868
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   869
	OCL_NULL( 14 ),        ///< Oh no more junk :|
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   870
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   871
	OCL_NULL( 2 ),         ///< Loco-id, not used
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   872
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   873
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   874
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   875
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   876
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   877
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[4] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   878
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[5] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   879
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[6] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   880
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[7] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   881
	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[8] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   882
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   883
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   884
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   885
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   886
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[4] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   887
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[5] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   888
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[6] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   889
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[7] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   890
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[8] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   891
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[9] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   892
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[10] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   893
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[11] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   894
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[12] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   895
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[13] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   896
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[14] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   897
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[15] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   898
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[16] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   899
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[17] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   900
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[18] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   901
	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[19] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   902
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   903
	OCL_SVAR( OC_UINT16, PlayerAI, start_tile_a ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   904
	OCL_SVAR( OC_UINT16, PlayerAI, start_tile_b ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   905
	OCL_SVAR( OC_UINT16, PlayerAI, cur_tile_a ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   906
	OCL_SVAR( OC_UINT16, PlayerAI, cur_tile_b ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   907
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   908
	OCL_SVAR(  OC_UINT8, PlayerAI, start_dir_a ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   909
	OCL_SVAR(  OC_UINT8, PlayerAI, start_dir_b ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   910
	OCL_SVAR(  OC_UINT8, PlayerAI, cur_dir_a ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   911
	OCL_SVAR(  OC_UINT8, PlayerAI, cur_dir_b ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   912
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   913
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_tile_count ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   914
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   915
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   916
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   917
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   918
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   919
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   920
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   921
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   922
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   923
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[4] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   924
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[4] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   925
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[5] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   926
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[5] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   927
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[6] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   928
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[6] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   929
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[7] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   930
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[7] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   931
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[8] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   932
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[8] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   933
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[9] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   934
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[9] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   935
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[10] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   936
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[10] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   937
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[11] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   938
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[11] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   939
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[12] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   940
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[12] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   941
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[13] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   942
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[13] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   943
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[14] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   944
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[14] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   945
	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[15] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   946
	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[15] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   947
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   948
	OCL_SVAR(  OC_UINT8, PlayerAI, railtype_to_use ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   949
	OCL_SVAR(  OC_UINT8, PlayerAI, route_type_mask ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   950
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   951
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   952
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
   953
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   954
static bool OldPlayerAI(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   955
{
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   956
	return LoadChunk(ls, &_players_ai[_current_player_id], player_ai_chunk);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   957
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   958
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   959
uint8 ai_tick;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   960
static const OldChunks player_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   961
	OCL_VAR ( OC_UINT16,   1, &_old_string_id ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   962
	OCL_SVAR( OC_UINT32, Player, name_2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   963
	OCL_SVAR( OC_UINT32, Player, face ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   964
	OCL_VAR ( OC_UINT16,   1, &_old_string_id_2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   965
	OCL_SVAR( OC_UINT32, Player, president_name_2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   966
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   967
	OCL_SVAR(  OC_INT32, Player, player_money ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   968
	OCL_SVAR(  OC_INT32, Player, current_loan ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   969
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   970
	OCL_SVAR(  OC_UINT8, Player, player_color ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   971
	OCL_SVAR(  OC_UINT8, Player, player_money_fraction ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   972
	OCL_SVAR(  OC_UINT8, Player, quarters_of_bankrupcy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   973
	OCL_SVAR(  OC_UINT8, Player, bankrupt_asked ),
8239
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
   974
	OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Player, bankrupt_value ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   975
	OCL_SVAR( OC_UINT16, Player, bankrupt_timeout ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   976
10284
4f4086cd9585 (svn r12816) -Fix: the cargo count in the performance rating window could be wrong.
rubidium
parents: 10272
diff changeset
   977
	OCL_SVAR( OC_UINT32, Player, cargo_types ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   978
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   979
	OCL_CHUNK( 3, OldPlayerYearly ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   980
	OCL_CHUNK( 1, OldPlayerEconomy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   981
5865
7410b9ee6435 (svn r8071) -Fix (r5999): [FS#536] Merging 32bit dates broke the inauguration date of companies in
Darkvater
parents: 5853
diff changeset
   982
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Player, inaugurated_year),
7410b9ee6435 (svn r8071) -Fix (r5999): [FS#536] Merging 32bit dates broke the inauguration date of companies in
Darkvater
parents: 5853
diff changeset
   983
	OCL_SVAR(                  OC_TILE, Player, last_build_coordinate ),
7410b9ee6435 (svn r8071) -Fix (r5999): [FS#536] Merging 32bit dates broke the inauguration date of companies in
Darkvater
parents: 5853
diff changeset
   984
	OCL_SVAR(                 OC_UINT8, Player, num_valid_stat_ent ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   985
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   986
	OCL_CHUNK( 1, OldPlayerAI ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   987
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   988
	OCL_SVAR(  OC_UINT8, Player, block_preview ),
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
   989
	 OCL_VAR(  OC_UINT8,   1, &ai_tick ),
2147
42efdf5020d1 (svn r2657) -Codechange: The available railtypes per player are now a bitmask, so
celestar
parents: 2140
diff changeset
   990
	OCL_SVAR(  OC_UINT8, Player, avail_railtypes ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   991
	OCL_SVAR(   OC_TILE, Player, location_of_house ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   992
	OCL_SVAR(  OC_UINT8, Player, share_owners[0] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   993
	OCL_SVAR(  OC_UINT8, Player, share_owners[1] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   994
	OCL_SVAR(  OC_UINT8, Player, share_owners[2] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   995
	OCL_SVAR(  OC_UINT8, Player, share_owners[3] ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   996
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
   997
	OCL_NULL( 8 ), ///< junk at end of chunk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   998
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
   999
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1000
};
2951
2db3adee7736 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2916
diff changeset
  1001
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1002
static bool LoadOldPlayer(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1003
{
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
  1004
	Player *p = GetPlayer((PlayerID)num);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1005
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
  1006
	_current_player_id = (PlayerID)num;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1007
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1008
	if (!LoadChunk(ls, p, player_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1009
11118
f66e0a4ce878 (svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
rubidium
parents: 10835
diff changeset
  1010
	if (_old_string_id == 0) {
f66e0a4ce878 (svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
rubidium
parents: 10835
diff changeset
  1011
		p->is_active = false;
f66e0a4ce878 (svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
rubidium
parents: 10835
diff changeset
  1012
		return true;
f66e0a4ce878 (svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
rubidium
parents: 10835
diff changeset
  1013
	}
f66e0a4ce878 (svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
rubidium
parents: 10835
diff changeset
  1014
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1015
	p->name_1 = RemapOldStringID(_old_string_id);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1016
	p->president_name_1 = RemapOldStringID(_old_string_id_2);
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
  1017
	_players_ai[_current_player_id].tick = ai_tick;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1018
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1019
	if (num == 0) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1020
		/* If the first player has no name, make sure we call it UNNAMED */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1021
		if (p->name_1 == 0)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1022
			p->name_1 = STR_SV_UNNAMED;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1023
	} else {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1024
		/* Beside some multiplayer maps (1 on 1), which we don't official support,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1025
		all other players are an AI.. mark them as such */
3345
40dc834caa24 (svn r4129) - CodeChange: Add proper bool type for is_ai as well...it is a bool type.
Darkvater
parents: 3342
diff changeset
  1026
		p->is_ai = true;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1027
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1028
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1029
	/* Sometimes it is better to not ask.. in old scenarios, the money
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1030
	was always 893288 pounds. In the newer versions this is correct,
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1031
	but correct for those oldies
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1032
	Ps: this also means that if you had exact 893288 pounds, you will go back
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1033
	to 10000.. this is a very VERY small chance ;) */
1326
f37b6aa28829 (svn r1830) -Codechange: small stuff to make the file more beautiful (tnx Tron)
truelight
parents: 1325
diff changeset
  1034
	if (p->player_money == 893288)
7448
424ab8df8adb (svn r10207) -Codechange: remove the redundant player_money in favour of the money64, which is now renamed to player_money.
rubidium
parents: 7396
diff changeset
  1035
		p->player_money = p->current_loan = 100000;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1036
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1037
	_player_colors[num] = p->player_color;
5865
7410b9ee6435 (svn r8071) -Fix (r5999): [FS#536] Merging 32bit dates broke the inauguration date of companies in
Darkvater
parents: 5853
diff changeset
  1038
	p->inaugurated_year -= ORIGINAL_BASE_YEAR;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1039
	if (p->location_of_house == 0xFFFF)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1040
		p->location_of_house = 0;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1041
2019
86d632dbd4a3 (svn r2528) - Fix: TTDPatch games had garbage in _map3[hi]&0xF0 which interfered with OpenTTD PBS functionality; fixed in oldloader
Darkvater
parents: 1962
diff changeset
  1042
	/* State 20 for AI players is sell vehicle. Since the AI struct is not
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
  1043
	 * really figured out as of now, _players_ai[p->index].cur_veh; needed for 'sell vehicle'
2019
86d632dbd4a3 (svn r2528) - Fix: TTDPatch games had garbage in _map3[hi]&0xF0 which interfered with OpenTTD PBS functionality; fixed in oldloader
Darkvater
parents: 1962
diff changeset
  1044
	 * is NULL and the function will crash. To fix this, just change the state
86d632dbd4a3 (svn r2528) - Fix: TTDPatch games had garbage in _map3[hi]&0xF0 which interfered with OpenTTD PBS functionality; fixed in oldloader
Darkvater
parents: 1962
diff changeset
  1045
	 * to some harmless state, like 'loop vehicle'; 1 */
8725
b769d0a63f06 (svn r11792) -Codechange: move some (virtually) globally included AI related structs to a place where they are only included a few times.
rubidium
parents: 8717
diff changeset
  1046
	if (!IsHumanPlayer((PlayerID)num) && _players_ai[p->index].state == 20) _players_ai[p->index].state = 1;
2019
86d632dbd4a3 (svn r2528) - Fix: TTDPatch games had garbage in _map3[hi]&0xF0 which interfered with OpenTTD PBS functionality; fixed in oldloader
Darkvater
parents: 1962
diff changeset
  1047
2814
0f534d66544e (svn r3362) Fix issue with loading old (TTD) savegames:
peter1138
parents: 2752
diff changeset
  1048
	if (p->is_ai && (!_networking || _network_server) && _ai.enabled)
0f534d66544e (svn r3362) Fix issue with loading old (TTD) savegames:
peter1138
parents: 2752
diff changeset
  1049
		AI_StartNewAI(p->index);
0f534d66544e (svn r3362) Fix issue with loading old (TTD) savegames:
peter1138
parents: 2752
diff changeset
  1050
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1051
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1052
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1053
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1054
static uint32 _old_order_ptr;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1055
static uint16 _old_next_ptr;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1056
static uint32 _current_vehicle_id;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1057
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1058
static const OldChunks vehicle_train_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1059
	OCL_SVAR(  OC_UINT8, VehicleRail, track ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1060
	OCL_SVAR(  OC_UINT8, VehicleRail, force_proceed ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1061
	OCL_SVAR( OC_UINT16, VehicleRail, crash_anim_pos ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1062
	OCL_SVAR(  OC_UINT8, VehicleRail, railtype ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1063
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1064
	OCL_NULL( 5 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1065
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1066
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1067
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1068
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1069
static const OldChunks vehicle_road_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1070
	OCL_SVAR(  OC_UINT8, VehicleRoad, state ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1071
	OCL_SVAR(  OC_UINT8, VehicleRoad, frame ),
3009
c477ab0f00b3 (svn r3589) - Rename u.road.unk2 to u.road.blocked_ctr
peter1138
parents: 2951
diff changeset
  1072
	OCL_SVAR( OC_UINT16, VehicleRoad, blocked_ctr ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1073
	OCL_SVAR(  OC_UINT8, VehicleRoad, overtaking ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1074
	OCL_SVAR(  OC_UINT8, VehicleRoad, overtaking_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1075
	OCL_SVAR( OC_UINT16, VehicleRoad, crashed_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1076
	OCL_SVAR(  OC_UINT8, VehicleRoad, reverse_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1077
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1078
	OCL_NULL( 1 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1079
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1080
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1081
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1082
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1083
static const OldChunks vehicle_ship_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1084
	OCL_SVAR(  OC_UINT8, VehicleShip, state ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1085
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1086
	OCL_NULL( 9 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1087
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1088
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1089
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1090
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1091
static const OldChunks vehicle_air_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1092
	OCL_SVAR(  OC_UINT8, VehicleAir, pos ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1093
	OCL_SVAR(  OC_FILE_U8 | OC_VAR_U16, VehicleAir, targetairport ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1094
	OCL_SVAR( OC_UINT16, VehicleAir, crashed_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1095
	OCL_SVAR(  OC_UINT8, VehicleAir, state ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1096
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1097
	OCL_NULL( 5 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1098
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1099
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1100
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1101
10271
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1102
static const OldChunks vehicle_effect_chunk[] = {
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1103
	OCL_SVAR( OC_UINT16, VehicleEffect, animation_state ),
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1104
	OCL_SVAR(  OC_UINT8, VehicleEffect, animation_substate ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1105
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1106
	OCL_NULL( 7 ), // Junk
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1107
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1108
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1109
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1110
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1111
static const OldChunks vehicle_disaster_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1112
	OCL_SVAR( OC_UINT16, VehicleDisaster, image_override ),
7830
210381b46ae6 (svn r10697) -Codechange: give a more sensible names to some of the unkX variables.
rubidium
parents: 7768
diff changeset
  1113
	OCL_SVAR( OC_UINT16, VehicleDisaster, big_ufo_destroyer_target ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1114
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1115
	OCL_NULL( 6 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1116
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1117
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1118
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1119
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1120
static const OldChunks vehicle_empty_chunk[] = {
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1121
	OCL_NULL( 10 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1122
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1123
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1124
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1125
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1126
static bool LoadOldVehicleUnion(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1127
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1128
	Vehicle *v = GetVehicle(_current_vehicle_id);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1129
	uint temp = ls->total_read;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1130
	bool res;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1131
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1132
	switch (v->type) {
6340
35c260560a1b (svn r8737) -Regression (r8621): VEH_Type renumbering wasn't performed for TTD(P) games, failing to load them
Darkvater
parents: 6322
diff changeset
  1133
		default: NOT_REACHED();
9221
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1134
		case VEH_INVALID : res = LoadChunk(ls, NULL,           vehicle_empty_chunk);    break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1135
		case VEH_TRAIN   : res = LoadChunk(ls, &v->u.rail,     vehicle_train_chunk);    break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1136
		case VEH_ROAD    : res = LoadChunk(ls, &v->u.road,     vehicle_road_chunk);     break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1137
		case VEH_SHIP    : res = LoadChunk(ls, &v->u.ship,     vehicle_ship_chunk);     break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1138
		case VEH_AIRCRAFT: res = LoadChunk(ls, &v->u.air,      vehicle_air_chunk);      break;
10271
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1139
		case VEH_EFFECT  : res = LoadChunk(ls, &v->u.effect,   vehicle_effect_chunk);   break;
9221
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1140
		case VEH_DISASTER: res = LoadChunk(ls, &v->u.disaster, vehicle_disaster_chunk); break;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1141
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1142
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1143
	/* This chunk size should always be 10 bytes */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1144
	if (ls->total_read - temp != 10) {
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
  1145
		DEBUG(oldloader, 0, "Assert failed in VehicleUnion: invalid chunk size");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1146
		return false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1147
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1148
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1149
	return res;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1150
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1151
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1152
static uint16 _cargo_count;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1153
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1154
static const OldChunks vehicle_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1155
	OCL_SVAR(  OC_UINT8, Vehicle, subtype ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1156
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1157
	OCL_NULL( 2 ),         ///< Hash, calculated automatically
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1158
	OCL_NULL( 2 ),         ///< Index, calculated automatically
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1159
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1160
	OCL_VAR ( OC_UINT32,   1, &_old_order_ptr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1161
	OCL_VAR ( OC_UINT16,   1, &_old_order ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1162
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1163
	OCL_SVAR(  OC_UINT8, Vehicle, num_orders ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1164
	OCL_SVAR(  OC_UINT8, Vehicle, cur_order_index ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1165
	OCL_SVAR(   OC_TILE, Vehicle, dest_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1166
	OCL_SVAR( OC_UINT16, Vehicle, load_unload_time_rem ),
4326
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1167
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, date_of_last_service ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1168
	OCL_SVAR( OC_UINT16, Vehicle, service_interval ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1169
	OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Vehicle, last_station_visited ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1170
	OCL_SVAR(  OC_UINT8, Vehicle, tick_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1171
	OCL_SVAR( OC_UINT16, Vehicle, max_speed ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1172
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1173
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Vehicle, x_pos ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1174
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Vehicle, y_pos ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1175
	OCL_SVAR(  OC_UINT8, Vehicle, z_pos ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1176
	OCL_SVAR(  OC_UINT8, Vehicle, direction ),
7057
61e90db7d804 (svn r9763) -Codechange/Fix (r9760): don't read the variables that are calculated automatically either.
rubidium
parents: 7048
diff changeset
  1177
	OCL_NULL( 2 ),         ///< x_offs and y_offs, calculated automatically
9289
92f1249c304e (svn r12531) -Codechange: Rename some variables for consistency.
frosch
parents: 9286
diff changeset
  1178
	OCL_NULL( 2 ),         ///< x_extent and y_extent, calculated automatically
92f1249c304e (svn r12531) -Codechange: Rename some variables for consistency.
frosch
parents: 9286
diff changeset
  1179
	OCL_NULL( 1 ),         ///< z_extent, calculated automatically
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1180
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1181
	OCL_SVAR(  OC_UINT8, Vehicle, owner ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1182
	OCL_SVAR(   OC_TILE, Vehicle, tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1183
	OCL_SVAR( OC_UINT16, Vehicle, cur_image ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1184
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1185
	OCL_NULL( 8 ),        ///< Vehicle sprite box, calculated automatically
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1186
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1187
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, Vehicle, vehstatus ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1188
	OCL_SVAR( OC_UINT16, Vehicle, cur_speed ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1189
	OCL_SVAR(  OC_UINT8, Vehicle, subspeed ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1190
	OCL_SVAR(  OC_UINT8, Vehicle, acceleration ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1191
	OCL_SVAR(  OC_UINT8, Vehicle, progress ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1192
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1193
	OCL_SVAR(  OC_UINT8, Vehicle, cargo_type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1194
	OCL_SVAR( OC_UINT16, Vehicle, cargo_cap ),
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1195
	OCL_VAR ( OC_UINT16, 1,       &_cargo_count ),
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1196
	OCL_VAR (  OC_UINT8, 1,       &_cargo_source ),
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1197
	OCL_VAR (  OC_UINT8, 1,       &_cargo_days ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1198
4326
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1199
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, age ),
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1200
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, max_age ),
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1201
	OCL_SVAR( OC_FILE_U8 | OC_VAR_I32, Vehicle, build_year ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1202
	OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Vehicle, unitnumber ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1203
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1204
	OCL_SVAR( OC_UINT16, Vehicle, engine_type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1205
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1206
	OCL_SVAR(  OC_UINT8, Vehicle, spritenum ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1207
	OCL_SVAR(  OC_UINT8, Vehicle, day_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1208
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1209
	OCL_SVAR(  OC_UINT8, Vehicle, breakdowns_since_last_service ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1210
	OCL_SVAR(  OC_UINT8, Vehicle, breakdown_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1211
	OCL_SVAR(  OC_UINT8, Vehicle, breakdown_delay ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1212
	OCL_SVAR(  OC_UINT8, Vehicle, breakdown_chance ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1213
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1214
	OCL_SVAR( OC_UINT16, Vehicle, reliability ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1215
	OCL_SVAR( OC_UINT16, Vehicle, reliability_spd_dec ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1216
8239
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
  1217
	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_this_year ),
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
  1218
	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_last_year ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1219
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1220
	OCL_VAR ( OC_UINT16,   1, &_old_next_ptr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1221
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1222
	OCL_SVAR( OC_UINT32, Vehicle, value ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1223
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1224
	OCL_VAR ( OC_UINT16,   1, &_old_string_id ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1225
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1226
	OCL_CHUNK( 1, LoadOldVehicleUnion ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1227
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1228
	OCL_NULL( 20 ), ///< Junk at end of struct (TTDPatch has some data in it)
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1229
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1230
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1231
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1232
8033
f80315b59db1 (svn r11057) -Fix [FS#1215]: loading TTD savegames went into an infinite loop due to not yet properly set next and previous pointers.
rubidium
parents: 7989
diff changeset
  1233
bool LoadOldVehicle(LoadgameState *ls, int num)
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1234
{
959
b031d88c76f3 (svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents: 923
diff changeset
  1235
	uint i;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1236
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1237
	/* Read the TTDPatch flags, because we need some info from it */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1238
	ReadTTDPatchFlags();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1239
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1240
	for (i = 0; i < _old_vehicle_multiplier; i++) {
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1241
		_current_vehicle_id = num * _old_vehicle_multiplier + i;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1242
9221
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1243
		/* Read the vehicle type and allocate the right vehicle */
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1244
		Vehicle *v;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1245
		switch (ReadByte(ls)) {
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1246
			default: NOT_REACHED();
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1247
			case 0x00 /*VEH_INVALID */: v = new (_current_vehicle_id) InvalidVehicle();  break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1248
			case 0x10 /*VEH_TRAIN   */: v = new (_current_vehicle_id) Train();           break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1249
			case 0x11 /*VEH_ROAD    */: v = new (_current_vehicle_id) RoadVehicle();     break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1250
			case 0x12 /*VEH_SHIP    */: v = new (_current_vehicle_id) Ship();            break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1251
			case 0x13 /*VEH_AIRCRAFT*/: v = new (_current_vehicle_id) Aircraft();        break;
10271
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1252
			case 0x14 /*VEH_EFFECT  */: v = new (_current_vehicle_id) EffectVehicle();   break;
9221
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1253
			case 0x15 /*VEH_DISASTER*/: v = new (_current_vehicle_id) DisasterVehicle(); break;
1168ec4e2ea4 (svn r12401) -Fix (r9754): when loading TTD savegame some data were lost (profits, ...) due to a 'reallocation' for vehicle type conversion. The conversion is now done before loading the vehicle chunk.
glx
parents: 9220
diff changeset
  1254
		}
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1255
		if (!LoadChunk(ls, v, vehicle_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1256
1340
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1257
		/* This should be consistent, else we have a big problem... */
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1258
		if (v->index != _current_vehicle_id) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
  1259
			DEBUG(oldloader, 0, "Loading failed - vehicle-array is invalid");
1340
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1260
			return false;
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1261
		}
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1262
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1263
		if (_old_order_ptr != 0 && _old_order_ptr != 0xFFFFFFFF) {
9220
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1264
			uint old_id = REMAP_ORDER_IDX(_old_order_ptr);
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1265
			/* There is a maximum of 5000 orders in old savegames, so *if*
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1266
			 * we go over that limit something is very wrong. In that case
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1267
			 * we just assume there are no orders for the vehicle.
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1268
			 */
100ccf09fe18 (svn r12399) -Fix: some old DOS savegame didn't load properly due to 'garbage' that was sprinkled in some places.
rubidium
parents: 9203
diff changeset
  1269
			if (old_id < 5000) v->orders = GetOrder(old_id);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1270
		}
9331
f67d4fd5ed5d (svn r12583) -Codechange: make AssignOrder a class function of order.
rubidium
parents: 9289
diff changeset
  1271
		v->current_order.AssignOrder(UnpackOldOrder(_old_order));
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1272
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1273
		/* For some reason we need to correct for this */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1274
		switch (v->spritenum) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1275
			case 0xfd: break;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1276
			case 0xff: v->spritenum = 0xfe; break;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1277
			default:   v->spritenum >>= 1; break;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1278
		}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1279
8234
7147ae98e47d (svn r11275) -Fix: oldloader crashing when referencing a vehicle that is not yet loaded.
rubidium
parents: 8232
diff changeset
  1280
		if (_old_next_ptr != 0xFFFF) v->next = GetVehiclePoolSize() <= _old_next_ptr ? new (_old_next_ptr) InvalidVehicle() : GetVehicle(_old_next_ptr);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1281
8754
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1282
		_old_string_id = RemapOldStringID(_old_string_id);
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1283
		v->name = CopyFromOldName(_old_string_id);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1284
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1285
		/* Vehicle-subtype is different in TTD(Patch) */
10271
a20997d33fe8 (svn r12803) -Cleanup: rename SpecialVehicle to EffectVehicle to have a uniform naming of the thing instead of using both names for the same thing.
rubidium
parents: 10251
diff changeset
  1286
		if (v->type == VEH_EFFECT) v->subtype = v->subtype >> 1;
7506
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1287
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1288
		if (_cargo_count != 0) {
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1289
			CargoPacket *cp = new CargoPacket((_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, _cargo_count);
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1290
			cp->days_in_transit = _cargo_days;
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1291
			v->cargo.Append(cp);
e52d89f5c7c1 (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium
parents: 7453
diff changeset
  1292
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1293
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1294
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1295
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1296
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1297
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1298
static const OldChunks sign_chunk[] = {
8754
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1299
	OCL_VAR ( OC_UINT16, 1, &_old_string_id ),
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6677
diff changeset
  1300
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, x ),
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6677
diff changeset
  1301
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, y ),
4349
2fc39ff2626e (svn r6050) -Codechange: mass-renamed SignStruct -> Sign and ss -> si. Now functions and variables all match eachother
truelight
parents: 4346
diff changeset
  1302
	OCL_SVAR( OC_FILE_U16 | OC_VAR_I8, Sign, z ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1303
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1304
	OCL_NULL( 6 ),         ///< Width of sign, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1305
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1306
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1307
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1308
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1309
static bool LoadOldSign(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1310
{
8756
512ea7de938c (svn r11824) -Fix (r11822): Converting signs from TTD games incomplete
peter1138
parents: 8755
diff changeset
  1311
	Sign *si = new (num) Sign();
512ea7de938c (svn r11824) -Fix (r11822): Converting signs from TTD games incomplete
peter1138
parents: 8755
diff changeset
  1312
	if (!LoadChunk(ls, si, sign_chunk)) return false;
8754
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1313
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1314
	_old_string_id = RemapOldStringID(_old_string_id);
8756
512ea7de938c (svn r11824) -Fix (r11822): Converting signs from TTD games incomplete
peter1138
parents: 8755
diff changeset
  1315
	si->name = CopyFromOldName(_old_string_id);
8754
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1316
5dae65402806 (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents: 8750
diff changeset
  1317
	return true;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1318
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1319
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1320
static const OldChunks engine_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1321
	OCL_SVAR( OC_UINT16, Engine, player_avail ),
4326
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1322
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, intro_date ),
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1323
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, age ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1324
	OCL_SVAR( OC_UINT16, Engine, reliability ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1325
	OCL_SVAR( OC_UINT16, Engine, reliability_spd_dec ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1326
	OCL_SVAR( OC_UINT16, Engine, reliability_start ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1327
	OCL_SVAR( OC_UINT16, Engine, reliability_max ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1328
	OCL_SVAR( OC_UINT16, Engine, reliability_final ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1329
	OCL_SVAR( OC_UINT16, Engine, duration_phase_1 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1330
	OCL_SVAR( OC_UINT16, Engine, duration_phase_2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1331
	OCL_SVAR( OC_UINT16, Engine, duration_phase_3 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1332
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1333
	OCL_SVAR(  OC_UINT8, Engine, lifelength ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1334
	OCL_SVAR(  OC_UINT8, Engine, flags ),
9061
fe9f2555d02e (svn r12143) -Fix (r8038): Engine::preview_player does not contain a Player ID. Rename this to preview_player_rank and change back to a uint8 to avoid confusion.
peter1138
parents: 8930
diff changeset
  1335
	OCL_SVAR(  OC_UINT8, Engine, preview_player_rank ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1336
	OCL_SVAR(  OC_UINT8, Engine, preview_wait ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1337
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1338
	OCL_NULL( 2 ), ///< Junk
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1339
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1340
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1341
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1342
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1343
static bool LoadOldEngine(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1344
{
10382
d1d4452acbfc (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138
parents: 10284
diff changeset
  1345
	Engine *e = GetTempDataEngine(num);
d1d4452acbfc (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138
parents: 10284
diff changeset
  1346
	if (!LoadChunk(ls, e, engine_chunk)) return false;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1347
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1348
	/* Make sure wagons are marked as do-not-age */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1349
	if ((num >= 27 && num < 54) || (num >= 57 && num < 84) || (num >= 89 && num < 116))
10382
d1d4452acbfc (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138
parents: 10284
diff changeset
  1350
		e->age = 0xFFFF;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1351
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1352
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1353
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1354
8755
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1355
static bool LoadOldEngineName(LoadgameState *ls, int num)
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1356
{
10382
d1d4452acbfc (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138
parents: 10284
diff changeset
  1357
	Engine *e = GetTempDataEngine(num);
8755
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1358
	e->name = CopyFromOldName(RemapOldStringID(ReadUint16(ls)));
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1359
	return true;
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1360
}
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1361
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1362
static const OldChunks subsidy_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1363
	OCL_SVAR(  OC_UINT8, Subsidy, cargo_type ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1364
	OCL_SVAR(  OC_UINT8, Subsidy, age ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1365
	OCL_SVAR(  OC_FILE_U8 | OC_VAR_U16, Subsidy, from ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1366
	OCL_SVAR(  OC_FILE_U8 | OC_VAR_U16, Subsidy, to ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1367
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1368
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1369
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1370
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1371
static inline bool LoadOldSubsidy(LoadgameState *ls, int num)
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1372
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1373
	return LoadChunk(ls, &_subsidies[num], subsidy_chunk);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1374
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1375
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1376
static const OldChunks game_difficulty_chunk[] = {
10707
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1377
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, max_no_competitors ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1378
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, competitor_start_time ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1379
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, number_towns ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1380
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, number_industries ),
10708
5f1e9cffcfa5 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents: 10707
diff changeset
  1381
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan ),
10707
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1382
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, initial_interest ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1383
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, vehicle_costs ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1384
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, competitor_speed ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1385
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, competitor_intelligence ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1386
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, vehicle_breakdowns ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1387
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, subsidy_multiplier ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1388
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, construction_cost ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1389
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, terrain_type ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1390
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, quantity_sea_lakes ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1391
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, economy ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1392
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, line_reverse_mode ),
81a4013a7680 (svn r13255) -Codechange: move _opt to _settings.
rubidium
parents: 10522
diff changeset
  1393
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, disasters ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1394
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1395
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1396
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1397
static inline bool LoadOldGameDifficulty(LoadgameState *ls, int num)
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1398
{
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1399
	bool ret = LoadChunk(ls, &_settings_game.difficulty, game_difficulty_chunk);
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1400
	_settings_game.difficulty.max_loan *= 1000;
10708
5f1e9cffcfa5 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents: 10707
diff changeset
  1401
	return ret;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1402
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1403
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1404
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1405
static bool LoadOldMapPart1(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1406
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1407
	uint i;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1408
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1409
	for (i = 0; i < OLD_MAP_SIZE; i++) {
2360
09e42e4ee139 (svn r2886) Rename the "owner" attribute to "m1", because when it stores an owner it is accessed by [GS]etOwner anyway and when it doesn't store an owner, but arbitrary data, accessing a field called "owner" is confusing.
tron
parents: 2186
diff changeset
  1410
		_m[i].m1 = ReadByte(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1411
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1412
	for (i = 0; i < OLD_MAP_SIZE; i++) {
2049
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1413
		_m[i].m2 = ReadByte(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1414
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1415
	for (i = 0; i < OLD_MAP_SIZE; i++) {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1416
		_old_map3[i * 2] = ReadByte(ls);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1417
		_old_map3[i * 2 + 1] = ReadByte(ls);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1418
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1419
	for (i = 0; i < OLD_MAP_SIZE / 4; i++) {
2049
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1420
		byte b = ReadByte(ls);
5847
9ce114e1d90d (svn r8050) -Codechange: Rename map member extra to m6, since its usage has been widden.
belugas
parents: 5838
diff changeset
  1421
		_m[i * 4 + 0].m6 = GB(b, 0, 2);
9ce114e1d90d (svn r8050) -Codechange: Rename map member extra to m6, since its usage has been widden.
belugas
parents: 5838
diff changeset
  1422
		_m[i * 4 + 1].m6 = GB(b, 2, 2);
9ce114e1d90d (svn r8050) -Codechange: Rename map member extra to m6, since its usage has been widden.
belugas
parents: 5838
diff changeset
  1423
		_m[i * 4 + 2].m6 = GB(b, 4, 2);
9ce114e1d90d (svn r8050) -Codechange: Rename map member extra to m6, since its usage has been widden.
belugas
parents: 5838
diff changeset
  1424
		_m[i * 4 + 3].m6 = GB(b, 6, 2);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1425
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1426
1326
f37b6aa28829 (svn r1830) -Codechange: small stuff to make the file more beautiful (tnx Tron)
truelight
parents: 1325
diff changeset
  1427
	return !ls->failed;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1428
}
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1429
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1430
static bool LoadOldMapPart2(LoadgameState *ls, int num)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1431
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1432
	uint i;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1433
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1434
	for (i = 0; i < OLD_MAP_SIZE; i++) {
2049
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1435
		_m[i].type_height = ReadByte(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1436
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1437
	for (i = 0; i < OLD_MAP_SIZE; i++) {
2049
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1438
		_m[i].m5 = ReadByte(ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1439
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1440
1326
f37b6aa28829 (svn r1830) -Codechange: small stuff to make the file more beautiful (tnx Tron)
truelight
parents: 1325
diff changeset
  1441
	return !ls->failed;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1442
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1443
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1444
static bool LoadTTDPatchExtraChunks(LoadgameState *ls, int num)
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1445
{
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1446
	ReadTTDPatchFlags();
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1447
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1448
	DEBUG(oldloader, 2, "Found %d extra chunk(s)", _old_extra_chunk_nums);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1449
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1450
	for (int i = 0; i != _old_extra_chunk_nums; i++) {
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1451
		uint16 id = ReadUint16(ls);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1452
		uint32 len = ReadUint32(ls);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1453
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1454
		switch (id) {
6411
20de64c934e8 (svn r8820) -Codechange (r8807, r8806): Remove the unneeded calloc/free allocation of GRFConfig and turn it into a simple variable (it's supposed to be data-only). Thanks Tron.
Darkvater
parents: 6400
diff changeset
  1455
			/* List of GRFIDs, used in the savegame. 0x8004 is the new ID
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1456
			 * They are saved in a 'GRFID:4 active:1' format, 5 bytes for each entry */
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1457
			case 0x2:
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1458
			case 0x8004: {
6411
20de64c934e8 (svn r8820) -Codechange (r8807, r8806): Remove the unneeded calloc/free allocation of GRFConfig and turn it into a simple variable (it's supposed to be data-only). Thanks Tron.
Darkvater
parents: 6400
diff changeset
  1459
				/* Skip the first element: TTDP hack for the Action D special variables (FFFF0000 01) */
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1460
				ReadUint32(ls); ReadByte(ls); len -= 5;
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1461
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1462
				ClearGRFConfigList(&_grfconfig);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1463
				while (len != 0) {
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1464
					uint32 grfid = ReadUint32(ls);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1465
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1466
					if (ReadByte(ls) == 1) {
6434
d12a3ab5acbc (svn r8844) -Revert partly (r8820, r8806): Change AppendToGRFConfigList to add the allocated GRFConfig to its list and not copy it.
Darkvater
parents: 6411
diff changeset
  1467
						GRFConfig *c = CallocT<GRFConfig>(1);
d12a3ab5acbc (svn r8844) -Revert partly (r8820, r8806): Change AppendToGRFConfigList to add the allocated GRFConfig to its list and not copy it.
Darkvater
parents: 6411
diff changeset
  1468
						c->grfid = grfid;
d12a3ab5acbc (svn r8844) -Revert partly (r8820, r8806): Change AppendToGRFConfigList to add the allocated GRFConfig to its list and not copy it.
Darkvater
parents: 6411
diff changeset
  1469
						c->filename = strdup("TTDP game, no information");
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1470
6434
d12a3ab5acbc (svn r8844) -Revert partly (r8820, r8806): Change AppendToGRFConfigList to add the allocated GRFConfig to its list and not copy it.
Darkvater
parents: 6411
diff changeset
  1471
						AppendToGRFConfigList(&_grfconfig, c);
d12a3ab5acbc (svn r8844) -Revert partly (r8820, r8806): Change AppendToGRFConfigList to add the allocated GRFConfig to its list and not copy it.
Darkvater
parents: 6411
diff changeset
  1472
						DEBUG(oldloader, 3, "TTDPatch game using GRF file with GRFID %0X", BSWAP32(c->grfid));
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1473
					}
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1474
					len -= 5;
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1475
				};
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1476
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1477
				/* Append static NewGRF configuration */
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1478
				AppendStaticGRFConfigs(&_grfconfig);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1479
			} break;
6411
20de64c934e8 (svn r8820) -Codechange (r8807, r8806): Remove the unneeded calloc/free allocation of GRFConfig and turn it into a simple variable (it's supposed to be data-only). Thanks Tron.
Darkvater
parents: 6400
diff changeset
  1480
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1481
			/* TTDPatch version and configuration */
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
  1482
			case 0x3:
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
  1483
				_ttdp_version = ReadUint32(ls);
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
  1484
				DEBUG(oldloader, 3, "Game saved with TTDPatch version %d.%d.%d r%d",
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
  1485
					GB(_ttdp_version, 24, 8), GB(_ttdp_version, 20, 4), GB(_ttdp_version, 16, 4), GB(_ttdp_version, 0, 16));
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1486
				len -= 4;
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1487
				while (len-- != 0) ReadByte(ls); // skip the configuration
10420
3cbae348882c (svn r12962) -Fix (r12961): forgot one break
smatz
parents: 10419
diff changeset
  1488
				break;
6411
20de64c934e8 (svn r8820) -Codechange (r8807, r8806): Remove the unneeded calloc/free allocation of GRFConfig and turn it into a simple variable (it's supposed to be data-only). Thanks Tron.
Darkvater
parents: 6400
diff changeset
  1489
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1490
			default:
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1491
				DEBUG(oldloader, 4, "Skipping unknown extra chunk %X", id);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1492
				while (len-- != 0) ReadByte(ls);
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1493
				break;
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1494
		}
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1495
	}
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1496
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1497
	return !ls->failed;
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1498
}
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1499
10233
c08376c16fb2 (svn r12765) -Codechange: move some stuff out of variables.h that required including other headers in variables.h.
rubidium
parents: 10222
diff changeset
  1500
extern TileIndex _cur_tileloop_tile;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1501
static uint32 _old_cur_town_ctr;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1502
static const OldChunks main_chunk[] = {
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1503
	OCL_ASSERT( 0 ),
4326
c2ae4dbc1074 (svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents: 4321
diff changeset
  1504
	OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_date ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1505
	OCL_VAR ( OC_UINT16,   1, &_date_fract ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1506
	OCL_NULL( 600 ),            ///< TextEffects
8930
361433723616 (svn r12004) -Codechange: refactor the random functions to reduce code duplication.
rubidium
parents: 8908
diff changeset
  1507
	OCL_VAR ( OC_UINT32,   2, &_random.state ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1508
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1509
	OCL_ASSERT( 0x264 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1510
	OCL_CHUNK(  70, LoadOldTown ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1511
	OCL_ASSERT( 0x1C18 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1512
	OCL_CHUNK(5000, LoadOldOrder ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1513
	OCL_ASSERT( 0x4328 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1514
8207
96f2081fb385 (svn r11245) -Fix r11228: the moreanimation feature made loading TTD(p) games impossible (Csaboka)
truelight
parents: 8190
diff changeset
  1515
	OCL_CHUNK( 1, LoadOldAnimTileList ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1516
	OCL_NULL( 4 ),              ///< old end-of-order-list-pointer, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1517
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1518
	OCL_CHUNK( 255, LoadOldDepot ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1519
	OCL_ASSERT( 0x4B26 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1520
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1521
	OCL_VAR ( OC_UINT32,   1, &_old_cur_town_ctr ),
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1522
	OCL_NULL( 2 ),              ///< timer_counter, no longer in use
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1523
	OCL_NULL( 2 ),              ///< land_code,     no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1524
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1525
	OCL_VAR ( OC_FILE_U16 | OC_VAR_U8, 1, &_age_cargo_skip_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1526
	OCL_VAR ( OC_UINT16,   1, &_tick_counter ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1527
	OCL_VAR (   OC_TILE,   1, &_cur_tileloop_tile ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1528
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1529
	OCL_CHUNK( 49, LoadOldPrice ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1530
	OCL_CHUNK( 12, LoadOldCargoPaymentRate ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1531
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1532
	OCL_ASSERT( 0x4CBA ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1533
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1534
	OCL_CHUNK( 1, LoadOldMapPart1 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1535
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1536
	OCL_ASSERT( 0x48CBA ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1537
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1538
	OCL_CHUNK(250, LoadOldStation ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1539
	OCL_CHUNK( 90, LoadOldIndustry ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1540
	OCL_CHUNK(  8, LoadOldPlayer ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1541
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1542
	OCL_ASSERT( 0x547F2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1543
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1544
	OCL_CHUNK( 850, LoadOldVehicle ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1545
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1546
	OCL_ASSERT( 0x6F0F2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1547
10250
e64ee7484b43 (svn r12782) -Codechange: remove some functions from functions.h and do not statically 'waste' memory when the old name array is not needed anymore.
rubidium
parents: 10233
diff changeset
  1548
	OCL_VAR (  OC_UINT8 | OC_DEREFERENCE_POINTER, 32 * 500, &_old_name_array ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1549
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1550
	OCL_NULL( 0x2000 ),            ///< Old hash-table, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1551
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1552
	OCL_CHUNK( 40, LoadOldSign ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1553
	OCL_CHUNK(256, LoadOldEngine ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1554
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1555
	OCL_VAR ( OC_UINT16,    1, &_vehicle_id_ctr_day ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1556
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1557
	OCL_CHUNK(  8, LoadOldSubsidy ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1558
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1559
	OCL_VAR ( OC_FILE_U16 | OC_VAR_U32,   1, &_next_competitor_start ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1560
	OCL_VAR ( OC_FILE_I16 | OC_VAR_I32,   1, &_saved_scrollpos_x ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1561
	OCL_VAR ( OC_FILE_I16 | OC_VAR_I32,   1, &_saved_scrollpos_y ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1562
	OCL_VAR ( OC_FILE_U16 | OC_VAR_U8,    1, &_saved_scrollpos_zoom ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1563
8239
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
  1564
	OCL_VAR ( OC_FILE_U32 | OC_VAR_I64,   1, &_economy.max_loan ),
4faca456c12d (svn r11280) -Fix [FS#1343]: wrong money related values when loading old games. Inspired on a patch by SmatZ.
rubidium
parents: 8234
diff changeset
  1565
	OCL_VAR ( OC_FILE_U32 | OC_VAR_I64,   1, &_economy.max_loan_unround ),
11121
c257c3ae547c (svn r13679) -Fix [FS#2131]: saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code.
rubidium
parents: 11118
diff changeset
  1566
	OCL_VAR (  OC_INT16,    1, &_economy.fluct ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1567
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1568
	OCL_VAR ( OC_UINT16,    1, &_disaster_delay ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1569
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1570
	OCL_NULL( 144 ),             ///< cargo-stuff, calculated in InitializeLandscapeVariables
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1571
8755
f148fd44aa06 (svn r11823) -Fix (r11822): Custom names from old TTD games were not updated.
peter1138
parents: 8754
diff changeset
  1572
	OCL_CHUNK(256, LoadOldEngineName ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1573
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1574
	OCL_NULL( 144 ),             ///< AI cargo-stuff, calculated in InitializeLandscapeVariables
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1575
	OCL_NULL( 2 ),               ///< Company indexes of players, no longer in use
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1576
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1577
	OCL_VAR ( OC_FILE_U8 | OC_VAR_U16,    1, &_station_tick_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1578
10835
976b9d25c2be (svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents: 10775
diff changeset
  1579
	OCL_VAR (  OC_UINT8,    1, &_settings_game.locale.currency ),
976b9d25c2be (svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents: 10775
diff changeset
  1580
	OCL_VAR (  OC_UINT8,    1, &_settings_game.locale.units ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1581
	OCL_VAR ( OC_FILE_U8 | OC_VAR_U32,    1, &_cur_player_tick_index ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1582
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1583
	OCL_NULL( 2 ),               ///< Date stuff, calculated automatically
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1584
	OCL_NULL( 8 ),               ///< Player colors, calculated automatically
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1585
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1586
	OCL_VAR (  OC_UINT8,    1, &_economy.infl_amount ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1587
	OCL_VAR (  OC_UINT8,    1, &_economy.infl_amount_pr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1588
	OCL_VAR (  OC_UINT8,    1, &_economy.interest_rate ),
6222
50e47f803549 (svn r8660) -Fix
tron
parents: 6130
diff changeset
  1589
	OCL_NULL( 1 ), // available airports
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1590
	OCL_VAR (  OC_UINT8,    1, &_settings_game.vehicle.road_side ),
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1591
	OCL_VAR (  OC_UINT8,    1, &_settings_game.game_creation.town_name ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1592
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1593
	OCL_CHUNK( 1, LoadOldGameDifficulty ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1594
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1595
	OCL_ASSERT( 0x77130 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1596
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1597
	OCL_VAR (  OC_UINT8,    1, &_settings_game.difficulty.diff_level ),
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1598
	OCL_VAR (  OC_UINT8,    1, &_settings_game.game_creation.landscape ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1599
	OCL_VAR (  OC_UINT8,    1, &_trees_tick_ctr ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1600
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1601
	OCL_NULL( 1 ),               ///< Custom vehicle types yes/no, no longer used
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1602
	OCL_VAR (  OC_UINT8,    1, &_settings_game.game_creation.snow_line ),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1603
6677
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1604
	OCL_NULL( 32 ),              ///< new_industry_randtable, no longer used (because of new design)
0578c2e31ed1 (svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents: 6589
diff changeset
  1605
	OCL_NULL( 36 ),              ///< cargo-stuff, calculated in InitializeLandscapeVariables
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1606
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1607
	OCL_ASSERT( 0x77179 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1608
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1609
	OCL_CHUNK( 1, LoadOldMapPart2 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1610
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1611
	OCL_ASSERT( 0x97179 ),
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1612
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1613
	/* Below any (if available) extra chunks from TTDPatch can follow */
6400
7b98825c5cb0 (svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
Darkvater
parents: 6343
diff changeset
  1614
	OCL_CHUNK(1, LoadTTDPatchExtraChunks),
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1615
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1616
	OCL_END()
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1617
};
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1618
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1619
static bool LoadOldMain(LoadgameState *ls)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1620
{
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1621
	int i;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1622
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1623
	/* The first 49 is the name of the game + checksum, skip it */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1624
	fseek(ls->file, HEADER_SIZE, SEEK_SET);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1625
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
  1626
	DEBUG(oldloader, 3, "Reading main chunk...");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1627
	/* Load the biggest chunk */
10251
b41d7d8c873b (svn r12783) -Codechange: do not statically allocate the 'temporary map3 array' in the oldloader.
rubidium
parents: 10250
diff changeset
  1628
	_old_map3 = MallocT<byte>(OLD_MAP_SIZE * 2);
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1629
	if (!LoadChunk(ls, NULL, main_chunk)) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
  1630
		DEBUG(oldloader, 0, "Loading failed");
10251
b41d7d8c873b (svn r12783) -Codechange: do not statically allocate the 'temporary map3 array' in the oldloader.
rubidium
parents: 10250
diff changeset
  1631
		free(_old_map3);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1632
		return false;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1633
	}
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
  1634
	DEBUG(oldloader, 3, "Done, converting game data...");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1635
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1636
	/* Fix some general stuff */
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1637
	_settings_game.game_creation.landscape = _settings_game.game_creation.landscape & 0xF;
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1638
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1639
	/* Remap some pointers */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1640
	_cur_town_ctr      = REMAP_TOWN_IDX(_old_cur_town_ctr);
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1641
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1642
	/* _old_map3 is changed in _map3_lo and _map3_hi */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1643
	for (i = 0; i < OLD_MAP_SIZE; i++) {
2049
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1644
		_m[i].m3 = _old_map3[i * 2];
ad0d49c916d4 (svn r2558) Change the internal map format from 7 arrays to one array of structs, this doesn't change the saved format for now. It's a stepping stone for further changes.
tron
parents: 2019
diff changeset
  1645
		_m[i].m4 = _old_map3[i * 2 + 1];
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1646
	}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1647
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1648
	for (i = 0; i < OLD_MAP_SIZE; i ++) {
6341
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1649
		switch (GetTileType(i)) {
7127
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1650
			case MP_STATION:
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1651
				_m[i].m4 = 0; // We do not understand this TTDP station mapping (yet)
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1652
				switch (_m[i].m5) {
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1653
					/* We have drive through stops at a totally different place */
7768
2060e8d65a72 (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7661
diff changeset
  1654
					case 0x53: case 0x54: _m[i].m5 += 170 - 0x53; break; // Bus drive through
2060e8d65a72 (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7661
diff changeset
  1655
					case 0x57: case 0x58: _m[i].m5 += 168 - 0x57; break; // Truck drive through
2060e8d65a72 (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7661
diff changeset
  1656
					case 0x55: case 0x56: _m[i].m5 += 170 - 0x55; break; // Bus tram stop
2060e8d65a72 (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7661
diff changeset
  1657
					case 0x59: case 0x5A: _m[i].m5 += 168 - 0x59; break; // Truck tram stop
2060e8d65a72 (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7661
diff changeset
  1658
					default: break;
7127
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1659
				}
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1660
				break;
8d8bb32f17f8 (svn r9857) -Fix: loading of TTDP savegames with features that OTTD has.
rubidium
parents: 7057
diff changeset
  1661
6341
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1662
			case MP_RAILWAY:
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1663
				/* We save presignals different from TTDPatch, convert them */
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1664
				if (GetRailTileType(i) == RAIL_TILE_SIGNALS) {
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1665
					/* This byte is always zero in TTD for this type of tile */
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1666
					if (_m[i].m4) /* Convert the presignals to our own format */
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1667
						_m[i].m4 = (_m[i].m4 >> 1) & 7;
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1668
				}
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1669
				/* TTDPatch stores PBS things in L6 and all elsewhere; so we'll just
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1670
				 * clear it for ourselves and let OTTD's rebuild PBS itself */
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1671
				_m[i].m4 &= 0xF; /* Only keep the lower four bits; upper four is PBS */
5d2948b411bf (svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
Darkvater
parents: 6340
diff changeset
  1672
				break;
10522
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1673
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1674
			case MP_WATER:
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1675
				if (GetWaterClass(i) == 3) MakeRiver(i, Random());
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1676
				break;
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1677
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1678
			default:
086a6a349f4f (svn r13066) -Fix [FS#2005]: loading of TTDP savegames with rivers in them.
rubidium
parents: 10429
diff changeset
  1679
				break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1680
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1681
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1682
8232
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1683
	/* Make sure the available engines are really available, otherwise
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1684
	 * we will get a "new vehicle"-spree. */
8897
fe3716f7d205 (svn r11971) -Codechange: use of FOR_ALL_ENGINES/ENGINEIDS_OF_TYPE instead of for-loops
peter1138
parents: 8760
diff changeset
  1685
	Engine *e;
fe3716f7d205 (svn r11971) -Codechange: use of FOR_ALL_ENGINES/ENGINEIDS_OF_TYPE instead of for-loops
peter1138
parents: 8760
diff changeset
  1686
	FOR_ALL_ENGINES(e) {
8232
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1687
		if (_date >= (e->intro_date + 365)) {
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1688
			e->flags = (e->flags & ~ENGINE_EXCLUSIVE_PREVIEW) | ENGINE_AVAILABLE;
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1689
			e->player_avail = (byte)-1;
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1690
		}
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1691
	}
a5bb946ff898 (svn r11271) -Fix [FS#1333]: some (very) old games (TTD original scenarios for example) would give a new vehicle spree, even though the vehicles were introduced decades ago.
rubidium
parents: 8216
diff changeset
  1692
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1693
	/* Fix the game to be compatible with OpenTTD */
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1694
	FixOldTowns();
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1695
	FixOldStations();
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1696
	FixOldVehicles();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1697
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1698
	/* We have a new difficulty setting */
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10708
diff changeset
  1699
	_settings_game.difficulty.town_council_tolerance = Clamp(_settings_game.difficulty.diff_level, 0, 2);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1700
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
  1701
	DEBUG(oldloader, 3, "Finished converting game data");
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
  1702
	DEBUG(oldloader, 1, "TTD(Patch) savegame successfully converted");
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1703
10251
b41d7d8c873b (svn r12783) -Codechange: do not statically allocate the 'temporary map3 array' in the oldloader.
rubidium
parents: 10250
diff changeset
  1704
	free(_old_map3);
b41d7d8c873b (svn r12783) -Codechange: do not statically allocate the 'temporary map3 array' in the oldloader.
rubidium
parents: 10250
diff changeset
  1705
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1706
	return true;
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1707
}
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1708
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1709
bool LoadOldSaveGame(const char *file)
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1710
{
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1711
	LoadgameState ls;
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1712
6342
4a149d14f07c (svn r8739) -Codechange: Update the oldloader debug levels to be more in spec with the guidelines in debug.h.
Darkvater
parents: 6341
diff changeset
  1713
	DEBUG(oldloader, 3, "Trying to load a TTD(Patch) savegame");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1714
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1715
	InitLoading(&ls);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1716
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1717
	/* Open file */
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1718
	ls.file = fopen(file, "rb");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1719
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1720
	if (ls.file == NULL) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4983
diff changeset
  1721
		DEBUG(oldloader, 0, "Cannot open file '%s'", file);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1722
		return false;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1723
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1724
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1725
	/* Load the main chunk */
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1726
	if (!LoadOldMain(&ls)) return false;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 123
diff changeset
  1727
2452
0960df1a61b4 (svn r2978) Make a global variable local
tron
parents: 2360
diff changeset
  1728
	fclose(ls.file);
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1729
10419
e18969518cac (svn r12961) -Codechange: store the type of savegame we are loading in a global variable
smatz
parents: 10382
diff changeset
  1730
	/* Some old TTD(Patch) savegames could have buoys at tile 0
10111
703ab46c030e (svn r12642) -Fix: remove buggy buoys at tile 0 from old TTDP savegames
smatz
parents: 9335
diff changeset
  1731
	 * (without assigned station struct)
703ab46c030e (svn r12642) -Fix: remove buggy buoys at tile 0 from old TTDP savegames
smatz
parents: 9335
diff changeset
  1732
	 * MakeWater() can be used as long as sea has the same
703ab46c030e (svn r12642) -Fix: remove buggy buoys at tile 0 from old TTDP savegames
smatz
parents: 9335
diff changeset
  1733
	 * format as old savegames (eg. everything is zeroed) */
703ab46c030e (svn r12642) -Fix: remove buggy buoys at tile 0 from old TTDP savegames
smatz
parents: 9335
diff changeset
  1734
	MakeWater(0);
703ab46c030e (svn r12642) -Fix: remove buggy buoys at tile 0 from old TTDP savegames
smatz
parents: 9335
diff changeset
  1735
6557
8381016f71f3 (svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents: 6434
diff changeset
  1736
	_pause_game = 2;
1340
50d99579ddd0 (svn r1844) -Fix: small protection in oldloader.c, and put the savegame on pause by default
truelight
parents: 1328
diff changeset
  1737
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1738
	return true;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1739
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1740
4221
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1741
void GetOldSaveGameName(char *title, const char *path, const char *file)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1742
{
4221
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1743
	char filename[MAX_PATH];
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1744
	FILE *f;
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1745
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1746
	snprintf(filename, lengthof(filename), "%s" PATHSEP "%s", path, file);
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1747
	f = fopen(filename, "rb");
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1748
	title[0] = '\0';
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4000
diff changeset
  1749
	title[48] = '\0';
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1750
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1751
	if (f == NULL) return;
1326
f37b6aa28829 (svn r1830) -Codechange: small stuff to make the file more beautiful (tnx Tron)
truelight
parents: 1325
diff changeset
  1752
3626
151f99d38c69 (svn r4525) - Codechange: Do a little cleanup; also fix a typo while here: _old_vehicle_multipler should be _old_vehicle_multiplier
Darkvater
parents: 3580
diff changeset
  1753
	if (fread(title, 1, 48, f) != 48) snprintf(title, 48, "Corrupt file");
1322
8697b73baa64 (svn r1826) -Feature: a brand new OldLoader so OpenTTD is TTD(Patch) compatible
truelight
parents: 1314
diff changeset
  1754
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1755
	fclose(f);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1756
}