Пример #1
0
 // Transition to another room through warp points.
 public void Warp(WarpEvent startPoint, EventTileDataInstance endPoint)
 {
     TransitionToRoom(endPoint.Room,
                      startPoint.CreateTransition(endPoint),
                      startPoint.CreateExitState(),
                      null, endPoint);
 }
Пример #2
0
            public Events(EndianBinaryReader r)
            {
                ushort count = r.ReadUInt16();

                Warps = new WarpEvent[count];
                for (int i = 0; i < count; i++)
                {
                    Warps[i] = new WarpEvent(r);
                }
                count = r.ReadUInt16();
                Objs  = new ObjEvent[count];
                for (int i = 0; i < count; i++)
                {
                    Objs[i] = new ObjEvent(r);
                }
            }
Пример #3
0
        public Events(JToken j)
        {
            var arr   = (JArray)j[nameof(Warps)];
            int count = arr.Count;

            Warps = new WarpEvent[count];
            for (int i = 0; i < count; i++)
            {
                Warps[i] = new WarpEvent(arr[i]);
            }
            arr   = (JArray)j[nameof(Objs)];
            count = arr.Count;
            Objs  = new ObjEvent[count];
            for (int i = 0; i < count; i++)
            {
                Objs[i] = new ObjEvent(arr[i]);
            }
        }
Пример #4
0
        public void TransitionToRoom(Room nextRoom, RoomTransition transition, GameState exitState, GameState enterState, EventTileDataInstance warpTile)
        {
            // Create the new room control.
            RoomControl newControl = new RoomControl();

            newControl.gameManager  = gameManager;
            newControl.room         = nextRoom;
            newControl.roomLocation = nextRoom.Location;

            //               [Exit]                       [Enter]
            // [RoomOld] -> [RoomOld] -> [Transition] -> [RoomNew] -> [RoomNew]

            // Create the sequence of game states for the transition.
            GameState postTransitionState = new GameStateAction(delegate(GameStateAction actionState) {
                gameManager.PopGameState();                 // Pop the queue state.
                gameManager.PushGameState(newControl);      // Push the new room control state.

                // Find the warp event were warping to and grab its enter-state.
                if (warpTile != null)
                {
                    WarpEvent eventTile = newControl.FindEventTile(warpTile) as WarpEvent;
                    if (eventTile != null)
                    {
                        enterState = eventTile.CreateEnterState();
                    }
                }
                if (enterState != null)
                {
                    gameManager.PushGameState(enterState);                     // Push the enter state.
                }
            });
            GameState preTransitionState = new GameStateAction(delegate(GameStateAction actionState) {
                GameControl.RoomControl = newControl;
                gameManager.PopGameState();                 // Pop the queue state.
                gameManager.PopGameState();                 // Pop the room control state.
                gameManager.PushGameState(new GameStateQueue(transition, postTransitionState));
                newControl.FindEventTile(warpTile);
            });

            if (warpTile != null)
            {
                transition.NewRoomSetup += delegate(RoomControl roomControl) {
                    // Find the warp event were warping to.
                    WarpEvent eventTile = newControl.FindEventTile(warpTile) as WarpEvent;
                    if (eventTile != null)
                    {
                        eventTile.SetupPlayerInRoom();
                    }
                };
            }

            // Create the game state for the transition sequence.
            GameState state = preTransitionState;

            if (exitState != null)
            {
                state = new GameStateQueue(exitState, preTransitionState);
            }

            // Begin the transition.
            transition.OldRoomControl = this;
            transition.NewRoomControl = newControl;
            gameManager.PushGameState(state);
        }
Пример #5
0
 internal void AddListener(WarpEvent onWarpRequest)
 {
     throw new NotImplementedException();
 }