From 91b4782a2f6a256e55072783d7fdcf83d4881c8d Mon Sep 17 00:00:00 2001 From: nordsoft Date: Mon, 17 Apr 2023 04:47:54 +0400 Subject: [PATCH] Refactor more fields from campaign header --- client/mainmenu/CPrologEpilogVideo.cpp | 4 ++-- lib/mapping/CCampaignHandler.cpp | 10 +++++----- lib/mapping/CCampaignHandler.h | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/mainmenu/CPrologEpilogVideo.cpp b/client/mainmenu/CPrologEpilogVideo.cpp index 5161c74ed..e496b00f7 100644 --- a/client/mainmenu/CPrologEpilogVideo.cpp +++ b/client/mainmenu/CPrologEpilogVideo.cpp @@ -29,8 +29,8 @@ CPrologEpilogVideo::CPrologEpilogVideo(CCampaignScenario::SScenarioPrologEpilog pos = center(Rect(0, 0, 800, 600)); updateShadow(); - CCS->videoh->open(CCampaignHandler::prologVideoName(spe.prologVideo)); - CCS->musich->playMusic("Music/" + CCampaignHandler::prologMusicName(spe.prologMusic), true, true); + CCS->videoh->open(spe.prologVideo); + CCS->musich->playMusic("Music/" + spe.prologMusic, true, true); // MPTODO: Custom campaign crashing on this? // voiceSoundHandle = CCS->soundh->playSound(CCampaignHandler::prologVoiceName(spe.prologVideo)); diff --git a/lib/mapping/CCampaignHandler.cpp b/lib/mapping/CCampaignHandler.cpp index a9064f285..f7760d37c 100644 --- a/lib/mapping/CCampaignHandler.cpp +++ b/lib/mapping/CCampaignHandler.cpp @@ -254,8 +254,8 @@ CCampaignScenario CCampaignHandler::readScenarioFromJson(JsonNode & reader) ret.hasPrologEpilog = !identifier.isNull(); if(ret.hasPrologEpilog) { - ret.prologVideo = identifier["video"].Integer(); - ret.prologMusic = identifier["music"].Integer(); + ret.prologVideo = identifier["video"].String(); + ret.prologMusic = identifier["music"].String(); ret.prologText = identifier["text"].String(); } return ret; @@ -508,8 +508,8 @@ CCampaignScenario CCampaignHandler::readScenarioFromMemory( CBinaryReader & read ret.hasPrologEpilog = reader.readUInt8(); if(ret.hasPrologEpilog) { - ret.prologVideo = reader.readUInt8(); - ret.prologMusic = reader.readUInt8(); + ret.prologVideo = CCampaignHandler::prologVideoName(reader.readUInt8()); + ret.prologMusic = CCampaignHandler::prologMusicName(reader.readUInt8()); ret.prologText = readLocalizedString(reader, header.filename, header.modName, header.encoding, identifier); } return ret; @@ -519,7 +519,7 @@ CCampaignScenario CCampaignHandler::readScenarioFromMemory( CBinaryReader & read ret.conquered = false; ret.mapName = reader.readBaseString(); ret.packedMapSize = reader.readUInt32(); - if(header.numberOfScenarios > 0) //unholy alliance + if(header.numberOfScenarios > 8) //unholy alliance { ret.loadPreconditionRegions(reader.readUInt16()); } diff --git a/lib/mapping/CCampaignHandler.h b/lib/mapping/CCampaignHandler.h index 6d093122a..bb9e9e765 100644 --- a/lib/mapping/CCampaignHandler.h +++ b/lib/mapping/CCampaignHandler.h @@ -161,8 +161,8 @@ public: struct DLL_LINKAGE SScenarioPrologEpilog { bool hasPrologEpilog = false; - ui8 prologVideo = 0; // from CmpMovie.txt - ui8 prologMusic = 0; // from CmpMusic.txt + std::string prologVideo; // from CmpMovie.txt + std::string prologMusic; // from CmpMusic.txt std::string prologText; template void serialize(Handler &h, const int formatVersion) @@ -285,11 +285,11 @@ class DLL_LINKAGE CCampaignHandler /// headerOnly - only header will be decompressed, returned vector wont have any maps static std::vector> getFile(std::unique_ptr file, bool headerOnly); -public: static std::string prologVideoName(ui8 index); static std::string prologMusicName(ui8 index); static std::string prologVoiceName(ui8 index); +public: static CCampaignHeader getHeader( const std::string & name); //name - name of appropriate file static std::unique_ptr getCampaign(const std::string & name); //name - name of appropriate file