Ejemplo n.º 1
0
    //------------------------------------------------------------------------

    /*!
     *          @brief		カレントIDを次に表示するアイコンIDに更新
     *          @param[in]	bool[]		(array)		ステータス配列
     */
    //------------------------------------------------------------------------
    private void updateAilment()
    {
        for (int idx = 0; idx < m_Turns.Length; idx++)
        {
            m_Turns[idx] = -1;
        }

        if (m_AilmentChara != null)
        {
            for (int idx = 0; idx < m_AilmentChara.GetAilmentCount(); idx++)
            {
                StatusAilment ailment = m_AilmentChara.GetAilment(idx);
                if (ailment != null)
                {
                    Sprite sprite = getSprite(ailment.nType);
                    if (sprite != null)
                    {
                        for (int spr_idx = 0; spr_idx < m_Sprites.Length; spr_idx++)
                        {
                            if (sprite == m_Sprites[spr_idx])
                            {
                                if (ailment.nLife > m_Turns[spr_idx])
                                {
                                    m_Turns[spr_idx] = ailment.nLife;
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }

        int next_index = (m_SpriteIndex + 1) % m_Sprites.Length;

        while (next_index != m_SpriteIndex)
        {
            if (m_Turns[next_index] >= 0)
            {
                m_SpriteIndex = next_index;
                break;
            }

            next_index = (next_index + 1) % m_Sprites.Length;
        }
    }
Ejemplo n.º 2
0
    public void setupCharaAilmentInfo(StatusAilmentChara ailmentChara)
    {
        AddAilmentInfo(GameTextUtil.GetText("battle_infotext1"), -1);
        int count = 1;

        for (int num = 0; num < (int)MasterDataDefineLabel.AilmentType.MAX; ++num)
        {
            if (ailmentChara.IsHavingAilment((MasterDataDefineLabel.AilmentType)num) == false)
            {
                continue;
            }

            int    turn   = 0;
            string detail = "";
            // 残りターン数を取得
            for (int n = 0; n < ailmentChara.GetAilmentCount(); ++n)
            {
                StatusAilment status_ailment = ailmentChara.GetAilment(n);
                if (status_ailment == null)
                {
                    continue;
                }

                MasterDataDefineLabel.AilmentType type = status_ailment.nType;
                if (type != (MasterDataDefineLabel.AilmentType)num)
                {
                    continue;
                }

                turn = status_ailment.nLife;
                MasterDataStatusAilmentParam master = MasterDataUtil.GetMasterDataStatusAilmentParam(status_ailment.nMasterDataStatusAilmentID);
                detail = master.detail;
                if (detail == "")
                {
                    detail = master.name;
                }
                break;
            }
            AddAilmentInfo(detail, turn);
            ++count;
        }
        if (count == 1)
        {
            AddAilmentInfo("-", -1);
        }
    }
Ejemplo n.º 3
0
    //------------------------------------------------------------------------

    /*!
     *  @brief		状態異常アイコンの設定
     *  @param[in]	BattleEnemy	(enemy)		対象の敵
     */
    //------------------------------------------------------------------------
    private void SetAilmentIcon(BattleEnemy enemy)
    {
        // 初めに全てクリア
        m_AilmentChara = null;
        for (int num = 0; num < m_AilmentButtonSet.Length; ++num)
        {
            m_AilmentStatusID[num] = 0;
            UnityUtil.SetObjectEnabledOnce(m_AilmentButtonSet[num], false);
        }

        // 状態異常管理を取得
        m_AilmentChara = enemy.m_StatusAilmentChara;
        //----------------------------------------
        // エラーチェック
        //----------------------------------------
        if (m_AilmentChara == null)
        {
            return;
        }


        string spriteName = "";
        int    count      = 0;
        int    turn       = 0;
        bool   empty      = true;

        for (int num = 0; num < (int)MasterDataDefineLabel.AilmentType.MAX; ++num)
        {
            if (m_AilmentButtonSet[count] == null ||
                m_AilmentIcon[count] == null ||
                m_AilmentBalloon[count] == null ||
                m_AilmentBalloonText[count] == null ||
                m_AilmentChara.GetStatus()[num] == false)
            {
                continue;
            }

            // Sprite名を取得
            spriteName = StatusAilmentIconUtil.GetResourceName((MasterDataDefineLabel.AilmentType)Enum.ToObject(typeof(MasterDataDefineLabel.AilmentType), num));
            if (spriteName == "")
            {
                continue;
            }

            // Sprite切替
            //UnityUtil.SetUIAtlasSprite( m_AilmentIcon[ count ], spriteName );

            // 残りターン数を取得
            for (int n = 0; n < m_AilmentChara.GetAilmentCount(); ++n)
            {
                if (m_AilmentChara.GetAilment(n) == null ||
                    m_AilmentChara.GetAilment(n).bUsed == false)
                {
                    continue;
                }

                int type = (int)m_AilmentChara.GetAilment(n).nType;
                if (type != num)
                {
                    continue;
                }

                // 状態異常IDを取得
                m_AilmentStatusID[count] = n;

                // 残りターン数を取得
                turn = m_AilmentChara.GetAilment(m_AilmentStatusID[count]).nLife;

                // 残りターン数が、0でない場合
                if (turn > 0)
                {
                    // 表示
                    UnityUtil.SetUILabelValue(m_AilmentBalloonText[count], turn.ToString("00"));

                    UnityUtil.SetObjectEnabledOnce(m_AilmentBalloon[count], true);              // バルーン
                    UnityUtil.SetObjectEnabledOnce(m_AilmentBalloonText[count], true);          // バルーンテキスト
                }
                else
                {
                    // 非表示
                    UnityUtil.SetObjectEnabledOnce(m_AilmentBalloon[count], false);     // バルーン
                    UnityUtil.SetObjectEnabledOnce(m_AilmentBalloonText[count], false); // バルーンテキスト
                }
            }

            // EMPTYフラグOFF
            empty = false;

            // 表示ON
            UnityUtil.SetObjectEnabledOnce(m_AilmentButtonSet[count], true);

            ++count;
            // 表示限界チェック
            if (count >= m_AilmentButtonSet.Length)
            {
                break;
            }
        }

        // EMPTY文言表示有無
        if (empty == true)
        {
            Empty_label = true;
        }
        else
        {
            Empty_label = false;
        }
    }
Ejemplo n.º 4
0
    private void setSkillInfo()
    {
        int panel_put_count_base = PANEL_PUT_COUNT_BASE;

#if BUILD_TYPE_DEBUG
        // パネル配置数をデバッグメニューの値で上書き
        {
            int debug_panel_put_count = BattleDebugMenu.getAutoPlayPanelPutCount();
            if (debug_panel_put_count > 0)
            {
                panel_put_count_base = debug_panel_put_count;
            }
        }
#endif //BUILD_TYPE_DEBUG

        m_SkillWorksInfo.init(panel_put_count_base);

        // オートプレイスキルの効果を集約
        bool is_applied_ailment = false;
        for (int member_idx = 0; member_idx < MEMBER_ORDER.Length; member_idx++)
        {
            GlobalDefine.PartyCharaIndex member_type = MEMBER_ORDER[member_idx];

            CharaOnce chara_once = BattleParam.m_PlayerParty.getPartyMember(member_type, CharaParty.CharaCondition.SKILL_PASSIVE);
            if (chara_once != null)
            {
#if BUILD_TYPE_DEBUG
                // デバッグメニューで設定されたスキルを適用
                {
                    MasterDataDefineLabel.AutoPlaySkillType[] debug_skills = BattleDebugMenu.getAutoPlaySkill(member_type);
                    if (debug_skills.IsNullOrEmpty() == false)
                    {
                        for (int debug_skill_idx = 0; debug_skill_idx < debug_skills.Length; debug_skill_idx++)
                        {
                            MasterDataDefineLabel.AutoPlaySkillType debug_skill_type = debug_skills[debug_skill_idx];
                            m_SkillWorksInfo.applySkill(debug_skill_type, member_type, false);
                        }
                    }
                }
#endif //BUILD_TYPE_DEBUG

                // メインユニットのパッシブスキル
                {
                    MasterDataSkillPassive passive_skill_master = BattleParam.m_MasterDataCache.useSkillPassive(chara_once.m_CharaMasterDataParam.skill_passive);
                    if (passive_skill_master != null)
                    {
                        m_SkillWorksInfo.applySkill(passive_skill_master, member_type, false);
                    }
                }

                // リンクユニットのパッシブスキル
                if (chara_once.m_LinkParam != null &&
                    chara_once.m_LinkParam.m_CharaID != 0
                    )
                {
                    MasterDataParamChara link_chara_master = BattleParam.m_MasterDataCache.useCharaParam(chara_once.m_LinkParam.m_CharaID);
                    if (link_chara_master != null)
                    {
                        MasterDataSkillPassive link_passive_skill_master = BattleParam.m_MasterDataCache.useSkillPassive(link_chara_master.link_skill_passive);
                        if (link_passive_skill_master != null)
                        {
                            m_SkillWorksInfo.applySkill(link_passive_skill_master, member_type, true);
                        }
                    }
                }

                // 状態異常にあるオートプレイ用スキルを反映
                if (is_applied_ailment == false)
                {
                    is_applied_ailment = true;
                    StatusAilmentChara status_ailment_chara = BattleParam.m_PlayerParty.m_Ailments.getAilment(member_type);
                    if (status_ailment_chara != null)
                    {
                        for (int ailment_idx = 0; ailment_idx < status_ailment_chara.GetAilmentCount(); ailment_idx++)
                        {
                            StatusAilment status_ailment = status_ailment_chara.GetAilment(ailment_idx);
                            if (status_ailment != null)
                            {
                                if (status_ailment.nType == MasterDataDefineLabel.AilmentType.AUTO_PLAY_SKILL)
                                {
                                    MasterDataStatusAilmentParam ailment_param = BattleParam.m_MasterDataCache.useAilmentParam((uint)status_ailment.nMasterDataStatusAilmentID);
                                    if (ailment_param != null)
                                    {
                                        MasterDataDefineLabel.AutoPlaySkillType auto_play_skill_type = ailment_param.Get_AUTO_PLAY_SKILL_TYPE();
                                        m_SkillWorksInfo.applySkill(auto_play_skill_type, member_type, false);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        m_SkillWorksInfo.fix();
    }