Exemple #1
0
    //ゲームの入力をする
    bool InputAct()
    {
        if (ms == null)
        {
            return(false);
        }
        if (ms.game_script == null)
        {
            return(false);
        }
        if (ms.game_script.areStateReroad == null)
        {
            return(false);
        }
        if (ms.game_script.areStateReroad.Count <= handle)
        {
            return(false);
        }

        if (ms.game_script.areStateReroad[handle])
        {
            ms.game_script.areStateReroad[handle] = false;

            //状況を更新する
            yh.CardSet(ms.game_script.GetHand(handle));
            oh.SetNum(ms.game_script.GetHand(opponent).Count);
            mf.CardSet(ms.game_script.RefrectField(handle));
            of.CardSet(ms.game_script.RefrectField(opponent));
            sf.CardSet(ms.game_script.RefrectStack());
            mc.SetCard(ms.game_script.RefrectCharacter(handle));
            oc.SetCard(ms.game_script.RefrectCharacter(opponent));

            log.ReroadLog(ms.game_script.GetLog(handle));

            ForbidSubmit();


            switch ((GameScript.Request)ms.game_script.requests[handle][0])
            {
            //リクエストがないとき
            case GameScript.Request.none: {
                yh.isAbleSubmit = false;
                for (int i = 0; i < yh.castables.Count; ++i)
                {
                    yh.castables[i] = false;
                }
                isAbleToPlay     = false;
                isAbleToActivate = false;
                isAbleToPass     = false;
            }
            break;

            //メインフェイズの行動
            case GameScript.Request.main: {
                Debug.Log("ClientSystem main");

                //キャストを許可する
                yh.isAbleSubmit = true;
                yh.castables    = ms.game_script.GetCastableCardAddress(handle);

                //プレイを許可する
                isAbleToPlay = true;

                //起動型能力の起動を許可する
                isAbleToActivate = true;

                //パスの許可
                isAbleToPass = true;
            }
            break;

            //トランスフェイズの行動
            case GameScript.Request.trance: {
                Debug.Log("ClientSystem trance");

                //手札からの提出を許可
                yh.isAbleSubmit = true;
                var a = new List <bool>();
                var s = ms.game_script.GetHand(handle).Count;
                for (int i = 0; i < s; ++i)
                {
                    a.Add(true);
                }
                yh.castables = a;

                if (mc.card.mana >= 1 && mc.card.manaCapacity >= 1)
                {
                    //ブックマークの選択を許可
                    isChooseZone[(int)GameScript.RequestCard.your_bookmark] = true;
                    sv.isAbleToSubmit = true;
                    sv.CardSet(ms.game_script.RefrectYourBookmark(handle));
                }
                else
                {
                    //ブックマークの選択を禁止
                    isChooseZone[(int)GameScript.RequestCard.your_bookmark] = false;
                    sv.isAbleToSubmit = false;
                }

                //トランスフェイズ用起動型能力の起動を許可
                isAbleToActivateTranceDraw = true;

                //パスの許可
                isAbleToPass = true;
            }
            break;

            //特定のカードを選んで欲しいとき
            case GameScript.Request.card: {
                var s = ms.game_script.requests[handle]
                        .GetRange(1, ms.game_script.requests[handle].Count - 1);


                for (int i = 0; i < s.Count; ++i)
                {
                    switch ((GameScript.RequestCard)s[i])
                    {
                    case GameScript.RequestCard.your_bookmark: {
                        isChooseZone[(int)GameScript.RequestCard.your_bookmark] = true;
                        isSubViewBookmark = true;
                        sv.isAbleToSubmit = true;
                        sv.CardSet(ms.game_script.RefrectYourBookmark(handle));
                    } break;

                    default: break;
                    }
                }
            } break;
            }
        }

        //常に更新される
        switch ((GameScript.Request)ms.game_script.requests[handle][0])
        {
        case GameScript.Request.none: { } break;

        case GameScript.Request.main: { ActMain(); } break;

        case GameScript.Request.trance: { ActTrance(); } break;

        case GameScript.Request.card: { ActCard(); } break;

        case GameScript.Request.yesno: { } break;
        }

        return(false);
    }