ro-table/Asstes/Resources/Script/FrameWork/GUI/view/OricalCardInfoView.txt
2025-06-04 05:02:57 +08:00

161 lines
3.7 KiB
Plaintext

OricalCardInfoView = class("OricalCardInfoView", ContainerView)
OricalCardInfoView.ViewType = UIViewType.NormalLayer
autoImport("WrapListCtrl");
autoImport("OricalCardCell");
autoImport("OricalCardDetailInfo");
function OricalCardInfoView:Init()
self:InitView();
self:MapEvent();
end
function OricalCardInfoView:InitView()
self.titleName = self:FindComponent("TitleName", UILabel);
self.diffLabel = self:FindComponent("DiffLabel", UILabel);
local wrap = self:FindGO("CardContent");
self.cardInfoCtl = WrapListCtrl.new(wrap,
OricalCardCell,
"OricalCardCell",
WrapListCtrl_Dir.Vertical);
self.cardInfoCtl:AddEventListener(MouseEvent.MouseClick, self.ClickOricalCard, self)
local cardDetailGO = self:FindGO("CardDetailInfo");
self.cardDetailInfo = OricalCardDetailInfo.new(cardDetailGO);
end
function OricalCardInfoView:ClickOricalCard(cell)
self:ShowCardDetailInfo(cell.data);
end
function OricalCardInfoView:ShowCardDetailInfo(data)
if(data == nil)then
return;
end
local cardId,num = data.id, data.num;
if(cardId == nil)then
return;
end
local cardData = Table_PveCard[cardId];
if(cardData == nil)then
self.cardDetailInfo:Hide();
return;
end
self.cardDetailInfo:Show();
self.cardDetailInfo:SetData(cardData);
end
function OricalCardInfoView:Update()
local cardIds;
if(Game.MapManager:IsPveMode_PveCard())then
cardIds = DungeonProxy.Instance:GetSelectCardIds();
else
cardIds = DungeonProxy.Instance:GetCardData(self.index);
end
if(cardIds == nil)then
return;
-- cardIds = {};
-- for i=1,30 do
-- table.insert(cardIds, 111 + i);
-- end
end
if(self.index ~= nil)then
cardIds = self:PreHandleHandIds(cardIds);
end
self.cardInfoCtl:ResetDatas(cardIds);
local myName = Game.Myself.data.name;
self.titleName.text = string.format(ZhString.OricalCardInfoView_TitleName, myName);
if(self.index == nil)then
local index = DungeonProxy.Instance:GetNowPlayingIndex();
self.diffLabel.text = ZhString["OricalCardInfoView_Diff_" .. index];
else
self.diffLabel.text = ZhString["OricalCardInfoView_Diff_" .. self.index];
end
end
local CardTypeWeight =
{
Boss = 1,
Environment = 2,
Monster = 3,
Item = 4
}
function OricalCardInfoView.CardSortFunc(a,b)
local cardA = Table_PveCard[a];
local cardB = Table_PveCard[b];
local weightA = CardTypeWeight[ cardA.Type ];
local weightB = CardTypeWeight[ cardB.Type ];
if(weightA ~= weightB)then
return weightA < weightB;
end
return cardA.id < cardB.id;
end
function OricalCardInfoView:PreHandleHandIds(cardIds)
table.sort(cardIds, self.CardSortFunc);
local result = {};
for i=1,#cardIds do
local id = cardIds[i];
local combineCount = #result;
if(combineCount == 0)then
local data = { id = id, num = 1};
table.insert(result, data);
else
local lastData = result[combineCount];
if(lastData.id == id)then
lastData.num = lastData.num + 1;
else
local data = { id = id, num = 1};
table.insert(result, data);
end
end
end
return result;
end
function OricalCardInfoView:MapEvent()
self:AddListenEvt(ServiceEvent.PveCardQueryCardInfoCmd, self.HandleOpenBarrowBag);
end
function OricalCardInfoView:HandleOpenBarrowBag(note)
self:Update();
end
function OricalCardInfoView:OnEnter()
OricalCardInfoView.super.OnEnter(self);
local viewdata = self.viewdata.viewdata;
self.index = viewdata.index;
self:Update();
-- QueryCardInfo
ServicePveCardProxy.Instance:CallQueryCardInfoCmd();
local gOManager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera];
gOManager_Camera:ActiveMainCamera(false);
end
function OricalCardInfoView:OnExit()
self.cardDetailInfo:Unload_OldIconPic();
OricalCardInfoView.super.OnExit(self);
local gOManager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera];
gOManager_Camera:ActiveMainCamera(true);
end