Beispiel #1
0
        public void HandleMessage(ProtoBase proto)
        {
            switch (proto.MessageID)
            {
            case MessageId.SC_StartLevel:
            {
                if (m_curSubGameType != ESubGame.Battle)
                {
                    ProtoSCStartLevel startLevel = proto as ProtoSCStartLevel;
                    m_globalData.CurrLevel = startLevel.LevelId;
                    SwitchToSubgame(ESubGame.Battle);
                }
                break;
            }

            case MessageId.SC_LeaveGame:
            {
                ExitRoom();
                break;
            }

            default:
                break;
            }
            // update subgame
            if (m_curSubGame != null)
            {
                m_curSubGame.HandleMessage(proto);
            }
        }
Beispiel #2
0
        public override void HandleMessage(ProtoBase proto)
        {
            switch (proto.MessageID)
            {
            case MessageId.SC_StartLevel:
            {
                ProtoSCStartLevel startLevel = proto as ProtoSCStartLevel;
                GameCore.Instance.m_globalData.CurrLevel = startLevel.LevelId;
                Reset();
                SyncClock();
                break;
            }

            case MessageId.SC_LeaveLevel:
            {
                GameCore.Instance.SwitchToSubgame(ESubGame.SelectLevel);
                break;
            }

            case MessageId.SC_StartBattle:
            {
                ProtoSCStartBattle startBattle = proto as ProtoSCStartBattle;
                m_state           = EBattleState.Ready;
                m_startFightTime  = startBattle.StartTime + m_startFightDelay;
                m_viewSceneTarget = startBattle.Translation;
                Vector2 startPos = new Vector2(-6, m_viewSceneTarget.y);
                m_battleField.BattleFieldObj.transform.position = startPos;
                m_viewSceneSpeed = (m_viewSceneTarget.x + 6) / m_viewSceneTime;

                for (int i = 0; i < startBattle.BallQueueA.Count; ++i)
                {
                    m_battleField.m_ballReserve[0].Enqueue((ELevelBallType)startBattle.BallQueueA[i]);
                }

                m_battleField.CheckBallDisplay(0);

                for (int i = 0; i < startBattle.BallQueueB.Count; ++i)
                {
                    m_battleField.m_ballReserve[1].Enqueue((ELevelBallType)startBattle.BallQueueB[i]);
                }

                m_battleField.CheckBallDisplay(1);
                if (GameCore.Instance.m_globalData.CurrLevel % 2 == 1)
                {
                    AudioMgr.PlayAudio(2, Guid.Empty);
                }
                else
                {
                    AudioMgr.PlayAudio(3, Guid.Empty);
                }
                break;
            }

            case MessageId.SC_EndBattle:
            {
                ProtoSCEndBattle endBattle = proto as ProtoSCEndBattle;
                StartTimer(() =>
                    {
                        OnEndBattle(endBattle.IsWin);
                    }, 2f);
                break;
            }

            case MessageId.SC_BattleCommand:
            {
                ProtoSCBattleCommand battleCommand = proto as ProtoSCBattleCommand;
                HandleBattleCommand(battleCommand.Command);
                break;
            }
            }
        }