public Building(Vector2Int position, TilableDef def) { this.position = position; this.def = def; this.recipe = new Recipe(this.def.recipeDef, this, position); this.work = 0; if (this.def.type == TilableType.BuildingConnected) { this.mainGraphic = GraphicInstance.GetNew( this.def.graphics, new Color(112 / 255f, 78 / 255f, 46 / 255f, .5f), // update alpha when constructed Res.textures[this.def.graphics.textureName + "_0"], 1 ); this._connectedUtility = new ConnectedTilable(this); } this.addGraphics = new Dictionary <string, GraphicInstance>(); Tilable tilable = Loki.map.grids[Layer.Plant].GetTilableAt(this.position); if (tilable != null && tilable.def.cuttable) { tilable.AddOrder(Defs.orders["cut_plants"]); } }
public ConnectedTilable(Tilable tilable) { this.tilable = tilable; this.connections = new bool[8]; this.connectionsInt = -1; this.allCorners = false; this.corners = new bool[4]; }
public ConnectedTilable(Tilable tilable) { this.tilable = tilable; this.connections = new bool[8]; this.connectionsInt = -1; this.allCorners = false; this.corners = new bool[4]; this.defColor = tilable.mainGraphic.color; }
/// Check if this.tilable is linked with an other tilable at "position". private bool HasLink(Vector2Int position) { Tilable tilable = Loki.map.GetTilableAt(position, this.tilable.def.layer); if (tilable == null || this.tilable.def != tilable.def) { return(false); } return(true); }
public static void InRadius(int r, Vector2Int o, Vector2Int c, ref HashSet <Vector2Int> s) { if (c != null) { s.Add(c); } foreach (Vector2Int neighbour in Tilable.GetNeighboursPosition(c)) { if ( neighbour.x >= 0 && neighbour.y >= 0 && neighbour.x <= Loki.map.size.x && neighbour.y <= Loki.map.size.y && !s.Contains(neighbour) && Utils.Distance(neighbour, o) <= r) { Tilable.InRadius(r, o, neighbour, ref s); } } }