Exemple #1
0
        void StateMachine_OnTransition(VMEODPaperChaseState from, VMEODPaperChaseState to)
        {
            Lobby.Broadcast("paperchase_state", ((byte)to).ToString());

            if (Controller == null)
            {
                return;
            }

            switch (to)
            {
            case VMEODPaperChaseState.Lobby:
                ResetGame();
                BroadcastPlayerLetters();
                break;

            case VMEODPaperChaseState.StartRound:
                ResetGame();
                CurrentCombination = Combinations[Random.Next(0, Combinations.Length)];
                StateMachine.TransitionTo(VMEODPaperChaseState.WaitingForThreeLetters);
                break;

            case VMEODPaperChaseState.WaitingForThreeLetters:
                PreviousMatches = Matches;
                BroadcastPlayerLetters();
                Controller.SendOBJEvent(new VMEODEvent((short)VMEODPaperChaseObjEvent.Idle));
                break;

            case VMEODPaperChaseState.ThreeLettersProvided:
                Matches = 0;
                for (var i = 0; i < 3; i++)
                {
                    var playerData = Lobby.GetSlotData(i);
                    if (playerData.Letter == CurrentCombination[i])
                    {
                        Matches++;
                    }

                    Controller.SendOBJEvent(new VMEODEvent((short)VMEODPaperChaseObjEvent.SetLetter,
                                                           (short)(playerData.Letter | (short)((i + 1) << 8)))); //lo: letter, hi: FREESO player id

                    playerData.PreviousLetter = playerData.Letter;
                    playerData.Letter         = null;
                }

                Controller.SendOBJEvent(new VMEODEvent((short)VMEODPaperChaseObjEvent.SetResult, Matches));
                StateMachine.TransitionTo(VMEODPaperChaseState.CheckingResult);
                break;

            case VMEODPaperChaseState.CheckingResult:
                Ticks = 0;
                break;

            case VMEODPaperChaseState.CheckResult:
                Ticks = 0;
                Controller.SendOBJEvent(new VMEODEvent((short)VMEODPaperChaseObjEvent.ShowResult));
                Lobby.Broadcast("paperchase_result", Matches.ToString());
                break;
            }
        }
Exemple #2
0
        private void InitEOD()
        {
            State = VMEODPaperChaseState.Lobby;
            DigestState();

            PlaintextHandlers["paperchase_show"]    = Show;
            PlaintextHandlers["paperchase_players"] = Lobby.UpdatePlayers;
            PlaintextHandlers["paperchase_state"]   = SetState;
            PlaintextHandlers["paperchase_letters"] = SetLetters;
            PlaintextHandlers["paperchase_result"]  = SetResult;
        }
Exemple #3
0
 private void SetState(string evt, string body)
 {
     State = (VMEODPaperChaseState)int.Parse(body);
     DigestState();
 }