Example #1
0
        private void ReadTilemapToTileData(Tilemap tilemap, int layer)
        {
            foreach (Vector3Int pos in tilemap.cellBounds.allPositionsWithin)
            {
                Vector3Int localPlace = new Vector3Int(pos.x, pos.y, pos.z);

                if (!tilemap.HasTile(localPlace))
                {
                    continue;
                }

                var worldLocation        = tilemap.CellToWorld(localPlace);
                var layeredWorldPosition = new Vector3(worldLocation.x, worldLocation.y, layer);

                TileBase  tileBase        = tilemap.GetTile(localPlace);
                IGameTile tileFromLibrary = GetTileByAssetName(tileBase.name);

                IGameTile tile = new GameTile
                {
                    LocalPlace    = localPlace,
                    WorldLocation = layeredWorldPosition,
                    TileBase      = tileBase,
                    TilemapMember = tilemap,
                    Description   = tileFromLibrary.Description,
                    TileData      = tileFromLibrary.TileData,
                    Cost          = 1
                };

                tiles.Add(layeredWorldPosition, tile);
            }
        }
        public void ProcessCharacterMovement(ICharacter character, IGameTile adjacentGameTile)
        {
            if (adjacentGameTile.Passable)
            {
                var originalPosition = character.Position;

                if (adjacentGameTile is WrapAroundGameTile wrapAroundGameTile)
                {
                    character.Position = wrapAroundGameTile.WrapPosition;

                    var wrapGameObject = GameState.BoardState.GetGameTile(
                        wrapAroundGameTile
                        .WrapPosition);

                    wrapGameObject.CharacterOnGameTile = character;
                }
                else
                {
                    character.Position = adjacentGameTile.Position;
                    adjacentGameTile.CharacterOnGameTile = character;
                }

                // Removing the old board character reference
                GameState.BoardState.GetGameTile(originalPosition).CharacterOnGameTile = null;
            }
        }
 public void InteractWithGameTile(ref IGameTile gameTile, GameState gameState)
 {
     if (gameTile is DotGameTile)
     {
         gameTile = new EmptySpaceGameTile((DotGameTile)gameTile);
         gameState.Score++;
     }
 }
    public IGameTile GetClonedTile(string id)
    {
        IGameTile originalTile = Tiles[id];
        IGameTile clonedTile   = (IGameTile)originalTile.Clone();

        clonedTile.ID = Guid.NewGuid().ToString();

        return(clonedTile);
    }
Example #5
0
        public void GenerateMap()
        {
            var groundTiles = CreatePopulatedTilemap(tilemapLayers.GroundLayer);

            // Adds ground tiles to the global tiles
            tiles = DataUtils.MergeDictionaries(tiles, groundTiles);

            foreach (var tile in groundTiles)
            {
                IGameTile tileData = tile.Value;
                SetGameTile(tilemapLayers.GroundLayer, tileData);
            }
        }
        public void InitializeDefaultBoard()
        {
            Board = new IGameTile[10, 10];

            for (var i = 0; i < 10; i++)
            {
                Board[i, 0] = new WrapAroundGameTile(new Coordinate(i, 0), new Coordinate(i, 8));
                Board[i, 9] = new WrapAroundGameTile(new Coordinate(i, 9), new Coordinate(i, 1));

                Board[0, i] = new WrapAroundGameTile(new Coordinate(0, i), new Coordinate(8, i));
                Board[9, i] = new WrapAroundGameTile(new Coordinate(9, i), new Coordinate(1, i));
            }

            for (var i = 1; i < 9; i++)
            {
                for (var j = 1; j < 9; j++)
                {
                    Board[i, j] = new DotGameTile(new Coordinate(i, j));
                }
            }

            for (var i = 1; i < 9; i++)
            {
                Board[i, 0] = new WallGameTile(new Coordinate(i, 0));
                Board[i, 9] = new WallGameTile(new Coordinate(i, 9));
            }

            for (var i = 2; i < 8; i++)
            {
                Board[0, i] = new WallGameTile(new Coordinate(0, i));
                Board[9, i] = new WallGameTile(new Coordinate(9, i));
            }

            Board[0, 0] = new WallGameTile(new Coordinate(0, 0));
            Board[0, 9] = new WallGameTile(new Coordinate(0, 9));
            Board[9, 0] = new WallGameTile(new Coordinate(9, 0));
            Board[9, 9] = new WallGameTile(new Coordinate(9, 9));



            PlayerSpawnPosition = new Coordinate(5, 5);
        }
Example #7
0
        public Dictionary <Vector3, IGameTile> CreatePopulatedTilemap(TilemapLayer tilemapLayer)
        {
            int     layer   = tilemapLayer.layer;
            Tilemap tilemap = tilemapLayer.tilemap;
            Dictionary <Vector3, IGameTile> localTilemap = new Dictionary <Vector3, IGameTile>();

            foreach (Vector3Int pos in tilemap.cellBounds.allPositionsWithin)
            {
                Vector3Int localPlace = new Vector3Int(pos.x, pos.y, layer);

                bool isTileEmpty = !tilemap.HasTile(localPlace);

                if (!isTileEmpty)
                {
                    print("Tile at: " + localPlace + " already exists!");
                    continue;
                }

                var worldLocation        = tilemap.CellToWorld(localPlace);
                var layeredWorldPosition = new Vector3(worldLocation.x, worldLocation.y, layer);

                IGameTile tileFromLibrary = GetTileByAssetName("grass_001");

                IGameTile tile = new GameTile
                {
                    LocalPlace    = localPlace,
                    WorldLocation = layeredWorldPosition,
                    TileBase      = tileFromLibrary.TileBase,
                    TilemapMember = tilemap,
                    Description   = tileFromLibrary.Description,
                    Cost          = 0,
                    TileData      = tileFromLibrary.TileData,
                };

                localTilemap.Add(layeredWorldPosition, tile);
            }

            return(localTilemap);
        }
Example #8
0
        public IGameTile[,] ParseBoardCsvFile(string filepath)
        {
            var parsedValues = new List <List <string> >();

            using (TextFieldParser parser = new TextFieldParser(filepath))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");

                while (!parser.EndOfData)
                {
                    var rowList   = new List <string>();
                    var rowValues = parser.ReadFields();

                    foreach (var value in rowValues)
                    {
                        rowList.Add(value);
                    }

                    parsedValues.Add(rowList);
                }
            }

            var board = new IGameTile[parsedValues.Count, parsedValues[1].Count];

            maxI = parsedValues.Count;
            maxJ = parsedValues[0].Count;

            for (var i = 0; i < parsedValues.Count; i++)
            {
                for (var j = 0; j < parsedValues[0].Count; j++)
                {
                    board[i, j] = ParseGameTileValue(char.Parse(parsedValues[i][j]), i, j);
                }
            }

            return(board);
        }
Example #9
0
        public void PlaceTile(Vector3 pos, string assetName, TilemapLayer tilemapLayer)
        {
            Tilemap tilemap = tilemapLayer.tilemap;
            int     layer   = tilemapLayer.layer;

            Vector3Int tilemapPos           = tilemap.WorldToCell(pos);
            Vector3    layeredWorldPosition = new Vector3(tilemapPos.x, tilemapPos.y, layer);

            Vector3Int localPlace = new Vector3Int(tilemapPos.x, tilemapPos.y, layer);

            IGameTile newTile = TileLibrary.instance.GetClonedTile(assetName);

            newTile.LocalPlace    = localPlace;
            newTile.WorldLocation = layeredWorldPosition;
            newTile.TilemapMember = tilemap;

            // if a tile already exists there, just replace it.
            bool tileExistsInPos = tiles.ContainsKey(layeredWorldPosition);

            if (tileExistsInPos)
            {
                tiles[layeredWorldPosition] = newTile;
            }
            else
            {
                tiles.Add(layeredWorldPosition, newTile);
            }

            bool isACrop = newTile.GetType() == typeof(CropTile);

            if (isACrop)
            {
                (newTile as CropTile).StartGrowing();
            }

            SetGameTile(tilemapLayer, newTile);
        }
 private void UpdatedSelectedTileHUD(IGameTile tile)
 {
     selectedTileText.text    = tile.Description;
     selectedTileImage.sprite = tile.TileData.sprite;
 }
        public void SelectTileFromHUD(string tileID)
        {
            IGameTile tile = TileController.GetTileByAssetName(tileID);

            SetPreviewTile(tile.TileData);
        }
 private void SetSelectedTile(IGameTile tile)
 {
     selectedTile = tile;
 }
Example #13
0
 private void SetGameTile(TilemapLayer tilemapLayer, IGameTile gameTile)
 {
     tilemapLayer.tilemap.SetTile(gameTile.LocalPlace, gameTile.TileBase);
 }
 public void InteractWithGameTile(ref IGameTile gameTile, GameState gameState)
 {
     // Do nothing since the ghost does not currently interact with any tile
 }