//------------------------------------------------------------------------ /*! * @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; } }
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); } }
//------------------------------------------------------------------------ /*! * @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; } }
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(); }