public Level(string filename, NeonArkanoidGame game) //: base(game.width, game.height) { width = game.width; _height = game.height; SetBackground(); SetPolyField(); SetTextBoxSettings(); BoundaryCreator(); SetSounds(); _gameEnded = false; _levelName = filename.Remove(filename.Length - 4); Console.WriteLine(_levelName); _game = game; var tmxParser = new TMXParser(); _map = tmxParser.Parse(filename); for (var i = 0; i < _map.ObjectGroup.Length; i++) { if (_map.ObjectGroup[i].Name.ToLower() == "polygons" || _map.ObjectGroup[i].Name.ToLower() == "polygon") { _polyList = new List <Polygon>(); CreatePolygons(_map.ObjectGroup[i]); } } foreach (var polygon in _polyList) { AddChild(polygon); } AddBouncerBalls(); AddBumpers(); _ball = new Ball(30, new AnimationSprite(UtilStrings.SpritesPlayer + "ball.png", 5, 1), new Vec2(200, 200)); AddChild(_ball); _stuckToPaddle = true; _paddle = new Paddle(this, new Vec2(game.width / 2, game.height - 100)); AddChild(_paddle); Redraw(); }
public MainGameScreen(int level) { this.Level = level; TMXParser.ParseData data = TMXParser.ParseTilemap(GetLevelPath(level), (b => b == (byte)Tiles.Goal || b == (byte)Tiles.PlayerSpawn || b == (byte)Tiles.DownBooster || b == (byte)Tiles.UpBooster || b == (byte)Tiles.LeftBooster || b == (byte)Tiles.RightBooster), TileSize); int levelWidth = data.width; int levelHeight = data.height == 1088 ? 1080 : data.height; xMinCameraOffset = -(levelWidth / 2) + (MainGame.Instance.DisplayWidth / 2); if (xMinCameraOffset > 0) { xMinCameraOffset = 0; } xMaxCameraOffset = (levelWidth / 2) - (MainGame.Instance.DisplayWidth / 2); if (xMaxCameraOffset < 0) { xMaxCameraOffset = 0; } yMinCameraOffset = -(levelHeight / 2) + (MainGame.Instance.DisplayHeight / 2); if (yMinCameraOffset > 0) { yMinCameraOffset = 0; } yMaxCameraOffset = (levelHeight / 2) - (MainGame.Instance.DisplayHeight / 2); if (yMaxCameraOffset < 0) { yMaxCameraOffset = 0; } TilemapRenderer renderer = Instantiate(new TilemapRenderer(Vector2.Zero, data.tiles, "Tilesheet", TileSize)); Vector2 playerPosition = Vector2.Zero; foreach (Point p in data.interestingPoints) { switch (data.tiles[p.X, p.Y]) { default: Debug.Log($"Unhandled interesting tile {data.tiles[p.X, p.Y]} at ({p.X}, {p.Y})"); break; case (byte)Tiles.Goal: Instantiate(new Goal(renderer.GetCenterOfTile(p.X, p.Y), TileSize)); break; case (byte)Tiles.PlayerSpawn: playerPosition = renderer.GetCenterOfTile(p.X, p.Y); break; case (byte)Tiles.DownBooster: Instantiate(new Booster(renderer.GetCenterOfTile(p.X, p.Y), TileSize, Tiles.DownBooster, -Vector2.UnitY, "Tilesheet")); break; case (byte)Tiles.UpBooster: Instantiate(new Booster(renderer.GetCenterOfTile(p.X, p.Y), TileSize, Tiles.UpBooster, Vector2.UnitY, "Tilesheet")); break; case (byte)Tiles.LeftBooster: Instantiate(new Booster(renderer.GetCenterOfTile(p.X, p.Y), TileSize, Tiles.LeftBooster, -Vector2.UnitX, "Tilesheet")); break; case (byte)Tiles.RightBooster: Instantiate(new Booster(renderer.GetCenterOfTile(p.X, p.Y), TileSize, Tiles.RightBooster, Vector2.UnitX, "Tilesheet")); break; } } player = Instantiate(new Player(playerPosition, TileSize)); Instantiate(new PauseListener()); Instantiate(new TextRenderer(new Vector2(1760, 100), $"Level {Level}")); Instantiate(new TextRenderer(new Vector2(1760, 150), $"Deaths: {MainGame.Instance.Deaths}")); Instantiate(new RunTimeDisplay(new Vector2(1760, 200))); }
protected override void Initialize() { actors = new List <Actor>(); toDestroy = new List <IDestroyable>(); colliders = new List <RectangleCollider>(); //SoundEffect.MasterVolume = 0; SpawnBlockersAroundScreen(); Instantiate(new TilemapRenderer(new Vector2(-DisplayWidth / 2 + 32, DisplayHeight / 2 - (56 + 32)), TMXParser.ParseTilemap("Content/game.tmx"), "BackgroundSheet", 64)); Instantiate(new Player()); SpawnEnemy(); Instantiate(new Scoreboard(new Vector2(20, 10))); base.Initialize(); }