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

304 lines
7.5 KiB
Plaintext

local BaseCell = autoImport("BaseCell");
PlayerFaceCell = class("PlayerFaceCell", BaseCell)
autoImport("HeadIconCell");
autoImport("FrameCell");
PlayerFaceCell_SymbolType = {
JoinHand = "SymbolType_JoinHand",
Follow = "SymbolType_Follow",
ImageCreate = "SymbolType_ImageCreate",
}
function PlayerFaceCell:Init()
self.profession = self:FindGO("profession");
self.proIcon = self:FindComponent("Icon", UISprite, self.profession);
self.proColor = self:FindComponent("Color", UISprite, self.profession);
-- temp change
if(self.proIcon)then
self.proIcon.transform.localPosition = Vector3(0,4.5,0);
end
if(self.proColor)then
self.proColor.width = 32;
self.proColor.height = 32;
self.proColor.spriteName = "com_icon_profession";
self.proColor.transform.localPosition = Vector3(0,4.5,0);
end
self.name = self:FindComponent("name", UILabel);
self.level = self:FindComponent("level", UILabel);
self.vip = self:FindComponent("vip", UILabel);
self.hp = self:FindComponent("hp", UISlider);
self.mp = self:FindComponent("mp", UISlider);
self.levelBg = self:FindGO("bg_head")
self.leadsymbol1 = self:FindGO("leadsymbol1");
self.leadsymbol2 = self:FindGO("leadsymbol2");
self.headIconCell = HeadIconCell.new();
self.headIconCell:CreateSelf(self.gameObject);
self.headIconCell:SetMinDepth(3);
self:UpdateHeadIconPos();
local frameObj = self:FindGO("PlayerFrameCell");
if(frameObj)then
self.frame = FrameCell.new(frameObj);
end
self:InitSymbols();
self:AddCellClickEvent();
end
function PlayerFaceCell:InitSymbols()
self.symbols = {};
self.symbols.rePosition = self:FindComponent("SymbolsGrid", UIGrid);
self.symbols[PlayerFaceCell_SymbolType.ImageCreate] = self:FindComponent("ImageCreateor", UISprite);
self.symbols[PlayerFaceCell_SymbolType.Follow] = self:FindComponent("FollowState", UISprite);
self.symbols.RePosition = function (symbols)
if(symbols.rePosition)then
symbols.rePosition:Reposition();
end
end
self.symbols.SetSprite = function (symbols, symbolType, spriteName)
if(symbols[symbolType])then
symbols[symbolType].spriteName = spriteName;
end
end
self.symbols.Active = function (symbols, symbolType, b)
if(symbols[symbolType])then
symbols[symbolType].gameObject:SetActive(b);
symbols:RePosition();
end
end
end
function PlayerFaceCell:HideHpMp()
self:Hide(self.hp)
self:Hide(self.mp)
self:UpdateHeadIconPos();
end
function PlayerFaceCell:UpdateHeadIconPos()
if(self.headIconCell)then
local isUp = self.hp and self.mp and self.hp.gameObject.activeSelf and self.mp.gameObject.activeSelf
self:SetHeadIconPos(isUp);
end
end
function PlayerFaceCell:SetHeadIconPos(isUp)
local avatarPars = self.headIconCell.avatarPars;
if(isUp)then
avatarPars.transform.localPosition = Vector3(0, -38, 0);
else
avatarPars.transform.localPosition = Vector3(0, -54, 0);
end
end
function PlayerFaceCell:HideLevel( )
self:Hide(self.level.gameObject)
self:Hide(self.levelBg)
end
-- HeadImageData
function PlayerFaceCell:SetData(data)
self.data = data;
if(nil == data)then
self:Hide();
return;
end
self:Show();
if(self.name)then
self.name.text = data.name or "";
UIUtil.WrapLabel (self.name)
end
if(self.headIconCell)then
if(data.iconData)then
if(data.iconData.type == HeadImageIconType.Avatar)then
self.headIconCell:SetData(data.iconData);
elseif(data.iconData.type == HeadImageIconType.Simple)then
self.headIconCell:SetSimpleIcon(data.iconData.icon);
end
-- 頭像置灰
self:SetIconActive(data.offline ~= true, true);
end
end
self:SetPlayerPro( data );
if(self.level)then
self.level.text = data.level and string.format("Lv.%s", data.level) or "";
end
if(self.vip)then
self.vip.text = data.vip and string.format("Lv.%s", data.vip) or "";
end
self:SetTeamLeaderSymbol(data.job);
self:UpdateHp(data.hp);
self:UpdateMp(data.mp);
end
function PlayerFaceCell:SetPlayerPro( data )
if(self.profession)then
if(type(data.profession) == "number")then
local proData = Table_Class[data.profession];
if(proData)then
if(IconManager:SetProfessionIcon(proData.icon, self.proIcon))then
self.profession.gameObject:SetActive(true);
local colorKey = "CareerIconBg"..proData.Type;
self.proColorSave = ColorUtil[colorKey]
self.proColor.color = ColorUtil[colorKey];
else
self.profession.gameObject:SetActive(false);
end
else
errorLog(string.format("%d not Config", data.profession));
end
elseif(type(data.profession) == "string")then
if(IconManager:SetProfessionIcon(data.profession, self.proIcon)
or IconManager:SetUIIcon(data.profession, self.proIcon))then
self.profession.gameObject:SetActive(true);
else
self.profession.gameObject:SetActive(false);
end
else
self.profession.gameObject:SetActive(false);
end
self.proIcon.width = 32;
self:SetGoGrey(self.profession, data.offline);
end
end
function PlayerFaceCell:SetIconActive(b, anim)
self.headIconCell:SetActive(b, anim)
end
function PlayerFaceCell:SetGoGrey(go, isTo)
if(isTo)then
self:SetTextureGrey(go);
else
local sprites = UIUtil.GetAllComponentsInChildren(go, UISprite, true);
for i=1,#sprites do
if(sprites[i].color == Color(1/255,2/255,3/255))then
sprites[i].color = Color(1,1,1);
end
end
end
end
function PlayerFaceCell:SetGoGreyMP()
self:SetIconActive(false, true)
self.profession = self:FindGO("profession");
local sprites = UIUtil.GetAllComponentsInChildren(self.profession, UISprite, true);
for i=1,#sprites do
sprites[i].color = Color(1/255,2/255,3/255)
end
end
function PlayerFaceCell:SetGoNormalMP()
self:SetIconActive(true, true)
self.profession = self:FindGO("profession");
local sprites = UIUtil.GetAllComponentsInChildren(self.profession, UISprite, true);
for i=1,#sprites do
sprites[i].color = Color(1,1,1)
end
if self.proColorSave~=nil then
self.proColor.color = self.proColorSave
end
end
function PlayerFaceCell:SetTeamLeaderSymbol(jobType)
if(self.leadsymbol1)then
self.leadsymbol1:SetActive(jobType == SessionTeam_pb.ETEAMJOB_LEADER);
end
if(self.leadsymbol2)then
self.leadsymbol2:SetActive(jobType == SessionTeam_pb.ETEAMJOB_TEMPLEADER);
end
end
function PlayerFaceCell:UpdateHp(value)
if(self.hp~=nil and value~=nil)then
value = math.floor(value * 100)/100;
self.hp.value = value;
end
end
function PlayerFaceCell:UpdateMp(value)
if(self.mp~=nil and value~=nil)then
value = math.floor(value * 100)/100;
self.mp.value = value;
end
end
function PlayerFaceCell:UpdateVoice(value)
if self.headIconCell then
if self.VoiceBan == true then
else
if value == true then
self.headIconCell:SetVoiceState(HeadVoiceState.Open)
else
self.headIconCell:SetVoiceState(HeadVoiceState.Close)
end
end
end
end
function PlayerFaceCell:SetVoiceBan(value)
if self.headIconCell then
if value == true then
self.VoiceBan = true
self.headIconCell:SetVoiceState(HeadVoiceState.Ban)
else
self.VoiceBan = false
end
end
end
function PlayerFaceCell:AddIconEvent()
if(self.headIconCell)then
self.headIconCell:OnAdd();
end
end
function PlayerFaceCell:RemoveIconEvent()
if(self.headIconCell)then
self.headIconCell:OnRemove();
end
end
function PlayerFaceCell:SetMinDepth(minDepth)
self.headIconCell:SetMinDepth(minDepth);
end
function PlayerFaceCell:HideIcon()
self.headIconCell:Hide(self.headIconCell.avatarPars)
self.headIconCell:Hide(self.headIconCell.simpleIcon.gameObject)
end
function PlayerFaceCell:ActiveCell(b)
self.gameObject:SetActive(b);
end
function PlayerFaceCell:ActiveSelf()
return self.gameObject.activeSelf;
end