From 8ce3dece5ef077e759af5644d1cbe50f0f3b3496 Mon Sep 17 00:00:00 2001 From: Tahir Date: Tue, 28 May 2024 12:32:53 +0100 Subject: [PATCH] wip: timeline refactor to use condition's ui assigned id --- src/world/Encounter/EncounterTimeline.cpp | 162 +++++++++++----------- src/world/Encounter/EncounterTimeline.h | 85 ++++++------ 2 files changed, 123 insertions(+), 124 deletions(-) diff --git a/src/world/Encounter/EncounterTimeline.cpp b/src/world/Encounter/EncounterTimeline.cpp index bc0d8f84..c76f82ed 100644 --- a/src/world/Encounter/EncounterTimeline.cpp +++ b/src/world/Encounter/EncounterTimeline.cpp @@ -27,11 +27,11 @@ namespace Sapphire // todo: check time elapsed - switch( m_conditionId ) + switch( m_conditionType ) { - case ConditionId::HpPctLessThan: + case ConditionType::HpPctLessThan: return pBNpc->getHpPercent() < hp.val; - case ConditionId::HpPctBetween: + case ConditionType::HpPctBetween: { auto hpPct = pBNpc->getHpPercent(); return hpPct >= hp.min && hpPct <= hp.max; @@ -47,19 +47,19 @@ namespace Sapphire if( pDirector == nullptr ) pDirector = pTeri->getAsQuestBattle(); - switch( m_conditionId ) + switch( m_conditionType ) { - case ConditionId::DirectorVarEquals: + case ConditionType::DirectorVarEquals: return pDirector->getDirectorVar( param.index ) == param.value; - case ConditionId::DirectorVarGreaterThan: + case ConditionType::DirectorVarGreaterThan: return pDirector->getDirectorVar( param.index ) > param.value; - case ConditionId::DirectorFlagsEquals: + case ConditionType::DirectorFlagsEquals: return pDirector->getFlags() == param.flags; - case ConditionId::DirectorFlagsGreaterThan: + case ConditionType::DirectorFlagsGreaterThan: return pDirector->getFlags() > param.flags; - case ConditionId::DirectorSeqEquals: + case ConditionType::DirectorSeqEquals: return pDirector->getSequence() == param.seq; - case ConditionId::DirectorSeqGreaterThan: + case ConditionType::DirectorSeqGreaterThan: return pDirector->getSequence() > param.seq; } return false; @@ -354,8 +354,8 @@ namespace Sapphire auto pConditionData = std::dynamic_pointer_cast< TimepointDataCondition, TimepointData >( getData() ); // todo: dont reset so things can resume? idk - self.resetConditionState( pConditionData->m_index ); - self.setConditionStateEnabled( pConditionData->m_index, pConditionData->m_enabled ); + self.resetConditionState( pConditionData->m_conditionId ); + self.setConditionStateEnabled( pConditionData->m_conditionId, pConditionData->m_enabled ); } } @@ -368,15 +368,15 @@ namespace Sapphire /* class RngCondition : TimepointCondition { - EncounterTimepointConditionId m_type; + EncounterTimepointcondition m_type; std::vector< uint32_t > m_params - RngCondition( EncounterTimepointConditionId conditionId std::vector< uint32_t params ) : m_type( conditionId ), m_params( params ){} + RngCondition( EncounterTimepointcondition condition std::vector< uint32_t params ) : m_type( condition ), m_params( params ){} bool isConditionMet( uint32_t shit ) { switch( m_type ) { - case EncounterTimepointConditionId::RngMinMax: + case EncounterTimepointcondition::RngMinMax: return RNGMgr::generate( params[0], params[1] ) == params[2]; } return false; @@ -437,10 +437,10 @@ namespace Sapphire // parsing stuff below // - void EncounterTimeline::ConditionHp::from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, + void EncounterTimeline::ConditionHp::from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ) { - PhaseCondition::from_json( json, phase, conditionId ); + PhaseCondition::from_json( json, phase, condition ); auto paramData = json.at( "paramData" ); auto actorRef = paramData.at( "sourceActor" ).get< std::string >(); @@ -451,12 +451,12 @@ namespace Sapphire else throw std::runtime_error( fmt::format( std::string( "EncounterTimeline::ConditionHp::from_json unable to find actor by name: %s" ), actorRef ) ); - switch( conditionId ) + switch( condition ) { - case ConditionId::HpPctLessThan: + case ConditionType::HpPctLessThan: this->hp.val = paramData.at( "hp" ).get< uint32_t >(); break; - case ConditionId::HpPctBetween: + case ConditionType::HpPctBetween: this->hp.min = paramData.at( "hpMin" ).get< uint32_t >(), this->hp.max = paramData.at( "hpMax" ).get< uint32_t >(); break; @@ -465,29 +465,29 @@ namespace Sapphire } } - void EncounterTimeline::ConditionDirectorVar::from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId ) + void EncounterTimeline::ConditionDirectorVar::from_json( nlohmann::json& json, Phase& phase, ConditionType condition ) { - PhaseCondition::from_json( json, phase, conditionId ); + PhaseCondition::from_json( json, phase, condition ); auto paramData = json.at( "paramData" ); - switch( conditionId ) + switch( condition ) { - case ConditionId::DirectorVarEquals: - case ConditionId::DirectorVarGreaterThan: + case ConditionType::DirectorVarEquals: + case ConditionType::DirectorVarGreaterThan: { param.index = paramData.at( "idx" ).get< uint32_t >(); param.value = paramData.at( "val" ).get< uint32_t >(); } break; - case ConditionId::DirectorFlagsEquals: - case ConditionId::DirectorFlagsGreaterThan: + case ConditionType::DirectorFlagsEquals: + case ConditionType::DirectorFlagsGreaterThan: { param.flags = paramData.at( "flags" ).get< uint32_t >(); } break; - case ConditionId::DirectorSeqEquals: - case ConditionId::DirectorSeqGreaterThan: + case ConditionType::DirectorSeqEquals: + case ConditionType::DirectorSeqGreaterThan: { param.seq = paramData.at( "seq" ).get< uint32_t >(); } @@ -497,10 +497,10 @@ namespace Sapphire } } - void EncounterTimeline::ConditionCombatState::from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, + void EncounterTimeline::ConditionCombatState::from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ) { - PhaseCondition::from_json( json, phase, conditionId ); + PhaseCondition::from_json( json, phase, condition ); auto paramData = json.at( "paramData" ); auto actorRef = paramData.at( "sourceActor" ).get< std::string >(); @@ -514,9 +514,9 @@ namespace Sapphire this->combatState = paramData.at( "combatState" ).get< CombatStateType >(); } - void EncounterTimeline::ConditionEncounterTimeElapsed::from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId ) + void EncounterTimeline::ConditionEncounterTimeElapsed::from_json( nlohmann::json& json, Phase& phase, ConditionType condition ) { - PhaseCondition::from_json( json, phase, conditionId ); + PhaseCondition::from_json( json, phase, condition ); auto paramData = json.at( "paramData" ); auto duration = paramData.at( "duration" ).get< uint64_t >(); @@ -524,10 +524,10 @@ namespace Sapphire this->duration = duration; } - void EncounterTimeline::ConditionBNpcFlags::from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, + void EncounterTimeline::ConditionBNpcFlags::from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ) { - PhaseCondition::from_json( json, phase, conditionId ); + PhaseCondition::from_json( json, phase, condition ); auto actorRef = json.at( "actor" ).get< std::string >(); // resolve the actor whose name we are checking @@ -625,7 +625,7 @@ namespace Sapphire { // todo: CastAction // todo: parse and build callback funcs - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto actorRef = json.at( "sourceActor" ).get< std::string >(); auto actionId = json.at( "actionId" ).get< uint32_t >(); @@ -640,7 +640,7 @@ namespace Sapphire break; case TimepointDataType::MoveTo: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto pos = dataJ.at( "pos" ).get< std::vector< float > >(); auto rot = dataJ.at( "rot" ).get< float >(); auto pathReq = dataJ.at( "pathRequested" ).get< bool >() ? MoveType::WalkPath : MoveType::Teleport; @@ -650,7 +650,7 @@ namespace Sapphire break; case TimepointDataType::LogMessage: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto messageId = dataJ.at( "messageId" ).get< uint32_t >(); auto params = dataJ.at( "params" ).get< std::vector< uint32_t > >(); @@ -659,7 +659,7 @@ namespace Sapphire break; case TimepointDataType::BattleTalk: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto params = dataJ.at( "params" ).get< std::vector< uint32_t > >(); auto pBattleTalkData = std::make_shared< TimepointDataBattleTalk >( params ); @@ -679,7 +679,7 @@ namespace Sapphire // case TimepointDataType::DirectorVar: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto index = dataJ.at( "idx" ).get< uint32_t >(); auto val = dataJ.at( "val" ).get< uint32_t >(); auto opStr = dataJ.at( "opc" ).get< std::string >(); @@ -694,7 +694,7 @@ namespace Sapphire break; case TimepointDataType::DirectorVarLR: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto index = dataJ.at( "idx" ).get< uint32_t >(); auto left = dataJ.at( "left" ).get< uint32_t >(); auto right = dataJ.at( "right" ).get< uint32_t >(); @@ -711,7 +711,7 @@ namespace Sapphire break; case TimepointDataType::DirectorSeq: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto seq = dataJ.at( "val" ).get< uint32_t >(); auto opStr = dataJ.at( "opc" ).get< std::string >(); DirectorOpId op = directorOpMap.find( opStr )->second; @@ -724,7 +724,7 @@ namespace Sapphire break; case TimepointDataType::DirectorFlags: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto flags = dataJ.at( "val" ).get< uint32_t >(); auto opStr = dataJ.at( "opc" ).get< std::string >(); DirectorOpId op = directorOpMap.find( opStr )->second; @@ -749,7 +749,7 @@ namespace Sapphire case TimepointDataType::SpawnBNpc: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto hateSrcJ = dataJ.at( "hateSrc" ); auto actorRef = dataJ.at( "spawnActor" ).get< std::string >(); auto flags = dataJ.at( "flags" ).get< uint32_t >(); @@ -767,7 +767,7 @@ namespace Sapphire break; case TimepointDataType::SetBNpcFlags: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); auto actorRef = dataJ.at( "spawnActor" ).get< std::string >(); auto flags = dataJ.at( "flags" ).get< uint32_t >(); @@ -786,7 +786,7 @@ namespace Sapphire case TimepointDataType::SetEObjState: { - auto dataJ = json.at( "data" ); + auto& dataJ = json.at( "data" ); // todo: SetEObjState } @@ -794,11 +794,11 @@ namespace Sapphire case TimepointDataType::SetCondition: { - auto dataJ = json.at( "data" ); - auto index = dataJ.at( "conditionId" ).get< uint32_t >(); + auto& dataJ = json.at( "data" ); + auto conditionId = dataJ.at( "conditionId" ).get< uint32_t >(); auto enabled = dataJ.at( "enabled" ).get< bool >(); - m_pData = std::make_shared< TimepointDataCondition >( index - 1, enabled ); + m_pData = std::make_shared< TimepointDataCondition >( conditionId, enabled ); } break; @@ -810,24 +810,24 @@ namespace Sapphire EncounterTimeline::TimelinePack EncounterTimeline::getEncounterPack( const std::string& name, bool reload ) { static std::map< std::string, TimelinePack > cache = {}; - const static std::unordered_map< std::string, ConditionId > conditionIdMap = + const static std::unordered_map< std::string, ConditionType > conditionMap = { - { "hpPctLessThan", ConditionId::HpPctLessThan }, - { "hpPctBetween", ConditionId::HpPctBetween }, + { "hpPctLessThan", ConditionType::HpPctLessThan }, + { "hpPctBetween", ConditionType::HpPctBetween }, - { "directorVarEquals", ConditionId::DirectorVarEquals }, - { "directorVarGreaterThan", ConditionId::DirectorVarGreaterThan }, + { "directorVarEquals", ConditionType::DirectorVarEquals }, + { "directorVarGreaterThan", ConditionType::DirectorVarGreaterThan }, - { "directorSeqEquals", ConditionId::DirectorSeqEquals }, - { "directorSeqGreaterThan", ConditionId::DirectorSeqGreaterThan }, + { "directorSeqEquals", ConditionType::DirectorSeqEquals }, + { "directorSeqGreaterThan", ConditionType::DirectorSeqGreaterThan }, - { "directorFlagsEquals", ConditionId::DirectorFlagsEquals }, - { "directorFlagsGreaterThan", ConditionId::DirectorFlagsGreaterThan }, + { "directorFlagsEquals", ConditionType::DirectorFlagsEquals }, + { "directorFlagsGreaterThan", ConditionType::DirectorFlagsGreaterThan }, - { "encounterTimeElapsed", ConditionId::EncounterTimeElapsed }, + { "encounterTimeElapsed", ConditionType::EncounterTimeElapsed }, - { "combatState", ConditionId::CombatState }, - { "bnpcHasFlags", ConditionId::BNpcHasFlags } + { "combatState", ConditionType::CombatState }, + { "bnpcHasFlags", ConditionType::BNpcHasFlags } }; TimelinePack pack; @@ -903,16 +903,14 @@ namespace Sapphire { auto& pcV = pcJ.value(); auto conditionName = pcV.at( "condition" ).get< std::string >(); - auto description = pcV.at( "description" ).get< std::string >(); - auto loop = pcV.at( "loop" ).get< bool >(); auto phaseRef = pcV.at( "targetPhase" ).get< std::string >(); auto actorRef = pcV.at( "targetActor" ).get< std::string >(); - - ConditionId conditionId; + + ConditionType condition; // make sure condition exists - if( auto it = conditionIdMap.find( conditionName ); it != conditionIdMap.end() ) - conditionId = it->second; + if( auto it = conditionMap.find( conditionName ); it != conditionMap.end() ) + condition = it->second; else throw std::runtime_error( fmt::format( std::string( "EncounterTimeline::buildEncounterTimeline - no condition id found by name: %s" ), conditionName ) ); @@ -930,36 +928,36 @@ namespace Sapphire // build the condition PhaseConditionPtr pCondition; - switch( conditionId ) + switch( condition ) { - case ConditionId::HpPctLessThan: - case ConditionId::HpPctBetween: + case ConditionType::HpPctLessThan: + case ConditionType::HpPctBetween: { auto pHpCondition = std::make_shared< ConditionHp >(); - pHpCondition->from_json( pcV, phase, conditionId, actorNameMap ); + pHpCondition->from_json( pcV, phase, condition, actorNameMap ); } break; - case ConditionId::DirectorVarEquals: - case ConditionId::DirectorVarGreaterThan: - case ConditionId::DirectorFlagsEquals: - case ConditionId::DirectorFlagsGreaterThan: - case ConditionId::DirectorSeqEquals: - case ConditionId::DirectorSeqGreaterThan: + case ConditionType::DirectorVarEquals: + case ConditionType::DirectorVarGreaterThan: + case ConditionType::DirectorFlagsEquals: + case ConditionType::DirectorFlagsGreaterThan: + case ConditionType::DirectorSeqEquals: + case ConditionType::DirectorSeqGreaterThan: { auto pDirectorCondition = std::make_shared< ConditionDirectorVar >(); - pDirectorCondition->from_json( pcV, phase, conditionId ); + pDirectorCondition->from_json( pcV, phase, condition ); } break; - case ConditionId::EncounterTimeElapsed: + case ConditionType::EncounterTimeElapsed: { auto pEncounterCondition = std::make_shared< ConditionEncounterTimeElapsed >(); - pEncounterCondition->from_json( pcV, phase, conditionId ); + pEncounterCondition->from_json( pcV, phase, condition ); } break; - case ConditionId::CombatState: + case ConditionType::CombatState: { auto pCombatStateCondition = std::make_shared< ConditionCombatState >(); - pCombatStateCondition->from_json( pcV, phase, conditionId, actorNameMap ); + pCombatStateCondition->from_json( pcV, phase, condition, actorNameMap ); } break; default: diff --git a/src/world/Encounter/EncounterTimeline.h b/src/world/Encounter/EncounterTimeline.h index 7f18cc4a..3a67093e 100644 --- a/src/world/Encounter/EncounterTimeline.h +++ b/src/world/Encounter/EncounterTimeline.h @@ -53,8 +53,8 @@ namespace Sapphire // // Enums // - // EncounterFight::OnTick() { switch EncounterTimepointConditionId } - enum class ConditionId : uint32_t + // EncounterFight::OnTick() { switch EncounterTimepointcondition } + enum class ConditionType : uint32_t { HpPctLessThan, HpPctBetween, @@ -391,12 +391,12 @@ namespace Sapphire struct TimepointDataCondition : public TimepointData { // todo: rng? - uint32_t m_index; + uint32_t m_conditionId; bool m_enabled; - TimepointDataCondition( uint32_t index, bool enabled ) : + TimepointDataCondition( uint32_t conditionId, bool enabled ) : TimepointData( TimepointDataType::SetCondition ), - m_index( index ), + m_conditionId( conditionId ), m_enabled( enabled ) { } @@ -493,7 +493,7 @@ namespace Sapphire if( timepoint.durationElapsed( timepointElapsed ) && timepoint.finished( tpState, timepointElapsed ) ) { - timepoint.reset( tpState ); + // timepoint.reset( tpState ); // make sure this timepoint isnt run again unless phase loops ++i; state.m_phaseInfo.m_lastTimepointIndex = i; @@ -513,9 +513,6 @@ namespace Sapphire state.m_phaseInfo.m_startTime = 0; state.m_phaseInfo.m_lastTimepointIndex = 0; state.m_phaseInfo.m_lastTimepointTime = 0; - - state.m_phaseInfo.m_timepointStates.clear(); - state.m_phaseInfo.m_timepointStates.resize( m_timepoints.size() ); } bool completed( const ConditionState& state ) const @@ -529,25 +526,27 @@ namespace Sapphire public std::enable_shared_from_this< PhaseCondition > { protected: - ConditionId m_conditionId{ 0 }; + ConditionType m_conditionType{ 0 }; Phase m_phase; std::string m_description; uint32_t m_cooldown{ 0 }; bool m_loop{ false }; bool m_enabled{ true }; + uint32_t m_id{ 0 }; public: PhaseCondition() {} ~PhaseCondition() {} - virtual void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId ) + virtual void from_json( nlohmann::json& json, Phase& phase, ConditionType condition ) { - this->m_conditionId = conditionId; + this->m_conditionType = condition; this->m_loop = json.at( "loop" ).get< bool >(); //this->m_cooldown = json.at( "cooldown" ).get< uint32_t >(); this->m_phase = phase; this->m_description = json.at( "description" ).get< std::string >(); this->m_enabled = json.at( "enabled" ).get< bool >(); + this->m_id = json.at( "id" ).get< uint32_t >(); } void execute( ConditionState& state, TimelineActor& self, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const @@ -609,15 +608,18 @@ namespace Sapphire return false; }; + uint32_t getId() const + { + return m_id; + } }; using PhaseConditionPtr = std::shared_ptr< PhaseCondition >; class TimelineActor { protected: - std::vector< PhaseConditionPtr > m_phaseConditions; - std::queue< PhaseConditionPtr > m_phaseHistory; - std::vector< ConditionState > m_conditionStates; + std::unordered_map< uint32_t, PhaseConditionPtr > m_phaseConditions; + std::unordered_map< uint32_t, ConditionState > m_conditionStates; // PARENTNAME_SUBACTOR_1, ..., PARENTNAME_SUBACTOR_69 std::map< std::string, Entity::BNpcPtr > m_subActors; public: @@ -638,19 +640,19 @@ namespace Sapphire void addPhaseCondition( PhaseConditionPtr pCondition ) { - m_phaseConditions.push_back( pCondition ); - m_conditionStates.push_back( {} ); - m_conditionStates[ m_conditionStates.size() - 1 ].m_enabled = pCondition->isDefaultEnabled(); + m_phaseConditions.emplace( std::make_pair( pCondition->getId(), pCondition ) ); + m_conditionStates[ pCondition->getId() ] = {}; + m_conditionStates[ pCondition->getId() ].m_enabled = pCondition->isDefaultEnabled(); } // todo: make this sane void update( TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) { // todo: handle interrupts - for( auto i = 0; i < m_phaseConditions.size(); ++i ) + for( const auto& condition : m_phaseConditions) { - const auto& pCondition = m_phaseConditions[ i ]; - auto& state = m_conditionStates[ i ]; + const auto& pCondition = condition.second; + auto& state = m_conditionStates[ pCondition->getId() ]; // ignore if not enabled, unless overriden to enable if( !pCondition->isStateEnabled( state ) ) @@ -671,7 +673,6 @@ namespace Sapphire else if( pCondition->isConditionMet( state, pTeri, pack, time ) ) { pCondition->execute( state, *this, pTeri, pack, time ); - m_phaseHistory.push( pCondition ); if( pack.getStartTime() == 0 ) pack.setStartTime( state.m_startTime ); @@ -679,30 +680,30 @@ namespace Sapphire } } - void resetConditionState( uint32_t conditionIdx ) + void resetConditionState( uint32_t conditionId ) { - assert( conditionIdx < m_phaseConditions.size() ); - - const auto& pCondition = m_phaseConditions[ conditionIdx ]; - auto& state = m_conditionStates[ conditionIdx ]; - - pCondition->reset( state ); + if( auto it = m_phaseConditions.find( conditionId ); it != m_phaseConditions.end() ) + { + auto& state = m_conditionStates.at( it->first ); + it->second->reset( state ); + } } - void setConditionStateEnabled( uint32_t conditionIdx, bool enabled ) + void setConditionStateEnabled( uint32_t conditionId, bool enabled ) { - assert( conditionIdx < m_conditionStates.size() ); - - auto& state = m_conditionStates[ conditionIdx ]; - state.m_enabled = enabled; + if( auto it = m_conditionStates.find( conditionId ); it != m_conditionStates.end() ) + { + auto& state = m_conditionStates.at( it->first ); + state.m_enabled = enabled; + } } void resetAllConditionStates() { - for( auto i = 0; i < m_phaseConditions.size(); ++i ) + for( const auto& condition : m_phaseConditions ) { - const auto& pCondition = m_phaseConditions[ i ]; - auto& state = m_conditionStates[ i ]; + const auto& pCondition = condition.second; + auto& state = m_conditionStates.at( condition.first ); pCondition->reset( state ); } @@ -776,7 +777,7 @@ namespace Sapphire }; } hp; - void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, + void from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ); bool isConditionMet( ConditionState& state, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const override; @@ -796,7 +797,7 @@ namespace Sapphire uint8_t flags; } param; - void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId ); + void from_json( nlohmann::json& json, Phase& phase, ConditionType condition ); bool isConditionMet( ConditionState& state, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const override; }; @@ -805,7 +806,7 @@ namespace Sapphire public: uint64_t duration; - void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId ); + void from_json( nlohmann::json& json, Phase& phase, ConditionType condition ); bool isConditionMet( ConditionState& state, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const override; }; @@ -815,7 +816,7 @@ namespace Sapphire uint32_t layoutId; CombatStateType combatState; - void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, const std::unordered_map< std::string, TimelineActor >& actors ); + void from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ); bool isConditionMet( ConditionState& state, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const override; }; @@ -825,7 +826,7 @@ namespace Sapphire uint32_t layoutId; uint32_t flags; - void from_json( nlohmann::json& json, Phase& phase, ConditionId conditionId, const std::unordered_map< std::string, TimelineActor >& actors ); + void from_json( nlohmann::json& json, Phase& phase, ConditionType condition, const std::unordered_map< std::string, TimelineActor >& actors ); bool isConditionMet( ConditionState& state, TerritoryPtr pTeri, TimelinePack& pack, uint64_t time ) const override; };