//--------------------------------------------------------  
 | 
//    [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;//奖励价值  
 | 
}  
 | 
  
 | 
  
 | 
    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;  
 | 
        }  
 | 
    }  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 |