/// <summary> /// 任务状态改变 /// </summary> /// <param name="msg"></param> private void OnTaskStatusChanged(object msg) { SCTaskStatusChangeNotice message = msg as SCTaskStatusChangeNotice; TaskBase task = this.m_playerTaskSet.GetTaskById(message.PlayerTaskId); if (task != null) { //TODO:防止任务状态同步消息,未按指定顺序到达。完成的任务,不能在重置为进行中。 task.TaskCurrentStatus = message.Status > (int)(task.TaskCurrentStatus) ? (TaskStatus)message.Status : task.TaskCurrentStatus; if (task.TaskCurrentStatus == TaskStatus.REWARDED) { Dictionary <UBSParamKeyName, object> _param = new Dictionary <UBSParamKeyName, object>(); _param.Add(UBSParamKeyName.ContentID, task.TaskConfID); UserBehaviorStatisticsModules.Instance.LogEvent(UBSEventKeyName.get_task_reward, null, _param); this.m_currentTaskList.Remove(task); GameEvents.TaskEvents.OnReceiveTask.SafeInvoke(task); BigWorldManager.Instance.OnBigWorldCanUnLock(task.TaskConfID); } else if (task.TaskCurrentStatus == TaskStatus.PROGRESSING) { OnSyncTaskProgress(message.TaskInfo); } else if (task.TaskCurrentStatus == TaskStatus.COMPLETED) { FindObjSceneDataManager.RemoveSceneIDForTask(task.TaskConfID); } GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(this.m_currentTaskList.Count); } }
public FindObjSceneData(long group_scene_id_, int lvl_, int exp_) { m_scene_group_id = group_scene_id_; m_lvl = lvl_; m_exp = exp_; m_full_exp = FindObjSceneDataManager.GetFullExp(m_scene_group_id, m_lvl).GetValueOrDefault(); }
public void RefreshLvl(int lvl_) { if (m_lvl != lvl_) { //更新full exp m_lvl = lvl_; m_full_exp = FindObjSceneDataManager.GetFullExp(m_scene_group_id, m_lvl).GetValueOrDefault(); } }
void BuildTopCreateSceneByDifficult(long build_top_scene_group_id_) { long scene_id = FindObjSceneDataManager.LoadSceneIDForBuildTop(build_top_scene_group_id_); var temp_group_data = FindObjSceneDataManager.Instance.GetDataBySceneGroupID(build_top_scene_group_id_); if (null != temp_group_data) { m_group_data = temp_group_data; } if (scene_id < 0) { long scene_difficult_id = FindObjSceneDataManager.GetSceneDifficultID(build_top_scene_group_id_, m_group_data.m_lvl); long[] sceneid4random = ConfSceneDifficulty.Get(scene_difficult_id).sceneIds; int[] weights4random = ConfSceneDifficulty.Get(scene_difficult_id).sceneWeights; List <RateScene> scenes4rdm = new List <RateScene>(); for (int i = 0; i < sceneid4random.Length; ++i) { RateScene rs = new RateScene() { SceneID = sceneid4random[i], Rate = weights4random[i], }; scenes4rdm.Add(rs); } int idx = randomGetIdex(scenes4rdm); if (idx >= 0) { RateScene selected_scene = scenes4rdm[idx]; scene_id = selected_scene.SceneID; FindObjSceneDataManager.SaveSceneIDForBuildTop(build_top_scene_group_id_, scene_id); } } if (scene_id > 0) { this.m_scene_id = scene_id; m_s_info = ConfScene.Get(m_scene_id); m_time_cost_value = m_s_info.secondGain; m_vit_cost_value = m_s_info.vitConsume; } else { m_s_info = null; m_time_cost_value = 0; m_vit_cost_value = 0; } }
/// <summary> /// 同步任务详细数据 /// </summary> /// <param name="message"></param> private void OnSyncTaskProgress(object message) { SCTaskListResponse msg = message as SCTaskListResponse; HashSet <long> currentProgressingTaskIDs = new HashSet <long>(); for (int i = 0; i < msg.TaskInfos.Count; ++i) { long taskUUID = msg.TaskInfos[i].PlayerTaskId; TaskBase task = this.m_playerTaskSet.GetTaskById(taskUUID); if (task != null) { task.SyncTaskInfo(msg.TaskInfos[i]); if (task.TaskCurrentStatus == TaskStatus.PROGRESSING || task.TaskCurrentStatus == TaskStatus.COMPLETED) { if (task.TaskCurrentStatus == TaskStatus.PROGRESSING) { currentProgressingTaskIDs.Add(task.TaskConfID); } if (!this.m_currentTaskList.Contains(task)) { this.m_currentTaskList.Add(task); } } } } if (currentProgressingTaskIDs.Count > 0) { FindObjSceneDataManager.RefreshSceneIDsForTasks(currentProgressingTaskIDs); } if (this.m_currentTaskList.Count > 0) { GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(this.m_currentTaskList.Count); } }
public void Refresh(WinFailData data_) { if (ENUM_SEARCH_MODE.E_SEARCH_ROOM == data_.m_mode) { SCSceneRewardResponse msg = data_.m_msg as SCSceneRewardResponse; long m_scene_group_id = FindObjSceneDataManager.ConvertSceneIdToSceneGroupId(msg.SceneId); var m_group_data = new FindObjSceneData(m_scene_group_id, 1, 0); var temp_data = FindObjSceneDataManager.Instance.GetDataBySceneGroupID(m_scene_group_id); if (null != temp_data) { m_group_data = temp_data; } long scene_difficult_id = FindObjSceneDataManager.GetSceneDifficultID(m_scene_group_id, m_group_data.m_lvl); ConfSceneDifficulty difficult_data = ConfSceneDifficulty.Get(scene_difficult_id); m_lvl_icon.Sprite = ConfPoliceRankIcon.Get(m_group_data.m_lvl).icon; m_lvl_name.Text = LocalizeModule.Instance.GetString(difficult_data.name); m_lvl_exp_slider.Value = (float)m_group_data.m_exp / (float)m_group_data.m_full_exp; m_lvl_exp_txt.Text = $"{m_group_data.m_exp}/{m_group_data.m_full_exp}"; } }
void TaskCreateSceneByDifficult(long tsk_id_) { long scene_id = FindObjSceneDataManager.LoadSceneIDForTask(tsk_id_); if (scene_id < 0) { long scene_difficult_id = FindObjSceneDataManager.GetSceneDifficultID(m_scene_group_id, m_group_data.m_lvl); long[] sceneid4random = ConfSceneDifficulty.Get(scene_difficult_id).sceneIds; int[] weights4random = ConfSceneDifficulty.Get(scene_difficult_id).sceneWeights; FindObjSceneData my_difficult_data = FindObjSceneDataManager.Instance.GetDataBySceneGroupID(m_scene_group_id); int?my_difficult_lvl = my_difficult_data?.m_lvl; int?my_difficult_exp = my_difficult_data?.m_exp; if ((1 == my_difficult_lvl || 0 == my_difficult_lvl) && 0 == my_difficult_exp) { //首次使用普通玩法 scene_id = sceneid4random[0]; } else { //二次随机 List <RateScene> scenes4rdm = new List <RateScene>(); for (int i = 0; i < sceneid4random.Length; ++i) { RateScene rs = new RateScene() { SceneID = sceneid4random[i], Rate = weights4random[i], }; scenes4rdm.Add(rs); } int idx = randomGetIdex(scenes4rdm); if (idx >= 0) { RateScene selected_scene = scenes4rdm[idx]; scene_id = selected_scene.SceneID; FindObjSceneDataManager.SaveSceneIDForTask(tsk_id_, scene_id); if (1 == ConfTask.Get(tsk_id_).type) { //主线任务,影响bulid top的场景id FindObjSceneDataManager.SaveSceneIDForBuildTop(FindObjSceneDataManager.ConvertSceneIdToSceneGroupId(scene_id), scene_id); } } } } if (scene_id > 0) { this.m_scene_id = scene_id; m_s_info = ConfScene.Get(m_scene_id); m_time_cost_value = m_s_info.secondGain; m_vit_cost_value = m_s_info.vitConsume; } else { m_s_info = null; m_time_cost_value = 0; m_vit_cost_value = 0; } }
public override void OnShow(object param) { base.OnShow(param); GameEvents.UIEvents.UI_GameEntry_Event.OnMaskBGVisible.SafeInvoke(true); GameEvents.UIEvents.UI_GameEntry_Event.OnInfiniteVit += OnInfiniteVit; MessageHandler.RegisterMessageHandler(MessageDefine.SCSceneEnterResponse, OnScResponse); this.m_action_btn.AddClickCallBack(OnBtnStartGameClick); this.m_exp_reward_icon.AddPressDownCallBack(OnSceneGroupGiftPressDown); this.m_exp_reward_icon.AddPressUpCallBack(OnSceneGroupGiftPressUp); EnterSceneData enterSceneData = null; m_scene_id = -1; m_scene_group_id = -1; m_enter_msg = null; if (null != param) { enterSceneData = param as EnterSceneData; //this.m_scene_id = (int)enterSceneData.SceneID; this.m_taskConfID = enterSceneData.taskConfID; } if (-1 == m_taskConfID) { //不是从任务展示界面来的,不用翻转 BgShowAlpha(false); PanelDelayShowAlpha(0.0f); PanelDelayShowScale(0.0f); PanelTurnToOne(false); PanelGoDown(true); } else { //需要翻转 BgShowAlpha(true); PanelDelayShowAlpha(0.2f); PanelDelayShowScale(0.5f); PanelGoDown(false); PanelTurnToZero(false); PanelTurnToOne(true); } ConfTask task = null; if (this.m_taskConfID < 0) { //build top 进入 this.m_scene_group_id = FindObjSceneDataManager.ConvertSceneIdToSceneGroupId(enterSceneData.SceneID); m_group_data = new FindObjSceneData(this.m_scene_group_id, 1, 0); BuildTopCreateSceneByDifficult(this.m_scene_group_id); } else { task = ConfTask.Get(m_taskConfID); long tsk_scene_id = null != task ? task.conditionSceneId : enterSceneData.SceneID; m_special_scene_id = 0; //初始化一个默认的group data; m_group_data = new FindObjSceneData(FindObjSceneDataManager.ConvertSceneIdToSceneGroupId(tsk_scene_id), 1, 0); this.m_scene_group_id = FindObjSceneDataManager.ConvertSceneIdToSceneGroupId(tsk_scene_id); var temp_data = FindObjSceneDataManager.Instance.GetDataBySceneGroupID(m_scene_group_id); if (null != temp_data) { m_group_data = temp_data; } if (tsk_scene_id > 99999) { //配置的场景id if (1 == ConfScene.Get(tsk_scene_id).keyExhibit) { //关键证据关卡 CreateSceneBySpecial(tsk_scene_id); } else { //非关键关卡 //读取难度表 TaskCreateSceneByDifficult(this.m_taskConfID); } } else { //配置的场景组id,一定是非关键线索关卡 TaskCreateSceneByDifficult(this.m_taskConfID); } } m_play_mode_img.Sprite = this.GetModeIconName(m_scene_id); m_scene_tex.TextureName = m_s_info.thumbnail; m_scene_name_label.Text = LocalizeModule.Instance.GetString(m_s_info.name); this.ShowOutPut(m_s_info.outputExp, m_s_info.outputMoney, m_s_info.outputCash, m_s_info.outputVit); List <long> ids = CommonHelper.GetDropOuts(m_s_info.dropId); var props = from id in ids select new DropWrapper() { DropType = ENUM_DROP_TYPE.PROP, ItemID = id, ItemNum = 0, Icon = ConfProp.Get(id).icon, }; List <DropWrapper> totalToShow = new List <DropWrapper>(); if (null != task && task.conditionExhibits.Length > 0) { var exhibits = from id in task.conditionExhibits select new DropWrapper() { DropType = ENUM_DROP_TYPE.EXHABIT, ItemID = id, ItemNum = 0, Icon = Confexhibit.Get(id).iconName, }; totalToShow.AddRange(exhibits); } //DropWrapper te = new DropWrapper() //{ // DropType = ENUM_DROP_TYPE.EXHABIT, // ItemID = 10972, // ItemNum = 0, // Icon = Confexhibit.Get(10972).iconName, //}; //totalToShow.Add(te); totalToShow.AddRange(props); m_drop_grid.EnsureSize <DropItemIconEffect>(totalToShow.Count); for (int i = 0; i < m_drop_grid.ChildCount; ++i) { var show = totalToShow[i]; DropItemIconEffect di = m_drop_grid.GetChild <DropItemIconEffect>(i); m_drop_grid.GetChild <DropItemIconEffect>(i).InitSprite(show.Icon, show.ItemNum, show.ItemID, ENUM_DROP_TYPE.EXHABIT == show.DropType); if (ENUM_DROP_TYPE.PROP == show.DropType) { m_drop_grid.GetChild <DropItemIconEffect>(i).EnableTips(true); m_drop_grid.GetChild <DropItemIconEffect>(i).InitToolTipOffset(new Vector2(-280.0f, 0.0f)); } else { m_drop_grid.GetChild <DropItemIconEffect>(i).EnableTips(false); } m_drop_grid.GetChild <DropItemIconEffect>(i).Visible = true; } m_drop_grid.Visible = false; long scene_difficult_id = FindObjSceneDataManager.GetSceneDifficultID(m_scene_group_id, m_group_data.m_lvl); ConfSceneDifficulty difficult_data = ConfSceneDifficulty.Get(scene_difficult_id); m_gifts = new List <GroupToolTipsData>(); for (int i = 0; i < difficult_data.rewards.Length; ++i) { GroupToolTipsData reward = new GroupToolTipsData() { ItemID = difficult_data.rewards[i], CurCount = difficult_data.rewardNums[i], }; m_gifts.Add(reward); } m_difficult_icon.Sprite = ConfPoliceRankIcon.Get(m_group_data.m_lvl).icon; m_difficlut_step.Text = LocalizeModule.Instance.GetString(difficult_data.name); m_exp_progress.Value = (float)m_group_data.m_exp / (float)m_group_data.m_full_exp; m_exp_txt.Text = $"{m_group_data.m_exp}/{m_group_data.m_full_exp}"; Debug.Log($"关卡进入 关卡组id{m_group_data.m_scene_group_id}"); m_cost_time_num_label.Text = CommonTools.SecondToStringMMSS(this.m_time_cost_value); SetVitLabel(); m_is_action_btn_touched = false; this.m_action_btn.Enable = true; Dictionary <UBSParamKeyName, object> _params = new Dictionary <UBSParamKeyName, object>() { { UBSParamKeyName.Success, 1 }, { UBSParamKeyName.SceneID, this.m_scene_id }, }; UserBehaviorStatisticsModules.Instance.LogEvent(UBSEventKeyName.game_start, null, _params); }