//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, March 05, 2018
|
//--------------------------------------------------------
|
|
//七天登入奖励
|
using System;
|
using System.Collections.Generic;
|
|
using vnxbqy.UI;
|
public class InSevenDayClass
|
{
|
public int RewardID;//天数
|
public ImpactRankModel.RankAwardItem RankAwardItem;//职业数据和奖励
|
public string Icon;//选项图标
|
public int Money;//奖励价值
|
}
|
|
|
public class InSevenDayModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
{
|
|
public static event Action AwardMessageUpdate;
|
public Dictionary<int, InSevenDayClass> InSevenDayDic = new Dictionary<int, InSevenDayClass>();//七天奖励信息
|
public Dictionary<int, int> RewardForDic = new Dictionary<int, int>();//0,可领,1已领,-1不可领
|
public int DayCnt = 0;//累计登陆天数
|
public bool IsOpenSevenDay = false;
|
private const int Redpoint_key1 = 20106;//七天登陆红点
|
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<int[][]>(_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;
|
}
|
}
|
}
|
|
|
|
|
|