public bool TileEquivalent(ITile other)
    {
        TileTest tile = other as TileTest;

        if (tile == null)
        {
            return(false);
        }
        return(tile.ID == ID);
    }
Exemple #2
0
 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();
         }
     }
 }
Exemple #4
0
 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;
 }
Exemple #5
0
 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--;
         }
     }
 }
Exemple #6
0
 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;
 }