예제 #1
0
        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;
            }
        }
예제 #2
0
        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();
        }