using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
public static class AuctionLogicUtil
|
{
|
static int extraAuctionSecond = 0;
|
|
static EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
static PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
static public void Initialize()
|
{
|
var funcConfig = FuncConfigConfig.Get("AuctionHouse");
|
extraAuctionSecond = int.Parse(funcConfig.Numerical4);
|
}
|
|
static public string GetBiddingStateLabel(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return string.Empty;
|
}
|
if (IsAuctionItemWarmUp(item))
|
{
|
return Language.Get(item.auctionType == 0 ? "PMH_07" : "PMH_17");
|
}
|
if (item.biddingPrice != 0)
|
{
|
return Language.Get("PMH_06");
|
}
|
else
|
{
|
return Language.Get("PMH_05");
|
}
|
}
|
|
static public string GetBiddingTimeLabel(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return string.Empty;
|
}
|
|
var config = AuctionItemConfig.Get(item.itemId);
|
|
if (IsAuctionItemWarmUp(item))
|
{
|
var endTime = item.putAwayTime.AddTicks(TimeSpan.TicksPerMinute * config.NoticeSaleMinutes);
|
var seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds);
|
seconds = Mathf.Max(0, seconds);
|
return Language.Get("PMH_03", TimeUtility.SecondsToHMS(seconds));
|
}
|
|
var extraEndTime = item.biddingTime.AddTicks(extraAuctionSecond * TimeSpan.TicksPerSecond);
|
var normalTotalMinutes = config.NoticeSaleMinutes + (item.auctionType == 0 ? config.WorldSaleMinutes : config.FamilySaleMinutes);
|
var normalEndTime = item.putAwayTime.AddTicks(normalTotalMinutes * TimeSpan.TicksPerMinute);
|
var isExtraTime = extraEndTime > normalEndTime;
|
|
if (isExtraTime)
|
{
|
var seconds = Mathf.CeilToInt((float)(extraEndTime - TimeUtility.ServerNow).TotalSeconds);
|
seconds = Mathf.Max(0, seconds);
|
return Language.Get("PMH_18", TimeUtility.SecondsToHMS(seconds));
|
}
|
else
|
{
|
var seconds = Mathf.CeilToInt((float)(normalEndTime - TimeUtility.ServerNow).TotalSeconds);
|
seconds = Mathf.Max(0, seconds);
|
return Language.Get("PMH_04", TimeUtility.SecondsToHMS(seconds));
|
}
|
}
|
|
static public int GetBiddingRequireMoney(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return 0;
|
}
|
var config = AuctionItemConfig.Get(item.itemId);
|
if (item.biddingPrice == 0)
|
{
|
return config.BasePrice * item.itemCount;
|
}
|
else
|
{
|
return item.biddingPrice + config.BiddingAdd * item.itemCount;
|
}
|
}
|
|
static public bool IsAuctionItemWarmUp(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return false;
|
}
|
var config = AuctionItemConfig.Get(item.itemId);
|
if (config == null)
|
{
|
return false;
|
}
|
var ts = TimeUtility.ServerNow - item.putAwayTime;
|
return ts.TotalMinutes < config.NoticeSaleMinutes;
|
}
|
|
static public bool IsAuctionItemExtraTime(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return false;
|
}
|
var config = AuctionItemConfig.Get(item.itemId);
|
var extraEndTime = item.biddingTime.AddTicks(extraAuctionSecond * TimeSpan.TicksPerSecond);
|
var normalTotalMinutes = config.NoticeSaleMinutes +
|
item.auctionType == 0 ? config.WorldSaleMinutes : config.FamilySaleMinutes;
|
var normalEndTime = item.putAwayTime.AddTicks(normalTotalMinutes * TimeSpan.TicksPerMinute);
|
return extraEndTime > normalEndTime;
|
}
|
|
static public bool IsBiddingUpperLimit(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return false;
|
}
|
var config = AuctionItemConfig.Get(item.itemId);
|
if (config.BuyoutPrice == 0)
|
{
|
return false;
|
}
|
var requireMoney = GetBiddingRequireMoney(item);
|
return requireMoney >= config.BuyoutPrice * item.itemCount;
|
}
|
|
static public bool IsMyTopPrice(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return false;
|
}
|
return item.biddingPlayer == PlayerDatas.Instance.baseData.PlayerID;
|
}
|
|
static public bool IsSatisfyEquipBetterEquip(AuctionItem item)
|
{
|
if (item == null)
|
{
|
return false;
|
}
|
|
if (!ItemLogicUtility.Instance.IsRealmEquip(item.itemId))
|
{
|
return false;
|
}
|
|
var itemConfig = ItemConfig.Get(item.itemId);
|
if (itemConfig.JobLimit != 0 && itemConfig.JobLimit != PlayerDatas.Instance.baseData.Job)
|
{
|
return false;
|
}
|
|
var equipSet = equipModel.GetEquipSet(itemConfig.LV);
|
if (!equipSet.IsSlotUnLocked(itemConfig.EquipPlace))
|
{
|
return false;
|
}
|
|
var equipGuid = equipModel.GetEquip(new Int2(itemConfig.LV, itemConfig.EquipPlace));
|
if (string.IsNullOrEmpty(equipGuid))
|
{
|
return true;
|
}
|
|
var itemModel = packModel.GetItemByGuid(equipGuid);
|
if (itemModel == null)
|
{
|
return true;
|
}
|
|
if (itemConfig.ItemColor > itemModel.config.ItemColor)
|
{
|
return true;
|
}
|
|
return itemModel.config.SuiteiD == 0 && itemConfig.SuiteiD != 0;
|
}
|
|
static public bool IsQueryType(int index, int itemType)
|
{
|
var config = AuctionIndexConfig.Get(index);
|
if (config == null)
|
{
|
return false;
|
}
|
if (config.ItemType == null || config.ItemType.Length == 0)
|
{
|
return true;
|
}
|
for (int i = 0; i < config.ItemType.Length; i++)
|
{
|
if (itemType == config.ItemType[i])
|
{
|
return true;
|
}
|
}
|
return false;
|
}
|
}
|
}
|