using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using LitJson;
|
using System;
|
|
namespace Snxxz.UI
|
{
|
|
public class DayOnlineModel : Model
|
{
|
|
float recvTime; // 接收时的时间 用于计算时间差
|
int seconds; //接收时的在线秒
|
|
public event Action OnGetGiftUpdateEvent;
|
int DayOnlineAwardState; //每日在线奖励
|
|
public int[] timeArr; //原时间列表
|
public List<int> indexSort; //排序后的时间列表
|
//索引从1开始
|
public Dictionary<int, List<List<int>>> awards = new Dictionary<int, List<List<int>>>();
|
|
public override void Init()
|
{
|
|
TimeMgr.Instance.OnMinuteEvent += UpdateRedpoint;
|
|
awards.Clear();
|
var awardJson = JsonMapper.ToObject(OnlineAwardConfig.Get(0).Reward);
|
foreach (var _key in awardJson.Keys)
|
{
|
List<List<int>> info = new List<List<int>>();
|
var index = int.Parse(_key);
|
awards.Add(index, info);
|
for (int i = 0; i < awardJson[_key].Count; i++)
|
{
|
List<int> info2 = new List<int>();
|
info.Add(info2);
|
for (int j = 0; j < awardJson[_key][i].Count; j++)
|
{
|
info2.Add(int.Parse(awardJson[_key][i][j].ToString()));
|
}
|
}
|
}
|
|
timeArr = JsonMapper.ToObject<int[]>(OnlineAwardConfig.Get(0).Time);
|
|
}
|
|
public struct awardItem
|
{
|
public int itemID;
|
public int itemCount;
|
}
|
|
public override void UnInit()
|
{
|
TimeMgr.Instance.OnMinuteEvent -= UpdateRedpoint;
|
}
|
|
|
public void UpdateGetGift(HA308_tagMCOnlinePrize _package)
|
{
|
|
//awards.Clear();
|
//int day = 0;
|
//if (OnlineAwardConfig.Has(0))
|
// day = 0;
|
//else
|
// day = TimeUtility.CreateDays;
|
|
//if (!OnlineAwardConfig.Has(day))
|
// return;
|
|
|
//var awardJson = JsonMapper.ToObject(OnlineAwardConfig.Get(day).Reward);
|
//foreach (var _key in awardJson.Keys)
|
//{
|
// List<List<int>> info = new List<List<int>>();
|
// var index = int.Parse(_key);
|
// awards.Add(index, info);
|
// for (int i = 0; i < awardJson[_key].Count; i++)
|
// {
|
// List<int> info2 = new List<int>();
|
// info.Add(info2);
|
// for (int j = 0; j < awardJson[_key][i].Count; j++)
|
// {
|
// info2.Add(int.Parse(awardJson[_key][i][j].ToString()));
|
// }
|
// }
|
//}
|
|
//timeArr = JsonMapper.ToObject<int[]>(OnlineAwardConfig.Get(day).Time);
|
|
//recvTime = Time.realtimeSinceStartup;
|
//seconds = (int)_package.OnlineTime / 1000;
|
//if (_package.PrizeInfo.Length != 0)
|
// DayOnlineAwardState = (int)_package.PrizeInfo[0];
|
|
//SortIndexs();
|
//UpdateRedpoint();
|
//if (OnGetGiftUpdateEvent != null)
|
//{
|
// OnGetGiftUpdateEvent();
|
//}
|
}
|
|
//计时
|
public string GetTimeStr()
|
{
|
return TimeUtility.SecondsToHMS(seconds + (int)(Time.realtimeSinceStartup - recvTime));
|
}
|
|
public int GetOnlineMinute()
|
{
|
return (seconds + (int)(Time.realtimeSinceStartup - recvTime)) / 60;
|
}
|
|
|
//0 可领取 1不可领取 2已领取
|
public int GetAwardState(int index)
|
{
|
if ((DayOnlineAwardState & (1 << index)) != 0)
|
{
|
return 2;
|
}
|
if (GetOnlineMinute() < timeArr[index])
|
{
|
return 1;
|
}
|
|
return 0;
|
}
|
|
|
public void SortIndexs()
|
{
|
indexSort = new List<int>(timeArr);
|
indexSort.Sort(compareEx);
|
}
|
|
//根据领奖情况排序
|
private int compareEx(int x, int y)
|
{
|
int xindex = Array.IndexOf(timeArr, x);
|
int yindex = Array.IndexOf(timeArr, y);
|
|
int xresult = GetAwardState(xindex);
|
int yresult = GetAwardState(yindex);
|
|
if (xresult != yresult) return xresult.CompareTo(yresult);
|
|
return xindex.CompareTo(yindex);
|
}
|
|
public Redpoint redpoint = new Redpoint(201, 20112);
|
public void UpdateRedpoint()
|
{
|
redpoint.state = RedPointState.None;
|
for (int i = 0; i < timeArr.Length; i++)
|
{
|
if (GetAwardState(i) == 0)
|
{
|
redpoint.state = RedPointState.GetReward;
|
break;
|
}
|
}
|
|
}
|
|
}
|
}
|