From 69a79fd00a47f16fd0c3129914896044f987a534 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 15 Jan 2017 20:24:08 +0100 Subject: [PATCH] Import water colour --- src/openrct2/rct1.h | 5 +++++ src/openrct2/rct1/S4Importer.cpp | 21 ++++++++++++++++++++- src/openrct2/rct1/Tables.h | 1 + src/openrct2/rct1/tables.cpp | 2 +- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/openrct2/rct1.h b/src/openrct2/rct1.h index ec3a751106..f2261eab44 100644 --- a/src/openrct2/rct1.h +++ b/src/openrct2/rct1.h @@ -1158,6 +1158,11 @@ enum { COPY_COLOUR_2 = -2, }; +enum { + RCT1_WATER_CYAN, + RCT1_WATER_ORANGE +}; + #define RCT1_MAX_STATIONS 4 extern const uint8 gRideCategories[0x60]; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index bda5a56d71..c0b249b432 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -102,6 +102,7 @@ private: EntryList _pathEntries; EntryList _pathAdditionEntries; EntryList _sceneryGroupEntries; + EntryList _waterEntry; // Lookup tables for converting from RCT1 hard coded types to the new dynamic object entries uint8 _rideTypeToRideEntryMap[96]; @@ -198,6 +199,7 @@ private: AddAvailableEntriesFromMap(); AddAvailableEntriesFromRides(); AddAvailableEntriesFromSceneryGroups(); + AddEntryForWater(); } void AddDefaultEntries() @@ -381,6 +383,22 @@ private: } } + void AddEntryForWater() + { + const char * entryName; + + if (_s4.game_version < FILE_VERSION_RCT1_LL) + { + entryName = RCT1::GetWaterObject(RCT1_WATER_CYAN); + } + else + { + entryName = RCT1::GetWaterObject(_s4.water_colour); + } + + _waterEntry.GetOrAddEntry(entryName); + } + void AddEntryForRideType(uint8 rideType) { assert(rideType < Util::CountOf(_rideTypeToRideEntryMap)); @@ -1510,7 +1528,7 @@ private: "BN9 " })); LoadObjects(OBJECT_TYPE_PARK_ENTRANCE, std::vector({ "PKENT1 " })); - LoadObjects(OBJECT_TYPE_WATER, std::vector({ "WTRCYAN " })); + LoadObjects(OBJECT_TYPE_WATER, _waterEntry); } void LoadObjects(uint8 objectType, const EntryList &entries) @@ -2261,6 +2279,7 @@ private: case OBJECT_TYPE_PATHS: return &_pathEntries; case OBJECT_TYPE_PATH_BITS: return &_pathAdditionEntries; case OBJECT_TYPE_SCENERY_SETS: return &_sceneryGroupEntries; + case OBJECT_TYPE_WATER: return &_waterEntry; } return nullptr; } diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index d5b7d69aab..f5963f02e1 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -48,6 +48,7 @@ namespace RCT1 const char * GetPathObject(uint8 pathType); const char * GetPathAddtionObject(uint8 pathAdditionType); const char * GetSceneryGroupObject(uint8 sceneryGroupType); + const char * GetWaterObject(uint8 waterType); const std::vector GetSceneryObjects(uint8 sceneryType); diff --git a/src/openrct2/rct1/tables.cpp b/src/openrct2/rct1/tables.cpp index f1ddd1375c..d3f03ca52c 100644 --- a/src/openrct2/rct1/tables.cpp +++ b/src/openrct2/rct1/tables.cpp @@ -1362,7 +1362,7 @@ namespace RCT1 #pragma warning(push) #pragma warning(disable : 4505) // 'identifier' unreferenced local function has been removed - static const char * GetWaterObject(uint8 waterType) + const char * GetWaterObject(uint8 waterType) { static const char * map[] = {