------------------------------------------------ --作者: 杨全福 --日期: 2021-02-23 --文件: AuctionItem.lua --模块: AuctionItem --描述: 拍卖行道具 ------------------------------------------------ local L_ItemCache = List:New() local AuctionItem = { --是否锁定,锁定的不能被free IsLocked = false, --上架人ID OwnerID = 0, --物品唯一ID ID = 0, --物品配置ID CfgID = 0, --物品实例 ItemInst = nil, --所属公会 OwnerGuild = 0, --当前价格 CurPrice = 0, --当前出价人ID CurPriceOwner = 0, --自身是否是出价最高的 IsSelfPriceOwner = false, --参与过竞价的玩家列表 JionPlayerList = nil, --自身是否参与了竞价 IsSefJion = false, --最低竞价 MinPrice = 0, --竞拍增加值类型:0价格,1万分比 SinglePriceType = 0, --每次竞价增加值 SinglePrice = 0, --一口价 MaxPrice = 0, --是否有开始CD HaveStartCD = false, --物品配置 ItemCfg = nil, --装备配置 EquipCfg = nil, --拍卖总时间 AuctionAllTime = 0, --剩余时间 ServerRemainTime = 0, --同步的时间 SyncTime = 0, --是否有密码 HasMiMa = false, --使用的货币配置 UseCoinCfg = nil, --使用的拍卖类型,0固定价格,1自定义价格 UsePriceType = 0, } function AuctionItem.Get() local _m = nil local _haveCount = #L_ItemCache if _haveCount > 0 then _m = L_ItemCache[_haveCount] L_ItemCache:RemoveAt(_haveCount) else _m = Utils.DeepCopy(AuctionItem) end return _m end function AuctionItem.Free(item, force) if item.IsLocked and not force then return end item.ItemInst = nil item.ID = 0 item.CfgID = 0 item.OwnerID = 0 item.ServerRemainTime = 0 item.SyncTime = 0 item.CurPrice = 0 item.CurPriceOwner = 0 item.ItemCfg = nil item.EquipCfg = nil item.HasMiMa = false L_ItemCache:Add(item) end --刷新数据 function AuctionItem:RefreshData(msgInfo) local _lpId = GameCenter.GameSceneSystem:GetLocalPlayerID() self.ItemInst = LuaItemBase.CreateItemBaseByMsg(msgInfo.item) self.CfgID = self.ItemInst.CfgID self.OwnerGuild = msgInfo.guildId self.ID = msgInfo.id self.OwnerID = msgInfo.ownId self.ServerRemainTime = msgInfo.time self.SyncTime = Time.GetRealtimeSinceStartup() self.CurPrice = msgInfo.price self.CurPriceOwner = msgInfo.roleId self.IsSelfPriceOwner = (self.CurPriceOwner == _lpId) self.HasMiMa = msgInfo.isPassword self.JionPlayerList = {} if self.CurPriceOwner > 0 then self.JionPlayerList[self.CurPriceOwner] = true end if msgInfo.roleIds ~= nil then for i = 1, #msgInfo.roleIds do self.JionPlayerList[msgInfo.roleIds[i]] = true end end local _itemCount = self.ItemInst.Count self.IsSefJion = self.JionPlayerList[_lpId] or false if self.ItemInst.Type == ItemType.Equip or self.ItemInst.Type == ItemType.HolyEquip or self.ItemInst.Type == ItemType.UnrealEquip then self.EquipCfg = DataConfig.DataEquip[self.CfgID] if self.EquipCfg ~= nil then self.MinPrice = self.EquipCfg.AuctionMinPrice * _itemCount self.SinglePrice = self.EquipCfg.AuctionSinglePrice * _itemCount self.SinglePriceType = self.EquipCfg.AuctionSingleType self.MaxPrice = self.EquipCfg.AuctionMaxPrice * _itemCount --有交易密码时不会有开始cd self.HaveStartCD = self.EquipCfg.AuctionCountdown ~= 0 and not self.HasMiMa if self.OwnerGuild > 0 then --仙盟拍卖 self.AuctionAllTime = self.EquipCfg.AuctionGuildAllTime else --世界拍卖 self.AuctionAllTime = self.EquipCfg.AuctionAllTime end self.UseCoinCfg = DataConfig.DataItem[self.EquipCfg.AuctionUseCoin] self.UsePriceType = self.EquipCfg.AuctionPriceType end else self.ItemCfg = DataConfig.DataItem[self.CfgID] if self.ItemCfg ~= nil then self.MinPrice = self.ItemCfg.AuctionMinPrice * _itemCount self.SinglePrice = self.ItemCfg.AuctionSinglePrice * _itemCount self.SinglePriceType = self.ItemCfg.AuctionSingleType self.MaxPrice = self.ItemCfg.AuctionMaxPrice * _itemCount --有交易密码时不会有开始cd self.HaveStartCD = self.ItemCfg.AuctionCountdown ~= 0 and not self.HasMiMa if self.OwnerGuild > 0 then --仙盟拍卖 self.AuctionAllTime = self.ItemCfg.AuctionGuildAllTime else --世界拍卖 self.AuctionAllTime = self.ItemCfg.AuctionAllTime end self.UseCoinCfg = DataConfig.DataItem[self.ItemCfg.AuctionUseCoin] self.UsePriceType = self.ItemCfg.AuctionPriceType end end if self.CurPrice <= 0 then self.CurPrice = self.MinPrice end end --刷新假数据 function AuctionItem:RefreshTempData(msgInfo) --时间设置为最大 self.ServerRemainTime = self.AuctionAllTime self.SyncTime = Time.GetRealtimeSinceStartup() --价格设置为最后一次竞价的价格 self.CurPrice = self.MaxPrice - self.SinglePrice CurPriceOwner = 1 end --剩余时间 function AuctionItem:GetRemainTime() return self.ServerRemainTime - (Time.GetRealtimeSinceStartup() - self.SyncTime) end return AuctionItem