예제 #1
0
 public static WaitConnection GetInstance()
 {
     if (m_pInstance == null)
     {
         m_pInstance = new WaitConnection();
     }
     return(m_pInstance);
 }
예제 #2
0
        public override bool OnMessage(SceneLobby e, MessageInfo message)
        {
            switch (message.messageType)
            {
            case MessageType.ServerDisconnect:
                // 自分と逆の方
                if (SelectData.networkType == NETWORK_TYPE.HOST)
                {
                    e.clientWindow.SetJunbiOK(false);
                    e.clientWindow.SetPlayerActive(false);
                }
                // 自分と逆の方
                if (SelectData.networkType == NETWORK_TYPE.CLIENT)
                {
                    e.hostWindow.SetJunbiOK(false);
                    e.hostWindow.SetPlayerActive(false);
                }
                // メッセージ初期化
                e.networkManager.Restart();
                MessageManager.Restart();
                // 接続待ちに戻る
                e.stateMachine.ChangeState(WaitConnection.GetInstance());
                break;

            case MessageType.ClientDisconnect:
                // 自分と逆の方
                if (SelectData.networkType == NETWORK_TYPE.HOST)
                {
                    e.clientWindow.SetJunbiOK(false);
                    e.clientWindow.SetPlayerActive(false);
                }
                // 自分と逆の方
                if (SelectData.networkType == NETWORK_TYPE.CLIENT)
                {
                    e.hostWindow.SetJunbiOK(false);
                    e.hostWindow.SetPlayerActive(false);
                }
                // メッセージ初期化
                e.networkManager.Restart();
                MessageManager.Restart();
                // 接続待ちに戻る
                e.stateMachine.ChangeState(WaitConnection.GetInstance());
                // もっかいサーバー立てても無理だったのでエラーウィンドウを出していったん戻る
                e.errorWindow.Action();
                break;

            case MessageType.SyncName:
            {
                // 自分から送られたならスルー
                if ((NETWORK_TYPE)message.fromPlayerID == e.networkType)
                {
                    return(true);
                }

                // データ解凍
                SyncNameInfo info = new SyncNameInfo();
                message.GetExtraInfo <SyncNameInfo>(ref info);

                //Debug.Log("相手の名前が送られてきた - " + info.playerName);

                char[] charArray = new char[64];
                for (int i = 0; i < 64; i++)
                {
                    charArray[i] = Convert.ToChar(info.iName[i]);
                }

                string stringName = new string(charArray);

                if ((NETWORK_TYPE)message.fromPlayerID == NETWORK_TYPE.HOST)
                {
                    e.hostWindow.SetPlayerName(stringName);
                    e.hostWindow.SetPlayerActive(true);
                }
                if ((NETWORK_TYPE)message.fromPlayerID == NETWORK_TYPE.CLIENT)
                {
                    e.clientWindow.SetPlayerName(stringName);
                    e.clientWindow.SetPlayerActive(true);
                }
                // 相手の名前保存
                SelectData.cpuPlayerName = stringName;
            }
                return(true);

            case MessageType.ClickJunbiOK:
                if ((NETWORK_TYPE)message.fromPlayerID == NETWORK_TYPE.HOST)
                {
                    e.hostWindow.SetJunbiOK(true);
                }
                if ((NETWORK_TYPE)message.fromPlayerID == NETWORK_TYPE.CLIENT)
                {
                    e.clientWindow.SetJunbiOK(true);
                }
                return(true);
            }

            return(false);
        }