Fix convoy coordination, AI combat and spectator recovery
This commit is contained in:
@@ -107,7 +107,7 @@ struct BodyAdapter{int confirmations=0;void ConfirmDelivered(void*){confirmation
|
||||
struct CoverageAdapter{int forgotten=0;void Forget(vector){forgotten++;}};
|
||||
struct JournalAdapter{void Write(string,string,int){}};
|
||||
template<class... Args> string Format(string,Args...){return "delivered";}
|
||||
struct HQDelivery{
|
||||
struct HQDelivery{float m_NextAssignment=5000;
|
||||
Watch m_Watch;MemoryAdapter m_Memory;BodyAdapter m_Bodies;struct RecoveryAdapter{int calls=0;void ReportBody(ERR_HQReport*){calls++;}} m_Recovery;CoverageAdapter m_Coverage;JournalAdapter m_Journal;
|
||||
Array<ERR_HQReport*>m_Contacts;
|
||||
'''+accept+r'''
|
||||
@@ -251,7 +251,7 @@ int main(){
|
||||
assert(wire->CasualtySlot==0&&wire->Position.x==900&&wire->CasualtySourceId=="deleted-during-uplink");
|
||||
assert(intake.m_Watch.Count()==0); // preparing/queuing local evidence changes nothing
|
||||
wire->Target=nullptr; // simulate native weak-reference invalidation after captured LOS, before radio completes
|
||||
intake.Accept(wire,2000);
|
||||
intake.Accept(wire,2000);assert(intake.m_NextAssignment==5000);
|
||||
auto delivered=intake.m_Watch.Find("deleted-during-uplink");
|
||||
assert(delivered&&delivered->Closed&&delivered->Count==0&&intake.m_Watch.ConfirmedLosses()==1);
|
||||
assert(delivered->MessageId==0&&delivered->ObservedAt==-1); // no invented check-in or corpse position
|
||||
@@ -259,7 +259,7 @@ int main(){
|
||||
intake.Accept(wire,2001);assert(intake.m_Watch.ConfirmedLosses()==1); // delivered duplicates cannot add losses
|
||||
wire->CasualtySourceId="stale";intake.Accept(wire,121001);assert(!intake.m_Watch.Find("stale"));
|
||||
wire->ObservedAt=2000;wire->TravelMode="walking";wire->Target=&local;
|
||||
intake.Accept(wire,2000);assert(!intake.m_Watch.Find("stale")&&intake.m_Contacts.Count()==1);
|
||||
intake.Accept(wire,2000);assert(intake.m_NextAssignment==2000);assert(!intake.m_Watch.Find("stale")&&intake.m_Contacts.Count()==1);
|
||||
wire->TravelMode="body";wire->Distress=true;intake.Accept(wire,2001);
|
||||
assert(!intake.m_Watch.Find("stale")&&intake.m_Contacts.Count()==1); // distress cannot claim bodily identity
|
||||
Watch bodyOnly;body.CasualtySourceId="no-survivor";body.CasualtySlot=0;body.ObservedAt=1000;
|
||||
|
||||
Reference in New Issue
Block a user