Ejemplo n.º 1
0
        public override bool OnMessage(CardAbilityData abilityData, MessageInfo message)
        {
            switch (message.messageType)
            {
            case MessageType.SelectNumber:
            {
                // ★(2回選択しても入ってこれないようにする)
                if (step > 0)
                {
                    return(true);
                }

                SelectNumberInfo selectNumberInfo = new SelectNumberInfo();
                message.GetExtraInfo <SelectNumberInfo>(ref selectNumberInfo);

                // 選択した番号保存
                selectNumber = selectNumberInfo.selectNumber;

                // UI非表示
                CardAbilityData.uiManager.DisAppearSelectNumberUI(selectNumber);
                CardAbilityData.uiManager.DisAppearSelectNumberWaitUI();

                // 次のステップへ
                step++;
            }
                return(true);
            }

            return(false);
        }
Ejemplo n.º 2
0
        public override bool OnMessage(SceneMenu e, MessageInfo message)
        {
            // メッセージタイプが一致している箇所に
            switch (message.messageType)
            {
            case MessageType.ClickAnyButton:

                // byte[]→構造体
                AnyButton info = new AnyButton();
                message.GetExtraInfo <AnyButton>(ref info);
                //+-------------------------------------------------------------
                // ★選択したアイコンのタイプに変更
                switch ((NET_BATTLE_TYPE)info.Index)
                {
                //case NET_BATTLE_TYPE.SERVER:
                //    e.m_pStateMachine.ChangeState(NetBattleHostSelected.GetInstance());
                //    break;
                //case NET_BATTLE_TYPE.CLIENT:
                //    e.m_pStateMachine.ChangeState(NetBattleClientSelected.GetInstance());
                //    break;
                case NET_BATTLE_TYPE.SERVER:
                    // セレクトデータ保存
                    SelectData.networkType = NETWORK_TYPE.HOST;
                    // ネットワークロビーに行く
                    e.m_bSceneChange = true;
                    SceneManager.LoadScene("NetworkLobby");
                    break;

                case NET_BATTLE_TYPE.CLIENT:
                    // セレクトデータ保存
                    SelectData.networkType = NETWORK_TYPE.CLIENT;
                    // IPアドレス保存
                    PlayerDataManager.GetPlayerData().ip = e.ipInput.text;
                    // ネットワークロビーに行く
                    e.m_bSceneChange = true;
                    SceneManager.LoadScene("NetworkLobby");
                    break;

                case NET_BATTLE_TYPE.END:
                default:
                    //+-------------------------------------------------------------------
                    // もどる
                    e.m_pStateMachine.ChangeState(SceneMenuState.BattleSelect.GetInstance());
                    // 01/22 Exit関数からここに移動
                    e.BlackPanel.SetActive(false);
                    break;
                }

                return(true);    // trueを返して終り

            default:

                break;
            }
            return(false); // 何も引っかからなかった
        }
Ejemplo n.º 3
0
 public override bool OnMessage(CardAbilityData abilityData, MessageInfo message)
 {
     switch (message.messageType)
     {
     case MessageType.SelectHand:
     {
         SelectCardIndexInfo info = new SelectCardIndexInfo();
         message.GetExtraInfo <SelectCardIndexInfo>(ref info);
         suteCard = abilityData.myPlayer.deckManager.DequeueHand(info.index);
         suteCard.ShowDraw(0.75f, false);
         step++;
     }
         return(true);
     }
     return(false);
 }
Ejemplo n.º 4
0
    public override void HandleMessage(MessageInfo message)
    {
        if (MessageManager.isNetwork)
        {
            // ステート同期メッセージ
            if (message.messageType == MessageType.SyncState)
            {
                SyncStateInfo info = new SyncStateInfo();
                message.GetExtraInfo <SyncStateInfo>(ref info);

                currentStateNames[message.fromPlayerID] = info.cStateName.ToString();
                return;
            }
        }

        stateMachine.HandleMessage(message);
    }
Ejemplo n.º 5
0
        public override bool OnMessage(CardAbilityData abilityData, MessageInfo message)
        {
            switch (message.messageType)
            {
            case MessageType.SelectCemetery:
            {
                SelectCardIndexInfo selectCardIndexInfo = new SelectCardIndexInfo();
                message.GetExtraInfo <SelectCardIndexInfo>(ref selectCardIndexInfo);

                // 墓地から無造作にストライカーを引く
                drawCard = abilityData.myPlayer.deckManager.DequeCemetery(selectCardIndexInfo.index);

                // 次のステップへ
                step++;
            }
            break;
            }

            return(false);
        }
Ejemplo n.º 6
0
        public override bool OnMessage(CardAbilityData abilityData, MessageInfo message)
        {
            switch (message.messageType)
            {
            case MessageType.SelectNumber:
            {
                SelectNumberInfo selectNumberInfo = new SelectNumberInfo();
                message.GetExtraInfo <SelectNumberInfo>(ref selectNumberInfo);

                // 選択した番号保存
                //selectNumber = selectNumberInfo.selectNumber;

                // 次のステップへ
                step++;
            }
            break;
            }

            return(false);
        }
Ejemplo n.º 7
0
        public override bool OnMessage(SceneMenu e, MessageInfo message)
        {
            // メッセージタイプが一致している箇所に
            switch (message.messageType)
            {
            case MessageType.ClickAnyButton:

                // byte[]→構造体
                AnyButton info = new AnyButton();
                message.GetExtraInfo <AnyButton>(ref info);
                //+-------------------------------------------------------------
                // ★選択したアイコンのタイプに変更
                switch (info.Index)
                {
                case 1:

                    e.Tips1.SetActive(false);
                    e.Tips2.SetActive(false);
                    e.Tips3.SetActive(false);
                    e.Tips4.SetActive(false);
                    //e.Tips5.SetActive(false);

                    e.Tips1.SetActive(true);
                    break;

                case 2:
                    e.Tips1.SetActive(false);
                    e.Tips2.SetActive(false);
                    e.Tips3.SetActive(false);
                    e.Tips4.SetActive(false);
                    // e.Tips5.SetActive(false);

                    e.Tips2.SetActive(true);
                    break;

                case 3:
                    e.Tips1.SetActive(false);
                    e.Tips2.SetActive(false);
                    e.Tips3.SetActive(false);
                    e.Tips4.SetActive(false);
                    // e.Tips5.SetActive(false);

                    e.Tips3.SetActive(true);
                    break;

                case 4:
                    e.Tips1.SetActive(false);
                    e.Tips2.SetActive(false);
                    e.Tips3.SetActive(false);
                    e.Tips4.SetActive(false);
                    //e.Tips5.SetActive(false);

                    e.Tips4.SetActive(true);
                    break;
                //case 5:
                //    e.Tips1.SetActive(false);
                //    e.Tips2.SetActive(false);
                //    e.Tips3.SetActive(false);
                //    e.Tips4.SetActive(false);
                //    e.Tips5.SetActive(false);

                //    e.Tips5.SetActive(true);
                //    break;
                default:
                    //+-------------------------------------------------------------------
                    // もどる
                    e.m_pStateMachine.ChangeState(SceneMenuState.BattleSelect.GetInstance());
                    break;
                }

                return(true);    // trueを返して終り

            default:

                break;
            }
            return(false); // 何も引っかからなかった
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
    //public bool isHaveInterceptCard()
    //{
    //    foreach (Player player in players)
    //        if (player.isHaveInterceptCard()) return true;
    //    return false;
    //}

    public bool HandleMessage(MessageInfo message)
    {
        // switchにすると構造体受け取りでバグる
        if (message.messageType == MessageType.Marigan)
        {
            // byte[]→構造体
            SyncDeckInfo syncDeckInfo = new SyncDeckInfo();
            message.GetExtraInfo <SyncDeckInfo>(ref syncDeckInfo);

            players[message.fromPlayerID].Marigan(syncDeckInfo);
            return(true);
        }
        if (message.messageType == MessageType.NoMarigan)
        {
            players[message.fromPlayerID].NoMarigan();
            return(true);
        }
        if (message.messageType == MessageType.SetStrikerOK)
        {
            players[message.fromPlayerID].JunbiKanryoON();
            // ボタン非表示
            if (players[message.fromPlayerID].isMyPlayer)
            {
                uiManager.DisableSetStrikerButton();
            }
            return(true);
        }
        if (message.messageType == MessageType.SetStrikerPass)
        {
            players[message.fromPlayerID].JunbiKanryoON();
            players[message.fromPlayerID].PushedNextButtonON();
            // ボタン非表示
            if (players[message.fromPlayerID].isMyPlayer)
            {
                uiManager.DisableSetStrikerButton();
            }
            return(true);
        }

        // もう一回NEXT押してどうぞ
        if (message.messageType == MessageType.AgainNextButton)
        {
            players[message.fromPlayerID].JunbiKanryoOFF();
            players[message.fromPlayerID].PushedNextButtonOFF();
            return(true);
        }

        if (message.messageType == MessageType.SetStrikerOK)
        {
            players[message.fromPlayerID].JunbiKanryoON();
            return(true);
        }

        if (message.messageType == MessageType.SetStriker)
        {
            if (message.exInfo == null)
            {
                return(false);
            }

            // byte[]→構造体
            SelectCardIndexInfo setCardInfo = new SelectCardIndexInfo();
            message.GetExtraInfo <SelectCardIndexInfo>(ref setCardInfo);
            //IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(setCardInfo));
            //Marshal.Copy(message.exInfo, 0, ptr, Marshal.SizeOf(setCardInfo));
            //setCardInfo = (SetCardInfo)Marshal.PtrToStructure(ptr, setCardInfo.GetType());
            //Marshal.FreeHGlobal(ptr);

            Debug.Log("受信: プレイヤー" + message.fromPlayerID + "が手札" + setCardInfo.index + "のカードをセットしました");

            players[message.fromPlayerID].SetCard(setCardInfo);
            // ボタン表示
            if (players[message.fromPlayerID].isMyPlayer)
            {
                uiManager.EnableSetStrikerButton();
            }
            return(true);
        }
        if (message.messageType == MessageType.SetSupport)
        {
            if (message.exInfo == null)
            {
                return(false);
            }

            // byte[]→構造体
            SelectCardIndexInfo setCardInfo = new SelectCardIndexInfo();
            message.GetExtraInfo <SelectCardIndexInfo>(ref setCardInfo);

            Debug.Log("受信: プレイヤー" + message.fromPlayerID + "が手札" + setCardInfo.index + "のサポートカードを発動");

            players[message.fromPlayerID].SetSupport(setCardInfo);

            // ★シーンメインのステートをサポート待ちのステートに変更
            Debug.Assert(sceneMain, "PlayerManagerがscemeMainアタッチされてない");
            sceneMain.ChangeState(SceneMainState.SupportExcusionState.GetInstance());

            // ★相手プレイヤーがすでにOKボタンを押していたら、もう一度表示させる。
            var youPlayer = GetCPUPlayerByID(message.fromPlayerID);
            if (youPlayer.isPushedJunbiKanryo)
            {
                // もう一回NEXT押してどうぞ
                youPlayer.JunbiKanryoOFF();
                // ボタン表示
                if (youPlayer.isMyPlayer)
                {
                    uiManager.EnableSetStrikerButton();
                }
            }

            return(true);
        }
        if (message.messageType == MessageType.SetIntercept)
        {
            if (message.exInfo == null)
            {
                return(false);
            }

            // byte[]→構造体
            SelectCardIndexInfo setCardInfo = new SelectCardIndexInfo();
            message.GetExtraInfo <SelectCardIndexInfo>(ref setCardInfo);

            Debug.Log("受信: プレイヤー" + message.fromPlayerID + "が手札" + setCardInfo.index + "のインターセプトカードを発動");

            players[message.fromPlayerID].SetIntercept(setCardInfo);
            // ステート終了
            //players[message.fromPlayerID].isStateEnd = true;
            players[message.fromPlayerID].isPushedJunbiKanryo = true;

            //+---------------------------------------------------
            // ★★送られてきた方じゃないプレイヤーのステートが
            // 操作しているやつならもう一回操作できるように
            int iID = (message.fromPlayerID == 0) ? 1 : 0;
            if (iID == GetMyPlayerID())
            {
                AgainSetIntercept(iID);
            }
            //players[iID].stateMachine.currentState



            // [1212] インターセプトカードを伏せた後も押さす用に
            // ボタン非表示
            //if (players[message.fromPlayerID].isMyPlayer)
            //    uiManager.DisableSetStrikerButton();
            return(true);
        }
        if (message.messageType == MessageType.BackToHand)
        {
            if (message.exInfo == null)
            {
                return(false);
            }

            // byte[]→構造体
            BackToHandInfo backToHandInfo = new BackToHandInfo();
            message.GetExtraInfo <BackToHandInfo>(ref backToHandInfo);
            //IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(backToHandInfo));
            //Marshal.Copy(message.exInfo, 0, ptr, Marshal.SizeOf(backToHandInfo));
            //backToHandInfo = (BackToHandInfo)Marshal.PtrToStructure(ptr, backToHandInfo.GetType());
            //Marshal.FreeHGlobal(ptr);

            players[message.fromPlayerID].BackToHand(backToHandInfo);

            // ボタン非表示
            if (players[message.fromPlayerID].isMyPlayer)
            {
                uiManager.DisableSetStrikerButton();
            }

            return(true);
        }
        //if(message.messageType == MessageType.SyncName)
        //{
        //    if (message.exInfo == null)
        //        return false;

        //    // 自分の名前なら同期する必要なし
        //    //if (players[message.fromPlayerID].isMyPlayer) return true;

        //    SyncNameInfo syncNameInfo = new SyncNameInfo();
        //    //syncNameInfo.cName = new char[64];
        //    message.GetExtraInfo<SyncNameInfo>(ref syncNameInfo);

        //    // プレイヤーの名前設定
        //    players[message.fromPlayerID].playerName = syncNameInfo.playerName;//new string(syncNameInfo.cName);
        //}
        if (message.messageType == MessageType.SyncDeck)
        {
            if (message.exInfo == null)
            {
                return(false);
            }

            // byte[]→構造体
            SyncDeckInfo syncDeckInfo = new SyncDeckInfo();
            message.GetExtraInfo <SyncDeckInfo>(ref syncDeckInfo);
            //IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(syncDeckInfo));
            //Marshal.Copy(message.exInfo, 0, ptr, Marshal.SizeOf(syncDeckInfo));
            //syncDeckInfo = (SyncDeckInfo)Marshal.PtrToStructure(ptr, syncDeckInfo.GetType());
            //Marshal.FreeHGlobal(ptr);

            //Debug.Log("受信: プレイヤー" + message.fromPlayerID + "の手札情報:" +
            //    syncDeckInfo.yamahuda[0] + "," +
            //    syncDeckInfo.yamahuda[1] + "," +
            //    syncDeckInfo.yamahuda[2] + "," +
            //    syncDeckInfo.yamahuda[3] + "," +
            //    syncDeckInfo.yamahuda[4] + "," +
            //    syncDeckInfo.yamahuda[5] + "," +
            //    syncDeckInfo.yamahuda[6] + "," +
            //    syncDeckInfo.yamahuda[7] + "," +
            //    syncDeckInfo.yamahuda[8]);

            var isMyPlayer = players[message.fromPlayerID].isMyPlayer;

            // 発信元は同期する必要なし
            if (!isMyPlayer)
            {
                // 手札山札同期
                players[message.fromPlayerID].SyncDeck(syncDeckInfo);
            }

            // UIテキストの変更
            uiManager.UpdateDeckUI(players[message.fromPlayerID].deckManager, isMyPlayer);

            // 同期フラグ
            players[message.fromPlayerID].isSyncDeck = true;

            return(true);
        }

        return(false);
    }