Validate independent packed addons and complete physical mortar salvos
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
// One newer observation in transit for one existing physical firing order.
|
||||
// The report's observed time survives both radio legs unchanged.
|
||||
class ERR_MortarRefresh
|
||||
{
|
||||
IEntity Gun;
|
||||
SCR_AIGroup Group;
|
||||
int OrderId;
|
||||
int RadioId;
|
||||
ref ERR_HQReport Report;
|
||||
ref ERR_HQRoute Route;
|
||||
|
||||
void ERR_MortarRefresh(ERR_MortarBattery battery, ERR_HQReport report, ERR_HQRoute route)
|
||||
{
|
||||
Gun = battery.Gun;
|
||||
Group = battery.Group;
|
||||
OrderId = battery.OrderId;
|
||||
RadioId = route.MessageId;
|
||||
Report = report.Snapshot();
|
||||
Route = route;
|
||||
}
|
||||
bool Owns(ERR_MortarBattery battery)
|
||||
{
|
||||
return battery && Gun && Group && Gun == battery.Gun && Group == battery.Group && OrderId == battery.OrderId;
|
||||
}
|
||||
bool DeliveredFor(ERR_MortarBattery battery, ERR_HQReport report)
|
||||
{
|
||||
return !Route && Report && Report == report && Owns(battery);
|
||||
}
|
||||
}
|
||||
|
||||
class ERR_MortarRefreshRules
|
||||
{
|
||||
static bool Newer(ERR_HQReport current, ERR_HQReport incoming, float now)
|
||||
{
|
||||
return current && incoming && current.Target && incoming.Target == current.Target && incoming.MessageId > 0 && incoming.MessageId != current.MessageId && incoming.ObservedAt > current.ObservedAt && ERR_MortarPrediction.Fresh(incoming, now);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user