123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Linq;
- using Newtonsoft.Json.Linq;
- using System.Collections.Generic;
- /// <summary>
- ///
- /// </summary>
- public class ActiveProxy : ProxyBase<ActiveProxy>
- {
- #region ` constructor `
- public ActiveProxy() => this.opeCode = OpeCode.ope_active;
- #endregion
-
- #region 七日签到奖励
- /// <summary>
- /// [6502] 七日签到福利 - 领取奖励
- /// </summary>
- /// <param name="day">第x天(1~7) </param>
- /// <param name="callback">成功回调函数</param>
- public void Day7_DrawReward(int day, Action<string> callback)
- {
- Post(CmdCode.cmd_active_day7_drawreward, new object[] { day },
- 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.collectHero.InitData((JObject)resp.result["hero"],p); // 英雄
- p.PrivateState.day7_drawed.Add(day); // 同步领取记录
- callback?.Invoke(sm_activity_day7.GetMoById(day).reward);
- });
- }
- #endregion
- /// <summary>
- /// [6503] 查询开服时间戳
- /// </summary>
- /// <param name="callback">成功回调函数</param>
- public void GetZonePublicTs(Action<DateTime> callback)
- {
- Post(CmdCode.cmd_active_getZonePublicTs, new object[] { }, resp => callback?.Invoke(new DateTime().FromUnixStamp((uint)resp.result)));
- }
- #region ' 废弃 '
- /// <summary>
- /// [6509] 抽奖(已经变为开箱子功能)
- /// </summary>
- /// <param name="type">道具的typeid</param>
- /// <param name="slotid">卡槽id(0,1,2,3) ----这个变为数量</param>
- /// <>cash是免冷却开宝箱所需要费的钻石数量 <>
- /// <param name="callback">成功回调函数</param>
- [Obsolete("2020.8.17")]
- public void Lottery(int type, int slotid, int cash = 0, Action<JObject> callback = null, Action<object> onfail = null)
- {
- Post(CmdCode.cmd_active_lottery, new object[] { type, slotid, cash }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6510] 新手抽奖
- /// </summary>
- /// <param name="type">道具的typeid</param>
- /// <param name="number">可选, 连抽次数</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete("2020.8.17")]
- public void LotteryNew(int type, int number = 1, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_new, new object[] { type, number }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6511] 抽奖 - 领取保底奖励
- /// </summary>
- /// <param name="type">道具的typeid</param>
- /// <param name="cishu">奖励所需次数, 注意不是自己的抽奖次数</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete("2020.8.17")]
- public void Lottery_baodi_jiangli(int type, int cishu = 10, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_baodi, new object[] { type, cishu }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6512] 抽奖 - 领取保底奖励
- /// </summary>
- /// <param name="slotid">卡槽id</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete]
- public void Lottery_draw_hero(int slotid, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_drawhero, new object[] { slotid }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6513] 抽奖 - 拉取最新的抽奖信息
- /// </summary>
- /// <param name="callback"></param>
- [Obsolete]
- public void Loterry_info(Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_info, new object[] { }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6514] 抽奖 - 解锁卡槽 , 备注, 暂时没有任何消耗, 发送请求直接开启
- /// </summary>
- /// <param name="slotid">卡槽id</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete]
- public void Lottery_unlock_slot(int slotid, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_unlock_slot, new object[] { slotid }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6515] 抽奖 - 新生招募, 加速搜索, 默认行为,扣除一枚打车券,将slot->opents设置为now()之前的值.
- /// </summary>
- /// <param name="slotid">卡槽id</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete]
- public void Lottery_speedup_search(int slotid, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_lottery_speedup_search, new object[] { slotid }, resp => callback?.Invoke(resp.result));
- }
- /// <summary>
- /// [6514] 活动 - 领取全服注册礼包
- /// </summary>
- /// <param name="slotid">卡槽id</param>
- /// <param name="callback">成功回调函数</param>
- [Obsolete("2020.8.18")]
- public void DrawRegGift(int slotid, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_drawRegGift, new object[] { slotid },
- resp =>
- callback?.Invoke(resp.result));
- }
- /// <summary>
- /// 6516 查询全服的注册人数
- /// </summary>
- /// <param name="callback"></param>
- [Obsolete("2020.8.18")]
- public void GetRegNumber(Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_getRegNumber, new object[] { },
- resp =>
- callback?.Invoke(resp.result));
- }
- /// <summary>
- /// 6515 领取 每天 时间段的 赠送体力活动
- /// </summary>
- /// <param name="callback"></param>
- public void DrawPresentTili(Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_presentTili, new object[] { },
- resp =>
- callback?.Invoke(resp.result));
- }
- #endregion
- /// <summary>
- /// [6512] 活动 - 凭兑换码领取礼包
- /// </summary>
- /// <param name="token">兑换码</param>
- /// <param name="callback">成功回调函数</param>
- public void DrawGiftByToken(string token, Action<string> callback = null)
- {
- Post(CmdCode.cmd_active_drawGiftByToken, new object[] { (int)EActivityType.CDKeyActive, token },
- 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.collectHero.InitData((JObject)resp.result["hero"],p); // 英雄
- var rewardstr = resp.result["reward"].ToString();
- callback?.Invoke(rewardstr);
- });
- }
- /// <summary>
- /// [6513] 活动 - 领取连续在线礼包
- /// </summary>
- /// <param name="giftId">礼包编号(1,2,3...顺序)</param>
- /// <param name="callback"></param>
- public void DrawOnlineGift(int giftId, Action<JObject> callback = null)
- {
- Post(CmdCode.cmd_active_drawOnlineGift, new object[] { giftId },
- 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.collectHero.InitData((JObject)resp.result["hero"],p); // 英雄
-
- var rewardstr = resp.result["reward"].ToString();
- p.PrivateState.onlineGiftts = resp.result["onlineGiftts"].ToObject<int>();
- p.PrivateState.onlineGiftIDs = resp.result["onlineGiftIDs"].ToObject<List<int>>();
- callback?.Invoke(resp.result);
- });
- }
- /// <summary>
- /// 刷新下在线信息
- /// </summary>
- /// <param name="callback"></param>
- public void GetOnlineInfo(Action<UIVO_ActivityMain.OnlineGiftInfo_RetVo> callback)
- {
- Post(CmdCode.cmd_active_getTodayOnlineInfos, new object[] { }, resp =>
- {
- var ret = resp.result.ToObject<UIVO_ActivityMain.OnlineGiftInfo_RetVo>();
- var p = UserProxy.Instance.player;
- p.PrivateState.onlineGiftts = ret.onlineGiftts;
- p.PrivateState.onlineGiftIDs = ret.onlineGiftIDs;
- callback?.Invoke(ret);
- });
- }
- /// <summary>
- /// 获取神庙所有的标签时间
- /// </summary>
- /// <param name="type"></param>
- public void GetShenmiaoData(Action<List<ShenMiaoVo>> callback)
- {
- Post(CmdCode.cmd_active_GetShenmiaoData, new object[] { }, resp =>
- {
- var p = UserProxy.Instance.player;
- p.shenmiaoInfo.Initlize(resp.result["shenmiaoInfo"]);
- Dictionary<int, Ins_Active> activeDic = p.shenmiaoInfo.activeDic;
- List<ShenMiaoVo> list = new List<ShenMiaoVo>();
- foreach (KeyValuePair<int, Ins_Active> kv in activeDic)
- {
- ShenMiaoVo vo = new ShenMiaoVo((EShenMiaoActiveType)kv.Key);
- list.Add(vo);
- }
- if (callback != null)
- {
- callback.Invoke(list);
- }
- });
- }
- /// <summary>
- /// 抽奖
- /// </summary>
- /// <param name="type">1 or 10</param>
- /// <param name="callback"></param>
- public void GetShenmiaoPrize(EShenMiaoActiveType type,int num, Action<List<ItemVo>> callback)
- {
- Post(CmdCode.cmd_active_shenmiaoDrawPrize, new object[] { (int)type,num }, resp =>
- {
- var p = UserProxy.Instance.player;
- p.shenmiaoInfo.Initlize(resp.result["shenmiaoInfo"]);
- JArray arr = JArray.Parse(resp.result["list"].ToString());
- List<ItemVo> list = new List<ItemVo>();
- foreach (JToken id in arr)
- {
- ItemVo vo = new ItemVo();
- vo.typeId = id.ToString();
- vo.count = 1;
- list.Add(vo);
- }
- if (callback != null)
- {
- callback.Invoke(list);
- }
- });
- }
- /// <summary>
- /// 神庙买券---临时
- /// </summary>
- /// <param name="costId"></param>
- /// <param name="num"></param>
- /// <param name="callback"></param>
- public void buyShenmiaoDrawTicket(int costId,int num,Action callback)
- {
- if (costId == 3320001)
- {
- costId = 801022;
- }
- else
- {
- costId = 801023;
- }
-
- Post(CmdCode.cmd_active_buyShenmiaoDrawTicket, new object[] { costId, num }, resp =>
- {
- var p = UserProxy.Instance.player;
- p.baseInfo.cash = int.Parse(resp.result["cash"].ToString());
- if (callback != null)
- {
- callback.Invoke();
- }
- });
- }
- /// <summary>
- /// 获取当前体力
- /// </summary>
- /// <param name="num"></param>
- /// <param name="callback"></param>
- public void GetCurTili(Action callback)
- {
- Post(CmdCode.cmd_active_GetCurTili, new object[] { }, resp =>
- {
- var p = UserProxy.Instance.player;
- p.baseInfo.tili = int.Parse(resp.result["tili"].ToString());
- p.PrivateState.TiliTime = long.Parse(resp.result["time"].ToString());
- callback?.Invoke();
- });
- }
- /// <summary>
- /// 购买体力
- /// </summary>
- /// <param name="callback"></param>
- public void BuyTili(Action callback)
- {
- Post(CmdCode.cmd_active_BuyTili, new object[] { }, resp =>
- {
- var p = UserProxy.Instance.player;
- p.baseInfo.tili = int.Parse(resp.result["tili"].ToString());
- p.PrivateState.TiliTime = long.Parse(resp.result["time"].ToString());
- p.baseInfo.cash = int.Parse(resp.result["cash"].ToString());
- p.PrivateState.buyTiliNum = int.Parse(resp.result["buyTiliNum"].ToString());
- callback?.Invoke();
- });
- }
- #region 内部类
- /// <summary>
- /// 活动UI
- /// </summary>
- public class UIVO_ActivityMain
- {
- /// <summary>
- /// 当前(正在进行)活动列表
- /// </summary>
- /// <returns></returns>
- public List<sm_activity> CurActivities() => GameConfigData.Ins.activity.Values.Where(a => a.IsOpen()).ToList();
- /// <summary>
- /// 7日签到信息
- /// </summary>
- public class Day7_UIVO
- {
- /// <summary>
- /// 7天信息列表
- /// </summary>
- public List<DayInfo> dayInfos = new[] { 1, 2, 3, 4, 5, 6, 7 }.ToList().ConvertAll<DayInfo>(i => new DayInfo(i));
- /// <summary>
- /// 每天的信息
- /// </summary>
- public class DayInfo
- {
- private Player p = UserProxy.Instance.player;
- /// <summary>
- /// 第几天
- /// </summary>
- public readonly int day;
- public DayInfo(int _day)
- {
- this.day = _day;
- }
- /// <summary>
- /// 配置数据
- /// </summary>
- public sm_activity_day7 Mo => sm_activity_day7.GetMoById(day);
- /// <summary>
- /// 奖励物品
- /// </summary>
- public ItemVo item => ItemVo.ParsItemContentStr(Mo.reward).First();
- /// <summary>
- /// 是否已经领取
- /// </summary>
- public bool HasDrawed => p.PrivateState.day7_drawed.Contains(day);
- /// <summary>
- /// 是否可以领取
- /// </summary>
- public bool CanDraw => p.PrivateState.LoginDays.Count >= day;
- }
- }
- /// <summary>
- /// 查询在线奖励信息返回值结构
- /// </summary>
- public class OnlineGiftInfo_RetVo
- {
- public int onlineGiftts;
- public List<int> onlineGiftIDs;
- /// <summary>
- /// 在线总时长
- /// </summary>
- public TimeSpan TotalOnlineTime => TimeSpan.FromSeconds(onlineGiftts);
- }
- /// <summary>
- /// 在线奖励
- /// </summary>
- public class OnlineGift_UIVO
- {
- /// <summary>
- /// 奖励信息
- /// </summary>
- public List<GiftInfo> giftInfos = GameConfigData.Ins.activity_onlinegift.Values.ToList().ConvertAll(mo => new GiftInfo(mo));
- public class GiftInfo
- {
- private readonly Player p = UserProxy.Instance.player;
- /// <summary>
- /// 时长(TimeSpan)(秒)
- /// </summary>
- public readonly sm_activity_onlinegift _mo;
- public GiftInfo(sm_activity_onlinegift _ts) => _mo = _ts;
- /// <summary>
- /// mo
- /// </summary>
- public sm_activity_onlinegift Mo => _mo;
- /// <summary>
- /// 换算为分钟
- /// </summary>
- public int Minutes => Mo?.onlineSec / 60 ?? 0;
- /// <summary>
- /// 奖励道具
- /// </summary>
- public ItemVo reward_item => ItemVo.ParsItemContentStr(Mo?.rewardstr ?? "").First();
- /// <summary>
- /// 是否已经领取奖励
- /// </summary>
- /// <returns></returns>
- public bool HasDrawed() => p.PrivateState.onlineGiftIDs.Contains(Mo.typeId);
- /// <summary>
- /// 是否可以领取奖励
- /// </summary>
- /// <returns></returns>
- public bool CanDraw() => p.PrivateState.onlineGiftts >= Mo.onlineSec;
- }
- }
- }
- #endregion
- }
|