コード例 #1
0
ファイル: AiConstruct.cs プロジェクト: keleios/WeaponCore
        public void RegisterSubGrid(MyCubeGrid grid, bool dupCheck = false)
        {
            if (dupCheck && SubGridsRegistered.Contains(grid))
            {
                Log.Line($"sub Grid Already Registered: [Main]:{grid == MyGrid}");
            }

            grid.Flags             |= (EntityFlags)(1 << 31);
            grid.OnFatBlockAdded   += FatBlockAdded;
            grid.OnFatBlockRemoved += FatBlockRemoved;


            SubGridsRegistered.Add(grid);

            FatMap fatMap;

            if (Session.GridToFatMap.TryGetValue(grid, out fatMap))
            {
                var blocks = fatMap.MyCubeBocks;
                for (int i = 0; i < blocks.Count; i++)
                {
                    FatBlockAdded(blocks[i]);
                }
            }
        }
コード例 #2
0
ファイル: AiEvents.cs プロジェクト: sstixrud/WeaponCore
        internal void RegisterMyGridEvents(bool register, MyCubeGrid grid, bool force = false)
        {
            if (grid == null)
            {
                grid = MyGrid;
            }

            if (register)
            {
                if (Registered)
                {
                    Log.Line($"Ai RegisterMyGridEvents error");
                }

                Registered              = true;
                grid.OnFatBlockAdded   += FatBlockAdded;
                grid.OnFatBlockRemoved += FatBlockRemoved;
                grid.OnMarkForClose    += GridClose;
                if (SubGridsRegistered.Contains(grid))
                {
                    Log.Line($"Main Grid Already Registered");
                }

                SubGridsRegistered.Add(grid);
            }
            else
            {
                if (Registered)
                {
                    Registered              = false;
                    grid.OnFatBlockAdded   -= FatBlockAdded;
                    grid.OnFatBlockRemoved -= FatBlockRemoved;
                    grid.OnMarkForClose    -= GridClose;

                    if (!SubGridsRegistered.Contains(grid))
                    {
                        Log.Line($"Main Grid Already UnRegistered");
                    }
                    SubGridsRegistered.Remove(grid);
                }
                else if (!force)
                {
                    Log.Line($"NotRegistered: gridReg:{SubGridsRegistered.Contains(grid)}- Aimarked:{MarkedForClose} - aiClosed:{Closed} - Ticks:{Session?.Tick - AiCloseTick} - NullSession:{Session == null} - gridMarked:{grid.MarkedForClose}");
                }
            }
        }
コード例 #3
0
        public void RegisterSubGrid(MyCubeGrid grid, bool dupCheck = false)
        {
            if (dupCheck && SubGridsRegistered.Contains(grid))
            {
                Log.Line($"sub Grid Already Registered: [Main]:{grid == MyGrid}");
            }

            grid.Flags             |= (EntityFlags)(1 << 31);
            grid.OnFatBlockAdded   += FatBlockAdded;
            grid.OnFatBlockRemoved += FatBlockRemoved;

            SubGridsRegistered.Add(grid);

            foreach (var cube in grid.GetFatBlocks())
            {
                var battery = cube as MyBatteryBlock;
                if (battery != null || cube.HasInventory)
                {
                    FatBlockAdded(cube);
                }
            }
        }