public void ReportFleetIntelligence(IFleetIntelligence item, TimeSpan timestamp) { if (CanonicalTimeSourceID != 0 && !IsMaster) { IGCBindings.ForEach(binding => binding.PackAndBroadcastFleetIntelligence(Context, item, CanonicalTimeSourceID)); } MyTuple <IntelItemType, long> intelKey = FleetIntelligenceUtil.GetIntelItemKey(item); Timestamps[intelKey] = timestamp; if (!IntelItems.ContainsKey(intelKey) || IntelItems[intelKey] != item) { IntelItems[intelKey] = item; } }
public void Setup(ExecutionContext context, string name) { Context = context; if (Host == null) { IGCBindings.Add(new FleetIntelligenceUtil.IGCIntelBinding <Waypoint, MyTuple <int, long, MyTuple <Vector3D, Vector3D, Vector3D, float, string> > >()); IGCBindings.Add(new FleetIntelligenceUtil.IGCIntelBinding <AsteroidIntel, MyTuple <int, long, MyTuple <Vector3D, float, long> > >()); IGCBindings.Add(new FleetIntelligenceUtil.IGCIntelBinding <FriendlyShipIntel, MyTuple <int, long, MyTuple <MyTuple <Vector3D, Vector3D, double>, MyTuple <string, long, float, int>, MyTuple <int, string, int, int, Vector3I>, MyTuple <long, int> > > >()); IGCBindings.Add(new FleetIntelligenceUtil.IGCIntelBinding <DockIntel, MyTuple <int, long, MyTuple <MyTuple <MatrixD, float, float, Vector3D, double, Vector3D>, MyTuple <long, int, int, string>, MyTuple <long, string> > > >()); IGCBindings.Add(new FleetIntelligenceUtil.IGCIntelBinding <EnemyShipIntel, MyTuple <int, long, MyTuple <MyTuple <Vector3D, Vector3D, double, double>, MyTuple <string, long, float, int> > > >()); foreach (var binding in IGCBindings) { binding.ReceiveAndUpdateFleetIntelligenceSyncPackage(Context, 123, IntelItems, ref KeyScratchpad, CanonicalTimeSourceID); binding.ReceiveAndUpdateFleetIntelligence(Context, 123, IntelItems, CanonicalTimeSourceID); binding.JIT(); } GetTimeMessage(TimeSpan.Zero); GetFleetIntelligences(TimeSpan.Zero); CheckOrSendTimeMessage(TimeSpan.Zero); UpdateMyIntel(TimeSpan.Zero); // Set up listeners ReportListener = Context.IGC.RegisterBroadcastListener(FleetIntelligenceUtil.IntelReportChannelTag); PriorityRequestListener = Context.IGC.RegisterBroadcastListener(FleetIntelligenceUtil.IntelPriorityRequestChannelTag); SyncListener = Context.IGC.RegisterBroadcastListener(FleetIntelligenceUtil.IntelSyncChannelTag); TimeListener = Context.IGC.RegisterBroadcastListener(FleetIntelligenceUtil.TimeChannelTag); PriorityListener = Context.IGC.RegisterBroadcastListener(FleetIntelligenceUtil.IntelPriorityChannelTag); } GetParts(); ParseConfigs(); }