//--------------------------------------------------------
|
// [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<Item_Class> 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<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>();
|
public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem();
|
public Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>();
|
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<CrossServerArenaConfig>();
|
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<Item_Class> itemClassList = new List<Item_Class>();
|
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<FuncConfigConfig>("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<int[][]>(_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);
|
}
|
|
}
|
|
|
|
|
|