Exemplo n.º 1
0
/*	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);
        }
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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);
            }
        }
    }
Exemplo n.º 4
0
    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();
    }
Exemplo n.º 5
0
    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);
        }
    }
Exemplo n.º 6
0
    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;
    }
Exemplo n.º 7
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);
    }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 9
0
    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;
    }