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
}