示例#1
0
        public override void Enter(SceneLobby e)
        {
            // シーンメインにいく
            //SceneManager.LoadScene("Main");

            // 自分の名前を相手に送る
            SyncNameInfo info = new SyncNameInfo();

            info.iName = new int[64];
            char[] cName = PlayerDataManager.GetPlayerData().playerName.ToCharArray();
            for (int i = 0; i < cName.Length; i++)
            {
                // char型なのに12450という値が出た("ア")。c#のchar型は自分の知っているchar型ではない?
                //if(cName[i] > byte.MaxValue)
                //{
                //    Debug.Log((int)cName[i] + "," + cName[i]);
                //}
                //info.byName[i] = Convert.ToByte(cName[i]);
                info.iName[i] = Convert.ToInt32(cName[i]);
                //if (cName[i] == '\0')break;
            }
            //info.playerName = PlayerDataManager.GetPlayerData().playerName;
            //info.iconID = PlayerDataManager.GetPlayerData().iconNo;
            MessageManager.Dispatch((int)e.networkType, MessageType.SyncName, info);

            //Debug.Log("相手に自分の名前を送ります! - " + info.playerName);

            // 準備OKのボタンを表示する
            e.junbiOKButton.SetActive(true);
        }
示例#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);
        }