public bool TileEquivalent(ITile other) { TileTest tile = other as TileTest; if (tile == null) { return(false); } return(tile.ID == ID); }
public void _Change_Tile(TileTest new_tile) { if (this.tile_underneath != null) { this.tile_underneath.unit_on_tile = null; } this.tile_underneath = null; move(new_tile.Transform.origin); this.tile_underneath = new_tile; new_tile.unit_on_tile = this; }
public void InitializeTiles(int width, int height) { Tiles = new TileTest[width][]; for (int ii = 0; ii < width; ii++) { Tiles[ii] = new TileTest[height]; for (int jj = 0; jj < height; jj++) { Tiles[ii][jj] = new TileTest(); } } }
public void _Change_player() { if (curr_player == 1) { curr_player++; } else { curr_player = 1; } GD.Print("Player" + curr_player.ToString()); if (first != null) { first.unit_on_tile.EmitSignal("_deselected_to_UI"); } first = null; }
private void _on_Tile_selected(TileTest tile) { if (first == null && tile.unit_on_tile != null && tile?.unit_on_tile.action_points_current >= 0) { if ((curr_player == 1 && tile.unit_on_tile.IsInGroup("Player1")) || (curr_player == 2 && tile.unit_on_tile.IsInGroup("Player2"))) { first = tile; first.unit_on_tile.EmitSignal("_selected_to_UI"); GD.Print("first " + tile.coord(0).ToString() + ';' + tile.coord(1).ToString()); } } else if (first != null && tile.unit_on_tile == null && (tile.movement + first.unit_on_tile.action_points_current > -1)) { int x1 = first.coord(0), x2 = tile.coord(0), z1 = first.coord(1), z2 = tile.coord(1); if ((Math.Abs(x1 - x2) == 2 && z1 == z2) || (Math.Abs(x1 - x2) == 1 && Math.Abs(z1 - z2) == 1)) { GD.Print("second " + tile.coord(0).ToString() + ';' + tile.coord(1).ToString()); first.unit_on_tile.EmitSignal("_deselected_to_UI"); first.unit_on_tile._Change_Tile(tile); first = null; tile.unit_on_tile.action_points_current += tile.movement; } } else if (first != null && tile.unit_on_tile != null && ((first.unit_on_tile.IsInGroup("Player1") && tile.unit_on_tile.IsInGroup("Player1")) || (first.unit_on_tile.IsInGroup("Player2") && tile.unit_on_tile.IsInGroup("Player2")))) { first.unit_on_tile.EmitSignal("_deselected_to_UI"); first = tile; first.unit_on_tile.EmitSignal("_selected_to_UI"); } else if (first != null && tile.unit_on_tile != null && first?.unit_on_tile.action_points_current > 0 && ((first.unit_on_tile.IsInGroup("Player1") && tile.unit_on_tile.IsInGroup("Player2")) || (first.unit_on_tile.IsInGroup("Player2") && tile.unit_on_tile.IsInGroup("Player1")))) { if (map._Pathfind(first, tile)) { first.unit_on_tile.deal_damage(tile.Transform.origin); tile.unit_on_tile._Receive_Damage(first.unit_on_tile.attack_points); first.unit_on_tile.action_points_current--; } } }
public bool _Pathfind(TileTest one, TileTest two) { if (Math.Abs(one.coord(0) - two.coord(0)) % 2 == 0 && one.coord(1) == two.coord(1)) { int j = one.coord(1) + 5, imax, imin; if (one.coord(0) > two.coord(0)) { imin = two.coord(0) + 5; imax = one.coord(0) + 5; } else { imax = two.coord(0) + 5; imin = one.coord(0) + 5; } GD.Print("imin: " + imin + " imax: " + imax); for (int i = imin; i < imax; i += 2) { if (map[i, j] != null) { if (map[i, j].movement == -1488) { return(false); } } } return(true); } else if (Math.Abs(one.coord(0) - two.coord(0)) == Math.Abs(one.coord(1) - two.coord(1))) { int jmin, jmax, imin, imax; if (one.coord(0) > two.coord(0)) { imin = two.coord(0) + 5; imax = one.coord(0) + 5; } else { imax = two.coord(0) + 5; imin = one.coord(0) + 5; } if (one.coord(1) > two.coord(1)) { jmin = two.coord(1) + 5; jmax = one.coord(1) + 5; } else { jmax = two.coord(1) + 5; jmin = one.coord(1) + 5; } int i = imin; int j = jmin; while (i < imax && j < jmax) { if (map[i, j] != null) { if (map[i, j].movement == -1488) { return(false); } } i++; j++; } return(true); } return(false); }
public void Print(Map map) { Vector3Int positionTile; for (int y = 0; y < map.Height; y++) { for (int x = 0; x < map.Width; x++) { Loc loc = new Loc(x, y); TileTest tile = map.Tiles[x][y]; positionTile = new Vector3Int(x, -y, 0); if (tile.ID <= 0)//wall { tilemap.SetTile(positionTile, wallTestDynamic); } else if (tile.ID == 1)//floor { tilemap.SetTile(positionTile, floorTestDynamic); } else if (tile.ID == 2)//water { tilemap.SetTile(positionTile, waterTestDynamic); } else { } foreach (StairsDown entrance in map.GenExits) { if (entrance.Loc == loc) { objectTileMap.SetTile(positionTile, stairsDown); Debug.Log("Stairs Down: " + loc.X + ", " + loc.Y); break; } } foreach (Item item in map.Items) { if (item.Loc == loc) { objectTileMap.SetTile(positionTile, items[item.ID].item); } } /* * foreach (Mob item in map.Mobs) * { * if (item.Loc == loc) * { * tileChar = (char)item.ID; * switch ((char)item.ID) * { * case 'r': //20 * objectTileMap.SetTile(positionTile, tilesData[2597]); * break; * case 'T': //10 * objectTileMap.SetTile(positionTile, tilesData[4945]); * break; * case 'D': //5 * objectTileMap.SetTile(positionTile, tilesData[4930]); * break; * } * break; * } * }*/ } } }
protected TileTest(TileTest other) { this.ID = other.ID; }