Beispiel #1
0
        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();
        }
Beispiel #2
0
        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)));
        }
Beispiel #3
0
        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();
        }