/*
     * ================================================
     * ゲームメインループ
     * ================================================
     */
    IEnumerator MainLoop()
    {
        /* 初期化処理 */
        yield return(Init()); // セーブデータの読み込みにウェイトを挟む

        /* メインループ */
        editPartyStatus    = EDIT_PARTY_STATUS._CHANGE_CHARACTER;
        editPartyStatus    = EDIT_PARTY_STATUS._PARTY_SELECT;
        changeCharaPartyId = -1;
        while (true)
        {
            switch (editPartyStatus)
            {
            // 編集するパーティの選択
            case EDIT_PARTY_STATUS._PARTY_SELECT:
                yield return(DecideEditParty.Loop(saveData.GetSaveParty()));

                editPartyId     = DecideEditParty.editPartyId;
                editPartyStatus = DecideEditParty.editPartyStatus;
                break;

            // 編成対象となるキャラクターの選択
            case EDIT_PARTY_STATUS._CHANGE_CHARACTER:
                SetEditParty();     // editPartyId に応じて、パーティ情報を格納
                yield return(DecideChangeCharacter.Loop(editParty));

                changeCharaPartyId = DecideChangeCharacter.changeCharaPartyId;
                editPartyStatus    = DecideChangeCharacter.editPartyStatus;
                break;

            // 誰を加入させるか選択
            case EDIT_PARTY_STATUS._JOIN_CHARACTER:
                yield return(DecideJoinCharacter.Loop(saveData.GetObtainChara()));

                joinCharaId     = DecideJoinCharacter.joinCharaId;
                editPartyStatus = DecideJoinCharacter.editPartyStatus;
                break;

            // 実際の入れ替え処理
            case EDIT_PARTY_STATUS._DECIDED_JOIN_CHARACTER:
                ChangeMember();
                SaveParty();
                editPartyStatus = EDIT_PARTY_STATUS._CHANGE_CHARACTER;
                break;

            case EDIT_PARTY_STATUS._END:
                yield return(Utility._Scene.MoveScene("Base", "Images\\Background\\Black", 90));

                break;

            default:
                break;
            }
            // フリーズを防止
            yield return(0);
        }
    }
Beispiel #2
0
    /* ガチャを回す */
    IEnumerator PlayGacha()
    {
        /* 引くキャラのID */
        getCharaResultId = Random.Range(1, Variables.Unit.Num + 1);

        /* データを持ってくる */
        /* ( 一部ロード ⇒ 全体ロード&部品読み込みにすべき) */
        string charaStand = CharacterStatus.LoadPlayerCharacterStringStatus(
            getCharaResultId, _ST._standGraphicPath);
        string description = CharacterStatus.LoadPlayerCharacterStringStatus(
            getCharaResultId, _ST._description);

        /* リザルトオブジェクト */
        // :透明のボタン
        resultObj = Utility._Object.MyGenerateImage(
            Variables.Gacha.BackgroundPath,
            canvas,
            new Vector2(1280, 960));
        resultObj.name = "ResultEnd";
        resultObj.GetComponent <Image>().color = new Color(0, 0, 0, 0);
        Button bt = resultObj.AddComponent <Button>();

        bt.onClick.AddListener(() => this.onClick(resultObj));
        // :キャラ画像(親子関係を持たせると被せてもクリック可能)
        GameObject charaObj = Utility._Object.MyGenerateImage(
            charaStand,
            resultObj,
            new Vector2(360, 720));

        charaObj.GetComponent <Image>().color = Color.white;
        // :説明文
        GameObject textObj = Utility._Object.MyInstantiate(
            "Prefabs\\Gacha\\GachaText",
            resultObj,
            new Vector2(0, -200));

        textObj.GetComponent <Text>().text = description.ToString();

        /* 実際の入手処理 */
        saveData.GetObtainChara().isObtainChara[getCharaResultId] = true;

        yield return(0);
    }