using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
public class OperationFlashSale : OperationBase
|
{
|
public List<FlashSale> flashShops = new List<FlashSale>();
|
|
public bool TryGetFlashSale(DateTime time, out FlashSale flashSale)
|
{
|
flashSale = default(FlashSale);
|
var index = IndexOfFlashSale(time);
|
index = Mathf.Min(index, flashShops.Count - 1);
|
if (index >= 0)
|
{
|
flashSale = flashShops[index];
|
}
|
return index >= 0;
|
}
|
|
int IndexOfFlashSale(DateTime time)
|
{
|
if (allDay)
|
{
|
if (!dayReset)
|
{
|
return 0;
|
}
|
var index = IndexOfDays(time);
|
switch (resetType)
|
{
|
case 0:
|
return index;
|
case 1:
|
if (time.Hour < DayResetHour)
|
{
|
return Mathf.Max(0, index - 1);
|
}
|
else
|
{
|
return index;
|
}
|
default:
|
return index;
|
}
|
}
|
else
|
{
|
var index = 0;
|
for (int i = 0; i < times.Count; i++)
|
{
|
if (times[i].InTime(time))
|
{
|
index = i;
|
break;
|
}
|
}
|
return index;
|
}
|
}
|
|
public override bool SatisfyOpenCondition()
|
{
|
return PlayerDatas.Instance.baseData.LV >= limitLv;
|
}
|
|
public override void Reset()
|
{
|
base.Reset();
|
flashShops.Clear();
|
}
|
|
public override string ToDisplayTime()
|
{
|
var textBuilder = OperationTimeHepler.textBuilder;
|
textBuilder.Length = 0;
|
textBuilder.Append(startDate.ToDisplay());
|
if (startDate != endDate)
|
{
|
textBuilder.Append("—");
|
textBuilder.Append(endDate.ToDisplay());
|
}
|
return textBuilder.ToString();
|
}
|
|
public int GetSurplusTime()
|
{
|
var time = TimeUtility.ServerNow;
|
if (!InTime(time))
|
{
|
return 0;
|
}
|
var seconds = 0;
|
if (allDay)
|
{
|
if (!dayReset)
|
{
|
return GetSurplusTime(time);
|
}
|
if (resetType == 0)
|
{
|
DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
|
TimeUtility.Day, 0, 0, 0);
|
endOperationTime = endOperationTime.AddDays(1);
|
seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
|
}
|
else if (resetType == 1)
|
{
|
DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
|
TimeUtility.Day, DayResetHour, 0, 0);
|
if (time.Hour >= DayResetHour)
|
{
|
endOperationTime = endOperationTime.AddDays(1);
|
}
|
seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
|
}
|
}
|
else
|
{
|
for (int i = 0; i < times.Count; i++)
|
{
|
if (times[i].InTime(time))
|
{
|
DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
|
TimeUtility.Day, times[i].endHour, times[i].endMinute, 0);
|
seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
|
break;
|
}
|
}
|
}
|
return seconds;
|
}
|
|
public void ParsePackage(HAA11_tagMCSpringSaleInfo package)
|
{
|
for (int i = 0; i < package.ShopCount; i++)
|
{
|
var flashShop = new FlashSale();
|
var shop = package.ShopInfo[i];
|
flashShop.gifts = new FlashSaleGift[shop.GiftbagCount];
|
for (int k = 0; k < shop.GiftbagCount; k++)
|
{
|
var gift = new FlashSaleGift();
|
var pakGift = shop.GiftbagInfo[k];
|
gift.id = (int)pakGift.GiftID;
|
gift.limitNum = pakGift.BuyCountLimit;
|
gift.moneyNumber = (int)pakGift.MoneyNumber;
|
gift.moneyType = pakGift.MoneyType;
|
gift.moneyOriginal = (int)pakGift.MoneyOriginal;
|
gift.items = new FlashSaleItem[pakGift.GiftItemCount];
|
for (int q = 0; q < pakGift.GiftItemCount; q++)
|
{
|
var item = new FlashSaleItem();
|
item.itemId = (int)pakGift.ItemInfo[q].ItemID;
|
item.isBind = pakGift.ItemInfo[q].IsBind;
|
item.itemCount = pakGift.ItemInfo[q].ItemCount;
|
item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1;
|
gift.items[q] = item;
|
}
|
flashShop.gifts[k] = gift;
|
}
|
flashShops.Add(flashShop);
|
}
|
}
|
|
public struct FlashSale
|
{
|
public FlashSaleGift[] gifts;
|
}
|
|
public struct FlashSaleGift
|
{
|
public int id;
|
public int limitNum;
|
public int moneyType;
|
public int moneyNumber;
|
public int moneyOriginal;
|
public FlashSaleItem[] items;
|
}
|
|
public struct FlashSaleItem
|
{
|
public int itemId;
|
public int itemCount;
|
public int isBind;
|
public bool isMainItem;
|
}
|
}
|
}
|