Пример #1
0
        /// <summary>
        /// Buduje mapę kafelków na podstawie danych zawartych w levelData oraz tekstury tileset
        /// </summary>
        /// <param name="levelData">Dane poziomu</param>
        /// <param name="tileset">Tekstura zawierająca kafelki</param>
        /// <returns>Dwuwymiarowa tablica kafelków mapy</returns>
        public Tile[,] BuildTileMap(LevelData levelData, Texture2D tileset)
        {
            var mapDimensions = levelData.Dimensions;
            var tilesArray = new Tile[(int) mapDimensions.X, (int) mapDimensions.Y];

            var trimmedAndRemovedNewLines = levelData.Tiles.Trim().Replace("\n", "");
            trimmedAndRemovedNewLines = Regex.Replace(trimmedAndRemovedNewLines, @"\s+", "");
            var tileCodes = trimmedAndRemovedNewLines.Split(',');

            int i = 0;
            for (int y = 0; y < tilesArray.GetLength(1); y++)
                for (int x = 0;x<tilesArray.GetLength(0);x++)
                {
                    var tile = GetTile(tileCodes[i++].ToLower(),new Vector2(x,y),  levelData, tileset);
                    tilesArray[x, y] = tile;
                }

            return tilesArray;
        }
Пример #2
0
 /// <summary>
 /// Konstruktor. Przyjmuje jako parametry obiekt gry oraz obiekt z zserializowanymi danymi poziomu
 /// </summary>
 /// <param name="game">Obiekt gry</param>
 /// <param name="levelData">Dane poziomu</param>
 public GameObjectFactory(MinerGame game,LevelData levelData)
 {
     _game = game;
     _levelData = levelData;
 }
Пример #3
0
 /// <summary>
 /// Parsuje i tłumaczy ciąg znaków na mapę kafelków
 /// </summary>
 /// <param name="levelData"></param>
 private void InitializeTileMap(LevelData levelData)
 {
     var tileset = _game.Content.Load<Texture2D>("Tilesets/" + levelData.Tileset);
     tileset.Name = levelData.Tileset;
     _tileDimensions = levelData.TileDimensions;
     var tileMapFactory = new TileMapFactory();
     Tiles = tileMapFactory.BuildTileMap(levelData, tileset);
 }
Пример #4
0
        /// <summary>
        /// Tworzy (jeśli nie przekazano w konstrukotrze) i inicjalizuje obiekt gracza
        /// </summary>
        /// <param name="levelData"></param>
        private void InitializePlayer(LevelData levelData)
        {
            PlayerStartPosition = levelData.PlayerStartPosition;

            if (Player == null)
            {
                Player = new Player(_game);
            }
            Player.Respawn(PlayerStartPosition);

            Player.Died += PlayerDied;
            Player.DynamiteSet += PlayerSetDynamite;
        }
Пример #5
0
        /// <summary>
        /// Inicjalizuje obiekty - maszyny, elementy zbieralne i materiały wybuchowe
        /// </summary>
        /// <param name="levelData"></param>
        /// <param name="exactPositions">
        /// Jeżeli exactPositions jest = true , to obiekty są ustawiane w pozycjach podanych w levelData.
        /// W przeciwnym przypadku pozycja ustalana jest jako pozycja danego kafelka, czyli np. [2,3] przy wymiarach kafelka [48,48] odpowiada pozycji [96,144]
        /// </param>
        private void InitializeGameObjects(LevelData levelData, bool exactPositions)
        {
            _machines = new List<Machine>();
            _explosives = new List<Explosive>();
            _collectibles = new List<Collectible>();

            var gameObjectFactory = new GameObjectFactory(_game, levelData);
            _collectibles.AddRange(gameObjectFactory.GetCollectibles(exactPositions));
            _machines.AddRange(gameObjectFactory.GetMachines(exactPositions));
            _explosives.AddRange(gameObjectFactory.GetExplosives(exactPositions));
        }
Пример #6
0
        /// <summary>
        /// Buduje obiekt kafelka na podstawie podanych informacji
        /// </summary>
        /// <param name="tileCode">Kod kafelka</param>
        /// <param name="tilePosition">Pozycja kafelka we współrzędnych, w których jednostką są wymiary kafelka</param>
        /// <param name="levelData">Dane poziomu</param>
        /// <param name="tileset">Tekstura zawierająca kafelki</param>
        /// <returns></returns>
        public Tile GetTile(string tileCode, Vector2 tilePosition, LevelData levelData,Texture2D tileset)
        {
            var tilesetOffset = CalculateTilesetOffset(tileCode, tileset, levelData.TileDimensions);

            var tile = new Tile(tileset,tilesetOffset);

            tile.Dimensions = levelData.TileDimensions;
            tile.Position = new Vector2(tilePosition.X * tile.Dimensions.X, tilePosition.Y * tile.Dimensions.Y);
            tile.Code = tileCode;

            if (tileset.Name == "rock_tileset")
            {
                switch (tileCode)
                {
                    case "0"://Pusty
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.Visible = false;
                        break;
                    case "21"://Wyjście
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.TileType = ETileType.Exit;
                        break;
                    case "22"://Zmiana kierunku
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.TileType = ETileType.SwitchMoveDirection;
                        tile.Visible = false;
                        break;
                    case "23"://Drabina
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.TileType = ETileType.LadderMiddle;
                        break;
                    case "24"://Bonus
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.Visible = SettingsManager.Instance.Debug;
                        break;
                    case "25"://Potworek
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.Visible = SettingsManager.Instance.Debug;
                        break;
                    case "26"://Drabina góra
                        tile.CollisionType = ETileCollisionType.Platform;
                        tile.TileType=ETileType.LadderTop;
                        break;
                    case "27"://tunel
                    case "28"://tunel
                    case "29"://tunel
                    case "30"://tunel
                    case "31"://tunel środek
                    case "32"://tunel
                        tile.CollisionType = ETileCollisionType.Passable;
                        break;
                    case "33"://tunel start
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.TileType = ETileType.TunnelStart;
                        tile.TilesetOffset = CalculateTilesetOffset("31", tileset, levelData.TileDimensions);
                        break;
                    case "34"://tunel end
                        tile.CollisionType = ETileCollisionType.Passable;
                        tile.TileType = ETileType.TunnelEnd;
                        tile.TilesetOffset = CalculateTilesetOffset("31", tileset, levelData.TileDimensions);
                        break;
                }
            }

            return tile;
        }