summaryrefslogtreecommitdiff
path: root/network_client.c
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2006-03-02 00:32:48 +0000
committerDarkvater <darkvater@openttd.org>2006-03-02 00:32:48 +0000
commit903c3aa63d71cfcf9560715b8fb41724d86c07e3 (patch)
tree6ad37c31a548b6c9554beca6f072de8478242d16 /network_client.c
parentf83f192309542b306e874cf7d4dedc74e6384e62 (diff)
downloadopenttd-903c3aa63d71cfcf9560715b8fb41724d86c07e3.tar.xz
(svn r3721) - [3/4] Present the game with a unified structure for the configuration-ini, saveload, console and gui representations of the settings. From part 3 on, OpenTTD is once again compilable.
- Code has been added to the saveload code to honour the SLF_SAVE_NO and SLF_NETWORK_NO flags. SLF_NETWORK_NO just reads in the the bytestream and then discards it because that setting is not synchronised. For this the function SlSkipBytes() has been reinstated - SAVEGAME_VERSION has been changed from a constant ENUM to a constant integer. This was done for the configuration-code to be able to tell which version of a CONDVAR type to handle. As said before, because settings can be saved to the savegame, they will become conditional at some point. The configuration code always has to read the 'most recent' version. - GameOptions are saved through the new structure. It is fully compatible with any old savegame...however it is better. Because of the move to this new format we can instruct the loader to skip certain variables. Autosave for example isn't synchronised anymore (in the network). The same goes for currency and kilometers :D. That is the only functionality change this patch is supposed to have if I have written it correctly. - NOTE! Patches are still not saved so for Multiplayer to work network_client.c and network_server.c needed slight modifications.
Diffstat (limited to 'network_client.c')
-rw-r--r--network_client.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/network_client.c b/network_client.c
index f8d88e8fc..83a20de5b 100644
--- a/network_client.c
+++ b/network_client.c
@@ -826,7 +826,7 @@ static NetworkClientPacket* const _network_client_packet[] = {
// If this fails, check the array above with network_data.h
assert_compile(lengthof(_network_client_packet) == PACKET_END);
-extern const SettingDesc patch_settings[];
+extern const SettingDesc _patch_settings[];
// This is a TEMPORARY solution to get the patch-settings
// to the client. When the patch-settings are saved in the savegame
@@ -835,25 +835,25 @@ static void NetworkRecvPatchSettings(NetworkClientState* cs, Packet* p)
{
const SettingDesc *item;
- item = patch_settings;
+ item = _patch_settings;
- while (item->name != NULL) {
- switch (item->flags) {
- case SDT_BOOL:
- case SDT_INT8:
- case SDT_UINT8:
- *(uint8 *)(item->ptr) = NetworkRecv_uint8(cs, p);
+ for (; item->save.cmd != SL_END; item++) {
+ void *var = ini_get_variable(&item->save, &_patches);
+ switch (GetVarMemType(item->save.conv)) {
+ case SLE_VAR_BL:
+ case SLE_VAR_I8:
+ case SLE_VAR_U8:
+ *(uint8 *)(var) = NetworkRecv_uint8(cs, p);
break;
- case SDT_INT16:
- case SDT_UINT16:
- *(uint16 *)(item->ptr) = NetworkRecv_uint16(cs, p);
+ case SLE_VAR_I16:
+ case SLE_VAR_U16:
+ *(uint16 *)(var) = NetworkRecv_uint16(cs, p);
break;
- case SDT_INT32:
- case SDT_UINT32:
- *(uint32 *)(item->ptr) = NetworkRecv_uint32(cs, p);
+ case SLE_VAR_I32:
+ case SLE_VAR_U32:
+ *(uint32 *)(var) = NetworkRecv_uint32(cs, p);
break;
}
- item++;
}
}