/* public static string pairRegDate { * get{return _player.pairRegDate;} * set{ _player.pairRegDate = value; } * }*/ // P:pri N:PlayerNum Q:weight Nq:pair Nr:match // Score = P + 2NG + (QN+1)(Aq+Bq+Cq)+(QN-1)(Ar+Br+Cr) public static bool getPositionA(bool pairAllowFlg) // Aポジションになる選手をワークに移す { int n = getPlayerCount(); int saveScr = 0; string regDate = ""; var q1 = GameList.Instance.playerList.Where(p => p.lockStat == 0 && p.placeStat == 24); foreach (_Player p in q1) // 全選手で選択可能な選手を対象とする { if (!pairAllowFlg) // PositonBがLockされている場合、Pairの選手は対象から除外する { if (PairManager.getPairRegDate(p.regDate) != null) { continue; } } // score部分計算 P + 2NG int scr = p.idxPriority + 2 * n * (p.game + p.gameAjust); if (scr < saveScr || saveScr == 0) { saveScr = scr; regDate = p.regDate; } } if (posPlayerOfRegDate(regDate)) { return(true); } else { return(false); } }
public static bool getPositionD(string iRegDatePosA, string iRegDatePosB, string iRegDatePosC, bool pairAllowFlg) // Dポジションになる選手をワークに移す { int n = getPlayerCount(); // int priority = 0; // int game = 0; int saveScr = 0; string regDate = ""; var q1 = GameList.Instance.playerList.Where(p => p.lockStat == 0 && p.placeStat == 24 && (p.regDate != iRegDatePosA && p.regDate != iRegDatePosB && p.regDate != iRegDatePosC)); foreach (_Player p in q1) // ABCポジションの選手以外で選択可能な選手を対象とする { if (!pairAllowFlg) // PositonCがLockされている場合、Pairの選手は対象から除外する { if (PairManager.getPairRegDate(p.regDate) != null) { continue; } } // score部分計算 P + 2NG int scr1 = p.idxPriority + 2 * n * (p.game + p.gameAjust); int scr2 = 0; int scr3 = 0; int scr4 = 0; var q2 = GameList.Instance.matchList.Where(ma => ma.youRegDate == iRegDatePosA && ma.myRegDate == p.regDate); foreach (_Match ma in q2) // A と p(A,B,C以外) のpair,match履歴 // score部分計算 (QN+1)(Aq)+(QN-1)(Ar) { scr2 += (SettingManager.weight * n + 1) * (ma.pair + ma.pairAjust) + (SettingManager.weight * n - 1) * (ma.match + ma.matchAjust); } var q3 = GameList.Instance.matchList.Where(mb => mb.youRegDate == iRegDatePosB && mb.myRegDate == p.regDate); foreach (_Match mb in q3) // B と p(A,B,C以外) のpair,match履歴 // score部分計算 (QN+1)(Bq)+(QN-1)(Br) { scr3 += (SettingManager.weight * n + 1) * (mb.pair + mb.pairAjust) + (SettingManager.weight * n - 1) * (mb.match + mb.matchAjust); } var q4 = GameList.Instance.matchList.Where(mc => mc.youRegDate == iRegDatePosC && mc.myRegDate == p.regDate); foreach (_Match mc in q4) // C と p(A,B,C以外) のpair,match履歴 // score部分計算 (QN+1)(Cq)+(QN-1)(Cr) { scr4 += (SettingManager.weight * n + 1) * (mc.pair + mc.pairAjust) + (SettingManager.weight * n - 1) * (mc.match + mc.matchAjust); } int scr = scr1 + scr2 + scr3 + scr4; if (scr < saveScr || saveScr == 0) { saveScr = scr; regDate = p.regDate; } } if (posPlayerOfRegDate(regDate)) { return(true); } else { return(false); } }
void OnLongPressPara(PointerEventData e) { if (flgDrag) { return; } if (!longPressFlg) { if (GameManager.chkLock(myRegDate) == GameManager.LOCK) { longPressFlg = false; return; } else { longPressFlg = true; } playerPos = this.transform.position; Transform pp = this.transform; pp.gameObject.AddComponent <Shadow> (); sd = pp.GetComponent <Shadow> (); sd.effectColor = new Vector4(0f, 0f, 0f, 20f / 255f); sd.effectDistance = new Vector2(20f, -30f); pp.gameObject.AddComponent <Outline> (); ol = pp.GetComponent <Outline> (); ol.effectColor = new Vector4(0f, 0f, 0f, 30f / 255f); ol.effectDistance = new Vector2(3.0f, 3.0f); ol.useGraphicAlpha = true; tfOrignParent = this.transform.parent; this.transform.SetParent(tfPlayPanel); parentPos.x = this.transform.position.x; parentPos.y = this.transform.position.y; posOffset.x = this.transform.position.x - e.position.x; posOffset.y = this.transform.position.y - e.position.y; this.transform.SetAsLastSibling(); // PairがいたらRingを移動のときに消す string myPairRegDate = PairManager.getPairRegDate(myRegDate); if (myPairRegDate != null) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 flgMyPariMk = this.transform.FindChild("Ring").gameObject.activeSelf; // 自分のRing有無を保存 this.transform.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); } } }
void onDoubleTap() { // 待機中、休憩中はLockできない int iPlaceNum = GameManager.getPlayerPlace(myRegDate); if (iPlaceNum != GameManager.PLACE_WAIT && iPlaceNum != GameManager.PLACE_BREAK) { int iCourtNum = GameManager.getCourtOfRegdate(myRegDate); // コートがLockされていたら、選手単位ではLock,unLockはできない if (iCourtNum < SettingManager.courtNum && GameManager.chkCourtLockOfCortnum(iCourtNum) == GameManager.UNLOCK) { if (GameManager.chkLock(myRegDate) == GameManager.LOCK) { this.transform.FindChild("Lock").gameObject.SetActive(false); GameManager.setLock(myRegDate, GameManager.UNLOCK); // Pairも同じようにLock解除する string myPairRegDate = PairManager.getPairRegDate(myRegDate); if (myPairRegDate != null) { GameManager.getTransformOfRegDate(myPairRegDate).FindChild("Lock").gameObject.SetActive(false); GameManager.setLock(myPairRegDate, GameManager.UNLOCK); } viewManager.scriptGameView.loadView(); } else { this.transform.FindChild("Lock").gameObject.SetActive(true); GameManager.setLock(myRegDate, GameManager.LOCK); // Pairも同じようにLockする string myPairRegDate = PairManager.getPairRegDate(myRegDate); if (myPairRegDate != null) { GameManager.getTransformOfRegDate(myPairRegDate).FindChild("Lock").gameObject.SetActive(true); GameManager.setLock(myPairRegDate, GameManager.LOCK); } } } } else { this.transform.FindChild("Lock").gameObject.SetActive(false); GameManager.setLock(myRegDate, GameManager.UNLOCK); } GameManager.Save(); }
public static bool getPositionB(string iRegDatePosA, bool pairAllowFlg) // Bポジションになる選手をワークに移す { int n = getPlayerCount(); // int priority = 0; // int game = 0; int saveScr = 0; string regDate = ""; var q1 = GameList.Instance.playerList.Where(p => p.lockStat == 0 && p.placeStat == 24 && (p.regDate != iRegDatePosA)); foreach (_Player p in q1) // Aポジションの選手以外で選択可能な選手を対象とする { if (!pairAllowFlg) // PositonAがLockされている場合、Pairの選手は対象から除外する { if (PairManager.getPairRegDate(p.regDate) != null) { continue; } } // score部分計算 P + 2NG int scr1 = p.idxPriority + 2 * n * (p.game + p.gameAjust); int scr2 = 0; var q2 = GameList.Instance.matchList.Where(m => m.youRegDate == iRegDatePosA && m.myRegDate == p.regDate); foreach (_Match m in q2) { // score部分計算 (QN+1)(Aq)+(QN-1)(Ar) // scr2 += (SettingManager.weight * n + 1) * m.pair + (SettingManager.weight * n - 1) * m.match; scr2 += (SettingManager.weight * n + 1) * (m.pair + m.pairAjust) + (SettingManager.weight * n - 1) * (m.match + m.matchAjust); } int scr = scr1 + scr2; if (scr < saveScr || saveScr == 0) { saveScr = scr; regDate = p.regDate; } } if (posPlayerOfRegDate(regDate)) { return(true); } else { return(false); } }
public void loadView() { Transform pt; if (PairManager.tempCurrentLR == PairManager.INIT) // ファイルからリスト作成 // リスト全削除 { int pfCnt = tPfbParent.childCount; for (int i = 0; i < pfCnt; i++) { DestroyImmediate(tPfbParent.Find("Pair").gameObject); } // 選択リスト作成 PairManager.Load(); // load pareFile int cntPareCnt = PairManager.getPairCount(); for (int i = 0; i < cntPareCnt; i++) { pt = Instantiate(pfbMember).transform; // prefabは1つに左右メンバーが対となっている pt.name = pfbMember.name; pt.SetParent(tPfbParent, false); PairManager.posPair(i); // 左側メンバー pt.transform.Find("ImgPairBase/LeftMember/MemberName").GetComponent <Text>().text = PairManager.pairNameKnji_familyL + " " + PairManager.pairNameKnji_firstL; Image imgListBack; imgListBack = pt.transform.Find("ImgPairBase/LeftMember/ImgMember").GetComponent <Image>(); if (PairManager.pairGenderL == 0) { imgListBack.color = Colors.male; } else { imgListBack.color = Colors.female; } imgListBack.GetComponent <PairMember> ().myRegDate = PairManager.pairRegDateL; // ScriptにRegDateを代入設定 if (GameManager.chkLock(PairManager.pairRegDateL) == GameManager.LOCK) { pt.transform.Find("ImgPairBase/LeftMember/ImgLock").gameObject.SetActive(true); } else { pt.transform.Find("ImgPairBase/LeftMember/ImgLock").gameObject.SetActive(false); } // 右側メンバー pt.transform.Find("ImgPairBase/RightMember/MemberName").GetComponent <Text> ().text = PairManager.pairNameKnji_familyR + " " + PairManager.pairNameKnji_firstR; imgListBack = pt.transform.Find("ImgPairBase/RightMember/ImgMember").GetComponent <Image>(); if (PairManager.pairGenderR == 0) { imgListBack.color = Colors.male; } else { imgListBack.color = Colors.female; } imgListBack.GetComponent <PairMember> ().myRegDate = PairManager.pairRegDateR; // ScriptにRegDateを代入設定 if (GameManager.chkLock(PairManager.pairRegDateR) == GameManager.LOCK) { pt.transform.Find("ImgPairBase/RightMember/ImgLock").gameObject.SetActive(true); } else { pt.transform.Find("ImgPairBase/RightMember/ImgLock").gameObject.SetActive(false); } } pt = Instantiate(pfbMember).transform; pt.name = pfbMember.name; pt.SetParent(tPfbParent, false); PairManager.newPair(); PairManager.addPair(); } else // PareSelectView からデータを渡された場合 { if (PairManager.tempSelectMyDate == "NULL") { return; } MemberManager.posMemberOfRegDate(PairManager.tempSelectMyDate); PairManager.posPair(PairManager.tempCurrentRow); // PairManagerの空白状態を調べる(空白bit) 0:空白なし 10:左空白 1:右空白 11:両方空白 int enptyAreaBit = 0; if (PairManager.pairRegDateL == null) { enptyAreaBit += 10; } if (PairManager.pairRegDateR == null) { enptyAreaBit++; } // PairManagerの空白が埋まるのか調べる(空白bit) 99:newLine(空白なし) 10:左空白 1:右空白 // bool flgNewLine = false; if (PairManager.tempCurrentLR == PairManager.LEFT) { switch (enptyAreaBit) { case 10: enptyAreaBit = 99; break; case 11: enptyAreaBit = 1; break; default: break; } } if (PairManager.tempCurrentLR == PairManager.RIGHT) { switch (enptyAreaBit) { case 1: enptyAreaBit = 99; break; case 11: enptyAreaBit = 10; break; default: break; } } // 空白なし上書きの場合は前処理として更新前のPairManagerを使ってMemberManagerのpare情報を削除 // MemberManagerのpare情報は 'pairが完成したときのみ' 付加されている if (enptyAreaBit == 0) { MemberManager.clearPairMemberOfRegDate(PairManager.getPairRegDate(PairManager.pairRegDateL)); MemberManager.clearPairMemberOfRegDate(PairManager.getPairRegDate(PairManager.pairRegDateR)); } if (PairManager.tempCurrentLR == PairManager.LEFT) { PairManager.pairNameKnji_familyL = MemberManager.nameKaji_family; PairManager.pairNameKnji_firstL = MemberManager.nameKaji_first; PairManager.pairGenderL = MemberManager.gender; PairManager.pairRegDateL = MemberManager.regDate; tPfbParent.GetChild(PairManager.tempCurrentRow).Find("ImgPairBase/LeftMember/MemberName").GetComponent <Text> ().text = MemberManager.nameKaji_family + " " + MemberManager.nameKaji_first; tPfbParent.GetChild(PairManager.tempCurrentRow).Find("ImgPairBase/LeftMember/ImgMember").GetComponent <Image> ().color = MemberManager.gender == 0 ? Colors.male : Colors.female; } else { PairManager.pairNameKnji_familyR = MemberManager.nameKaji_family; PairManager.pairNameKnji_firstR = MemberManager.nameKaji_first; PairManager.pairGenderR = MemberManager.gender; PairManager.pairRegDateR = MemberManager.regDate; tPfbParent.GetChild(PairManager.tempCurrentRow).Find("ImgPairBase/RightMember/MemberName").GetComponent <Text>().text = MemberManager.nameKaji_family + " " + MemberManager.nameKaji_first; tPfbParent.GetChild(PairManager.tempCurrentRow).Find("ImgPairBase/RightMember/ImgMember").GetComponent <Image>().color = MemberManager.gender == 0 ? Colors.male : Colors.female; } if (enptyAreaBit == 99) { // 今回埋まったので行追加の場合、MemberManagerにpair情報を付加 pt = Instantiate(pfbMember).transform; pt.name = pfbMember.name; pt.SetParent(tPfbParent, false); MemberManager.updatePairMember(PairManager.pairRegDateL, PairManager.pairRegDateR); MemberManager.updatePairMember(PairManager.pairRegDateR, PairManager.pairRegDateL); PairManager.inserNewtPair(); } if (enptyAreaBit == 0) { // 空白なし上書きの場合、MemberManagerにpair情報を付加 MemberManager.updatePairMember(PairManager.pairRegDateL, PairManager.pairRegDateR); MemberManager.updatePairMember(PairManager.pairRegDateR, PairManager.pairRegDateL); PairManager.updatePair(PairManager.tempCurrentRow); } else { // 両方または片方が空白の場合 PairManager.updatePair(PairManager.tempCurrentRow); } } PairManager.tempSelectMyDate = "NULL"; PairManager.tempCurrentRow = 0; PairManager.tempCurrentLR = 0; }
public void OnEndDrag(PointerEventData e) { flgDrag = false; Object.Destroy(sd); sd = null; Object.Destroy(ol); ol = null; int pageoffset = 0; if (minReceiveParentNum > 23) { pageoffset = 0; } else { pageoffset = GameManager.currentPage; // 何ページ目かを計算する page0:0~7 page1:8~15 page2:16~23 } // Debug.Log (" position num on page min[" + minReceiveParentNum +"] + ["+ pageoffset * -8+"]"); GameManager.posPlayerOfRegDate(myRegDate); float dis; dis = Vector3.Distance(receiveParentPosition[minReceiveParentNum], playerPos); bool existChild = true; if (receiveParentTransform [minReceiveParentNum + pageoffset * -8].childCount == 0 || minReceiveParentNum == 24 || minReceiveParentNum == 25) { existChild = false; // 指定枠に選手はいないので配置できる } bool enptyPairPsition = false; string myPairRegDate = PairManager.getPairRegDate(myRegDate); int iPairPositionOffset = 0; if (myPairRegDate != null) { if (minReceiveParentNum == GameManager.PLACE_WAIT || minReceiveParentNum == GameManager.PLACE_BREAK) { enptyPairPsition = true; // 自分はPair設定されていているが、待機中または休憩中への移動 } else { iPairPositionOffset = minReceiveParentNum % SettingManager.form == 0 ? 1 : -1; // 自分の位置からPairの位置のOffsetを計算 if (GameManager.getPlaceOfPlayer(minReceiveParentNum + iPairPositionOffset) == null) { enptyPairPsition = true; // 自分はPair設定されており、Pair枠に選手はいない } } } else { enptyPairPsition = true; // 自分はPair設定されていていない } bool courtLock = false; if (minReceiveParentNum != GameManager.PLACE_WAIT && minReceiveParentNum != GameManager.PLACE_BREAK) // 待機中、休憩中以外 { int iCourtStat = GameManager.chkCourtLockOfPosition(minReceiveParentNum + pageoffset * -8); if (iCourtStat == GameManager.LOCK || iCourtStat == -1) { courtLock = true; // Lockされているコートには配置できない } } if (dis < limtDistance && !existChild && enptyPairPsition && !courtLock) { this.transform.parent.SetParent(receiveParentTransform[minReceiveParentNum + pageoffset * -8]); this.transform.parent.position = receiveParentPosition[minReceiveParentNum]; GameManager.placeStat = minReceiveParentNum + pageoffset * -8; if (myPairRegDate != null) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 if (minReceiveParentNum == GameManager.PLACE_WAIT || minReceiveParentNum == GameManager.PLACE_BREAK) { iPairPositionOffset = 0; } GameManager.trsPlayer.SetParent(receiveParentTransform[minReceiveParentNum + pageoffset * -8 + iPairPositionOffset]); GameManager.trsPlayer.position = receiveParentPosition[minReceiveParentNum + iPairPositionOffset]; GameManager.placeStat = minReceiveParentNum + pageoffset * -8 + iPairPositionOffset; //Ring if (iPairPositionOffset == 0) // 0 のときは待機中か休憩中への移動 { this.transform.parent.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.SetAsLastSibling(); } else if (iPairPositionOffset == 1) { this.transform.parent.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); } else { this.transform.parent.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); } } } else { this.transform.parent.SetParent(tfOrignParent); this.transform.parent.position = tfOrignParent.position; if (myPairRegDate != null) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 int iOriginPlace = GameManager.getPlayerPlace(myPairRegDate); if (iOriginPlace == GameManager.PLACE_WAIT || iOriginPlace == GameManager.PLACE_BREAK) { this.transform.parent.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.SetAsLastSibling(); } } } scriptGameView.loadView(); // Debug.Log ("["+minReceiveParentNum+"] Minname - > " + receiveParentTransform[minReceiveParentNum].name +" "+dis); }
private bool calcMatch() // 対戦を計算し、次の組合せエリアに表示 コート許容人数に満たない場合は、false を返す { Transform trsMem1 = this.transform.FindChild("ActiveMemberListPanel/Work/CourtBase/MemberSet/imgMember1"); Transform trsMem2 = this.transform.FindChild("ActiveMemberListPanel/Work/CourtBase/MemberSet/imgMember2"); Transform trsMem3 = this.transform.FindChild("ActiveMemberListPanel/Work/CourtBase/MemberSet/imgMember3"); Transform trsMem4 = this.transform.FindChild("ActiveMemberListPanel/Work/CourtBase/MemberSet/imgMember4"); // 人数不足に備えて計算前に選手を非表示 trsMem1.gameObject.SetActive(false); trsMem2.gameObject.SetActive(false); trsMem3.gameObject.SetActive(false); trsMem4.gameObject.SetActive(false); trsMem1.FindChild("imgPair").GetComponent <Image>().gameObject.SetActive(false); trsMem2.FindChild("imgPair").GetComponent <Image>().gameObject.SetActive(false); trsMem3.FindChild("imgPair").GetComponent <Image>().gameObject.SetActive(false); trsMem4.FindChild("imgPair").GetComponent <Image>().gameObject.SetActive(false); int waitPNum = GameManager.getWaitPlayerCount(); // 待機中の人数 int iPos = 0; if (SettingManager.form == 2) // Doublesの場合 { if (waitPNum == iPos++) { return(false); // 計算対象の待機中選手がいないなら終わり } else { trsMem1.gameObject.SetActive(true); } string sPairRegDate = null; // AポジションとBポジションを決定 GameManager.getPositionA(true); string PosARegDate = GameManager.regDate; dispPlayer(PosARegDate, trsMem1, false, false); string PosBRegDate = PairManager.getPairRegDate(PosARegDate); // Aポジション選手のPair選手を一時保存 if (waitPNum == iPos++) { return(false); // 計算対象の待機中選手がいないなら終わり } else { trsMem2.gameObject.SetActive(true); } if (PosBRegDate != null) { dispPlayer(PosARegDate, trsMem1, true, false); dispPlayer(PosBRegDate, trsMem2, true, true); } else { GameManager.getPositionB(PosARegDate, true); PosBRegDate = GameManager.regDate; sPairRegDate = PairManager.getPairRegDate(PosBRegDate); if (sPairRegDate != null) // Bポジション選手にPairがいたら、AポジションにPair選手を配置 { PosARegDate = sPairRegDate; dispPlayer(PosARegDate, trsMem1, true, false); dispPlayer(PosBRegDate, trsMem2, true, true); } else { dispPlayer(PosBRegDate, trsMem2, false, false); } } if (waitPNum == iPos++) { return(false); // 計算対象の待機中選手がいないなら終わり } else { trsMem3.gameObject.SetActive(true); } // CポジションとDポジションを決定 (待機中リストの3番目と4番目) GameManager.getPositionC(PosARegDate, PosBRegDate, true); string PosCRegDate = GameManager.regDate; dispPlayer(PosCRegDate, trsMem3, false, false); string PosDRegDate = PairManager.getPairRegDate(PosCRegDate); // Dポジション選手のPair選手を一時保存 if (waitPNum == iPos++) { return(false); // 計算対象の待機中選手がいないなら終わり } else { trsMem4.gameObject.SetActive(true); } if (PosDRegDate != null) { dispPlayer(PosCRegDate, trsMem3, true, false); dispPlayer(PosDRegDate, trsMem4, true, true); } else { GameManager.getPositionD(PosARegDate, PosBRegDate, PosCRegDate, true); PosDRegDate = GameManager.regDate; sPairRegDate = PairManager.getPairRegDate(PosDRegDate); if (sPairRegDate != null) // Bポジション選手にPairがいたら、AポジションにPair選手を配置 { PosCRegDate = sPairRegDate; dispPlayer(PosCRegDate, trsMem3, true, false); dispPlayer(PosDRegDate, trsMem4, true, true); } else { dispPlayer(PosDRegDate, trsMem4, false, false); } } } else { // シングルスの場合 } return(true); }
public void OnEndDrag(PointerEventData e) { flgDrag = false; if (longPressFlg) { Object.Destroy(sd); sd = null; Object.Destroy(ol); ol = null; int pageoffset = 0; // 0:1page -1:2page -2:3page int MAXPLAYEROFPAGE = 8; if (minReceiveParentNum > 23) { pageoffset = 0; } else { pageoffset = GameManager.currentPage * (-1); // 何ページ目かを計算する page0:0~7 page1:8~15 page2:16~23 } // Debug.Log (" position num on page min[" + minReceiveParentNum +"] + ["+ pageoffset * -8+"] pageoffst:" + pageoffset); /// 各種移動前に可能か判定 GameManager.posPlayerOfRegDate(myRegDate); // 最小となる移動先までの距離 (離れすぎていると移動しないように) float dis; dis = Vector3.Distance(receiveParentPosition [minReceiveParentNum], playerPos); // 入れ替え用変更 // pairの有無 (pairがいる場合は、ダブルスであることが保証されていること) bool toWaitBreak = false; bool courtLock = false; bool flgYouPair = false; int YouLock = GameManager.UNLOCK; int YouPairLock = GameManager.UNLOCK; string youRegDate = null; string youPairRegDate = null; int youPosNum; int iYouPairPositionOffset = 0; bool flgMyPair = false; int myPairLock = GameManager.UNLOCK; string myPairRegDate; int myPosNum; int iMyPairPositionOffset = 0; // 自選手とpair位置にいる選手の存在有無と、pair判定、2人のLockの状況 myPosNum = GameManager.getPlayerPlace(myRegDate); myPairRegDate = PairManager.getPairRegDate(myRegDate); if (myPairRegDate != null) { flgMyPair = true; } else { flgMyPair = false; } if (myPosNum != GameManager.PLACE_WAIT && myPosNum != GameManager.PLACE_BREAK) // 自分は待機、休憩中ではない コートでのpair位置にいる選手 { iMyPairPositionOffset = myPosNum % SettingManager.form == 0 ? 1 : -1; // 自分の位置からPairの位置のOffset 上枠にpair 1:下枠にpair myPairRegDate = GameManager.getPlaceOfPlayer(myPosNum + iMyPairPositionOffset); myPairLock = GameManager.chkLock(myPairRegDate); } // 移動先の選手とpair位置にいる選手の存在有無と、pair判定、2人のLockの状況 if (minReceiveParentNum != GameManager.PLACE_WAIT && minReceiveParentNum != GameManager.PLACE_BREAK) { toWaitBreak = false; // 移動先にいる選手とpair位置にいる選手の存在有無と、pair判定、2人のLockの状況 youPosNum = minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE; iYouPairPositionOffset = youPosNum % SettingManager.form == 0 ? 1 : -1; // 相手の位置からPairの位置のOffset -1:上枠にpair 1:下枠にpair youRegDate = GameManager.getPlaceOfPlayer(youPosNum); if (youRegDate != null) // 移動先に選手がいる { YouLock = GameManager.chkLock(youRegDate); youPairRegDate = PairManager.getPairRegDate(youRegDate); if (youPairRegDate != null) // 相手にpairがいる { flgYouPair = true; YouPairLock = YouLock; } else // 相手にpairがいない { flgYouPair = false; youPairRegDate = GameManager.getPlaceOfPlayer(youPosNum + iYouPairPositionOffset); if (youPairRegDate != null) // 相手にpairはいないが選手がいる { YouPairLock = GameManager.chkLock(youPairRegDate); } } } else // 移動先に選手がいない { flgYouPair = false; youPairRegDate = GameManager.getPlaceOfPlayer(youPosNum + iYouPairPositionOffset); if (youPairRegDate != null) // 移動先に選手がいないがpair枠に選手がいる { YouPairLock = GameManager.chkLock(youPairRegDate); } } // Lockされているコートには配置できない int iCourtStat = GameManager.chkCourtLockOfPosition(minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE); if (iCourtStat == GameManager.LOCK || iCourtStat == -1) { courtLock = true; } // 自分がPairのとき、移動先とPair枠の選手のLock状態を判定して、どちらかでもLockされているなら移動できない if (flgMyPair) { if (YouLock == GameManager.LOCK || YouPairLock == GameManager.LOCK) { courtLock = true; } } else { if (YouLock == GameManager.LOCK) { courtLock = true; } } if (flgYouPair) { if (myPairLock == GameManager.LOCK) { courtLock = true; } } } else { // 移動先が休憩中か待機中 (無条件で移動できる) toWaitBreak = true; } // 選手の移動 if (dis < limtDistance && !courtLock) // 必ず移動できることが保証されていること { if (toWaitBreak) // 待機中と休憩中へは無条件で移動 minReceiveParentNum=24,25 { this.transform.SetParent(receiveParentTransform[minReceiveParentNum]); this.transform.position = receiveParentPosition[minReceiveParentNum]; GameManager.placeStat = minReceiveParentNum; if (flgMyPair) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 GameManager.trsPlayer.SetParent(receiveParentTransform[minReceiveParentNum]); GameManager.trsPlayer.position = receiveParentPosition[minReceiveParentNum]; GameManager.placeStat = minReceiveParentNum; //Ring this.transform.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.SetAsLastSibling(); } } else { // 自分達の移動 this.transform.SetParent(receiveParentTransform[minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE]); this.transform.position = receiveParentPosition[minReceiveParentNum]; GameManager.placeStat = minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE; if (flgMyPair || flgYouPair) { if (myPairRegDate != null) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 GameManager.trsPlayer.SetParent(receiveParentTransform[minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE + iYouPairPositionOffset]); GameManager.trsPlayer.position = receiveParentPosition[minReceiveParentNum + iYouPairPositionOffset]; GameManager.placeStat = minReceiveParentNum + pageoffset * MAXPLAYEROFPAGE + iYouPairPositionOffset; } //Ring if (flgMyPair && iYouPairPositionOffset == 1) { this.transform.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); } else if (flgMyPair && iYouPairPositionOffset == -1) { this.transform.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); } } // 相手達の移動 if (youRegDate != null) { GameManager.posPlayerOfRegDate(youRegDate); //相手選手のワーク移動 GameManager.trsPlayer.SetParent(receiveParentTransform[myPosNum]); GameManager.trsPlayer.position = receiveParentPosition[myPosNum - pageoffset * MAXPLAYEROFPAGE]; GameManager.placeStat = myPosNum; } if (flgMyPair || flgYouPair) { if (youPairRegDate != null) { GameManager.posPlayerOfRegDate(youPairRegDate); //相手Pairのワーク移動 GameManager.trsPlayer.SetParent(receiveParentTransform[myPosNum + iMyPairPositionOffset]); GameManager.trsPlayer.position = receiveParentPosition[myPosNum - pageoffset * MAXPLAYEROFPAGE + iMyPairPositionOffset]; GameManager.placeStat = myPosNum + iMyPairPositionOffset; } //Ring if (flgYouPair && (myPosNum == GameManager.PLACE_WAIT || myPosNum == GameManager.PLACE_BREAK)) //相手選手を待機中、休憩中への移動 { GameManager.posPlayerOfRegDate(youRegDate); //相手選手のワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); GameManager.posPlayerOfRegDate(youPairRegDate); //相手Pairのワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.SetAsLastSibling(); } else if (flgYouPair && iMyPairPositionOffset == 1) { GameManager.posPlayerOfRegDate(youRegDate); //相手選手のワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); GameManager.posPlayerOfRegDate(youPairRegDate); //相手Pairのワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); } else if (flgYouPair && iMyPairPositionOffset == -1) { GameManager.posPlayerOfRegDate(youRegDate); //相手選手のワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.posPlayerOfRegDate(youPairRegDate); //相手Pairのワーク移動 GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(false); } } } } else // 移動できない { this.transform.SetParent(tfOrignParent); this.transform.position = tfOrignParent.position; if (flgMyPair) { GameManager.posPlayerOfRegDate(myPairRegDate); //Pairのワーク移動 int iOriginPlace = GameManager.getPlayerPlace(myPairRegDate); if (iOriginPlace == GameManager.PLACE_WAIT || iOriginPlace == GameManager.PLACE_BREAK) { this.transform.FindChild("Ring").gameObject.SetActive(false); GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); GameManager.trsPlayer.SetAsLastSibling(); } else { if (flgMyPariMk) { this.transform.FindChild("Ring").gameObject.SetActive(true); } else { GameManager.trsPlayer.FindChild("Ring").gameObject.SetActive(true); } } } } rcvParentTfmWait.vertical = true; // scrollRsctの再開 rcvParentTfmBreak.vertical = true; // scrollRsctの再開 longPressFlg = false; rcvParentTfmWait.verticalNormalizedPosition = 1; rcvParentTfmBreak.verticalNormalizedPosition = 1; scriptGameView.loadView(); } int iPlaceNum = GameManager.getPlayerPlace(myRegDate); if (iPlaceNum == GameManager.PLACE_WAIT) { transform.DoParentEventSystemHandler <IBeginDragHandler> ((parent) => { rcvParentTfmWait.OnEndDrag(e); }); } else if (iPlaceNum == GameManager.PLACE_BREAK) { transform.DoParentEventSystemHandler <IBeginDragHandler> ((parent) => { rcvParentTfmBreak.OnEndDrag(e); }); } else { transform.DoParentEventSystemHandler <IBeginDragHandler>((parent) => { pageScrollRect.OnEndDrag(e); }); } eventLP.enableLongPress = true; }