//---------------------------------------------------------------------------- /*! * @brief アチーブメント操作:新規達成アチーブメントの一覧追加 */ //---------------------------------------------------------------------------- static public void AddAchievementClear(PacketAchievement[] cAchievements) { //---------------------------------------- // 特に要素が発生していないならスルー //---------------------------------------- if (cAchievements == null) { return; } //---------------------------------------- // //---------------------------------------- if (m_AchievementClear == null) { m_AchievementClear = new TemplateList <PacketAchievement>(); } //---------------------------------------- // アチーブメントの近々の達成済み一覧 //---------------------------------------- for (int i = 0; i < cAchievements.Length; i++) { if (m_AchievementClear.ChkInside(ChkInsidePacketAchievement, cAchievements[i]) == true) { continue; } //達成した種類のフラグをONにする。 switch (cAchievements[i].achievement_category_id) { case (int)ACHIEVEMENT_CATEGORY_TYPE.DAILY: UserDataAdmin.Instance.SetUserFlag(UserDataAdmin.UserFlagType.GlobalMissionDaily, true); break; case (int)ACHIEVEMENT_CATEGORY_TYPE.EVENT: UserDataAdmin.Instance.SetUserFlag(UserDataAdmin.UserFlagType.GlobalMissionEvent, true); break; case (int)ACHIEVEMENT_CATEGORY_TYPE.NORMAL: UserDataAdmin.Instance.SetUserFlag(UserDataAdmin.UserFlagType.GlobalMissionNormal, true); break; } m_AchievementClear.Add(cAchievements[i]); } MainMenuHeader.SetupMissionClearMessage(); }
//---------------------------------------------------------------------------- /*! @brief フレンドリストの生成処理 */ //---------------------------------------------------------------------------- private void CreateFriendList(ref List<FriendDataSetting> friend_list, uint requirement_id) { if (friend_list == null) { return; } m_FixFriendUnit = false; m_FixFriendLinkUnit = false; //-------------------------------- // フレンド固定の指定があれば処理 //-------------------------------- PacketStructUnit unit = null; PacketStructUnit linkUnit = null; MasterDataQuestRequirement quest_requirement = null; uint unLinkPoint = 0; //bool bLinkUnitOnlyFix = false; if (requirement_id != 0) quest_requirement = MasterDataUtil.GetMasterDataQuestRequirementFromID(requirement_id); if (quest_requirement != null) { // リンクポイントを取得 unLinkPoint = (uint)quest_requirement.fix_unit_04_link_point; // ベースユニット強制置き換え if (quest_requirement.fix_unit_04_enable == MasterDataDefineLabel.BoolType.ENABLE) { if (quest_requirement.fix_unit_04_id != 0) { unit = MainMenuUtil.CreateDummyFriendUnit(quest_requirement.fix_unit_04_id, (uint)quest_requirement.fix_unit_04_lv, (uint)quest_requirement.fix_unit_04_plus_atk, (uint)quest_requirement.fix_unit_04_plus_hp, 0, (uint)quest_requirement.fix_unit_04_lv_lbs, (uint)quest_requirement.fix_unit_04_lv_lo, unLinkPoint); m_FixFriendUnit = true; } } // リンクユニット強制置き換え switch (quest_requirement.fix_unit_04_link_enable) { case MasterDataDefineLabel.BoolType.ENABLE: if (quest_requirement.fix_unit_04_link_id != 0) { linkUnit = MainMenuUtil.CreateDummyUnit(quest_requirement.fix_unit_04_link_id, (uint)quest_requirement.fix_unit_04_link_lv, 0, (uint)quest_requirement.fix_unit_04_link_lv_lo, (uint)quest_requirement.fix_unit_04_link_plus_atk, (uint)quest_requirement.fix_unit_04_link_plus_hp, 0, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_LINK); } // 強制リンク外し else { linkUnit = MainMenuUtil.CreateDummyUnit(0, 0, 0, 0, 0, 0, 0); } // ベースユニットも固定の場合 if (unit != null) { if (linkUnit != null) { unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE; unit.link_unique_id = 1; } else { unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE; unit.link_unique_id = 0; } } // リンクユニットのみ固定の場合 else { m_FixFriendLinkUnit = true; } break; // 強制リンク外し case MasterDataDefineLabel.BoolType.DISABLE: linkUnit = MainMenuUtil.CreateDummyUnit(0, 0, 0, 0, 0, 0, 0); // ベースユニットが固定の場合 if (unit != null) { unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE; unit.link_unique_id = 0; } // リンクユニットのみ固定の場合 else { m_FixFriendLinkUnit = true; } break; case MasterDataDefineLabel.BoolType.NONE: break; } } //-------------------------------- // 現在のフレンドリストを削除 //-------------------------------- m_SelectFriend = null; friend_list.Clear(); List<MasterDataParamChara> charaMasterList = MasterFinder<MasterDataParamChara>.Instance.FindAll(); //-------------------------------- // 新しいフレンドリストの作成 //-------------------------------- if (unit == null) { //-------------------------------- // 固定フレンドの指定がない //-------------------------------- // 助っ人の総数を取得 int nFriendListTotal = 0; if (UserDataAdmin.Instance.m_StructHelperList != null) { nFriendListTotal += UserDataAdmin.Instance.m_StructHelperList.Length; } if (UserDataAdmin.Instance.m_StructFriendList != null) { nFriendListTotal += UserDataAdmin.Instance.m_StructFriendList.Length; } // フレンド登録ユーザーリストの取得 TemplateList<uint> cFavoriteFriendList = LocalSaveManager.Instance.LoadFuncAddFavoriteFriend(); #region ==== 助っ人をフレンドリストに追加 ===== // 助っ人をフレンドリストに追加 // friend_list.Alloc( nFriendListTotal ); if (UserDataAdmin.Instance.m_StructHelperList != null) { for (int i = 0; i < UserDataAdmin.Instance.m_StructHelperList.Length; i++) { if (UserDataAdmin.Instance.m_StructHelperList[i] == null) { continue; } FriendDataSetting cFriendParam = new FriendDataSetting(); if (m_FixFriendLinkUnit == false) { cFriendParam.FriendData = UserDataAdmin.Instance.m_StructHelperList[i]; } // リンクユニットのみ固定の場合 else { // ヘルパーデータをコピー cFriendParam.FriendData = new PacketStructFriend(); cFriendParam.FriendData.user_id = UserDataAdmin.Instance.m_StructHelperList[i].user_id; cFriendParam.FriendData.user_name = UserDataAdmin.Instance.m_StructHelperList[i].user_name; cFriendParam.FriendData.user_rank = UserDataAdmin.Instance.m_StructHelperList[i].user_rank; cFriendParam.FriendData.last_play = UserDataAdmin.Instance.m_StructHelperList[i].last_play; cFriendParam.FriendData.friend_point = UserDataAdmin.Instance.m_StructHelperList[i].friend_point; cFriendParam.FriendData.friend_state = UserDataAdmin.Instance.m_StructHelperList[i].friend_state; cFriendParam.FriendData.friend_state_update = UserDataAdmin.Instance.m_StructHelperList[i].friend_state_update; unit = UserDataAdmin.Instance.m_StructHelperList[i].unit; // リンク固定がある場合 if (linkUnit != null) { cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv, unit.limitover_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE); cFriendParam.FriendData.unit_link = linkUnit; } else { cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv, unit.limitover_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE); } } cFriendParam.MasterData = charaMasterList.Find((v) => v.fix_id == cFriendParam.FriendData.unit.id); friend_list.Add(cFriendParam); } } #endregion #region ==== フレンド登録をしたフレンドを追加 ===== // フレンド登録をしたフレンドを追加 if (UserDataAdmin.Instance.m_StructFriendList != null) { for (int i = 0; i < UserDataAdmin.Instance.m_StructFriendList.Length; i++) { if (UserDataAdmin.Instance.m_StructFriendList[i] == null) { continue; } FriendDataSetting cFriendParam = new FriendDataSetting(); if (m_FixFriendLinkUnit == false) { cFriendParam.FriendData = UserDataAdmin.Instance.m_StructFriendList[i]; } // リンクユニット固定の場合 else { // フレンドデータをコピー cFriendParam.FriendData = new PacketStructFriend(); cFriendParam.FriendData.user_id = UserDataAdmin.Instance.m_StructFriendList[i].user_id; cFriendParam.FriendData.user_name = UserDataAdmin.Instance.m_StructFriendList[i].user_name; cFriendParam.FriendData.user_rank = UserDataAdmin.Instance.m_StructFriendList[i].user_rank; cFriendParam.FriendData.last_play = UserDataAdmin.Instance.m_StructFriendList[i].last_play; cFriendParam.FriendData.friend_point = UserDataAdmin.Instance.m_StructFriendList[i].friend_point; cFriendParam.FriendData.friend_state = UserDataAdmin.Instance.m_StructFriendList[i].friend_state; cFriendParam.FriendData.friend_state_update = UserDataAdmin.Instance.m_StructFriendList[i].friend_state_update; unit = UserDataAdmin.Instance.m_StructFriendList[i].unit; if (linkUnit != null) { cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE); cFriendParam.FriendData.unit_link = linkUnit; } else { cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE); } } cFriendParam.MasterData = charaMasterList.Find((v) => v.fix_id == cFriendParam.FriendData.unit.id); if (cFavoriteFriendList != null) { cFriendParam.IsActiveLock = cFavoriteFriendList.ChkInside(TemplateListSort.ChkInsideUint, cFriendParam.FriendData.user_id); } else { cFriendParam.IsActiveLock = false; } friend_list.Add(cFriendParam); } } #endregion // フレンドのメンバーを条件で間引き friend_list = FriendListThinning(friend_list); } else { //-------------------------------- // 固定フレンドの指定があった //-------------------------------- MasterDataParamChara param_chara = charaMasterList.Find((v) => v.fix_id == unit.id); if (param_chara != null) { PacketStructFriend friend = new PacketStructFriend(); friend.unit = unit; friend.user_id = 0; friend.user_name = param_chara.name; friend.user_rank = 999; friend.last_play = unit.get_time; friend.friend_point = 0; friend.friend_state = (uint)FRIEND_STATE.FRIEND_STATE_SUCCESS; // リンク固定がある場合 if (linkUnit != null) { friend.unit_link = linkUnit; } FriendDataSetting param_friend = new FriendDataSetting(); param_friend.FriendData = friend; param_friend.MasterData = param_chara; friend_list.Add(param_friend); } } }