public StartLevel() { var hallway = new Rectangle(-192, 19, 386, 68); PlayBounds.Add(hallway); var exitDoor = new Door(this, new Vector2(140, 24), 2, p => _startingGame = true); exitDoor.Open(true); Add(exitDoor); var unusedEntryDoor = new Door(this, new Vector2(-160, 24), 2, p => { }); unusedEntryDoor.Open(true); Add(unusedEntryDoor); Delay(1f, () => unusedEntryDoor.Close()); _readyPlayersArea = new Rectangle(44, -43, 156, 140); Add(new Entity() { TexturePath = "World/startscreen", Depth = Depths.Background, }); Add(new Light(180)); }
public TransitionLevel(TransitionState state, GameLevel previousLevel, bool enterFromTop = false) { _transitionState = state; _previousLevel = previousLevel; _enterFromTopDoor = enterFromTop; PlayBounds.Add(new Rectangle(-180, -100, 65, 166)); Add(new Entity() { TexturePath = "World/transitionscreen", Depth = Depths.Background, }); Add(new Light(180)); _entryDoor = new Door(this, new Vector2(-142, 80), 0, p => { }); Add(_entryDoor); _exitDoor = new Door(this, new Vector2(-158, -94), 2, p => _goToLevel = true); Add(_exitDoor); if (_enterFromTopDoor) { _exitDoor.Open(true); } else { _entryDoor.Open(true); Delay(1f, () => _entryDoor.Close()); Delay(3f, () => _exitDoor.Open()); } if (_transitionState != TransitionState.GameOver) { _puzzlesPreview = new PuzzlesPreview(); Add(_puzzlesPreview); } _tickPause = 2.5f; }
public GameLevel(int level) { LevelNumber = level; Add(new Entity() { TexturePath = $"World/level{Helpers.Rnd.Next(5)}", Depth = Depths.Background, }); MainArea = new Rectangle(-192, -104, 384, 192); PlayBounds.Add(MainArea); Add(new Fire(Math.Max(25, 180 - level * 2)) { Position = GetFreePosition() }); Settings = LevelGenerator.Generate(level); Puzzles = new Puzzle[Settings.Puzzles.Length]; for (int i = 0; i < Settings.Puzzles.Length; i++) { var item = Settings.Puzzles[i]; Add(Puzzles[i] = new Puzzle(item.Width, item.Height, item.Width * item.PieceSize, item.Height * item.PieceSize, 0, item.Image)); } for (int i = 0; i < Settings.Relics; i++) { var r = new Relic(); PlaceRelic(r); Add(r); } _returnDoor = new Door(this, new Vector2(10, 101), 0, p => { SetNextLevel(new TransitionLevel(p, this)); _returnedPlayer = p; }); _returnDoor.Open(true); Add(_returnDoor); _nextLevelDoor = new Door(this, new Vector2(-10, -101), 2, p => SetNextLevel(new TransitionLevel(!GameOver ? TransitionState.Next : TransitionState.GameOver, this))); Add(_nextLevelDoor); for (int i = 1; i < Helpers.Rnd.Next(1, 5); i++) { Add(new Rat()); } Add(new Torch() { Position = new Vector2(80, -120) }); Add(new Torch() { Position = new Vector2(180, -120) }); Add(new Torch() { Position = new Vector2(-80, -120), Effects = SpriteEffects.FlipHorizontally }); Add(new Torch() { Position = new Vector2(-180, -120), Effects = SpriteEffects.FlipHorizontally }); Add(oldman = new SpritesheetEntity() { TexturePath = "Player/oldman", FirstFrame = new Rectangle(0, 0, 32, 32), Depth = Depths.Players + 0.0001f, FrameCount = 4, FPS = 2, Position = new Vector2(MainArea.Right - 16, MainArea.Top + 20) }); }