//SendSeverDataArrayをRecvClientDataclassに変換 public RecvCliantData RecvArrayConvertClass(SendSeverDataArray sever) { RecvCliantData rData = new RecvCliantData(new FieldDataProxy[global.FieldSize.y, global.FieldSize.x], null, -1, null, null); int severCount = 0; for (int i = 0; i < sever.AllFeildData.Length / global.FieldSize.x; i++) { for (int j = 0; j < sever.AllFeildData.Length / global.FieldSize.y; j++) { //カードデータをClassに変換する rData.AllFeildData[i, j]._CardData.Cost = sever.AllFeildData[severCount].SendCardData.Cost; rData.AllFeildData[i, j]._CardData.Name = sever.AllFeildData[severCount].SendCardData.Name; rData.AllFeildData[i, j]._CardData.Number = sever.AllFeildData[severCount].SendCardData.Number; rData.AllFeildData[i, j]._CardData.Rarity = sever.AllFeildData[severCount].SendCardData.Rarity; rData.AllFeildData[i, j]._CardData.Score = sever.AllFeildData[severCount].SendCardData.Score; rData.AllFeildData[i, j]._CardData.Text = sever.AllFeildData[severCount].SendCardData.Text; rData.AllFeildData[i, j]._CardData.Type = sever.AllFeildData[severCount].SendCardData.Type; //残りも変換 rData.AllFeildData[i, j].IsRankUp = sever.AllFeildData[severCount].IsRankUp; rData.AllFeildData[i, j].MaptipNumber = sever.AllFeildData[severCount].MaptipNumber; rData.AllFeildData[i, j].PossessionPlayer = sever.AllFeildData[severCount].PossessionPlayer; rData.AllFeildData[i, j].RankID = sever.AllFeildData[severCount].RankID; severCount++; } } //プレイヤーデータを構造体に変換 for (int i = (int)PlayerType.Player1; i < (int)PlayerType.EndPlayer; i++) { rData.AllPlayerData[i].PlayerNumber = sever.AllPlayerData[i].PlayerNumber; rData.AllPlayerData[i].Ranking = sever.AllPlayerData[i].Ranking; rData.AllPlayerData[i].ScorePerTurn = sever.AllPlayerData[i].ScorePerTurn; rData.AllPlayerData[i].TotalScore = sever.AllPlayerData[i].TotalScore; } //描画メソッドを構造体に変換 for (int i = 0; i < sever.DrawDataList.Length; i++) { for (int j = 0; j < sever.DrawDataList[i].vs.Length; j++) { rData.DrawDataList[i][j] = sever.DrawDataList[i].vs[j]; } } //引くカードのデータを構造体に変換 for (int i = 0; i < sever.DrawCardList.Length; i++) { rData.DrawCardList[i].Name = sever.DrawCardList[i].Name; rData.DrawCardList[i].Number = sever.DrawCardList[i].Number; rData.DrawCardList[i].Rarity = sever.DrawCardList[i].Rarity; rData.DrawCardList[i].Score = sever.DrawCardList[i].Score; rData.DrawCardList[i].Text = sever.DrawCardList[i].Text; rData.DrawCardList[i].Type = sever.DrawCardList[i].Type; } return(rData); }
// Update is called once per frame void FixedUpdate() { if (!isLocalPlayer) { return; //他プレイヤーには何もしない } //データを受け取っていれば if (recvSeverData.isRecvFinished) { recvSeverData.isRecvFinished = false; DrawManager.instance._IsDrawFaze = true; //SendSeverDataArrayをRecvClientDataclassに変換 recvCliantData = RecvArrayConvertClass(recvSeverData); DrawManager.instance.isDrawInit = true; DrawManager.instance._DrawDataList = new List <List <int> >(recvCliantData.DrawDataList); if (recvCliantData != null) { print("受け取ったよ"); } } //描画処理 if (!UIMgr.instance.isClientTurn) //ターンエンドであれば { UIMgr.instance.isClientTurn = true; //int Length = UIMgr.instance.useCardGroup.Count; for (int i = 0; i < UIMgr.instance._UseCardData.Count; i++) { clientDataArrayList.Add(SendClassConvertArray(UIMgr.instance._UseCardData[i])); //一度型変換 } SendClientDataArray[] clientDataArray = clientDataArrayList.ToArray(); CmdSendClientData(clientDataArray, playerNum); //データ送信 } else { if (Input.GetMouseButtonDown(0)) //クリックされていれば { UIMgr.instance.isNowClick = true; } else { UIMgr.instance.isNowClick = false; } if (UIMgr.instance.isDragEnd) //ドラッグが終わっていれば { UIMgr.instance.isDragEnd = false; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Stage")) { ////多分こことCardMovementの2か所で使用カードデータが入れられているので、こっちを消しました //UIMgr.instance.useCardData._PlayerNum = playerNum; ////hit.transform.gameObject.GetComponent<TileData_Maneger>().planePos = new Vector2(hit.transform.position.x, hit.transform.position.z); //UIMgr.instance.useCardData._FieldPos = new Vector2(hit.transform.gameObject.GetComponent<TileData_Maneger>().planePos.x, hit.transform.gameObject.GetComponent<TileData_Maneger>().planePos.y); //// リストに追加 //UIMgr.instance._UseCardData.Add(new ClientData(UIMgr.instance.useCardData._CardDataProxy, // UIMgr.instance.useCardData._PlayerNum, // UIMgr.instance.useCardData._CardPlayTime, // UIMgr.instance.useCardData._FieldPos)); ////print(UIMgr.instance.useCardData._CardDataProxy.Name); } } } } } // end Updata
//SendSeverDataArrayをRecvClientDataclassに変換 public RecvCliantData RecvArrayConvertClass(SendSeverDataArray sever) { RecvCliantData rData = new RecvCliantData(new FieldDataProxy[global.FieldSize.y, global.FieldSize.x], null, -1, null, null); int severCount = 0; for (int i = 0; i < global.FieldSize.y; i++) { for (int j = 0; j < global.FieldSize.x; j++) { CardDataProxy InitCard = new CardDataProxy(-1, "", "", -1, -1, -1, -1); FieldDataProxy Init = new FieldDataProxy(InitCard, -1, -1, false, -1); rData.AllFeildData[i, j] = Init; } } //プレイヤー初期化 PlayerDataProxy InitPlayer = new PlayerDataProxy(-1, -1, -1, -1); rData.AllPlayerData = new PlayerDataProxy[4]; for (int i = 0; i < 4; i++) { rData.AllPlayerData[i] = InitPlayer; } List <List <int> > InitDrawList = new List <List <int> >(); rData.DrawDataList = InitDrawList; List <CardDataProxy> InitCardData = new List <CardDataProxy>(); rData.DrawCardList = InitCardData; for (int i = 0; i < sever.AllFeildData.Length / global.FieldSize.x; i++) { for (int j = 0; j < sever.AllFeildData.Length / global.FieldSize.y; j++) { //カードデータをClassに変換する rData.AllFeildData[i, j]._CardData.Cost = sever.AllFeildData[severCount].SendCardData.Cost; rData.AllFeildData[i, j]._CardData.Name = sever.AllFeildData[severCount].SendCardData.Name; rData.AllFeildData[i, j]._CardData.Number = sever.AllFeildData[severCount].SendCardData.Number; rData.AllFeildData[i, j]._CardData.Rarity = sever.AllFeildData[severCount].SendCardData.Rarity; rData.AllFeildData[i, j]._CardData.Score = sever.AllFeildData[severCount].SendCardData.Score; rData.AllFeildData[i, j]._CardData.Text = sever.AllFeildData[severCount].SendCardData.Text; rData.AllFeildData[i, j]._CardData.Type = sever.AllFeildData[severCount].SendCardData.Type; //残りも変換 rData.AllFeildData[i, j].IsRankUp = sever.AllFeildData[severCount].IsRankUp; rData.AllFeildData[i, j].MaptipNumber = sever.AllFeildData[severCount].MaptipNumber; rData.AllFeildData[i, j].PossessionPlayer = sever.AllFeildData[severCount].PossessionPlayer; rData.AllFeildData[i, j].RankID = sever.AllFeildData[severCount].RankID; severCount++; } } //プレイヤーデータを構造体に変換 for (int i = (int)PlayerType.Player1; i < (int)PlayerType.EndPlayer; i++) { rData.AllPlayerData[i].PlayerNumber = sever.AllPlayerData[i].PlayerNumber; rData.AllPlayerData[i].Ranking = sever.AllPlayerData[i].Ranking; rData.AllPlayerData[i].ScorePerTurn = sever.AllPlayerData[i].ScorePerTurn; rData.AllPlayerData[i].TotalScore = sever.AllPlayerData[i].TotalScore; } //描画メソッドを構造体に変換 List <List <int> > AddData = new List <List <int> >(); for (int i = 0; i < sever.DrawDataList.Length; i++) { List <int> ListData = new List <int>(); for (int j = 0; j < sever.DrawDataList[i].vs.Length; j++) { ListData.Add(sever.DrawDataList[i].vs[j]); //rData.DrawDataList[i][j] = sever.DrawDataList[i].vs[j]; } AddData.Add(ListData); } rData.DrawDataList = new List <List <int> >(AddData); //引くカードのデータを構造体に変換 for (int i = 0; i < sever.DrawCardList.Length; i++) { CardDataProxy AddCardData = new CardDataProxy(sever.DrawCardList[i].Number, sever.DrawCardList[i].Name, sever.DrawCardList[i].Text, sever.DrawCardList[i].Cost, sever.DrawCardList[i].Score, sever.DrawCardList[i].Type, sever.DrawCardList[i].Rarity); rData.DrawCardList.Add(AddCardData); //rData.DrawCardList[i].Name = sever.DrawCardList[i].Name; //rData.DrawCardList[i].Number = sever.DrawCardList[i].Number; //rData.DrawCardList[i].Rarity = sever.DrawCardList[i].Rarity; //rData.DrawCardList[i].Score = sever.DrawCardList[i].Score; //rData.DrawCardList[i].Text = sever.DrawCardList[i].Text; //rData.DrawCardList[i].Type = sever.DrawCardList[i].Type; } return(rData); }
//RecvCliantDataクラスをSendSeverDataArray構造体に変換 public SendSeverDataArray ClassConvertArray(RecvCliantData sever) { //work用 SendSeverDataArray sData; //初期化 sData.AllFeildData = new SendFieldDataArray[_prm.FieldSize.y * _prm.FieldSize.x]; sData.AllPlayerData = new SendPlayerDataArray[(int)PlayerType.EndPlayer]; sData.NowTurn = 0; sData.DrawCardList = null; sData.DrawDataList = null; int sDataCount = 0; //フィールドデータを構造体に変換 for (int i = 0; i < _prm.FieldSize.y; i++) { for (int j = 0; j < _prm.FieldSize.x; j++) { //カードデータを構造体に変換する sData.AllFeildData[sDataCount].SendCardData.Cost = sever.AllFeildData[i, j]._CardData.Cost; sData.AllFeildData[sDataCount].SendCardData.Name = sever.AllFeildData[i, j]._CardData.Name; sData.AllFeildData[sDataCount].SendCardData.Number = sever.AllFeildData[i, j]._CardData.Number; sData.AllFeildData[sDataCount].SendCardData.Rarity = sever.AllFeildData[i, j]._CardData.Rarity; sData.AllFeildData[sDataCount].SendCardData.Score = sever.AllFeildData[i, j]._CardData.Score; sData.AllFeildData[sDataCount].SendCardData.Text = sever.AllFeildData[i, j]._CardData.Text; sData.AllFeildData[sDataCount].SendCardData.Type = sever.AllFeildData[i, j]._CardData.Type; //残りのデータも変換 sData.AllFeildData[sDataCount].IsRankUp = sever.AllFeildData[i, j].IsRankUp; sData.AllFeildData[sDataCount].MaptipNumber = sever.AllFeildData[i, j].MaptipNumber; sData.AllFeildData[sDataCount].PossessionPlayer = sever.AllFeildData[i, j].PossessionPlayer; sData.AllFeildData[sDataCount].RankID = sever.AllFeildData[i, j].RankID; sDataCount++; } } //プレイヤーデータを構造体に変換 for (int i = (int)PlayerType.Player1; i < (int)PlayerType.EndPlayer; i++) { sData.AllPlayerData[i].PlayerNumber = sever.AllPlayerData[i].PlayerNumber; sData.AllPlayerData[i].Ranking = sever.AllPlayerData[i].Ranking; sData.AllPlayerData[i].ScorePerTurn = sever.AllPlayerData[i].ScorePerTurn; sData.AllPlayerData[i].TotalScore = sever.AllPlayerData[i].TotalScore; } //描画メソッドを構造体に変換 for (int i = 0; i < sever.DrawDataList.Count; i++) { for (int j = 0; j < sever.DrawDataList[i].Count; j++) { sData.DrawDataList[i].vs[j] = sever.DrawDataList[i][j]; } } //引くカードのデータを構造体に変換 for (int i = 0; i < sever._DrawCardList.Count; i++) { sData.DrawCardList[i].Name = sever.DrawCardList[i].Name; sData.DrawCardList[i].Number = sever.DrawCardList[i].Number; sData.DrawCardList[i].Rarity = sever.DrawCardList[i].Rarity; sData.DrawCardList[i].Score = sever.DrawCardList[i].Score; sData.DrawCardList[i].Text = sever.DrawCardList[i].Text; sData.DrawCardList[i].Type = sever.DrawCardList[i].Type; } // sData.isRecvFinished = true; return(sData); }
//情報をまとめて送り返す処理 public void CreateRecvObject(FieldDataProxy[][] Field, PlayerDataProxy[] Player, int Turn, List <List <int> > DrawData, List <CardDataProxy>[] DrawCard) { _PlayerObj = GameObject.FindGameObjectsWithTag("Player"); //プレイヤーごとの渡すデータを作成 for (int player = (int)PlayerType.Player1; player < (int)PlayerType.EndPlayer; player++) { //初期化 CardDataProxy InitCard = new CardDataProxy(-1, "", "", -1, -1, -1, -1); FieldDataProxy[,] AllFieldObj; AllFieldObj = new FieldDataProxy[_prm.FieldSize.y, _prm.FieldSize.x]; for (int i = 0; i < _prm.FieldSize.y; i++) { for (int j = 0; j < _prm.FieldSize.x; j++) { AllFieldObj[i, j] = Field[i][j]; } } recvData[player] = new RecvCliantData(AllFieldObj, Player, Turn, DrawData, DrawCard[player]); //ここから処理 //フィールドデータを詰める for (int i = 0; i < _prm.FieldSize.y; i++) { for (int j = 0; j < _prm.FieldSize.x; j++) { if (Field[i][j].Data != null) { Debug.Log(recvData[player].AllFeildData[i, j]._CardData = _FieldObj[i * _prm.FieldSize.y + j].GetComponent <TileData_Maneger>().Field._CardData); //各プレイヤーのrecvDataに対して、フィールドデータを入れている recvData[player].AllFeildData[i, j]._CardData = Field[i][j]._CardData; recvData[player].AllFeildData[i, j]._IsRankUp = Field[i][j]._IsRankUp; recvData[player].AllFeildData[i, j]._MaptipNumber = Field[i][j]._MaptipNumber; recvData[player].AllFeildData[i, j]._PossessionPlayer = Field[i][j]._PossessionPlayer; recvData[player].AllFeildData[i, j]._RankID = Field[i][j]._RankID; } else { print("ないよ"); } } } //プレイヤーデータを詰める for (int i = 0; i < _PlayerObj.Length; i++) { recvData[player].AllPlayerData[i] = Player[i]; } //現在のターン数を詰める recvData[player].NowTurn = Turn; //使ったカードの情報を詰める recvData[player].DrawDataList = DrawData; //ドローカード情報を詰める recvData[player].DrawCardList = DrawCard[player]; } //全プレイヤーの情報を詰める for (int player = (int)PlayerType.Player1; player < (int)PlayerType.EndPlayer; player++) { //クラスを構造体に変換し、構造体配列に代入 sendDataArray[player] = ClassConvertArray(recvData[player]); } //_RecvObj.GetComponent<RecvData>().Recv = recvData; }