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); }
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); // 何も引っかからなかった }
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); }
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); }
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); }
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); }
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); // 何も引っかからなかった }
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); }
//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); }