Deliver local sighting handoffs and preserve unsubmitted resupply attempts

This commit is contained in:
2026-09-20 10:18:18 +02:00
parent d8ec0de765
commit 81c0f060fd
48 changed files with 6994 additions and 30 deletions
+4 -2
View File
@@ -13,7 +13,7 @@ def cpp(s):
s=re.sub(r'\b'+t+r' (?=\w)',t+'* ',s)
for v in ('stock','report','unit','route'):
s=s.replace(v+'.',v+'->')
return s.replace('AmmoState.','AmmoState->')
return s.replace('AmmoState.','AmmoState->').replace('Task.','Task->')
policy=cpp(P.read_text()).replace('class ERR_HQAmmoReporting','struct ERR_HQAmmoReporting').rstrip()+';'
methods='\n'.join(cpp(body(H,x)) for x in ('protected void StatusReport(', 'protected void QueueReports('))
# The production hook must preserve the only existing delivery gate and use the policy per identity.
@@ -44,10 +44,12 @@ struct Sampler{int observations=0,samples=0;bool valid=true;ERR_HQAmmoSnapshot s
struct ERR_HQRoute{int MessageId=0;string Payload;};
struct Network{bool available=true;int routes=0;ERR_HQRoute* Route(void*){routes++;return available?new ERR_HQRoute:nullptr;}};
struct Journal{int seq=0,writes=0;int Message(){return ++seq;}void Write(string,string,int){writes++;}};
struct ERR_HQUnit{void* Radio=this;ERR_HQRoute* Uplink=nullptr;ERR_HQStatusReport* PendingStatus=nullptr;
struct Task{float ArrivedAt=0;};
struct ERR_HQUnit{struct Task* Task=nullptr;void* Radio=this;ERR_HQRoute* Uplink=nullptr;ERR_HQStatusReport* PendingStatus=nullptr;
float NextStatus=0;ERR_HQAmmoReporting AmmoReporting;Sampler StatusSampler;bool visible=true,contact=false,sweep=false;
ERR_HQUnit(){AmmoReporting.Initialize(6,0);}};
struct HQ{Network m_Network;Journal m_Journal;int delivered=0;
bool OriginOccupied(void*,ERR_HQUnit*){return false;}
void Observe(ERR_HQUnit* u,float){if(!u->Uplink&&u->Radio&&u->visible&&m_Network.available){u->contact=true;u->Uplink=new ERR_HQRoute;}}
void ObserveBody(ERR_HQUnit*,float){}
void Sweep(ERR_HQUnit* u,float){if(!u->Uplink&&u->Radio&&!u->visible&&m_Network.available)u->sweep=true;}