Skip to content

Commit a7447e5

Browse files
authored
unify(update): Parse template references in the AssistedTargetingUpdate module by name (#2809)
1 parent 81fffb3 commit a7447e5

4 files changed

Lines changed: 34 additions & 33 deletions

File tree

Generals/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ class AssistedTargetingUpdateModuleData : public UpdateModuleData
3838
public:
3939
Int m_clipSize;
4040
WeaponSlotType m_weaponSlot;
41-
ThingTemplate *m_laserFromAssisted;
42-
ThingTemplate *m_laserToTarget;
41+
42+
AsciiString m_laserFromAssistedName;
43+
AsciiString m_laserToTargetName;
4344

4445
AssistedTargetingUpdateModuleData()
4546
{
4647
m_clipSize = 1;
4748
m_weaponSlot = PRIMARY_WEAPON;
48-
m_laserFromAssisted = nullptr;
49-
m_laserToTarget = nullptr;
5049
}
5150

5251
static void buildFieldParse(MultiIniFieldParse& p);
@@ -72,4 +71,7 @@ class AssistedTargetingUpdate : public UpdateModule
7271

7372
private:
7473
void makeFeedbackLaser( const ThingTemplate *laserTemplate, const Object *from, const Object *to );
74+
75+
const ThingTemplate *m_laserFromAssisted;
76+
const ThingTemplate *m_laserToTarget;
7577
};

Generals/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,24 @@
4949
//-------------------------------------------------------------------------------------------------
5050
void AssistedTargetingUpdateModuleData::buildFieldParse(MultiIniFieldParse& p)
5151
{
52-
UpdateModuleData::buildFieldParse(p);
52+
UpdateModuleData::buildFieldParse(p);
5353
static const FieldParse dataFieldParse[] =
5454
{
5555
{ "AssistingClipSize", INI::parseInt, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_clipSize ) },
5656
{ "AssistingWeaponSlot", INI::parseLookupList, TheWeaponSlotTypeNamesLookupList, offsetof( AssistedTargetingUpdateModuleData, m_weaponSlot ) },
57-
{ "LaserFromAssisted", INI::parseThingTemplate, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserFromAssisted ) },
58-
{ "LaserToTarget", INI::parseThingTemplate, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserToTarget ) },
57+
{ "LaserFromAssisted", INI::parseAsciiString, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserFromAssistedName ) },
58+
{ "LaserToTarget", INI::parseAsciiString, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserToTargetName ) },
5959
{ nullptr, nullptr, nullptr, 0 }
6060
};
61-
p.add(dataFieldParse);
61+
p.add(dataFieldParse);
6262
}
6363

6464
//-------------------------------------------------------------------------------------------------
6565
//-------------------------------------------------------------------------------------------------
6666
AssistedTargetingUpdate::AssistedTargetingUpdate( Thing *thing, const ModuleData* moduleData ) : UpdateModule( thing, moduleData )
6767
{
68-
setWakeFrame(getObject(), UPDATE_SLEEP_FOREVER);
68+
m_laserFromAssisted = nullptr;
69+
m_laserToTarget = nullptr;
6970
}
7071

7172
//-------------------------------------------------------------------------------------------------
@@ -100,10 +101,10 @@ void AssistedTargetingUpdate::assistAttack( const Object *requestingObject, Obje
100101
me->setWeaponLock( md->m_weaponSlot, LOCKED_TEMPORARILY );
101102
me->getAI()->aiAttackObject( victimObject, md->m_clipSize, CMD_FROM_AI );
102103

103-
if( md->m_laserFromAssisted )
104-
makeFeedbackLaser( md->m_laserFromAssisted, requestingObject, me );
105-
if( md->m_laserToTarget )
106-
makeFeedbackLaser( md->m_laserToTarget, me, victimObject );
104+
if( m_laserFromAssisted )
105+
makeFeedbackLaser( m_laserFromAssisted, requestingObject, me );
106+
if( m_laserToTarget )
107+
makeFeedbackLaser( m_laserToTarget, me, victimObject );
107108
}
108109

109110
//-------------------------------------------------------------------------------------------------
@@ -137,6 +138,11 @@ void AssistedTargetingUpdate::makeFeedbackLaser( const ThingTemplate *laserTempl
137138
//-------------------------------------------------------------------------------------------------
138139
UpdateSleepTime AssistedTargetingUpdate::update()
139140
{
141+
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
142+
143+
m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName );
144+
m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName );
145+
140146
return UPDATE_SLEEP_FOREVER;
141147
}
142148

@@ -174,8 +180,11 @@ void AssistedTargetingUpdate::xfer( Xfer *xfer )
174180
// ------------------------------------------------------------------------------------------------
175181
void AssistedTargetingUpdate::loadPostProcess()
176182
{
183+
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
184+
185+
m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName );
186+
m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName );
177187

178188
// extend base class
179189
UpdateModule::loadPostProcess();
180-
181190
}

GeneralsMD/Code/GameEngine/Include/GameLogic/Module/AssistedTargetingUpdate.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,13 @@ class AssistedTargetingUpdateModuleData : public UpdateModuleData
3939
Int m_clipSize;
4040
WeaponSlotType m_weaponSlot;
4141

42-
AsciiString m_laserFromAssistedName;
43-
AsciiString m_laserToTargetName;
42+
AsciiString m_laserFromAssistedName;
43+
AsciiString m_laserToTargetName;
4444

4545
AssistedTargetingUpdateModuleData()
4646
{
4747
m_clipSize = 1;
4848
m_weaponSlot = PRIMARY_WEAPON;
49-
m_laserFromAssistedName.clear();
50-
m_laserToTargetName.clear();
5149
}
5250

5351
static void buildFieldParse(MultiIniFieldParse& p);
@@ -76,6 +74,4 @@ class AssistedTargetingUpdate : public UpdateModule
7674

7775
const ThingTemplate *m_laserFromAssisted;
7876
const ThingTemplate *m_laserToTarget;
79-
80-
8177
};

GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AssistedTargetingUpdate.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
//-------------------------------------------------------------------------------------------------
5050
void AssistedTargetingUpdateModuleData::buildFieldParse(MultiIniFieldParse& p)
5151
{
52-
UpdateModuleData::buildFieldParse(p);
52+
UpdateModuleData::buildFieldParse(p);
5353
static const FieldParse dataFieldParse[] =
5454
{
5555
{ "AssistingClipSize", INI::parseInt, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_clipSize ) },
@@ -58,7 +58,7 @@ void AssistedTargetingUpdateModuleData::buildFieldParse(MultiIniFieldParse& p)
5858
{ "LaserToTarget", INI::parseAsciiString, nullptr, offsetof( AssistedTargetingUpdateModuleData, m_laserToTargetName ) },
5959
{ nullptr, nullptr, nullptr, 0 }
6060
};
61-
p.add(dataFieldParse);
61+
p.add(dataFieldParse);
6262
}
6363

6464
//-------------------------------------------------------------------------------------------------
@@ -101,7 +101,6 @@ void AssistedTargetingUpdate::assistAttack( const Object *requestingObject, Obje
101101
me->setWeaponLock( md->m_weaponSlot, LOCKED_TEMPORARILY );
102102
me->getAI()->aiAttackObject( victimObject, md->m_clipSize, CMD_FROM_AI );
103103

104-
105104
if( m_laserFromAssisted )
106105
makeFeedbackLaser( m_laserFromAssisted, requestingObject, me );
107106
if( m_laserToTarget )
@@ -120,9 +119,6 @@ void AssistedTargetingUpdate::makeFeedbackLaser( const ThingTemplate *laserTempl
120119
if( !laser )
121120
return;
122121

123-
// Give it a good basis in reality to ensure it can draw when on screen.
124-
laser->setPosition(from->getPosition());
125-
126122
Drawable *draw = laser->getDrawable();
127123
static const NameKeyType key_LaserUpdate = NAMEKEY( "LaserUpdate" );
128124
LaserUpdate *update = (LaserUpdate*)draw->findClientUpdateModule( key_LaserUpdate );
@@ -132,22 +128,21 @@ void AssistedTargetingUpdate::makeFeedbackLaser( const ThingTemplate *laserTempl
132128
return;
133129
}
134130

131+
// Give it a good basis in reality to ensure it can draw when on screen.
132+
laser->setPosition(from->getPosition());
133+
135134
update->initLaser( getObject(), to, from->getPosition(), to->getPosition(), "" );
136135
}
137136

138137
//-------------------------------------------------------------------------------------------------
139138
//-------------------------------------------------------------------------------------------------
140139
UpdateSleepTime AssistedTargetingUpdate::update()
141140
{
142-
143-
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
141+
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
144142

145143
m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName );
146-
147-
148144
m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName );
149145

150-
151146
return UPDATE_SLEEP_FOREVER;
152147
}
153148

@@ -185,12 +180,11 @@ void AssistedTargetingUpdate::xfer( Xfer *xfer )
185180
// ------------------------------------------------------------------------------------------------
186181
void AssistedTargetingUpdate::loadPostProcess()
187182
{
188-
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
183+
const AssistedTargetingUpdateModuleData *d = getAssistedTargetingUpdateModuleData();
189184

190185
m_laserFromAssisted = TheThingFactory->findTemplate( d->m_laserFromAssistedName );
191186
m_laserToTarget = TheThingFactory->findTemplate( d->m_laserToTargetName );
192187

193188
// extend base class
194189
UpdateModule::loadPostProcess();
195-
196190
}

0 commit comments

Comments
 (0)