//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, December 12, 2018 //-------------------------------------------------------- using System; using System.Collections.Generic; using TableConfig; using Snxxz.UI; //跨服PK奖励信息 [XLua.LuaCallCSharp] public class Item_Class { public int ItemId; public int ItemNumber; public int Isbind; } public class SeasonAwardClass//赛季奖励 { public int DanLv; public string Name; public int Score; public List ItemList; } public class RankingInformationClass//排名信息 { public int Rankin;//名次 public int Realm;//境界 public int PlayerID;//玩家ID public string ServerName;//服务器名 public int Job;//职业 public int Power;//战力 public int Segment;//段位 public int Integral;//积分 } public enum CrossRealmPKAwardStateEnum { DayPKCountAwardState=1, DayWinCountAwardState=2, DanLVAwardState=3, SeasonAwardState=4, } public class CrossServerRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary SegmentRewardDic = new Dictionary(); public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem(); public Dictionary RankInformationDic = new Dictionary(); public Action CrossRealmPKAwardStateUpdate;//领取奖励刷新 private uint DayPKCountAwardState; //每日匹配次数奖励记录 private uint DayWinCountAwardState; // 每日胜利次数奖励记录 private uint DanLVAwardState; // 段位达标奖励记录 private int SeasonAwardState; // 赛季结算奖励是否已领取 private bool m_IsOpenMatch; public bool IsOpenMatch { get { return m_IsOpenMatch; } set { m_IsOpenMatch = value; } } DateTime m_DateTime = DateTime.Now; public DateTime Date_Time { get { return m_DateTime; } set { m_DateTime = value; } } public override void Init() { GetSeasonAward(); GetSegmentReward(); } public void OnBeforePlayerDataInitialize() { } public void OnPlayerLoginOk() { } public override void UnInit() { } private void GetSeasonAward() { var config = Config.Instance.GetAllValues(); for (int i = 0; i < config.Count; i++) { var _config = config[i]; if (!SegmentRewardDic.ContainsKey(_config.DanLV)) { SeasonAwardClass seasonAwardClass = new SeasonAwardClass(); seasonAwardClass.DanLv = _config.DanLV; seasonAwardClass.Name = _config.Name; seasonAwardClass.Score = _config.LVUpScore; var _jsonData = LitJson.JsonMapper.ToObject(_config.SeasonAwardList); List itemClassList = new List(); for (int j = 0; j < _jsonData.Count; j++) { Item_Class itemClass = new Item_Class(); itemClass.ItemId = int.Parse((_jsonData[j][0]).ToString()); itemClass.ItemNumber = int.Parse((_jsonData[j][1]).ToString()); itemClass.Isbind = int.Parse((_jsonData[j][2]).ToString()); itemClassList.Add(itemClass); } seasonAwardClass.ItemList = itemClassList; SegmentRewardDic.Add(_config.DanLV, seasonAwardClass); } } } private void GetSegmentReward() { var CrossRealmPKAward = Config.Instance.Get("CrossRealmPKAward"); ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem(); var _jsonData = LitJson.JsonMapper.ToObject(CrossRealmPKAward.Numerical3); foreach (string key in _jsonData.Keys) { var _ranking = int.Parse(key); var _itemArray = LitJson.JsonMapper.ToObject(_jsonData[key].ToJson()); for (int j = 0; j < _itemArray.Length; j++) { _award.Add(_ranking, new AwardItem() { item = new Item(_itemArray[j][0], _itemArray[j][1]), isBind = _itemArray[j][2], }); } } SeasonRewardDic = _award; } public void ResetTime() { Date_Time= TimeUtility.ServerNow; } public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102跨服PK玩家奖励记录 { DayPKCountAwardState = info.DayPKCountAwardState; DayWinCountAwardState = info.DayWinCountAwardState; DanLVAwardState = info.DanLVAwardState; SeasonAwardState = info.SeasonAwardState; if (CrossRealmPKAwardStateUpdate != null) { CrossRealmPKAwardStateUpdate(); } } public bool IsAwardState(CrossRealmPKAwardStateEnum _cross, int Index)//是否已领取奖励 { bool _bool = false; if (_cross == CrossRealmPKAwardStateEnum.SeasonAwardState) { if (SeasonAwardState == 1) { _bool = true; } else { _bool = false; } } else { switch (_cross) { case CrossRealmPKAwardStateEnum.DayPKCountAwardState: _bool = MathUtility.GetBitValue(DayPKCountAwardState, (ushort)Index); break; case CrossRealmPKAwardStateEnum.DayWinCountAwardState: _bool = MathUtility.GetBitValue(DayWinCountAwardState, (ushort)Index); break; case CrossRealmPKAwardStateEnum.DanLVAwardState: _bool = MathUtility.GetBitValue(DayWinCountAwardState, (ushort)Index); break; } } return _bool; } public void CrossRealmPKGetAward(CrossRealmPKAwardStateEnum _cross, int Index)//领奖发包 { CC103_tagCMCrossRealmPKGetAward c103 = new CC103_tagCMCrossRealmPKGetAward(); c103.AwardType = (byte)_cross; c103.AwardData = (byte)Index; GameNetSystem.Instance.SendInfo(c103); } }