コード例 #1
0
 public void RegisterWaterNet(WaterNet newNet)
 {
     allNets.Add(newNet);
     newNet.waterNetManager = this;
     map.GetComponent <WaterNetGrid>().Notify_WaterNetCreated(newNet);
     WaterNetMaker.UpdateVisualLinkagesFor(newNet);
 }
コード例 #2
0
 public void DrawDebugWaterNetGrid()
 {
     if (!DebugViewSettings.drawPowerNetGrid)
     {
         return;
     }
     if (Current.ProgramState != ProgramState.Playing)
     {
         return;
     }
     if (this.map != Find.CurrentMap)
     {
         return;
     }
     Rand.PushState();
     foreach (IntVec3 c in Find.CameraDriver.CurrentViewRect.ClipInsideMap(this.map))
     {
         WaterNet waterNet = this.netGrid[this.map.cellIndices.CellToIndex(c)];
         if (waterNet != null)
         {
             Rand.Seed = waterNet.GetHashCode();
             CellRenderer.RenderCell(c, Rand.Value);
         }
     }
     Rand.PopState();
 }
コード例 #3
0
        private void TryDestroyNetAt(IntVec3 cell)
        {
            if (!cell.InBounds(map))
            {
                return;
            }
            WaterNet waterNet = map.GetComponent <WaterNetGrid>().TransmittedWaterNetAt(cell);

            if (waterNet != null)
            {
                DeleteWaterNet(waterNet);
            }
        }
コード例 #4
0
 private void TryCreateNetAt(IntVec3 cell)
 {
     if (!cell.InBounds(map))
     {
         return;
     }
     if (map.GetComponent <WaterNetGrid>().TransmittedWaterNetAt(cell) == null)
     {
         Building transmitter = cell.GetWaterTransmitter(map);
         if (transmitter != null && transmitter.TransmitsWaterNow())
         {
             WaterNet waterNet = WaterNetMaker.NewWaterNetStartingFrom(transmitter);
             RegisterWaterNet(waterNet);
             for (int i = 0; i < waterNet.transmitters.Count; i++)
             {
                 WaterConnectionMaker.ConnectAllConnectorsToTransmitter(waterNet.transmitters[i]);
             }
         }
     }
 }
コード例 #5
0
        public void Notify_WaterNetCreated(WaterNet newNet)
        {
            if (this.waterNetCells.ContainsKey(newNet))
            {
                Log.Warning("Net " + newNet + " is already registered in WaterNetGrid.");
                this.waterNetCells.Remove(newNet);
            }
            List <IntVec3> list = new List <IntVec3>();

            this.waterNetCells.Add(newNet, list);
            for (int i = 0; i < newNet.transmitters.Count; i++)
            {
                CellRect cellRect = newNet.transmitters[i].parent.OccupiedRect();
                for (int j = cellRect.minZ; j <= cellRect.maxZ; j++)
                {
                    for (int k = cellRect.minX; k <= cellRect.maxX; k++)
                    {
                        int num = this.map.cellIndices.CellToIndex(k, j);
                        if (this.netGrid[num] != null)
                        {
                            Log.Warning(string.Concat(new object[]
                            {
                                "Two water nets on the same cell (",
                                k,
                                ", ",
                                j,
                                "). First transmitters: ",
                                newNet.transmitters[0].parent.LabelCap,
                                " and ",
                                (!this.netGrid[num].transmitters.NullOrEmpty <CompWater>()) ? this.netGrid[num].transmitters[0].parent.LabelCap : "[none]",
                                "."
                            }));
                        }
                        this.netGrid[num] = newNet;
                        list.Add(new IntVec3(k, 0, j));
                    }
                }
            }
        }
コード例 #6
0
        public void Notify_WaterNetDeleted(WaterNet deadNet)
        {
            List <IntVec3> list;

            if (!this.waterNetCells.TryGetValue(deadNet, out list))
            {
                Log.Warning("Net " + deadNet + " does not exist in WaterNetGrid's dictionary.");
                return;
            }
            for (int i = 0; i < list.Count; i++)
            {
                int num = this.map.cellIndices.CellToIndex(list[i]);
                if (this.netGrid[num] == deadNet)
                {
                    this.netGrid[num] = null;
                }
                else
                {
                    Log.Warning("Multiple nets on the same cell " + list[i] + ". This is probably a result of an earlier error.");
                }
            }
            this.waterNetCells.Remove(deadNet);
        }
コード例 #7
0
 public static void UpdateVisualLinkagesFor(WaterNet net)
 {
 }
コード例 #8
0
 public void DeleteWaterNet(WaterNet oldNet)
 {
     allNets.Remove(oldNet);
     map.GetComponent <WaterNetGrid>().Notify_WaterNetDeleted(oldNet);
 }