Пример #1
0
    public void HandleViewEvents(ViewEventsPipe eventPipe)
    {
        foreach (var evt in eventPipe.EventsInQueue)
        {
            try
            {
                OnEvent(evt);
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }

        // clear
        eventPipe.EventsInQueue.Clear();
    }
Пример #2
0
    public GameWorld(GameWorldData levelData)
    {
        Debug.Log("Entering Level " + levelData.LevelId);
        // init basic stuff
        GameWorldData   = levelData;
        RandomGenerator = new Unity.Mathematics.Random((uint)GetHashCode());
        ViewEventPipe   = new ViewEventsPipe();

        // init rooms
        int x = 0, y = 0;

        Rooms = new List <Room>();

        // do the rooms
        var roomPresets = new List <RoomPreset>();

        if (levelData.LevelId > 1)
        {
            roomPresets.Add(LoadRoomPreset("Pause"));
        }
        roomPresets.AddRange(LoadPresets(1, 5, randomize: levelData.LevelId > 1));
        roomPresets.Add(LoadRoomPreset("Pause"));
        roomPresets.AddRange(LoadPresets(6, 10));
        roomPresets.Add(LoadRoomPreset("Pause"));
        roomPresets.AddRange(LoadPresets(11, 15));
        roomPresets.Add(LoadRoomPreset("Boss"));
        roomPresets.Add(LoadRoomPreset("Organ"));

        foreach (var roomPreset in roomPresets)
        {
            Rooms.Add(new Room(this, x, y, roomPreset));

            // move up or right
            var proc = UnityEngine.Random.Range(0, 100) > 50;
            if (proc)
            {
                x++;
            }
            else
            {
                y++;
            }
        }

        // set next room refs
        for (int i = 0; i < Rooms.Count - 1; i++)
        {
            Rooms[i].SetNextRoom(Rooms[i + 1]);
        }
        Rooms[Rooms.Count - 1].SetNextRoom(null);

        for (int i = 1; i < Rooms.Count; i++)
        {
            Rooms[i].SetRoomBefore(Rooms[i - 1]);
        }

        // add player
        Player = new Player
                 (
            initialRoom: Rooms[0],
            settings: Game.PlayerSettings,
            initialPosition: float2.zero
                 );
    }