public QuestMissionContext(PacketAchievement clearAchievement) { MasterDataPresent presentData = (!clearAchievement.present_ids.IsNullOrEmpty()) ? MasterDataUtil.GetPresentParamFromID(clearAchievement.present_ids[0]) : null; if (presentData != null) { //TODO MasterDataAchievementConverted → PresentMasterCount とまとめたい fix_id = clearAchievement.fix_id; int mastercount = 1; uint presentid = clearAchievement.present_ids[0]; for (int j = 1; j < clearAchievement.present_ids.Length; j++) { if (presentid == clearAchievement.present_ids[j]) { mastercount += 1; } } int itemValue = MasterDataUtil.GetPresentCount(presentData) * mastercount; Title = clearAchievement.draw_msg; ItemName = MasterDataUtil.GetPresentName(presentData); MainMenuUtil.GetPresentIcon( presentData, sprite => { IconImage = sprite; }); IsViewCount = false; ItemValue = (itemValue > 0) ? itemValue.ToString() : ""; } }
//---------------------------------------------------------------------------- /*! * @brief アチーブメント操作:新規達成アチーブメントから要素を削除 */ //---------------------------------------------------------------------------- static public void DelAchievementClear(uint fix_id) { //---------------------------------------- // 特に要素が発生していないならスルー //---------------------------------------- if (m_AchievementClear == null) { return; } PacketAchievement cDelAchievement = null; //---------------------------------------- // アチーブメントの近々の達成済み一覧 //---------------------------------------- for (int i = 0; i < m_AchievementClear.m_BufferSize; i++) { if (m_AchievementClear[i].fix_id == fix_id) { cDelAchievement = m_AchievementClear[i]; break; } } if (cDelAchievement != null) { m_AchievementClear.Remove(cDelAchievement); cDelAchievement = null; } }
//---------------------------------------------------------------------------- /*! * @brief 内包チェック:PacketAchievement */ //---------------------------------------------------------------------------- static public int ChkInsidePacketAchievement(PacketAchievement a, PacketAchievement b) { if (a.fix_id == b.fix_id) { return(1); } return(0); }
/// <summary> /// ミッションクリアのマーキー表示 /// </summary> static public void SetupMissionClearMessage() { ClearMissionClearMessage(); //---------------------------------------- // 新規達成演出前のアチーブメントがあるならメッセージ表示 //---------------------------------------- if (ResidentParam.m_AchievementClear != null && ResidentParam.m_AchievementClear.m_BufferSize > 0) { m_MsgBarResetText = true; m_MsgBarRequestInputIndex = 0; for (int i = 0; i < ResidentParam.m_AchievementClear.m_BufferSize; ++i) { //---------------------------------------- // アチーブメントが演出が必要なステータス状況かチェック //---------------------------------------- PacketAchievement cAchievement = ResidentParam.m_AchievementClear[i]; if (cAchievement == null) { continue; } if (cAchievement.server_state != (int)ServerDataDefine.ACHIEVEMENT_STATE.ACHIEVEMENT_STATE_S1_T1_E0_S0) { continue; } // クエストミッションはミッション画面に表示されず、直接アイテムを受け取るので弾く if (cAchievement.achievement_category_id == (int)ServerDataDefine.ACHIEVEMENT_CATEGORY_TYPE.QUEST) { continue; } HeaderMessage message = new HeaderMessage(); message.fix_id = cAchievement.fix_id; message.message = string.Format(GameTextUtil.GetText("achievement_complete"), TextUtil.RemoveNewLine(cAchievement.draw_msg)); message.message_color = Color.white; message.bg_color = HexColor.ToColor("#f90974"); message.type = HeaderMessage.MESSAGE_TYPE.ACHIEVEMENT_CLEAR; message.priority = ResidentParam.m_AchievementClear.m_BufferSize - i; m_MsgBarOtherMessageList.Add(message); } m_MsgBarOtherMessageList.Sort(HeaderMessage.SortCompare); } }