Esempio n. 1
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	基底継承:MainMenuSeq:ページ無効化直後に走るイベント
     *          @note	処理中を返す間中はページを次のページが発生せずに処理を続ける
     *          @retval	[ true:処理中 / false:処理完遂 ]
     */
    //----------------------------------------------------------------------------
    public override bool PageSwitchEventDisableAfter(MAINMENU_SEQ eNextMainMenuSeq)
    {
        //---------------------
        // 基底呼出し
        //---------------------
        base.PageSwitchEventDisableAfter(eNextMainMenuSeq);

        //----------------------------------------
        // リソース破棄
        //----------------------------------------
        if (m_CutinLink != null)
        {
            Destroy(m_CutinLink.cutinObj);
            m_CutinLink = null;
        }
        if (m_CutinParts != null)
        {
            for (int i = 0; i < m_CutinParts.Length; i++)
            {
                Destroy(m_CutinParts[i].cutinObj);
                m_CutinParts[i] = null;
            }
            m_CutinParts = null;
        }

        //---------------------
        // オブジェクト破棄
        //---------------------
        if (m_AssetAutoSet != null)
        {
            m_AssetAutoSet.DestroyCharaMesh();
        }

        //---------------------
        // リソース破棄
        //
        // 演出で大量のキャラクターの読み込みが走っているため、
        // 明示的に破棄しないとメモリ不足でハングする危険性がある
        //---------------------
        UnityUtil.ResourceRefresh();

        return(false);
    }
    //----------------------------------------------------------------------------

    /*!
     *  @brief	基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数
     *  @note	ページのレイアウト再構築を兼ねる
     */
    //----------------------------------------------------------------------------
    protected override void PageSwitchSetting(bool initalize)
    {
        base.PageSwitchSetting(initalize);

        //--------------------------------
        // 情報破棄
        //
        // リソースの参照が残ると破棄処理で抜けが生じるので
        // ページを無効にしたタイミングでも破棄するよう対応してる
        //--------------------------------
        //--------------------------------
        // オブジェクト破棄
        //--------------------------------
        if (m_AssetAutoSetBefore != null)
        {
            m_AssetAutoSetBefore.DestroyCharaMesh();
        }
        if (m_AssetAutoSetAfter != null)
        {
            m_AssetAutoSetAfter.DestroyCharaMesh();
        }

        //--------------------------------
        // 進行情報クリア
        //--------------------------------
        m_WorkStep       = STEP_000_START;
        m_WorkStepDelta  = 0;
        m_WorkStepTriger = true;
        m_CharaMeshAnim.ResetAnimation();

        //----------------------------------------
        // パッチ処理を行わないようにする.
        //----------------------------------------
        MainMenuManager.Instance.m_ResumePatchUpdateRequest = false;

        //--------------------------------
        // 進化前後のユニット情報を取得
        //--------------------------------
        PacketStructUnit cEvolUnit     = MainMenuParam.m_EvolveBaseAfter;
        PacketStructUnit cEvolUnitPrev = MainMenuParam.m_EvolveBaseBefore;

        if (cEvolUnit == null ||
            cEvolUnitPrev == null
            )
        {
            Debug.LogError("Evol Unit Error!!");
            //とりあえずホームへ
            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_HOME_MENU, false, false);
            return;
        }

        //--------------------------------
        // 選択されているユニット情報を選定
        //--------------------------------
        uint unCharaMasterDataID     = cEvolUnit.id;        // 進化後
        uint unCharaMasterDataIDPrev = cEvolUnitPrev.id;    // 新化前

        MasterDataParamChara cCharaMasterData     = MasterDataUtil.GetCharaParamFromID(unCharaMasterDataID);
        MasterDataParamChara cCharaMasterDataPrev = MasterDataUtil.GetCharaParamFromID(unCharaMasterDataIDPrev);

        if (cCharaMasterData == null || cCharaMasterDataPrev == null)
        {
            Debug.LogError("SelectUnit MasterData Is None! - " + unCharaMasterDataID);
            return;
        }
        // 表示ユニット情報を設定
        //MainMenuParam.SetCharaDetailParam( cEvolUnit );
        m_UnitNamePanel.setup(cCharaMasterDataPrev);

        // リンクユニット情報取得
        PacketStructUnit cLinkUnit = CharaLinkUtil.GetLinkUnit(cEvolUnit);

        // 表示ユニット情報を設定
        MainMenuParam.SetCharaDetailParam(cEvolUnit, cLinkUnit);

        //----------------------------------------
        // キャラメッシュ生成
        //----------------------------------------
        {
            // 新化前ユニット
            if (m_AssetAutoSetBefore == null)
            {
                m_AssetAutoSetBefore = m_ReferObject[OBJECT_CHARA_MESH_BEFORE].AddComponent <AssetAutoSetCharaMesh>();
                m_AssetAutoSetBefore.m_AssetBundleMeshScaleUp  = true;
                m_AssetAutoSetBefore.m_AssetBundleMeshPosition = true;
            }
            m_AssetAutoSetBefore.SetCharaID(unCharaMasterDataIDPrev, true);
            // 進化後ユニット
            if (m_AssetAutoSetAfter == null)
            {
                m_AssetAutoSetAfter = m_ReferObject[OBJECT_CHARA_MESH_AFTER].AddComponent <AssetAutoSetCharaMesh>();
                m_AssetAutoSetAfter.m_AssetBundleMeshScaleUp  = true;
                m_AssetAutoSetAfter.m_AssetBundleMeshPosition = true;
            }
            m_AssetAutoSetAfter.SetCharaID(unCharaMasterDataID, true);
        }

        {
            TemplateList <uint> cPartsUnitIDList = new TemplateList <uint>();
            for (int i = 0; i < MainMenuParam.m_EvolveParts.m_BufferSize; i++)
            {
                cPartsUnitIDList.Add(MainMenuParam.m_EvolveParts[i].id);
            }

            m_EvolCutinParts = new MainMenuCutin[cPartsUnitIDList.m_BufferSize];
            for (int i = 0; i < cPartsUnitIDList.m_BufferSize; i++)
            {
                m_EvolCutinParts[i] = new MainMenuCutin();
                m_EvolCutinParts[i].Setup(m_ReferObject[OBJECT_CUTIN_PARENT], cPartsUnitIDList[i], MainMenuDefine.CUTIN_OBJ_TYPE_COST);
            }
        }

        //----------------------------------------
        // とりあえず非表示へ
        //----------------------------------------
        m_LayoutWindow.SetLayoutAllDisable();
        m_LayoutEvolve.SetLayoutAllDisable();
        m_LayoutCategory.SetLayoutAllDisable();

        //遷移ボタン非表示
        m_UnitResultButton.IsActiveButton1 = false;
        m_UnitResultButton.IsActiveButton2 = false;
    }
Esempio n. 3
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数
     *          @note	ページのレイアウト再構築を兼ねる
     */
    //----------------------------------------------------------------------------
    protected override void PageSwitchSetting(bool initalize)
    {
        base.PageSwitchSetting(initalize);

        //--------------------------------
        // 情報破棄
        //
        // リソースの参照が残ると破棄処理で抜けが生じるので
        // ページを無効にしたタイミングでも破棄するよう対応してる
        //--------------------------------
        //--------------------------------
        // オブジェクト破棄
        //--------------------------------
        if (m_AssetAutoSet != null)
        {
            m_AssetAutoSet.DestroyCharaMesh();
        }

        //--------------------------------
        // リンク情報クリア
        //--------------------------------
        m_WorkStep       = STEP_000_START;
        m_WorkStepDelta  = 0;
        m_WorkStepTriger = true;


        //--------------------------------
        // Bugweb:5925 関連
        // アチーブメント達成演出をスキップされる可能性を考慮しアチーブメント取得フラグONにしとく。
        //  フラグをONにすることで、次回、ミッション画面に遷移したとき、
        //  ローカルで保持してるアチーブメントマスタのリスト情報を破棄し、新しく一からマスタを取得し直すようになる。
        //--------------------------------
        if (MainMenuParam.m_AchievementListGet == false)
        {
            MainMenuParam.m_AchievementListGet = true;
        }

        //--------------------------------
        // リンク前後の情報を保持しておく
        //--------------------------------
        PacketStructUnit UnitBefore = new PacketStructUnit();   //!< ユニット情報:リンク前
        PacketStructUnit UnitAfter  = new PacketStructUnit();   //!< ユニット情報:リンク後

        UnitBefore.Copy(MainMenuParam.m_LinkBaseBefore);
        UnitAfter.Copy(MainMenuParam.m_LinkBaseAfter);
        MasterDataParamChara m_UnitMasterData = MasterDataUtil.GetCharaParamFromID(UnitAfter.id);       //!< ユニット情報:マスターデータ

        m_UnitNamePanel.setup(m_UnitMasterData);


        UnitBefore.add_hp         = UnitAfter.add_hp;
        UnitBefore.add_pow        = UnitAfter.add_pow;
        UnitBefore.link_unique_id = UnitAfter.link_unique_id;

        //--------------------------------
        // リンク先のユニット情報を取得する
        //--------------------------------
        PacketStructUnit cLinkUnit = CharaLinkUtil.GetLinkUnit(UnitBefore.link_unique_id);

        //----------------------------------------
        // 初期情報としてリンク前のユニット情報を表示
        //----------------------------------------
        // 表示ユニット情報を設定
        MainMenuParam.SetCharaDetailParam(UnitBefore, cLinkUnit);

        //----------------------------------------
        // キャラメッシュ生成
        //----------------------------------------
        if (m_AssetAutoSet == null)
        {
            m_AssetAutoSet = m_ReferObject[OBJECT_CHARA_MESH].AddComponent <AssetAutoSetCharaMesh>();
            m_AssetAutoSet.m_AssetBundleMeshScaleUp  = true;
            m_AssetAutoSet.m_AssetBundleMeshPosition = true;
        }
        m_AssetAutoSet.SetCharaID(m_UnitMasterData.fix_id, true);

        //----------------------------------------
        // カットインオブジェクト生成
        //----------------------------------------
        //--------------------------------
        // リンクユニット
        //--------------------------------
        m_CutinLink = new MainMenuCutin();
        m_CutinLink.Setup(m_ReferObject[OBJECT_CUTIN_PARENT], MainMenuParam.m_LinkUnit.id, MainMenuDefine.CUTIN_OBJ_TYPE_FIX);

        //--------------------------------
        // 素材ユニット
        //--------------------------------
        if (MainMenuParam.m_LinkParts != null &&
            MainMenuParam.m_LinkParts.m_BufferSize > 0)
        {
            m_CutinParts = new MainMenuCutin[MainMenuParam.m_LinkParts.m_BufferSize];
            for (int i = 0; i < MainMenuParam.m_LinkParts.m_BufferSize; i++)
            {
                m_CutinParts[i] = new MainMenuCutin();
                m_CutinParts[i].Setup(m_ReferObject[OBJECT_CUTIN_PARENT], MainMenuParam.m_LinkParts[i].id, MainMenuDefine.CUTIN_OBJ_TYPE_COST);
            }
        }

        //----------------------------------------
        // とりあえず非表示へ
        //----------------------------------------
        m_LayoutCategory.SetLayoutAllDisable();
        m_LayoutWindow.SetLayoutAllDisable();

        //遷移ボタンOFF
        m_UnitResultButton.IsActiveButton1 = false;
        m_UnitResultButton.IsActiveButton2 = false;

        // ロゴ情報
        for (int i = 0; i < m_AnimationShotLogo.Length; i++)
        {
            if (m_AnimationShotLogo[i] == null)
            {
                continue;
            }
            UnityUtil.SetObjectEnabled(m_AnimationShotLogo[i].gameObject, false);
        }
    }