Integrate radio-delivered convoy cover and conservative squad ammunition reports
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
// HQ creates these snapshots from delivered sightings and sends each command
|
||||
// through the original group's physical radio downlink before execution.
|
||||
class ERR_ConvoyCombatOrder
|
||||
{
|
||||
int CommandId;
|
||||
int ReportId;
|
||||
int VehicleIndex;
|
||||
string SourceId;
|
||||
SCR_AIGroup Group;
|
||||
bool Hold;
|
||||
float ObservedAt = -1;
|
||||
float IssuedAt = -1;
|
||||
float ExpiresAt = -1;
|
||||
}
|
||||
|
||||
class ERR_ConvoyCombatState
|
||||
{
|
||||
bool Held;
|
||||
int LastCommandId;
|
||||
int ReportId;
|
||||
float ObservedAt = -1;
|
||||
}
|
||||
|
||||
class ERR_ConvoyCombatRules
|
||||
{
|
||||
static bool Accept(ERR_ConvoyCombatState state, ERR_ConvoyCombatOrder order, float now)
|
||||
{
|
||||
if (!state || !order || order.CommandId <= state.LastCommandId || order.CommandId <= 0 || order.ReportId <= 0) return false;
|
||||
if (!ERR_ForceRules.Finite(now) || !ERR_ForceRules.Finite(order.ObservedAt) || !ERR_ForceRules.Finite(order.IssuedAt) || !ERR_ForceRules.Finite(order.ExpiresAt)) return false;
|
||||
if (order.ObservedAt < 0 || order.IssuedAt < order.ObservedAt || now < order.IssuedAt || now >= order.ExpiresAt || order.ExpiresAt <= order.IssuedAt || order.ExpiresAt - order.IssuedAt > 30000) return false;
|
||||
if (order.Hold)
|
||||
{
|
||||
if (now - order.ObservedAt > 60000 || order.ObservedAt < state.ObservedAt) return false;
|
||||
if (state.ReportId == order.ReportId && state.ObservedAt != order.ObservedAt) return false;
|
||||
if (order.ReportId < state.ReportId) return false;
|
||||
return true;
|
||||
}
|
||||
return state.Held && order.ReportId == state.ReportId && order.ObservedAt == state.ObservedAt && order.IssuedAt - state.ObservedAt >= 60000;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user