Пример #1
0
        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));
        }
Пример #2
0
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }

        coll = GetComponent <BoxCollider>();
    }
Пример #3
0
        // StateMachine.IState Implementation
        public void FixedTick()
        {
            var bounds = PlayBounds.GetPlayBounds();

            Vector3 randomPoint = GenerateRandomPointInBounds(bounds);

            NavMeshHit hit;

            for (int attempts = 0;
                 !NavMesh.SamplePosition(randomPoint, out hit, float.PositiveInfinity, ~0) && attempts < 8;
                 attempts++)
            {
                randomPoint = GenerateRandomPointInBounds(bounds);
            }

            behaviour.goalPosition = behaviour.initialPosition = hit.position;
        }
Пример #4
0
        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;
        }
Пример #5
0
        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)
            });
        }