2025-06-04 05:02:57 +08:00

245 lines
7.2 KiB
Plaintext

PortraitPopUp = class("PortraitPopUp", BaseView);
autoImport("PortraitCell");
autoImport("PlayerFaceCell");
autoImport("PortraitFrameCell");
PortraitPopUp.ViewType = UIViewType.PopUpLayer
function PortraitPopUp:Init()
self:FindObjs();
self:InitShow();
self:RegistRedTip();
-- self:MapViewEvents();
end
function PortraitPopUp:FindObjs()
local manScroll = self:FindChild("ManScroll");
local moreScroll = self:FindChild("MoreScroll");
local frameScroll = self:FindChild("FrameScroll");
self.mangrid = self:FindChild("Grid", manScroll):GetComponent(UIGrid);
self.moregrid = self:FindChild("Grid", moreScroll):GetComponent(UIGrid);
self.framegrid = self:FindChild("Grid", frameScroll):GetComponent(UIGrid);
self.myPortraitCell = self:FindChild("HeadCell");
self.tip = self:FindChild("PortraitTip");
self.portraitChoose = self:FindChild("portraitChoose");
self.frameChoose = self:FindChild("frameChoose");
end
function PortraitPopUp:RegistRedTip()
local roleTog = self:FindGO("ManToggle");
local moreTog = self:FindGO("MoreToggle");
local frameTog = self:FindGO("FrameToggle");
self:AddTabEvent(roleTog, function() self:UpdateRolePortrait() end);
self:AddTabEvent(moreTog, function() self:UpdateMorePortrait() end);
self:AddTabEvent(frameTog, function() self:UpdatePortraitFrame() end);
self:RegisterRedTipCheck(SceneTip_pb.EREDSYS_ROLE_IMG, roleTog:GetComponentInChildren(UISprite), 50);
self:RegisterRedTipCheck(SceneTip_pb.EREDSYS_MONSTER_IMG , moreTog:GetComponentInChildren(UISprite), 50);
self:RegisterRedTipCheck(SceneTip_pb.EREDSYS_PHOTOFRAME , frameTog:GetComponentInChildren(UISprite), 50);
end
function PortraitPopUp:InitShow()
self:UpdateHeadCell();
self:UpdateRolePortrait();
end
function PortraitPopUp:SendSeeNew()
if(self.lastSee)then
RedTipProxy.Instance:SeenNew(self.lastSee);
end
end
function PortraitPopUp:UpdateRolePortrait()
self:SendSeeNew();
local portraitData = MyselfProxy.Instance.portraitData;
if(portraitData)then
if(self.manPortraitlst == nil)then
self.manPortraitlst = UIGridListCtrl.new(self.mangrid, PortraitCell, "PortraitCell");
self.manPortraitlst:AddEventListener(MouseEvent.MouseClick,self.ClickManPortraitCell,self);
end
local manPortraitDatas = portraitData:GetOrderManPortraits(Game.Myself.data.userdata:Get(UDEnum.SEX));
self.manPortraitlst:ResetDatas(manPortraitDatas);
for k,v in pairs(self.manPortraitlst:GetCells()) do
if(v.data and v.data.id == self.choosePortrait.id)then
self.portraitChoose.transform:SetParent(v.gameObject.transform, false);
self.portraitChoose:SetActive(true);
break;
end
end
end
self.lastSee = SceneTip_pb.EREDSYS_ROLE_IMG;
end
function PortraitPopUp:UpdateMorePortrait()
self:SendSeeNew();
local portraitData = MyselfProxy.Instance.portraitData;
if(portraitData)then
if(self.morePortraitlst == nil)then
self.morePortraitlst = UIGridListCtrl.new(self.moregrid, PortraitCell, "PortraitCell");
self.morePortraitlst:AddEventListener(MouseEvent.MouseClick,self.ClickManPortraitCell,self);
end
local otherPortraitDatas = portraitData:GetOrderOtherPortraits()
self.morePortraitlst:ResetDatas(otherPortraitDatas);
for k,v in pairs(self.morePortraitlst:GetCells()) do
if(v.data and v.data.id == self.choosePortrait.id)then
self.portraitChoose.transform:SetParent(v.gameObject.transform, false);
self.portraitChoose:SetActive(true);
break;
end
end
end
self.lastSee = SceneTip_pb.EREDSYS_MONSTER_IMG;
end
function PortraitPopUp:InitChoosePortrait(cells)
if(self.choosePortrait and not self.initChooseP)then
self.initChooseP = true;
end
local isFindP = false;
local manPortraitCells = self.manPortraitlst:GetCells();
if(manPortraitCells == nil)then
return;
end
for i = 1,#manPortraitCells do
local v = manPortraitCells[i];
if(v~=nil and v.data~=nil and v.data.id == self.choosePortrait.id)then
self.portraitChoose.transform:SetParent(v.gameObject.transform, false);
self.portraitChoose:SetActive(true);
isFindP = true;
end
end
if(not isFindP)then
local morePortraitCells = self.morePortraitlst:GetCells();
for i = 1,#morePortraitCells do
local v = morePortraitCells[i];
if(v~=nil and v.data.id == self.choosePortrait.id)then
self.portraitChoose.transform:SetParent(v.gameObject.transform, false);
self.portraitChoose:SetActive(true);
end
end
end
end
function PortraitPopUp:UpdatePortraitFrame()
self:SendSeeNew();
local portraitData = MyselfProxy.Instance.portraitData;
if(portraitData)then
if(self.framePortraitlst == nil)then
self.framePortraitlst = UIGridListCtrl.new(self.framegrid, PortraitFrameCell, "PortraitFrameCell");
self.framePortraitlst:AddEventListener(MouseEvent.MouseClick,self.ClickFrameCell,self)
end
local frameDatas = portraitData:GetOrderFrames();
self.framePortraitlst:ResetDatas(frameDatas);
end
if(self.chooseFrame)then
local frameCells = self.framePortraitlst:GetCells();
for i = 1,#frameCells do
local v = frameCells[i];
if(v.data and v.data.id == self.chooseFrame.id)then
self.frameChoose.transform:SetParent(v.gameObject.transform, false);
self.frameChoose:SetActive(true);
break;
end
end
end
self.lastSee = SceneTip_pb.EREDSYS_PHOTOFRAME;
end
function PortraitPopUp:UpdateHeadCell(pData, fData)
if(self.headcell == nil)then
self.headcell = PlayerFaceCell.new(self.myPortraitCell);
end
self.choosePortrait = pData or MyselfProxy.Instance:GetMyPortrait();
self.chooseFrame = fData or MyselfProxy.Instance:GetMyFrame();
local data = {};
if(self.choosePortrait~=nil)then
local picData = Table_Item[self.choosePortrait.id];
data.head = picData.Icon;
end
if(self.chooseFrame ~=nil)then
local picData = Table_Item[self.chooseFrame.id];
data.frame = picData.Icon;
end
data.profession = Game.Myself.data.userdata:Get(UDEnum.PROFESSION);
self.headcell:SetData(data);
end
function PortraitPopUp:ClickManPortraitCell(body)
local obj = body.obj;
local data = body.data;
if(data.Lock == 1)then
self:ShowTip(data, obj.transform.position);
else
self.portraitChoose.transform:SetParent(obj.transform, false);
self.portraitChoose:SetActive(true);
self:UpdateHeadCell(data,self.chooseFrame);
end
end
function PortraitPopUp:ClickFrameCell(body)
local obj = body.obj;
local data = body.data;
if(data.Lock == 1)then
self:ShowTip(data, obj.transform.position);
else
self.frameChoose.transform:SetParent(obj.transform, false);
self.frameChoose:SetActive(true);
self:UpdateHeadCell(self.choosePortrait, data);
end
end
function PortraitPopUp:ShowTip(data, position)
self.tip.transform.position = position;
local lab = self:FindChild("Desc", self.tip):GetComponent(UILabel);
lab.text = data.Text;
self.tip:SetActive(true);
end
function PortraitPopUp:OnExit()
-- 給伺服器發送切換頭像的訊息
if(self.choosePortrait~=nil)then
local myPortrait = MyselfProxy.Instance:GetMyPortrait();
if(myPortrait == nil or (myPortrait~=nil and myPortrait.id~=self.choosePortrait.id))then
ServiceNUserProxy.Instance:CallUsePortrait(self.choosePortrait.id);
end
end
if(self.chooseFrame~=nil)then
local myframe = MyselfProxy.Instance:GetMyFrame();
if(myframe == nil or (myframe~=nil and myframe.id~=self.chooseFrame.id))then
ServiceNUserProxy.Instance:CallUseFrame(self.chooseFrame.id);
end
end
self:SendSeeNew();
self.super.OnExit(self);
end