public void UnRegisterSubGrid(MyCubeGrid grid, bool clean = false) { if (!SubGridsRegistered.Contains(grid)) { Log.Line($"sub Grid Already UnRegistered: [Main]:{grid == MyGrid}"); } if (!clean) { SubGrids.Remove(grid); } SubGridsRegistered.Remove(grid); grid.OnFatBlockAdded -= FatBlockAdded; grid.OnFatBlockRemoved -= FatBlockRemoved; foreach (var cube in grid.GetFatBlocks()) { var battery = cube as MyBatteryBlock; if (InventoryMonitor.ContainsKey(cube) || battery != null && Batteries.Contains(battery)) { FatBlockRemoved(cube); } } GridAi removeAi; if (!Session.GridTargetingAIs.ContainsKey(grid)) { Session.GridToMasterAi.TryRemove(grid, out removeAi); } }
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}"); } } }
public void UnRegisterSubGrid(MyCubeGrid grid, bool clean = false) { if (!SubGridsRegistered.Contains(grid)) { Log.Line($"sub Grid Already UnRegistered: [Main]:{grid == MyGrid}"); } if (!clean) { SubGrids.Remove(grid); } SubGridsRegistered.Remove(grid); grid.OnFatBlockAdded -= FatBlockAdded; grid.OnFatBlockRemoved -= FatBlockRemoved; GridAi removeAi; if (!Session.GridTargetingAIs.ContainsKey(grid)) { Session.GridToMasterAi.TryRemove(grid, out removeAi); } }