348 lines
11 KiB
Plaintext
348 lines
11 KiB
Plaintext
autoImport("GuildDonateItemCell");
|
|
autoImport("GuildDonateMemberCell");
|
|
autoImport("ItemCell");
|
|
|
|
GuildDonateConfirmTip = class("GuildDonateConfirmTip", CoreView);
|
|
|
|
autoImport("GainWayTip");
|
|
|
|
GuildDonateConfirmEvent = {
|
|
Confirm = "GuildDonateConfirmEvent_Confirm",
|
|
}
|
|
|
|
function GuildDonateConfirmTip:ctor(go)
|
|
GuildDonateConfirmTip.super.ctor(self, go);
|
|
self:Init();
|
|
end
|
|
|
|
function GuildDonateConfirmTip:Init()
|
|
local confirmTipCellGO = self:FindGO("SimpleItem");
|
|
self.closecomp = self.gameObject:GetComponent(CloseWhenClickOtherPlace);
|
|
self.closecomp.callBack = function (go)
|
|
self:Hide();
|
|
end
|
|
|
|
self.confirmTipCell = ItemCell.new(confirmTipCellGO);
|
|
self.confirmItemName = self:FindComponent("ItemName", UILabel);
|
|
self.confirmNeedNum = self:FindComponent("NeedNum", UILabel);
|
|
self.confirmHaveNum = self:FindComponent("HaveNum", UILabel);
|
|
self.confirmGuildReward = self:FindComponent("GuildReward", UILabel);
|
|
self.confirmMyReward = self:FindComponent("MyReward", UILabel);
|
|
self.donateButton = self:FindGO("DonateButton");
|
|
local getWayButton = self:FindGO("GetWayButton");
|
|
self:AddClickEvent(getWayButton, function (go)
|
|
if(self.selectGuildItemData)then
|
|
local itemData = ItemData.new("DonateItem", self.selectGuildItemData.itemid);
|
|
self:ShowItemGetWay(itemData);
|
|
end
|
|
end);
|
|
local closeTipButton = self:FindGO("CloseTip");
|
|
self:AddClickEvent(closeTipButton, function (go)
|
|
self:HideItemGetWay();
|
|
self.gameObject:SetActive(false);
|
|
end);
|
|
|
|
local confirmButton = self:FindGO("DonateButton");
|
|
self:AddClickEvent(confirmButton, function (go)
|
|
self:PassEvent(GuildDonateConfirmEvent.Confirm);
|
|
end);
|
|
|
|
self.gpContainer = self:FindGO("GainWayContainer");
|
|
end
|
|
|
|
function GuildDonateConfirmTip:AddIgnoreBounds(obj)
|
|
if(self.gameObject and self.closecomp)then
|
|
self.closecomp:AddTarget(obj.transform);
|
|
end
|
|
end
|
|
|
|
function GuildDonateConfirmTip:SetData(guildItemData)
|
|
self.selectGuildItemData = guildItemData;
|
|
|
|
if(guildItemData)then
|
|
local itemData = ItemData.new("DonateItem", guildItemData.itemid);
|
|
self.confirmTipCell:SetData(itemData);
|
|
self.confirmItemName.text = itemData.staticData.NameZh;
|
|
self.confirmNeedNum.text = string.format(ZhString.GuildDonateConfirmTip_NeedNum, guildItemData.itemcount);
|
|
|
|
local havNum = GuildDonateItemCell.GetDonateItemNum(guildItemData.itemid);
|
|
self.confirmHaveNum.text = string.format(ZhString.GuildDonateConfirmTip_HaveNum, havNum);
|
|
|
|
local detailInfo = FunctionDonateItem.Me():GetDetailInfo(guildItemData.configid)
|
|
if(detailInfo)then
|
|
self:UpdateConfirmDetailInfo(detailInfo);
|
|
else
|
|
self.confirmGuildReward.text = ZhString.GuildDonateConfirmTip_GuildReward;
|
|
self.confirmMyReward.text = "";
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildDonateConfirmTip:UpdateConfirmDetailInfo(detailInfo)
|
|
local asset = detailInfo and detailInfo.asset;
|
|
asset = asset;
|
|
if(asset)then
|
|
for i=1,#asset do
|
|
local itemId, num = asset[i][1],asset[i][2];
|
|
if(itemId and num)then
|
|
local itemStaticData = Table_Item[itemId];
|
|
if(itemStaticData)then
|
|
self.confirmGuildReward.text = ZhString.GuildDonateConfirmTip_GuildReward .. itemStaticData.NameZh .. "+" .. num;
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
local itemStr = "";
|
|
local con = detailInfo and detailInfo.con;
|
|
if(con)then
|
|
for i=1,#con do
|
|
local id, count = con[i][1], con[i][2];
|
|
itemStr = itemStr..string.format(ZhString.GuildDonateConfirmTip_MyReward, Table_Item[id].NameZh, count);
|
|
if(i<#con)then
|
|
itemStr = itemStr..ZhString.GuildDonateConfirmTip_And.."\n";
|
|
end
|
|
end
|
|
end
|
|
|
|
self.confirmMyReward.text = itemStr;
|
|
end
|
|
|
|
function GuildDonateConfirmTip:ShowItemGetWay(itemData)
|
|
if(not self.bdt)then
|
|
self.bdt = GainWayTip.new(self.gpContainer)
|
|
self.bdt:AddEventListener(GainWayTip.CloseGainWay, function ()
|
|
self.bdt = nil;
|
|
self.closecomp:ReCalculateBound();
|
|
end, self);
|
|
end
|
|
self.bdt:SetData(itemData.staticData.id);
|
|
self.bdt:Show();
|
|
|
|
self.bdt:AddIgnoreBounds(self.gameObject);
|
|
self:AddIgnoreBounds(self.bdt.gameObject);
|
|
end
|
|
|
|
function GuildDonateConfirmTip:HideItemGetWay()
|
|
if(self.bdt)then
|
|
self.bdt:OnExit();
|
|
self.bdt = nil;
|
|
end
|
|
end
|
|
|
|
function GuildDonateConfirmTip:Show()
|
|
self.gameObject:SetActive(true);
|
|
end
|
|
|
|
function GuildDonateConfirmTip:Hide()
|
|
self.gameObject:SetActive(false);
|
|
self:HideItemGetWay();
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
GuildDonateView = class("GuildDonateView", ContainerView)
|
|
|
|
GuildDonateView.ViewType = UIViewType.NormalLayer
|
|
|
|
function GuildDonateView:Init()
|
|
self:InitView();
|
|
self:MapEvent();
|
|
end
|
|
|
|
function GuildDonateView:InitView()
|
|
local donation = self:FindGO("Donation");
|
|
self.donationlabel = self:FindComponent("Label", UILabel, donation);
|
|
self.noneTip = self:FindGO("NoneTip");
|
|
|
|
self.refreshTimelabel = self:FindComponent("NextRefreshTime", UILabel);
|
|
self.orderCount = self:FindComponent("OrderCount", UILabel);
|
|
|
|
self.rankBord = self:FindGO("RankBord");
|
|
self.rankButton = self:FindGO("RankButton");
|
|
self:AddClickEvent(self.rankButton,function (go)
|
|
self.rankBord:SetActive(true);
|
|
end)
|
|
|
|
local donateItemGrid = self:FindComponent("DonateItemGrid", UIGrid);
|
|
self.donateItemCtl = UIGridListCtrl.new(donateItemGrid, GuildDonateItemCell, "GuildDonateItemCell")
|
|
self.donateItemCtl:AddEventListener(MouseEvent.MouseClick, self.ClickDonateItemCell, self)
|
|
|
|
local rankGrid = self:FindComponent("RankGrid", UIGrid);
|
|
self.rankCtl = UIGridListCtrl.new(rankGrid, GuildDonateMemberCell, "GuildDonateMemberCell")
|
|
|
|
self.confirmTip = GuildDonateConfirmTip.new(self:FindGO("ConfirmTip"));
|
|
self.confirmTip:AddEventListener(GuildDonateConfirmEvent.Confirm, self.DoDonate, self);
|
|
end
|
|
|
|
function GuildDonateView:DoDonate()
|
|
if(self.selectGuildItemData)then
|
|
local itemid = self.selectGuildItemData.itemid;
|
|
local hasNum = GuildDonateItemCell.GetDonateItemNum(itemid);
|
|
local needNum = self.selectGuildItemData.itemcount;
|
|
if(hasNum < needNum)then
|
|
local needItem = {id = itemid, count = needNum-hasNum};
|
|
if(QuickBuyProxy.Instance:TryOpenView({needItem}))then
|
|
return;
|
|
end
|
|
MsgManager.ShowMsgByIDTable(8);
|
|
else
|
|
local configid = self.selectGuildItemData.configid;
|
|
local time = self.selectGuildItemData.time;
|
|
ServiceGuildCmdProxy.Instance:CallDonateGuildCmd(configid, time);
|
|
|
|
self.confirmTip:Hide();
|
|
if(self.selectGuildItemCell)then
|
|
self.selectGuildItemCell:ActiveGrey(true);
|
|
end
|
|
|
|
self.selectGuildItemData = nil;
|
|
self.selectGuildItemCell = nil;
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildDonateView:ClickDonateItemCell(cellCtl)
|
|
local data = cellCtl.data;
|
|
self.selectGuildItemData = data;
|
|
self.selectGuildItemCell = cellCtl;
|
|
|
|
if(data)then
|
|
self.confirmTip:SetData(data);
|
|
self.confirmTip:Show();
|
|
self.confirmTip:AddIgnoreBounds(cellCtl.gameObject);
|
|
end
|
|
end
|
|
|
|
function GuildDonateView:UpdateGuildDonateInfo()
|
|
local myGuildData = GuildProxy.Instance.myGuildData;
|
|
if(myGuildData)then
|
|
local myGuildMemberData = myGuildData:GetMemberByGuid(Game.Myself.data.id);
|
|
if(myGuildMemberData)then
|
|
self.donationlabel.text = tostring(myGuildMemberData.contribution);
|
|
end
|
|
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
TimeTickManager.Me():CreateTick(0, 1000, self.RefreshNextDonateTime, self, 1)
|
|
end
|
|
end
|
|
|
|
function GuildDonateView:RefreshNextDonateTime()
|
|
local myGuildData = GuildProxy.Instance.myGuildData;
|
|
|
|
local nextRefreshTime = myGuildData:GetNextDonateTime();
|
|
local leftDay, leftHour, leftMin, leftSec = ClientTimeUtil.GetFormatRefreshTimeStr( nextRefreshTime )
|
|
if(leftDay > 0)then
|
|
self.refreshTimelabel.text = string.format("%s %02d:%02d:%02d",
|
|
ZhString.GuildDonateView_NextRefreshTimeTip, leftDay, leftHour, leftMin);
|
|
else
|
|
self.refreshTimelabel.text = string.format("%s %02d:%02d:%02d",
|
|
ZhString.GuildDonateView_NextRefreshTimeTip, leftHour, leftMin, leftSec);
|
|
end
|
|
end
|
|
|
|
function GuildDonateView:UpdateDonateItemList()
|
|
local donateItemList = GuildProxy.Instance:GetGuildDonateItemList() or {};
|
|
self.donateItemCtl:ResetDatas(donateItemList);
|
|
|
|
local count = 0;
|
|
for i=1, #donateItemList do
|
|
local item = donateItemList[i];
|
|
if(item and type(item.count) == "number" and item.count<=0)then
|
|
count = count + 1;
|
|
end
|
|
end
|
|
self.noneTip:SetActive(count == 0);
|
|
local myGuildData = GuildProxy.Instance.myGuildData;
|
|
if(not myGuildData)then
|
|
return;
|
|
end
|
|
local config = myGuildData:GetGuildConfig();
|
|
if(not config)then
|
|
return;
|
|
end
|
|
self.orderCount.text = string.format(ZhString.GuildDonateView_OrderCountTip, count, config.DonateListLimit);
|
|
end
|
|
|
|
function GuildDonateView:UpdateDonateRankList()
|
|
local memberList = GuildProxy.Instance.myGuildData:GetMemberList();
|
|
table.sort(memberList, function (a,b)
|
|
return a.weekasset > b.weekasset;
|
|
end)
|
|
local rankList = {};
|
|
for i=1,#memberList do
|
|
local rankData = {};
|
|
rankData.index = i;
|
|
rankData.memberData = memberList[i];
|
|
table.insert(rankList, rankData);
|
|
end
|
|
self.rankCtl:ResetDatas(rankList);
|
|
end
|
|
|
|
function GuildDonateView:MapEvent()
|
|
self:AddListenEvt(ServiceEvent.GuildCmdDonateListGuildCmd, self.UpdateDonateItemList);
|
|
self:AddListenEvt(ServiceEvent.GuildCmdUpdateDonateItemGuildCmd, self.UpdateDonateItemList);
|
|
|
|
self:AddListenEvt(ServiceEvent.GuildCmdGuildDataUpdateGuildCmd, self.UpdateDonateItemList);
|
|
self:AddListenEvt(ServiceEvent.GuildCmdGuildMemberDataUpdateGuildCmd, self.HandleMemeberDataUpdate);
|
|
|
|
self:AddListenEvt(ItemEvent.ItemUpdate, self.UpdateDonateItemList);
|
|
|
|
self:AddListenEvt(ServiceEvent.GuildCmdApplyRewardConGuildCmd, self.HandleUpdateDonateTip);
|
|
end
|
|
|
|
function GuildDonateView:HandleUpdateDonateTip(note)
|
|
if(self.selectGuildItemCell == nil)then
|
|
return;
|
|
end
|
|
self:ClickDonateItemCell(self.selectGuildItemCell)
|
|
end
|
|
|
|
function GuildDonateView:HandleRewardConUpdate(note)
|
|
if(self.selectGuildItemData)then
|
|
local configid = self.selectGuildItemData.configid;
|
|
local detailInfo = FunctionDonateItem.Me():GetDetailInfo(configid)
|
|
self.confirmTip:UpdateConfirmDetailInfo(detailInfo);
|
|
end
|
|
end
|
|
|
|
function GuildDonateView:HandleGuildDataUpdate()
|
|
self:UpdateDonateItemList();
|
|
self:UpdateGuildDonateInfo();
|
|
end
|
|
|
|
function GuildDonateView:HandleMemeberDataUpdate()
|
|
self:UpdateGuildDonateInfo();
|
|
self:UpdateDonateRankList();
|
|
end
|
|
|
|
function GuildDonateView:OnEnter()
|
|
GuildDonateView.super.OnEnter(self);
|
|
|
|
ServiceGuildCmdProxy.Instance:CallDonateListGuildCmd();
|
|
ServiceGuildCmdProxy.Instance:CallDonateFrameGuildCmd(true);
|
|
|
|
local npcData = self.viewdata.viewdata and self.viewdata.viewdata.npcdata;
|
|
local rootTrans = npcData and npcData.assetRole.completeTransform;
|
|
if(rootTrans)then
|
|
self:CameraFocusOnNpc(rootTrans);
|
|
else
|
|
self:CameraRotateToMe();
|
|
end
|
|
|
|
self:UpdateDonateRankList();
|
|
self:UpdateGuildDonateInfo();
|
|
end
|
|
|
|
function GuildDonateView:OnExit()
|
|
GuildDonateView.super.OnExit(self);
|
|
ServiceGuildCmdProxy.Instance:CallDonateFrameGuildCmd(false);
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
|
|
self:CameraReset()
|
|
end
|
|
|
|
|