//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, January 12, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using TableConfig; using System.Collections.Generic; namespace Snxxz.UI { public class ResourcesBackClass { public int ID;//ID public int RecoverCnt;// 可找回次数 public int ExtraCnt;// VIP额外次数 public string NameOfActivity;//活动名称 public int RelatedID;//关联日常任务表ID public int CanBackTimes;//能否找回次数 public int NormalCostJade;//绑玉找回普通次数价格 public int VipCostJade;//绑玉找回VIP次数找回价格 public RewardRecovery JadeReward;//绑玉找回奖励 public int CostCopper; //铜钱找回铜钱消耗 public RewardRecovery CopperReward;//铜钱找回奖励 public int ExtraData;//额外参数 public int ExtraData2;//额外参数2 public string[] RewardList;//奖励列表 public ulong TjgExp;//经验(脱机挂) public int Times;//可找回时间 public string DeadTime;//死亡时间 } public class RewardRecovery { public string exp; public string money; public ItemModelResourcesBack[] item; } public class ItemModelResourcesBack { public int ItemID; public string ItemCount; } public struct FairyJadeFindOneKey//一键找回(仙玉) { public int Index { get; set; } public int Number { get; set; } public int FairyJade { get; set; } public int IsOn { get; set; } } public struct CopperCashFindOneKey//一键找回(铜钱) { public int Index { get; set; } public int Number { get; set; } public int CopperCash { get; set; } public int IsOn { get; set; } } public enum ResourcesBackEnum { exp, money, item, sp, } [XLua.LuaCallCSharp] public class ResourcesBackModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary ResourcesBackDic = new Dictionary(); public static Action ResourcesBackUpdateEvent; public int ResourcesBackId = 0;//用来标记所选的找回资源ID const int RESOURCESBACK = 78003; const int RESOURCESBACK_1 = 780031; public Redpoint redPointStre1 = new Redpoint(78000, RESOURCESBACK);//资源找回红点 public Redpoint redPointStre2 = new Redpoint(RESOURCESBACK, RESOURCESBACK_1);//资源找回红点 public bool IsPointStre = true;//是否显示红点 public bool IsMainGo = false;//是否显示主界面入口 public override void Init() { ResourcesBackPanel.IsAccordingRedPoint += IsAccordingRedPoint; } public override void UnInit() { ResourcesBackPanel.IsAccordingRedPoint -= IsAccordingRedPoint; } private void IsAccordingRedPoint() { IsPointStre = false; IsMainGo = false; ResourcesBackRedPoint(); } public void OnBeforePlayerDataInitialize() { // IsPointStre = true; IsMainGo = false; ResourcesBackDic.Clear(); } public void OnPlayerLoginOk() { ResourcesBackRedPoint(); if (ResourcesBackUpdateEvent != null) { ResourcesBackUpdateEvent(); } } public void ResourcesBackHangUpExperience(HB410_tagMCTJGDeadPay vNetData)//找回挂机被击杀的经验 { int id = 1; var configRB = Config.Instance.Get(id);//资源找回表 if (ResourcesBackDic.ContainsKey(id)) { var resourcesBackDic = ResourcesBackDic[id]; resourcesBackDic.TjgExp = Experience(vNetData.Exp, vNetData.Exp1); resourcesBackDic.Times = (int)vNetData.Times; resourcesBackDic.DeadTime = BeKilledTime(TimeUtility.GetTime(vNetData.DeadTime)); if (vNetData.Exp <= 0 && vNetData.Exp1 <= 0) { resourcesBackDic.RecoverCnt = 0; } else { resourcesBackDic.RecoverCnt = 1; } } else { ResourcesBackClass resourcesBackClass = new ResourcesBackClass(); if (vNetData.Exp <= 0 && vNetData.Exp1 <= 0) { resourcesBackClass.RecoverCnt = 0; } else { resourcesBackClass.RecoverCnt = 1; } resourcesBackClass.ID = id; resourcesBackClass.NameOfActivity = Language.Get("OfflineHang_Z"); resourcesBackClass.RelatedID = configRB.RelatedID; resourcesBackClass.CanBackTimes = configRB.CanBackTimes; int timeNUmber = Mathf.CeilToInt((int)vNetData.Times / 3600); resourcesBackClass.NormalCostJade = configRB.NormalCostJade * timeNUmber; resourcesBackClass.VipCostJade = configRB.VipCostJade; resourcesBackClass.CostCopper = configRB.CostCopper * timeNUmber; resourcesBackClass.JadeReward = LitJson.JsonMapper.ToObject(configRB.JadeReward); resourcesBackClass.CopperReward = LitJson.JsonMapper.ToObject(configRB.CopperReward); resourcesBackClass.Times = (int)vNetData.Times; resourcesBackClass.DeadTime = BeKilledTime(TimeUtility.GetTime(vNetData.DeadTime)); resourcesBackClass.TjgExp = Experience(vNetData.Exp, vNetData.Exp1); resourcesBackClass.RewardList = ConfigParse.GetMultipleStr(configRB.RewardList); ResourcesBackDic.Add(id, resourcesBackClass); } ResourcesBackRedPoint(); } private string BeKilledTime(DateTime time)//被杀时间 { string killedTime = string.Empty; killedTime += time.Month + Language.Get("Month"); killedTime += time.Day + Language.Get("Day"); killedTime += Language.Get("BeKilled"); return killedTime; } private ulong Experience(ulong exp, ulong exp1)//1.普通经验,2.经验亿 { ulong expulong = 0; if (exp1 > 0) { expulong += exp1 * 100000000; } expulong += exp; return expulong; } private void ResourcesBackRedPoint()//资源找回红点 { redPointStre2.state = RedPointState.None; IsMainGo = false; if (IsPointStre && ResourcesBackDic.Count > 0) { foreach (var key in ResourcesBackDic.Keys) { if (ResourcesBackDic[key].RecoverCnt > 0) { redPointStre2.state = RedPointState.Simple; IsMainGo = true; return; } } } } List ResourcesIdList = new List(); public void ResourcesBackAcceptance(HA349_tagMCRecoverNum vNetData) { ResourcesIdList.Clear(); foreach (var key in ResourcesBackDic.Keys) { if (key != 1) { ResourcesIdList.Add(key); } } for (int i = 0; i < ResourcesIdList.Count; i++) { if (ResourcesBackDic.ContainsKey(ResourcesIdList[i])) { ResourcesBackDic.Remove(ResourcesIdList[i]); } } // ResourcesBackDic.Clear(); for (int i = 0; i < vNetData.NumInfo.Length; i++) { int id = vNetData.NumInfo[i].Index; if (id == 1) { continue; } if (ResourcesBackDic.ContainsKey(id)) { var resourcesBackDic = ResourcesBackDic[id]; resourcesBackDic.RecoverCnt = vNetData.NumInfo[i].RecoverCnt; resourcesBackDic.ExtraCnt = vNetData.NumInfo[i].ExtraCnt; resourcesBackDic.ExtraData = vNetData.NumInfo[i].ExtraData; resourcesBackDic.ExtraData2 = vNetData.NumInfo[i].ExtraData2; } else { var configRB = Config.Instance.Get(id);//资源找回表 ResourcesBackClass resourcesBackClass = new ResourcesBackClass(); resourcesBackClass.ID = id; resourcesBackClass.RecoverCnt = vNetData.NumInfo[i].RecoverCnt; resourcesBackClass.ExtraCnt = vNetData.NumInfo[i].ExtraCnt; resourcesBackClass.ExtraData = vNetData.NumInfo[i].ExtraData; resourcesBackClass.ExtraData2 = vNetData.NumInfo[i].ExtraData2; resourcesBackClass.RelatedID = configRB.RelatedID; var configDQC = Config.Instance.Get(configRB.RelatedID);//日常任务表 resourcesBackClass.NameOfActivity = configDQC.Title; resourcesBackClass.CanBackTimes = configRB.CanBackTimes; resourcesBackClass.NormalCostJade = configRB.NormalCostJade; resourcesBackClass.VipCostJade = configRB.VipCostJade; resourcesBackClass.JadeReward = LitJson.JsonMapper.ToObject(configRB.JadeReward); resourcesBackClass.CostCopper = configRB.CostCopper; resourcesBackClass.CopperReward = LitJson.JsonMapper.ToObject(configRB.CopperReward); resourcesBackClass.RewardList = ConfigParse.GetMultipleStr(configRB.RewardList); ResourcesBackDic.Add(id, resourcesBackClass); } } ResourcesBackRedPoint(); if (ResourcesBackUpdateEvent != null) { ResourcesBackUpdateEvent(); } } } }