using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEditor; /// /// 任务模块 /// public class TaskProxy : ProxyBase { public TaskProxy() => this.opeCode = OpeCode.ope_task; #region ' 过时方法 ' /// /// 更新任务数据 /// /// public void GetTaskInfo(Action callback) { Post(CmdCode.cmd_Task_getTaskInfo, new object[] { }, resp => { var p = UserProxy.Instance.player; p.task = resp.result["task"].ToObject(); callback?.Invoke(); }); } /// /// 领取任务奖励 /// /// /// public void GetTaskReward(int taskId, Action callback) { Post(CmdCode.cmd_Task_getReward, new object[] { taskId }, resp => { var p = UserProxy.Instance.player; p.baseInfo.gold = Convert.ToInt32(resp.result["gold"].ToString()); p.baseInfo.cash = Convert.ToInt32(resp.result["cash"].ToString()); p.baseInfo.tili = Convert.ToInt32(resp.result["tili"].ToString()); //p.InitFromStore((JObject)resp.result["store"]); p.task = resp.result["task"].ToObject(); callback?.Invoke(); }); } /// /// 设置关注任务 /// /// /// public void SetAttentionTask(int taskId, Action callback) { Post(CmdCode.cmd_Task_setAttentionTask, new object[] { taskId }, resp => { var p = UserProxy.Instance.player; p.task.curTaskId = taskId; callback?.Invoke(); }); } /// /// 领取每日任务活跃点数奖励 /// /// /// public void GetActiveReward(int activeNum, Action callback) { Post(CmdCode.cmd_Task_getActiveReward, new object[] { activeNum }, resp => { var p = UserProxy.Instance.player; p.baseInfo.gold = Convert.ToInt32(resp.result["gold"].ToString()); p.baseInfo.cash = Convert.ToInt32(resp.result["cash"].ToString()); p.baseInfo.tili = Convert.ToInt32(resp.result["tili"].ToString()); //p.InitFromStore((JObject)resp.result["store"]); p.task = resp.result["task"].ToObject(); callback?.Invoke(); }); } #endregion /// /// [6210] 剧情对话,更新任务步骤的进度 /// /// /// /// /// 是否有任务卡状态更新 public void PlotFinish(int gate_or_npc_id, int stage, Action callback) { Post(CmdCode.cmd_taskCard_PlotFinish, new object[] { gate_or_npc_id, stage }, resp => { //var p = UserProxy.Instance.player; var bUpdate = true; // resp.result["taskCardUpdate"].ToObject(); if (bUpdate) { // 更新任务卡 callback?.Invoke(bUpdate, null); } else { callback?.Invoke(bUpdate, null); } }); } #region ' 已废弃方法 2020年12月14日14:33:43' /// /// [6211] /// [Obsolete("暂未完成-2020年11月18日16:26:33")] public void PlotExchangeTaskCard(Action callback) { Post(CmdCode.cmd_taskCard_PlotExchangeTaskCard, new object[] { }, resp => { callback?.Invoke(); }); } /// /// [6212]剧情对话奖励任务卡(新手引导完成获得第一个卡) /// /// /// [Obsolete("2020.12.12")] public void PlotPresentTaskCard(string rwdStr, Action callback) { Post(CmdCode.cmd_taskCard_PlotPresentTaskCard, new object[] { rwdStr }, resp => { //var p = UserProxy.Instance.player; //p.InitFromStore((JObject)resp.result["store"]); callback?.Invoke(); }); } /// /// [6213]即时奖励型任务卡-结算(当剧情最后一句播完后,且是最后一个step, 直接调用这个) /// /// /// [Obsolete("2020.12.12")] public void ImmetRewardTaskCard(int taskCardUID, Action callback) { Post(CmdCode.cmd_taskCard_FinishAndReward, new object[] { taskCardUID }, resp => { //var p = UserProxy.Instance.player; //p.InitFromStore((JObject)resp.result["store"]); callback?.Invoke(); }); } #endregion /// /// 6214 上报杀死怪物事件 /// /// /// /// /// 是否有任务卡状态更新 public void ReportKillMonsterEvent(int monsterId, int num, Action callback) { Post(CmdCode.cmd_taskCard_killMonsterEvent, new object[] { monsterId, num }, resp => { var bUpdate = resp.result["taskCardUpdate"].ToObject(); if (bUpdate) { LogHelper.Log(resp.result); // 更新任务卡 callback?.Invoke(bUpdate, null, null); } else { callback?.Invoke(false, null, null); } }); } /// /// [6215] 任务卡 - 激活任务卡 /// /// /// public void ActiveTaskCard(int taskCardUID, Action callback) { Post(CmdCode.cmd_taskCard_active, new object[] { taskCardUID }, resp => { var p = UserProxy.Instance.player; // 更新任务卡 p.PrivateState = ((JObject)resp.result["priv"]).ToObject(); callback?.Invoke(p.collectTaskCard.collectTaskCardDic[taskCardUID.ToString()]); }); } /// /// [6216] 任务卡 - 领取奖励 /// /// /// public void TaskCard_getReward(int taskCardUID, Action callback) { Post(CmdCode.cmd_taskCard_reward, new object[] { taskCardUID }, resp => { var p = UserProxy.Instance.player; if (p.collectTaskCard.collectTaskCardDic.ContainsKey(taskCardUID.ToString())) { var cardMo = p.collectTaskCard.collectTaskCardDic[taskCardUID.ToString()].mo; p.baseInfo.getNewXp(cardMo.exp); } p.baseInfo.gold = Convert.ToInt32(resp.result["gold"].ToString()); p.baseInfo.cash = Convert.ToInt32(resp.result["cash"].ToString()); p.baseInfo.level = Convert.ToInt32(resp.result["lvl"].ToString()); p.PrivateState = ((JObject)resp.result["priv"]).ToObject(); p.collegeInfo.Initlize(resp.result["college"]); callback?.Invoke(); }); } /// /// [6217] 更新任务数据 /// /// public void GetTaskCardInfo(Action callback) { Post(CmdCode.cmd_taskCard_info, new object[] { }, resp => callback?.Invoke()); } /// /// [6218] 任务卡 - 步骤事件 完成 /// /// /// /// 1 startAction, 2 finishAction /// public void TaskCardStepActionDone(int taskCardUID, int stepTypeId, int starOrFinish, Action callback) { Post(CmdCode.cmd_taskCard_stepActionDone, new object[] { taskCardUID, stepTypeId, starOrFinish }, resp => callback?.Invoke()); } /// /// [6219] 任务卡 - 设定追踪的任务卡 /// /// /// /// public void TaskCardSetTracingCard(int cardType, int taskCardUID, Action callback) { Post(CmdCode.cmd_taskCard_SetTracingCard, new object[] { cardType, taskCardUID }, resp => { var p = UserProxy.Instance.player; p.PrivateState.taskCardTracing = resp.result.ToObject>(); callback?.Invoke(); }); } /// /// [6220] 任务卡 - 检查是否有任务步骤需要回撤(重新登录/唤灵师死亡/切换场景) /// /// public void TaskCardCheckStepFallback(Action callback) => Post(CmdCode.cmd_task_stepFallBack, new object[] { }, resp => callback?.Invoke()); /// /// [6231] 任务卡商店 - 开启 /// /// public void TaskCardShop_open(Action> callback) { Post(CmdCode.cmd_taskcard_shop_open, new object[] { }, ret => { if (null !=ret) { UserProxy.Instance.player.taskCardShop = ret.taskCardShop; callback?.Invoke(ret.taskCardShop.CurCardVos); } }); } /// /// [6231] 任务卡商店 - 购买 /// /// public void TaskCardShop_Buy(int cardTypeId, Action callback) { Post(CmdCode.cmd_taskcard_shop_buy, new object[] { cardTypeId, 1 }, ret => { var p = UserProxy.Instance.player; p.baseInfo.gold = ret.gold; // 同步下花费 p.baseInfo.cash = ret.cash; callback?.Invoke(); }); } /// /// [6231] 任务卡商店 - 刷新 /// /// public void TaskCardShop_Refresh(Action> callback) { Post(CmdCode.cmd_taskcard_shop_refresh, new object[] { }, ret => { var p = UserProxy.Instance.player; p.baseInfo.gold = ret.gold; p.baseInfo.cash = ret.cash; p.taskCardShop = ret.taskCardShop; callback?.Invoke(p.taskCardShop.CurCardVos); }); } public int DailyTaskProgress() { int index = 0; List taskList = UserProxy.Instance.player.collectTaskCard.GetAllCards().GetSubTypes(2); string[] sList = GameConfigData.Ins.globalsettings.dailyTask_Common.ToString().Split(','); foreach (TaskCardVo vo in taskList) { if (sList.Contains(vo.typeId) && vo.state == Enum_TaskCardStateType.drawed) { index += 1; } } return index; } public List GetDailyTaskExtraPrize() { string taskId = GameConfigData.Ins.globalsettings.dailyTask_Common.ToString(); if (!UserProxy.Instance.player.collectTaskCard.collectTaskCardDic.ContainsKey(taskId)) { return new List(); } return sm_item_taskcard.GetMoById(int.Parse(taskId)).RealRewards(); } /// /// 当前追踪的所有任务 /// /// public List GetTaskTrackInfo() { List list = new List(); Dictionary collectTaskCardDic = UserProxy.Instance.player.collectTaskCard.collectTaskCardDic; Dictionary taskCardTracing = UserProxy.Instance.player.PrivateState.taskCardTracing; foreach (KeyValuePairkv in taskCardTracing) { if (collectTaskCardDic.ContainsKey(kv.Value.ToString())) { list.Add(collectTaskCardDic[kv.Value.ToString()]); } } return list; } #region 内部类 class Ret_OpenTaskShop { public Info_TaskCard_Shop taskCardShop; } class Ret_TaskCardBuy { public int gold; public int cash; } class Ret_TaskCardShopRefresh { public int gold; public int cash; public Info_TaskCard_Shop taskCardShop; } /// /// 任务主界面 /// public class UITaskMainVo : Singleton { /// /// 剧情任务列表 /// /// public List AllNodeList() => GameConfigData.Ins.task_node.Values.ToList().ConvertAll(sm => new TaskNodeInfo() { nodeId = sm.typeId }); private Player p = UserProxy.Instance.player; /// /// 每日任务列表 /// public List dailyTasks => p.task.taskListDaily.Values.ToList(); /// /// 活跃度奖励列表 /// public List activeRewardInfos => GameConfigData.Ins.task_active_reward.Values .Select(mo => new TaskActiveRewardInfo() { num = int.Parse(mo.num) }) .OrderBy(t => t.num).ToList(); /// /// 当前活跃点数 /// public int CurActivePoint => p.task.dailyActivePoint; /// /// 最大一档奖励要求的活跃点数 /// public int MaxActivePoint => activeRewardInfos.Max(ti => ti.num); } #endregion }