396 lines
9.7 KiB
Plaintext
396 lines
9.7 KiB
Plaintext
autoImport("BaseTip");
|
|
PlayerTip = class("PlayerTip" ,BaseTip)
|
|
|
|
local FindCreature = SceneCreatureProxy.FindCreature
|
|
|
|
function PlayerTip:Init()
|
|
self:InitTip();
|
|
end
|
|
|
|
function PlayerTip:InitTip()
|
|
local cellObj = self:FindGO("HeadFace");
|
|
self.faceCell = PlayerFaceCell.new(cellObj);
|
|
self.faceCell:HideHpMp();
|
|
self.idObj = self:FindGO("Id");
|
|
self.bg = self:FindComponent("Bg", UISprite);
|
|
-- self.lv = self:FindComponent("Lv", UILabel);
|
|
self.name = self:FindComponent("Name", UILabel);
|
|
self.guildName = self:FindComponent("GuildName", UILabel);
|
|
|
|
self.id = self.idObj:GetComponent(UILabel);
|
|
self.idlabel = self:FindComponent("Label", UILabel, self.idObj);
|
|
|
|
self.labExpireTime = self:FindComponent("labExpireTime", UILabel);
|
|
|
|
self.closecomp = self.gameObject:GetComponent(CloseWhenClickOtherPlace);
|
|
self.closecomp.callBack = function (go)
|
|
self:CloseSelf();
|
|
end
|
|
|
|
local grid = self:FindComponent("FuncGrid", UIGrid);
|
|
self.funcCtl = UIGridListCtrl.new(grid, RClickFuncCell, "PlayerTipFuncCell");
|
|
self.funcCtl:AddEventListener(MouseEvent.MouseClick, self.ClickCell, self);
|
|
|
|
self:InitChildBord();
|
|
end
|
|
|
|
function PlayerTip:AcitiveIdObj(b)
|
|
self.idObj:SetActive(b);
|
|
end
|
|
|
|
function PlayerTip:ActiveCatExpireTimeObj(b)
|
|
self.labExpireTime.gameObject:SetActive(b);
|
|
end
|
|
|
|
function PlayerTip:ClickCell(cellCtl)
|
|
local funcData = cellCtl.data;
|
|
if(funcData == nil)then
|
|
self:CloseSelf();
|
|
return;
|
|
end
|
|
|
|
local key = funcData.key;
|
|
if(key == "Double_Action")then
|
|
self:ShowChildBord();
|
|
self.closecomp:ReCalculateBound();
|
|
return;
|
|
end
|
|
|
|
local func = FunctionPlayerTip.Me():GetFuncByKey(key)
|
|
if(func)then
|
|
func(self.playerTipData);
|
|
end
|
|
if(self.clickcallback)then
|
|
self.clickcallback(funcData);
|
|
end
|
|
self:CloseSelf();
|
|
end
|
|
|
|
function PlayerTip:CloseSelf()
|
|
if(self.closecallback)then
|
|
self.closecallback();
|
|
end
|
|
FunctionPlayerTip.Me():CloseTip()
|
|
end
|
|
|
|
function PlayerTip:OnEnter()
|
|
end
|
|
|
|
-- data{ playerData{id,level,name,headData, guildname} funckeys closecallback clickcallback }
|
|
function PlayerTip:SetData(data)
|
|
|
|
GVoiceProxy.Instance:DebugLog("===============function PlayerTip:SetData(data)===========")
|
|
|
|
self.closecomp:ClearTarget();
|
|
self:RemoveExpireTimeCheck()
|
|
|
|
if(data)then
|
|
local playerTipData = data.playerData;
|
|
if(playerTipData)then
|
|
local headData = playerTipData.headData;
|
|
self.faceCell:SetData(headData);
|
|
|
|
local level = playerTipData.level or 0;
|
|
self.name.text = string.format("Lv.%s %s", level, playerTipData.name);
|
|
|
|
if(playerTipData.cat and playerTipData.cat~=0)then
|
|
self:AcitiveIdObj(false);
|
|
self.expiretime = playerTipData.expiretime or 0
|
|
self:AddExpireTimeCheck()
|
|
self.guildName.text = string.format(ZhString.PlayerTip_MasterTip, playerTipData.mastername);
|
|
else
|
|
local showId = playerTipData.id;
|
|
if(type(showId) ~= "number")then
|
|
showId = tonumber(showId);
|
|
end
|
|
if(type(showId) == "number")then
|
|
self:AcitiveIdObj(true);
|
|
local limitNum = math.floor( math.pow(10, 12) );
|
|
self.idlabel.text = string.format("%s", math.floor(showId % limitNum) );
|
|
self.id.text = "ID:";
|
|
else
|
|
self:AcitiveIdObj(false);
|
|
end
|
|
|
|
if(playerTipData.guildname and playerTipData.guildname~="")then
|
|
self.guildName.text = string.format(ZhString.PlayerTip_GuildTip, playerTipData.guildname);
|
|
else
|
|
self.guildName.text = ZhString.PlayerTip_NoGuildTip;
|
|
end
|
|
end
|
|
|
|
|
|
|
|
GVoiceProxy.Instance:DebugLog("==============data.funckeys===========")
|
|
|
|
self:UpdateTipFunc(data.funckeys, playerTipData);
|
|
|
|
self.playerTipData = playerTipData;
|
|
end
|
|
|
|
self.closecallback = data.closecallback;
|
|
end
|
|
|
|
-- self.closecomp:ReCalculateBound();
|
|
end
|
|
|
|
function PlayerTip:UpdateTipFunc(funckeys, playerTipData)
|
|
if(not funckeys)then
|
|
funckeys = FunctionPlayerTip.Me():GetPlayerFunckey(playerTipData.id);
|
|
end
|
|
if(funckeys)then
|
|
local funcDatas = {};
|
|
|
|
FunctionPlayerTip.Me():SetWhereIClickThisIcon(self:GetWhereIClickThisIcon())
|
|
|
|
for i=1,#funckeys do
|
|
local config = FunctionPlayerTip.Me():GetFuncByKey();
|
|
local state, otherName = FunctionPlayerTip.Me():CheckTipFuncStateByKey(funckeys[i], playerTipData);
|
|
|
|
|
|
if(state ~= PlayerTipFuncState.InActive)then
|
|
local tempData = {};
|
|
tempData.key = funckeys[i];
|
|
tempData.state = state;
|
|
tempData.playerTipData = playerTipData;
|
|
tempData.otherName = otherName;
|
|
table.insert(funcDatas, tempData);
|
|
end
|
|
end
|
|
self.funcCtl:ResetDatas(funcDatas);
|
|
self.bg.height = 165 + 60*math.floor((#funcDatas+1)/2);
|
|
else
|
|
self.bg.height = 165;
|
|
end
|
|
|
|
self:ResizeChildBord();
|
|
|
|
TipsView.Me():ConstrainCurrentTip();
|
|
end
|
|
|
|
function PlayerTip:UpdateFuncState(funcKey, state, newName)
|
|
local keyCell = self:GetFuncCell(funcKey);
|
|
if(keyCell)then
|
|
keyCell:SetState(state);
|
|
if(newName)then
|
|
keyCell:SetName(newName);
|
|
end
|
|
end
|
|
end
|
|
|
|
function PlayerTip:ChangeFunc(changeKey, toKey)
|
|
if(changeKey == toKey)then
|
|
return;
|
|
end
|
|
|
|
local keyCell = self:GetFuncCell(changeKey);
|
|
if(keyCell)then
|
|
local playerTipData = self.playerTipData;
|
|
if(not playerTipData)then
|
|
return;
|
|
end
|
|
|
|
local state = FunctionPlayerTip.Me():CheckTipFuncStateByKey(toKey, playerTipData);
|
|
if(state ~= PlayerTipFuncState.InActive)then
|
|
|
|
local tempData = {};
|
|
tempData.key = toKey;
|
|
tempData.state = state;
|
|
tempData.playerTipData = playerTipData;
|
|
|
|
keyCell:SetData(tempData);
|
|
end
|
|
end
|
|
end
|
|
|
|
function PlayerTip:GetFuncCell(key)
|
|
local keyCell;
|
|
local cells = self.funcCtl:GetCells();
|
|
for i=1, #cells do
|
|
local cell = cells[i];
|
|
local data = cell and cell.data;
|
|
if(data and data.key == key)then
|
|
keyCell = cell;
|
|
break;
|
|
end
|
|
end
|
|
return keyCell;
|
|
end
|
|
|
|
function PlayerTip:OnExit()
|
|
self:RemoveExpireTimeCheck();
|
|
return true;
|
|
end
|
|
|
|
function PlayerTip:DestroySelf()
|
|
GameObject.Destroy(self.gameObject)
|
|
end
|
|
|
|
function PlayerTip:AddIgnoreBound(obj)
|
|
if(self.gameObject and self.closecomp)then
|
|
self.closecomp:AddTarget(obj.transform);
|
|
end
|
|
end
|
|
|
|
function PlayerTip:SetDesc(s1, s2, s3)
|
|
self.name.text = s1;
|
|
self.guildName.text = s2;
|
|
self.id.text = s3;
|
|
self.idlabel.text = "";
|
|
end
|
|
|
|
|
|
|
|
autoImport("UIEmojiCell");
|
|
function PlayerTip:InitChildBord()
|
|
self.childBord = self:FindGO("ChildBord");
|
|
self.child_Bg = self:FindComponent("CBg", UISprite, self.childBord);
|
|
self.child_actionGrid = self:FindComponent("ActionGrid", UIGrid, self.childBord);
|
|
self.childCtl = UIGridListCtrl.new(self.child_actionGrid , UIEmojiCell, "UIEmojiCell");
|
|
self.childCtl:AddEventListener(MouseEvent.MouseClick, self.ClickActionCell, self);
|
|
end
|
|
|
|
function PlayerTip:ClickActionCell(cell)
|
|
-- Server Player DoubleActioin
|
|
local data = Table_ActionAnime[cell.id];
|
|
local d_action = data.DoubleAction;
|
|
if(d_action == nil)then
|
|
return;
|
|
end
|
|
|
|
local myTeam = TeamProxy.Instance.myTeam;
|
|
if(myTeam == nil)then
|
|
return;
|
|
end
|
|
|
|
local memberData = myTeam:GetMemberByGuid(self.playerTipData.id);
|
|
if(memberData == nil)then
|
|
return;
|
|
end
|
|
if(memberData:IsOffline())then
|
|
MsgManager.ShowMsgByIDTable(3247);
|
|
return;
|
|
end
|
|
|
|
local player = FindCreature( self.playerTipData.id );
|
|
if(player == nil)then
|
|
return;
|
|
end
|
|
|
|
local sex = memberData.gender;
|
|
local mysex = MyselfProxy.Instance:GetMySex();
|
|
|
|
local sam = mysex == sex and 2 or 1;
|
|
if(d_action & sam == 0)then
|
|
MsgManager.ShowMsgByIDTable(396);
|
|
return;
|
|
end
|
|
|
|
ServiceNUserProxy.Instance:CallTwinsActionUserCmd(self.playerTipData.id,
|
|
cell.id,
|
|
SceneUser2_pb.ETWINS_OPERATION_REQUEST);
|
|
|
|
self:HideChildBord();
|
|
end
|
|
|
|
function PlayerTip:ResizeChildBord()
|
|
self.child_Bg.height = self.bg.height;
|
|
end
|
|
|
|
function PlayerTip:UpdateChildBordData()
|
|
if(not self.d_actdata)then
|
|
self.d_actdata = {};
|
|
else
|
|
TableUtility.ArrayClear(self.d_actdata);
|
|
end
|
|
-- actionData
|
|
local actionMap = MyselfProxy.Instance:GetUnlockActionMap();
|
|
for _,actionData in pairs(Table_ActionAnime)do
|
|
if(actionData.DoubleAction ~= nil)then
|
|
local prefix = string.sub(actionData.Name, 1, 3);
|
|
if(prefix ~= "be_")then
|
|
local actionCellData = {};
|
|
actionCellData.type = UIEmojiType.Action;
|
|
actionCellData.id = actionData.id;
|
|
actionCellData.name = actionData.Name;
|
|
table.insert(self.d_actdata, actionCellData);
|
|
end
|
|
end
|
|
end
|
|
self.childCtl:ResetDatas(self.d_actdata);
|
|
end
|
|
|
|
function PlayerTip:ShowChildBord()
|
|
self.childBord:SetActive(true);
|
|
self:UpdateChildBordData();
|
|
end
|
|
|
|
function PlayerTip:HideChildBord()
|
|
self.childBord:SetActive(false);
|
|
end
|
|
|
|
function PlayerTip:HideGuildInfo()
|
|
self.guildName.gameObject:SetActive(false)
|
|
end
|
|
|
|
function PlayerTip:AddExpireTimeCheck()
|
|
local leftTime;
|
|
if (self.masterid ~= nil and self.masterid ~= Game.Myself.data.id) then
|
|
leftTime = 0;
|
|
else
|
|
leftTime = self.expiretime - ServerTime.CurServerTime() / 1000;
|
|
end
|
|
if (leftTime > 0) then
|
|
self:ActiveCatExpireTimeObj(true);
|
|
self.timeTick = TimeTickManager.Me():CreateTick(0, 1000, self._Tick, self);
|
|
else
|
|
self:ActiveCatExpireTimeObj(false);
|
|
end
|
|
end
|
|
|
|
function PlayerTip:_Tick(deltatime)
|
|
local leftTime = self.expiretime - ServerTime.CurServerTime() / 1000;
|
|
if (leftTime > 0) then
|
|
self:UpdateLeftTime(leftTime);
|
|
else
|
|
self:RemoveExpireTimeCheck();
|
|
end
|
|
end
|
|
|
|
function PlayerTip:UpdateLeftTime(leftTime)
|
|
local timeText = ""
|
|
local day, hour, min, sec = ClientTimeUtil.FormatTimeBySec(leftTime);
|
|
if (day > 0) then
|
|
timeText = string.format(ZhString.PlayerTip_ExpireTime, day + 1);
|
|
self.labExpireTime.text = timeText .. ZhString.PlayerTip_Day;
|
|
else
|
|
timeText = string.format("%02d:%02d:%02d", hour, min, sec);
|
|
self.labExpireTime.text = string.format(ZhString.PlayerTip_ExpireTime, timeText);
|
|
end
|
|
end
|
|
|
|
function PlayerTip:RemoveExpireTimeCheck()
|
|
self.expiretime = 0;
|
|
self:ActiveCatExpireTimeObj(false)
|
|
if (self.timeTick) then
|
|
TimeTickManager.Me():ClearTick(self)
|
|
end
|
|
self.timeTick = nil;
|
|
end
|
|
|
|
PlayerTipSource=
|
|
{
|
|
FromTeam = 1,
|
|
FromGuild = 2,
|
|
}
|
|
|
|
function PlayerTip:SetWhereIClickThisIcon(where)
|
|
helplog("=======================From FromTeam==================")
|
|
self.whereClick = where
|
|
end
|
|
|
|
function PlayerTip:GetWhereIClickThisIcon()
|
|
return self.whereClick or PlayerTipSource.FromTeam
|
|
end
|
|
|