diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h b/Generals/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h index 04284c0f18a..285643dd1fb 100644 --- a/Generals/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h +++ b/Generals/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h @@ -38,15 +38,14 @@ class AssistedTargetingUpdateModuleData : public UpdateModuleData public: Int m_clipSize; WeaponSlotType m_weaponSlot; - ThingTemplate *m_laserFromAssisted; - ThingTemplate *m_laserToTarget; + + AsciiString m_laserFromAssistedName; + AsciiString m_laserToTargetName; AssistedTargetingUpdateModuleData() { m_clipSize = 1; m_weaponSlot = PRIMARY_WEAPON; - m_laserFromAssisted = nullptr; - m_laserToTarget = nullptr; } static void buildFieldParse(MultiIniFieldParse& p); @@ -72,4 +71,7 @@ class AssistedTargetingUpdate : public UpdateModule private: void makeFeedbackLaser( const ThingTemplate *laserTemplate, const Object *from, const Object *to ); + + const ThingTemplate *m_laserFromAssisted; + const ThingTemplate *m_laserToTarget; }; diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp index 20f57f56049..b291be7cb17 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp @@ -54,8 +54,8 @@ void AssistedTargetingUpdateModuleData::buildFieldParse(MultiIniFieldParse& p) { { "AssistingClipSize", INI::parseInt, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_clipSize ) }, { "AssistingWeaponSlot", INI::parseLookupList, TheWeaponSlotTypeNamesLookupList, offsetof( AssistedTargetingUpdateModuleData, m_weaponSlot ) }, - { "LaserFromAssisted", INI::parseThingTemplate, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserFromAssisted ) }, - { "LaserToTarget", INI::parseThingTemplate, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserToTarget ) }, + { "LaserFromAssisted", INI::parseAsciiString, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserFromAssistedName ) }, + { "LaserToTarget", INI::parseAsciiString, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserToTargetName ) }, { nullptr, nullptr, nullptr, 0 } }; p.add(dataFieldParse); @@ -65,6 +65,8 @@ void AssistedTargetingUpdateModuleData::buildFieldParse(MultiIniFieldParse& p) //------------------------------------------------------------------------------------------------- AssistedTargetingUpdate::AssistedTargetingUpdate( Thing *thing, const ModuleData* moduleData ) : UpdateModule( thing, moduleData ) { + m_laserFromAssisted = nullptr; + m_laserToTarget = nullptr; setWakeFrame(getObject(), UPDATE_SLEEP_FOREVER); } @@ -100,10 +102,10 @@ void AssistedTargetingUpdate::assistAttack( const Object *requestingObject, Obje me->setWeaponLock( md->m_weaponSlot, LOCKED_TEMPORARILY ); me->getAI()->aiAttackObject( victimObject, md->m_clipSize, CMD_FROM_AI ); - if( md->m_laserFromAssisted ) - makeFeedbackLaser( md->m_laserFromAssisted, requestingObject, me ); - if( md->m_laserToTarget ) - makeFeedbackLaser( md->m_laserToTarget, me, victimObject ); + if( m_laserFromAssisted ) + makeFeedbackLaser( m_laserFromAssisted, requestingObject, me ); + if( m_laserToTarget ) + makeFeedbackLaser( m_laserToTarget, me, victimObject ); } //------------------------------------------------------------------------------------------------- @@ -137,6 +139,11 @@ void AssistedTargetingUpdate::makeFeedbackLaser( const ThingTemplate *laserTempl //------------------------------------------------------------------------------------------------- UpdateSleepTime AssistedTargetingUpdate::update() { + const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData(); + + m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName ); + m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName ); + return UPDATE_SLEEP_FOREVER; } @@ -174,8 +181,11 @@ void AssistedTargetingUpdate::xfer( Xfer *xfer ) // ------------------------------------------------------------------------------------------------ void AssistedTargetingUpdate::loadPostProcess() { + const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData(); + + m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName ); + m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName ); // extend base class UpdateModule::loadPostProcess(); - } diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h b/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h index c784a12d450..6fc0c21f195 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h +++ b/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h @@ -46,8 +46,6 @@ class AssistedTargetingUpdateModuleData : public UpdateModuleData { m_clipSize = 1; m_weaponSlot = PRIMARY_WEAPON; - m_laserFromAssistedName.clear(); - m_laserToTargetName.clear(); } static void buildFieldParse(MultiIniFieldParse& p); @@ -76,6 +74,4 @@ class AssistedTargetingUpdate : public UpdateModule const ThingTemplate *m_laserFromAssisted; const ThingTemplate *m_laserToTarget; - - }; diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp index 9bb57e08351..719f1abd9d7 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp @@ -101,7 +101,6 @@ void AssistedTargetingUpdate::assistAttack( const Object *requestingObject, Obje me->setWeaponLock( md->m_weaponSlot, LOCKED_TEMPORARILY ); me->getAI()->aiAttackObject( victimObject, md->m_clipSize, CMD_FROM_AI ); - if( m_laserFromAssisted ) makeFeedbackLaser( m_laserFromAssisted, requestingObject, me ); if( m_laserToTarget ) @@ -139,14 +138,10 @@ void AssistedTargetingUpdate::makeFeedbackLaser( const ThingTemplate *laserTempl //------------------------------------------------------------------------------------------------- UpdateSleepTime AssistedTargetingUpdate::update() { - const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData(); m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName ); - - - m_laserToTarget =TheThingFactory->findTemplate( d->m_laserFromAssistedName ); - + m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName ); return UPDATE_SLEEP_FOREVER; } @@ -188,7 +183,7 @@ void AssistedTargetingUpdate::loadPostProcess() const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData(); m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName ); - m_laserToTarget =TheThingFactory->findTemplate( d->m_laserFromAssistedName ); + m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName ); // extend base class UpdateModule::loadPostProcess();