//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, March 05, 2018 //-------------------------------------------------------- //七天登入奖励 using System; using System.Collections.Generic; using Snxxz.UI; public class InSevenDayClass { public int RewardID;//天数 public ImpactRankModel.RankAwardItem RankAwardItem;//职业数据和奖励 public string Icon;//选项图标 public int Money;//奖励价值 } [XLua.LuaCallCSharp] public class InSevenDayModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public static event Action AwardMessageUpdate; public Dictionary InSevenDayDic = new Dictionary();//七天奖励信息 public Dictionary RewardForDic = new Dictionary();//0,可领,1已领,-1不可领 public int DayCnt = 0;//累计登陆天数 public bool IsOpenSevenDay = false; private const int Redpoint_key1 = 20103;//七天登陆红点 public Redpoint redPointStre1 = new Redpoint(201, Redpoint_key1); public bool IsMainGo = false;//是否显示主界面入口 public override void Init() { FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange; DataReading(); RewardForDic.Add(1, -1); RewardForDic.Add(2, -1); RewardForDic.Add(3, -1); RewardForDic.Add(4, -1); RewardForDic.Add(5, -1); RewardForDic.Add(6, -1); RewardForDic.Add(7, -1); } public void OnBeforePlayerDataInitialize() { IsOpenSevenDay = false; IsMainGo = false; RewardForDic.Clear(); RewardForDic.Add(1, -1); RewardForDic.Add(2, -1); RewardForDic.Add(3, -1); RewardForDic.Add(4, -1); RewardForDic.Add(5, -1); RewardForDic.Add(6, -1); RewardForDic.Add(7, -1); } public void OnPlayerLoginOk() { if (redPointStre1.state == RedPointState.Simple || redPointStre1.state == RedPointState.GetReward) { IsMainGo = true; } } public override void UnInit() { FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange; } private void OnFuncStateChange(int obj) { if (obj == 115) { InSevenRedPoint(); } } private void DataReading() { if (InSevenDayDic.Count != 0) { return; } var InSevenConfig = InSevenDaysConfig.GetValues(); foreach (var value in InSevenConfig) { if (!InSevenDayDic.ContainsKey(value.RewardID)) { InSevenDayClass inSevenDayClass = new InSevenDayClass(); inSevenDayClass.RewardID = value.RewardID; inSevenDayClass.Icon = value.ICON; inSevenDayClass.Money = value.Money; ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem(); var _jsonData = LitJson.JsonMapper.ToObject(value.Reward); foreach (string key in _jsonData.Keys) { var _job = int.Parse(key); var _itemArray = LitJson.JsonMapper.ToObject(_jsonData[key].ToJson()); for (int j = 0; j < _itemArray.Length; j++) { _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1])); } } inSevenDayClass.RankAwardItem = _award; InSevenDayDic.Add(value.RewardID, inSevenDayClass); } } } public void GetAwardMessage(int dayCnt, int awardInfo) { DayCnt = dayCnt; if (awardInfo >= 127) { IsOpenSevenDay = true; } else { IsOpenSevenDay = false; } AddAAwardInfo(awardInfo); InSevenRedPoint(); if (AwardMessageUpdate != null) { AwardMessageUpdate(); } } private void AddAAwardInfo(int awardInfo) { int type = int.Parse( System.Convert.ToString(awardInfo, 2)); string typeStr=string.Empty; if (type == 0) { typeStr = "0"; } while (type!=0) { typeStr += type % 10; type = type / 10; } while (typeStr.Length < DayCnt) { typeStr += "0"; } for (int i = 0; i < typeStr.Length; i++) { if (i < RewardForDic.Count) { RewardForDic[i+1] = int.Parse(typeStr[i].ToString()); } } } public void ReceiveAward(int Index)//领取奖励向服务端发包 { CAA01_tagCMGetTotalLoginDayAward CAa01 = new CAA01_tagCMGetTotalLoginDayAward(); CAa01.Index = (byte)Index; GameNetSystem.Instance.SendInfo(CAa01); } private void InSevenRedPoint()//七天登陆红点 { if (!FuncOpen.Instance.IsFuncOpen(115)) { return; } redPointStre1.state = RedPointState.None; bool Bool = false; foreach (var key in RewardForDic.Keys) { if (RewardForDic[key] == 0) { Bool = true; } } if (Bool) { redPointStre1.state = RedPointState.GetReward; } } }