local GuildAuction_Controller = {} local private = {} private.ConstAuctionPreview = { [LuaConst.ActivityType.GuildWar] = DataSheetManager.ConstData:GetDataByID("GuildAuctionPreviewGuildWar").IntValue, [LuaConst.ActivityType.GuildEscort] = DataSheetManager.ConstData:GetDataByID("GuildAuctionPreviewGuildConvoy").IntValue, [LuaConst.ActivityType.FightThrone] = DataSheetManager.ConstData:GetDataByID("GuildAuctionPreviewFightThrone").IntValue, [LuaConst.ActivityType.SlgGvE] = DataSheetManager.ConstData:GetDataByID("GuildAuctionPreviewGuildSLG").IntValue, } ---------------------------------- 系统函数 ---------------------------------------- function GuildAuction_Controller.OnStartup() private.auctionItem = nil if GameAppInfo.IsJapanesePackage() then --日本拍卖需要特殊增加文字说明 private.costDragonSuffix = "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_Pay) .. "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_Time) .. "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_CannotCancel) end end function GuildAuction_Controller.OnShutdown() private.auctionItem = nil end ---------------------------------------------------------------------------------- -- 一口价竞拍是否有自己 function GuildAuction_Controller.IsItemFixedPriceSelfInvolved(acidList) if acidList then for i, acid in ipairs(acidList) do if acid == BattleDataGetter.GetAcID() then return true end end end return false end function GuildAuction_Controller.TryOpenGuildAuctionPanel(paramTabType) if MDL.GuildAuction.IsOpenAuctionByType(paramTabType) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGuildAuctionBase, {paramTabType = paramTabType}) end end function GuildAuction_Controller.RequestAunctionItem(auctionItem) if not MDL.GuildAuction.IsValidAuctionItem(auctionItem) then return end if MDL.GuildAuction.IsSaleEnd(auctionItem) then return end local auctionData = auctionItem.auctionData local itemData = auctionItem.itemData local startPrice, highestPrice, pacePrice = MDL.GuildAuction.GetItemPrices(auctionItem) local requireConsume = auctionItem.curPrice > 0 and auctionItem.curPrice + pacePrice or startPrice local consumeItemData = DataSheetManager.ItemData:GetDataByID(auctionData.AuctionCoin) local consumeItemName = UIUtils.GetLocalizedTxt(Const_IDS[consumeItemData.Name]) requireConsume = requireConsume >= highestPrice and highestPrice or requireConsume local desc = "" if requireConsume < highestPrice then desc = string.FormatByIdsKey("IDS_Auction_BiddingConfirm", requireConsume, consumeItemName, auctionItem.itemName) else desc = string.FormatByIdsKey("IDS_Auction_BiddingToBuyOutPriceConfirm", requireConsume, consumeItemName, auctionItem.itemName) end private.auctionItem = auctionItem private.isCanBuy = MDL.Currency.GetMoneyCount(auctionData.AuctionCoin) >= requireConsume private.coinId = auctionData.AuctionCoin --日服龙玉的弹窗,不要勾选提示,每次都要提示 if CTL.Currency.IsDragonJadeUsedInJapan(private.coinId) then desc = desc .. private.costDragonSuffix UTL.MessageBox.ShowOKCancelBox(Const_IDS["IDS_Auction_CurrentPrice"], desc, private.RequestAuction) else if not MDL.GuildAuction.GetIsShowConfirmBox() then private.RequestAuction() return end UTL.MessageBox.ShowOKCancelToggleBox(Const_IDS["IDS_Auction_CurrentPrice"], desc, nil, private.RequestAuction, MDL.GuildAuction.DisableConfirmBox) end end function private.RequestAuction() if not private.isCanBuy then local consumeItemData = DataSheetManager.ItemData:GetDataByID(private.coinId) CTL.Sound.PlayGameSound("UI_invalid") CTL.Tips.AddTipsMsg(Const_IDS.IDS_Guild_CommonFail1, UIUtils.GetLocalizedTxt(Const_IDS[consumeItemData.Name])) return end MDL.GuildAuction.RequestAuction(private.auctionItem.auctionId, private.auctionItem.cfgId, private.auctionItem.curPrice) end function GuildAuction_Controller.RequestBuyImmediately(auctionItem) if not MDL.GuildAuction.IsValidAuctionItem(auctionItem) then return end if MDL.GuildAuction.IsSaleEnd(auctionItem) then return end local auctionData = auctionItem.auctionData local itemData = auctionItem.itemData local startPrice, highestPrice, pacePrice = MDL.GuildAuction.GetItemPrices(auctionItem) local requireConsume = auctionItem.ownerAcid == BattleDataGetter.GetAcID() and highestPrice - auctionItem.curPrice or highestPrice local consumeItemData = DataSheetManager.ItemData:GetDataByID(auctionData.AuctionCoin) local consumeItemName = UIUtils.GetLocalizedTxt(Const_IDS[consumeItemData.Name]) local desc = "" if not auctionItem.isFixedPrice then if auctionItem.ownerAcid == BattleDataGetter.GetAcID() then requireConsume = highestPrice - auctionItem.curPrice desc = string.FormatByIdsKey("IDS_Auction_BiddingToBuyConfirm", requireConsume, consumeItemName, auctionItem.itemName) else requireConsume = highestPrice desc = string.FormatByIdsKey("IDS_Auction_BuyConfirm", requireConsume, consumeItemName, auctionItem.itemName) end else requireConsume = highestPrice desc = string.FormatByIdsKey("IDS_Auction_BuyConfirm", requireConsume, consumeItemName, auctionItem.itemName) end private.isFixedPriceByMyself = auctionItem.ownerAcid == BattleDataGetter.GetAcID() private.auctionItem = auctionItem private.isCanBuy = MDL.Currency.GetMoneyCount(auctionData.AuctionCoin) >= requireConsume private.coinId = auctionData.AuctionCoin --日服龙玉的弹窗,不要勾选提示,每次都要提示 if CTL.Currency.IsDragonJadeUsedInJapan(private.coinId) then desc = desc .. private.costDragonSuffix UTL.MessageBox.ShowOKCancelBox(Const_IDS["IDS_Auction_BuyOutPrice"], desc, private.RequestBuy) return end if not MDL.GuildAuction.GetIsShowConfirmBox() then private.RequestBuy() return end UTL.MessageBox.ShowOKCancelToggleBox(Const_IDS["IDS_Auction_BuyOutPrice"], desc, nil, private.RequestBuy, MDL.GuildAuction.DisableConfirmBox) end function private.RequestBuy() if not private.isCanBuy then local consumeItemData = DataSheetManager.ItemData:GetDataByID(private.coinId) CTL.Sound.PlayGameSound("UI_invalid") CTL.Tips.AddTipsMsg(Const_IDS.IDS_Guild_CommonFail1, UIUtils.GetLocalizedTxt(Const_IDS[consumeItemData.Name])) return end MDL.GuildAuction.RequestBuyImmediately(private.auctionItem.auctionId, private.auctionItem.cfgId, private.auctionItem.curPrice, private.isFixedPriceByMyself) end function GuildAuction_Controller.IsClientShowAfterTimeSpan(startTimeID, dayCount) local timeConfig = DataSheetManager.TimeRefresh:GetDataByID(startTimeID) local serverRewardOpenTime = timeConfig.Day return dayCount >= serverRewardOpenTime end --拍卖在开了彩金将活动后 吕布碎片拍卖会换成彩金自选武将碎片 相关玩法奖励预览也要修改 --这个方法就是把吕布碎片物品id 换成 彩金将碎片id --34 周瑜武将id 38诸葛亮武将id 吕布碎片物品id3022,彩金万能碎片礼包自选421 吕布武器碎片5022 万能碎片 402 function GuildAuction_Controller.LvBuItemToSuperGoldenHeroItem(itemId) -- if MDL.HideGolden.IsShowGoldenByID(LuaConst.ShowGoldenType.Hero, 34) or MDL.HideGolden.IsShowGoldenByID(LuaConst.ShowGoldenType.Hero, 38) then -- if itemId == 5022 then -- return 402 -- elseif itemId == 3022 then -- return 421 -- end -- end return itemId end function GuildAuction_Controller.GetAuctionPreviewRange(activity) local low, high = 0, 0 if activity == LuaConst.ActivityType.SlgGvE and MDL.SlgGvE.GetCurBossGveMapID() == 36 then --JWS2-48521需求:GVE的拍卖分红PreviewRange,首战boss(id为36)特殊处理 low, high = private.GetGVEAuctionPreviewRange(activity) else if MDL.Guild.IsHasGuild() then local shareData = DataSheetManager.GuildAuctionShare:GetDataByID(activity) low = MDL.Guild.IsMyGuildFamous() and shareData.PrestigiedMinShare or shareData.NormalMinShare end high = private.ConstAuctionPreview[activity] or 0 end return low, high end function private.GetGVEAuctionPreviewRange(activity) local shareData = DataSheetManager.GuildAuctionShare:GetDataByID(activity) local low = MDL.Guild.IsMyGuildFamous() and shareData.FirstPrestigiedMinShare or shareData.FirstNormalMinShare local high = DataSheetManager.ConstData:GetDataByID("GuildAuctionPreviewGuildSLGFirst").IntValue return low, high end return GuildAuction_Controller