using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public static class AuctionLogicUtil { static int extraAuctionSecond = 0; static EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } static PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } 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 string.Empty; } if (item.biddingPrice != 0) { return Language.Get("PMH_06"); } else { return string.Empty; } } 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; } } }