Integrate delivered HQ memory, finite physical convoy and RHS WCS dependencies
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"""Exercise actual actor-group lookup with distinct inherited vehicle and controlled character agents."""
|
||||
from policy_harness import ROOT, body, run
|
||||
source=body(ROOT/'addons/core/Scripts/Game/ERR/ERR_Actors.c','static SCR_AIGroup Group(')
|
||||
source=source.replace('static SCR_AIGroup Group(IEntity actor)', 'static SCR_AIGroup* Group(IEntity* actor)')
|
||||
source=source.replace('AIControlComponent control', 'AIControlComponent* control')
|
||||
source=source.replace('AIControlComponent.Cast(', 'AIControlComponent::Cast(').replace('SCR_AIGroup.Cast(', 'SCR_AIGroup::Cast(')
|
||||
source=source.replace('actor.FindComponent(AIControlComponent)', 'actor->FindComponent()')
|
||||
source=source.replace('control.', 'control->').replace('GetControlAIAgent().', 'GetControlAIAgent()->').replace('null', 'nullptr')
|
||||
run(r'''
|
||||
#include <cassert>
|
||||
struct SCR_AIGroup {static SCR_AIGroup* Cast(SCR_AIGroup* g){return g;}};
|
||||
struct Agent {SCR_AIGroup* parent=nullptr;SCR_AIGroup* GetParentGroup(){return parent;}};
|
||||
struct AIControlComponent {
|
||||
Agent* inherited=nullptr;Agent* controlled=nullptr;int inheritedReads=0;
|
||||
static AIControlComponent* Cast(AIControlComponent* c){return c;}
|
||||
Agent* GetAIAgent(){inheritedReads++;return inherited;}Agent* GetControlAIAgent(){return controlled;}
|
||||
};
|
||||
struct IEntity {AIControlComponent* control=nullptr;AIControlComponent* FindComponent(){return control;}};
|
||||
struct Actors {
|
||||
'''+source+r'''
|
||||
};
|
||||
int main(){
|
||||
assert(!Actors::Group(nullptr));IEntity actor;assert(!Actors::Group(&actor));
|
||||
AIControlComponent control;actor.control=&control;assert(!Actors::Group(&actor));
|
||||
SCR_AIGroup foot,convoy,vehicle;Agent personal{&foot},delegated{&vehicle};
|
||||
control.controlled=&personal;control.inherited=&personal;assert(Actors::Group(&actor)==&foot);
|
||||
personal.parent=&convoy;control.inherited=&delegated;
|
||||
assert(Actors::Group(&actor)==&convoy&&control.inheritedReads==0);
|
||||
control.controlled=nullptr;assert(!Actors::Group(&actor)&&control.inheritedReads==0);
|
||||
control.controlled=&personal;personal.parent=nullptr;assert(!Actors::Group(&actor));
|
||||
}
|
||||
''')
|
||||
print('PASS: actual actor group lookup retains controlled character membership when seated/inherited vehicle agents differ; missing control or parent refuses')
|
||||
Reference in New Issue
Block a user