725 lines
21 KiB
Plaintext
725 lines
21 KiB
Plaintext
PetInfoView = class("PetInfoView",BaseView)
|
|
|
|
PetInfoView.ViewType = UIViewType.NormalLayer
|
|
|
|
PetInfoView.PfbPath = "View/PetDressingBord"
|
|
|
|
autoImport("PetResetSkillItemCell");
|
|
autoImport("PetInfoLabelCell");
|
|
autoImport("PetDressingBord")
|
|
|
|
local MulitiGiftIcon = "pet_icon_present"
|
|
|
|
PetInfoView.EventTip = {
|
|
adventure = ZhString.PetInfoView_Unlock_Adventure,
|
|
body = ZhString.PetInfoView_Unlock_Fashion,
|
|
equip = ZhString.PetInfoView_Unlock_Equip,
|
|
}
|
|
|
|
function PetInfoView:Init()
|
|
self:InitView();
|
|
self:MapEvent();
|
|
end
|
|
|
|
function PetInfoView:InitView()
|
|
local headGO = self:FindGO("PlayerHeadCell");
|
|
self.headIconCell = PlayerFaceCell.new(headGO);
|
|
self.headData = HeadImageData.new();
|
|
|
|
self.namelab = self:FindComponent("Name", UILabel);
|
|
|
|
self.mood_symbol = self:FindComponent("Symbol", UISprite, self:FindGO("Mood"));
|
|
self.friendly_valuelab = self:FindComponent("Value", UILabel, self:FindGO("Friendly"));
|
|
self.level_valuelab = self:FindComponent("Value", UILabel, self:FindGO("Level"));
|
|
self.friendly_slider = self:FindComponent("Friend_ExpSlider", UISlider);
|
|
self.level_slider = self:FindComponent("Level_ExpSlider", UISlider);
|
|
self.skillTipStick = self:FindComponent("SkillTipStick", UIWidget);
|
|
self.feedPetStick = self:FindComponent("FeedPetStick",UIWidget)
|
|
|
|
local table = self:FindComponent("AttriTable", UITable);
|
|
self.attriCtl = UIGridListCtrl.new(table , PetInfoLabelCell, "PetInfoLabelCell");
|
|
self.attriCtl:AddEventListener(MouseEvent.MouseClick, self.ClickSkill, self);
|
|
|
|
self.touchButton = self:FindGO("TouchButton");
|
|
self:AddClickEvent(self.touchButton, function (go)
|
|
self:DoTouch();
|
|
end);
|
|
|
|
self.giftButton = self:FindGO("GiftButton");
|
|
self:AddClickEvent(self.giftButton, function (go)
|
|
self:DoGift();
|
|
end);
|
|
|
|
self.giftSprite = self.giftButton:GetComponent(UISprite);
|
|
self.gift_num = self:FindComponent("Num", UILabel, self.giftButton);
|
|
|
|
self.playButton = self:FindGO("PlayButton");
|
|
self.playButton_Symbol = self.playButton:GetComponent(UISprite);
|
|
self.playButton_Collider = self.playButton:GetComponent(BoxCollider);
|
|
self.playButton_Lock = self:FindGO("LockTip", self.playButton);
|
|
self:AddClickEvent(self.playButton, function (go)
|
|
self:DoPlay();
|
|
end);
|
|
|
|
self.restButton = self:FindGO("RestButton");
|
|
self:AddClickEvent(self.restButton, function (go)
|
|
self:DoRest();
|
|
end);
|
|
self.resetSkillButton = self:FindGO("RestSkillButton");
|
|
self:AddClickEvent(self.resetSkillButton, function (go)
|
|
self:DoResetSkill();
|
|
end);
|
|
|
|
self.changeNameButton = self:FindGO("ChangeNameButton");
|
|
self:AddClickEvent(self.changeNameButton, function (go)
|
|
self:DoChangeName();
|
|
end);
|
|
|
|
self.petEquip1 = self:FindGO("PetEquipItem1");
|
|
self.petEquip1Cell = ItemCell.new(self.petEquip1);
|
|
self.petEquip1_add = self:FindGO("Add", self.petEquip1);
|
|
self.petEquip1_add_Symbol = self.petEquip1_add:GetComponent(UISprite);
|
|
self.petEquip1_bg = self.petEquip1:GetComponent(UIWidget);
|
|
self:AddClickEvent(self.petEquip1, function (go)
|
|
self:DoAddPetEquipItem1();
|
|
end);
|
|
|
|
self.petBody = self:FindGO("PetBody");
|
|
self.petBody_lock = self:FindGO("Lock", self.petBody);
|
|
self.petBody_locktip = self:FindComponent("LockTip", UILabel, self.petBody_lock);
|
|
self.petBody_Collider = self.petBody:GetComponent(BoxCollider);
|
|
self.petBody_bg = self:FindComponent("Background", UISprite, self.petBody);
|
|
self.petBody_Icon = self:FindComponent("Icon_Sprite", UISprite, self.petBody);
|
|
self:AddClickEvent(self.petBody, function (go)
|
|
self:DoAddPetBody();
|
|
end);
|
|
|
|
self.skillResetBord = self:FindGO("SkillResetBord");
|
|
local resetSkillGrid = self:FindComponent("ResetSkillGrid", UIGrid);
|
|
self.skillResetCtl = UIGridListCtrl.new(resetSkillGrid, PetResetSkillItemCell, "PetResetSkillItemCell");
|
|
self.skillResetCtl:AddEventListener(MouseEvent.MouseClick, self.ClickResetSkillItem, self);
|
|
|
|
self.closeComp = self.skillResetBord:GetComponent(CloseWhenClickOtherPlace);
|
|
self.closeComp.callBack = function (go)
|
|
self.skillResetBord_Show = false;
|
|
end
|
|
|
|
self.dressingBord = self:FindGO("PetDressing")
|
|
self.previewObj = self:FindGO("Preview")
|
|
end
|
|
|
|
function PetInfoView:ClickSkill(skillCell)
|
|
local skillData = skillCell.data;
|
|
if(type(skillData) == "number")then
|
|
TipManager.Instance:ShowPetSkillTip( SkillItemData.new(skillCell.data), self.skillTipStick, NGUIUtil.AnchorSide.TopLeft, {-185,0} )
|
|
end
|
|
end
|
|
|
|
function PetInfoView:ClickResetSkillItem(cell)
|
|
local data = cell.data;
|
|
if(data ~= nil)then
|
|
local itemName = data.staticData.NameZh;
|
|
if(data.id == "Reset_Grey")then
|
|
MsgManager.ShowMsgByIDTable(9012, {itemName});
|
|
else
|
|
local dont = LocalSaveProxy.Instance:GetDontShowAgain(9011)
|
|
if(dont == nil)then
|
|
MsgManager.DontAgainConfirmMsgByID(9011, function ()
|
|
FunctionPet.Me():DoResetSkill(data.staticData.id);
|
|
end, nil, nil, itemName);
|
|
else
|
|
FunctionPet.Me():DoResetSkill(data.staticData.id);
|
|
end
|
|
end
|
|
self.skillResetBord:SetActive(false);
|
|
end
|
|
end
|
|
|
|
local tempParam = {};
|
|
function PetInfoView:DoTouch()
|
|
tempParam.petid = self.petInfoData.petid;
|
|
FunctionPlayerTip.Pet_Touch(tempParam)
|
|
end
|
|
|
|
function PetInfoView:DoGift()
|
|
if Table_PetCompose[self.petInfoData.petid] then
|
|
local data =
|
|
{
|
|
petinfoData=self.petInfoData,
|
|
-- type="FeedPet",
|
|
}
|
|
TipManager.Instance:ShowFeedPetTip(data,self.feedPetStick,NGUIUtil.AnchorSide.Center,{0,0})
|
|
return
|
|
end
|
|
tempParam.petid = self.petInfoData.petid;
|
|
FunctionPlayerTip.Pet_GiveGift(tempParam)
|
|
|
|
end
|
|
|
|
function PetInfoView:DoPlay()
|
|
if(self.ishand)then
|
|
FunctionPlayerTip.Pet_CancelHug({petid = self.petInfoData.petid})
|
|
else
|
|
FunctionPlayerTip.Pet_Hug({petid = self.petInfoData.petid})
|
|
end
|
|
end
|
|
|
|
function PetInfoView:DoRest()
|
|
ServiceScenePetProxy.Instance:CallEggRestorePetCmd(self.petInfoData.petid);
|
|
|
|
self:CloseSelf();
|
|
end
|
|
|
|
function PetInfoView:DoChangeName()
|
|
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.PetMakeNamePopUp, viewdata = {etype = 2, petid = self.petInfoData.petid}})
|
|
end
|
|
|
|
function PetInfoView.SortResetSkillItems( a, b )
|
|
if(a.id ~= b.id)then
|
|
return a.id ~= "Reset_Grey";
|
|
end
|
|
return a.staticData.id < b.staticData.id;
|
|
end
|
|
function PetInfoView:DoResetSkill()
|
|
if(self.petInfoData:IsSkillPerfect())then
|
|
MsgManager.ShowMsgByIDTable(9010);
|
|
return;
|
|
end
|
|
|
|
if(self.resetSkillItems == nil)then
|
|
self.resetSkillItems = {};
|
|
else
|
|
TableUtility.ArrayClear(self.resetSkillItems)
|
|
end
|
|
|
|
local resetSkill_Config = GameConfig.Pet.reset_skill;
|
|
for j=1,#resetSkill_Config do
|
|
local itemid = resetSkill_Config[j];
|
|
local item = BagProxy.Instance:GetItemByStaticID(itemid);
|
|
if(item == nil)then
|
|
local itemData = ItemData.new("Reset_Grey", itemid);
|
|
itemData.num = 1;
|
|
table.insert(self.resetSkillItems, itemData);
|
|
else
|
|
local itemData = ItemData.new(item.id, itemid);
|
|
itemData.num = 1;
|
|
table.insert(self.resetSkillItems, itemData);
|
|
end
|
|
end
|
|
table.sort(self.resetSkillItems, PetInfoView.SortResetSkillItems);
|
|
|
|
self.skillResetCtl:ResetDatas(self.resetSkillItems);
|
|
|
|
self.skillResetBord:SetActive(true);
|
|
end
|
|
|
|
local petEquipsSort = function (a,b)
|
|
if(a.id == "NoGet" or b.id == "NoGet")then
|
|
return a.id ~= "NoGet";
|
|
end
|
|
return a.staticData.id < b.staticData.id;
|
|
end
|
|
function PetInfoView:DoAddPetEquipItem1()
|
|
if(nil==self.petDressingBord)then
|
|
self:LoadPreferb(self.PfbPath, self.dressingBord, true)
|
|
self.petDressingBord = PetDressingBord.new(self.dressingBord,self.petInfoData)
|
|
end
|
|
self.petDressingBord:ShowBord()
|
|
|
|
-- local equip1Data = self.petInfoData:GetEquips()[1];
|
|
-- if(equip1Data)then
|
|
-- local sdata = {
|
|
-- itemdata = equip1Data,
|
|
-- ignoreBounds = {self.petEquip1_bg}
|
|
-- };
|
|
-- local itemFloatTip = self:ShowItemTip(sdata, self.petEquip1_bg, nil, {206, 208});
|
|
-- local comcell = itemFloatTip:GetCell(1);
|
|
-- comcell:AddTipFunc(ZhString.PetInfoView_Unlock_Unload, self.DoUnloadPetEquip, {self, equip1Data});
|
|
-- comcell:HideGetPath();
|
|
-- comcell:HidePreviewButton();
|
|
-- else
|
|
-- local equips = self:GetPetEquips(true);
|
|
-- table.sort(equips, petEquipsSort);
|
|
|
|
-- local equipChooseTip = TipManager.Instance:ShowEquipChooseTip(equips, self.petEquip1_bg, {84,281});
|
|
-- equipChooseTip:SetClickEvent(self.ChoosePetEquip, self);
|
|
-- equipChooseTip:Set_CheckValidFunc(self.CheckEquipValid, self);
|
|
-- equipChooseTip:AddIgnoreBounds(self.petEquip1);
|
|
-- end
|
|
end
|
|
|
|
function PetInfoView:GetPetEquips(createNoGet)
|
|
local itemids = self.petInfoData:GetCanEquipItemIds();
|
|
|
|
local equips = {};
|
|
if(itemids)then
|
|
for i=1,#itemids do
|
|
local items = BagProxy.Instance:GetItemsByStaticID(itemids[i]);
|
|
if(items)then
|
|
for j=1,#items do
|
|
table.insert(equips, items[j]);
|
|
end
|
|
else
|
|
if(createNoGet)then
|
|
local itemData = ItemData.new("NoGet", itemids[i]);
|
|
table.insert(equips, itemData);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return equips;
|
|
end
|
|
|
|
function PetInfoView.DoUnloadPetEquip(param)
|
|
local self, itemdata = param[1], param[2]
|
|
ServiceScenePetProxy.Instance:CallEquipOperPetCmd(ScenePet_pb.EPETEQUIPOPER_OFF, self.petInfoData.petid, itemdata.id);
|
|
TipManager.Instance:CloseTip();
|
|
end
|
|
|
|
function PetInfoView:DoAddPetBody()
|
|
local petid = self.petInfoData.petid;
|
|
local nowbody = self.petInfoData.body;
|
|
if(nowbody == self.petInfoData.petid)then
|
|
nowbody = 0;
|
|
end
|
|
local nowfriendlv = self.petInfoData.friendlv;
|
|
|
|
local bodyDatas = {};
|
|
|
|
local defaultBodyData = {};
|
|
defaultBodyData[1] = petid;
|
|
defaultBodyData[2] = 0;
|
|
defaultBodyData[3] = nowbody;
|
|
defaultBodyData[4] = false;
|
|
table.insert(bodyDatas, defaultBodyData);
|
|
|
|
local showBodyIds = {};
|
|
local bodyEvents = self.petInfoData:GetUnLockBodyEvents();
|
|
if(bodyEvents)then
|
|
for k,v in pairs(bodyEvents)do
|
|
local alreadyIn = false;
|
|
for i=1,#bodyDatas do
|
|
if(bodyDatas[2] == v[2])then
|
|
alreadyIn = true;
|
|
break;
|
|
end
|
|
end
|
|
if(not alreadyIn)then
|
|
local bodyData = {};
|
|
bodyData[1] = petid;
|
|
bodyData[2] = v[2];
|
|
bodyData[3] = nowbody;
|
|
bodyData[4] = nowfriendlv < v[0];
|
|
bodyData[5] = string.format(ZhString.PetInfoView_UnlockBody, v[0]);
|
|
table.insert(bodyDatas, bodyData);
|
|
end
|
|
end
|
|
end
|
|
|
|
local bodys = self.petInfoData:GetUnLockBodys();
|
|
if(bodys)then
|
|
for i=1,#bodys do
|
|
local alreadyIn = false;
|
|
for k, data in pairs(bodyDatas)do
|
|
if(data[2] == bodys[i])then
|
|
alreadyIn = true;
|
|
break;
|
|
end
|
|
end
|
|
if(not alreadyIn)then
|
|
local bodyData = {};
|
|
bodyData[1] = petid;
|
|
bodyData[2] = bodys[i];
|
|
bodyData[3] = nowbody;
|
|
bodyData[4] = false;
|
|
table.insert(bodyDatas, bodyData);
|
|
end
|
|
end
|
|
end
|
|
|
|
if(#bodyDatas == 1)then
|
|
local bodyData = {};
|
|
bodyData[1] = 0;
|
|
table.insert(bodyDatas, bodyData);
|
|
end
|
|
|
|
local fashionChooseTip = TipManager.Instance:ShowPetFashionChooseTip(bodyDatas, self.petBody_bg, NGUIUtil.AnchorSide.TopLeft, {215, 130});
|
|
fashionChooseTip:SetClickEvent(self.ChoosePetBody, self);
|
|
fashionChooseTip:AddIgnoreBounds(self.petBody);
|
|
end
|
|
|
|
function PetInfoView:CheckEquipValid(data)
|
|
if(data)then
|
|
if(self.petInfoData)then
|
|
local isvalid, unlocklv = self.petInfoData:CheckEquipIsUnlock(data.staticData.id);
|
|
if(not isvalid)then
|
|
return false, string.format(ZhString.PetInfoView_EquipUnlockTip, unlocklv);
|
|
end
|
|
end
|
|
if(data.id == "NoGet")then
|
|
return false, ZhString.PetInfoView_NoGet;
|
|
end
|
|
|
|
local myPro = MyselfProxy.Instance:GetMyProfession();
|
|
if(data.equipInfo and data.equipInfo:CanUseByProfess(myPro))then
|
|
return true, ZhString.PetInfoView_AttriNoEffect;
|
|
end
|
|
end
|
|
return true, ZhString.PetInfoView_CanEquip;
|
|
end
|
|
|
|
function PetInfoView:ChoosePetEquip(data)
|
|
if(data)then
|
|
ServiceScenePetProxy.Instance:CallEquipOperPetCmd(ScenePet_pb.EPETEQUIPOPER_ON, self.petInfoData.petid, data.id);
|
|
end
|
|
TipManager.Instance:CloseTip();
|
|
end
|
|
|
|
function PetInfoView:ChoosePetBody(data)
|
|
local petid, bodyid = data[1], data[2];
|
|
if(petid == 0)then
|
|
return;
|
|
end
|
|
if(bodyid ~= self.petInfoData.body)then
|
|
ServiceScenePetProxy.Instance:CallEquipOperPetCmd(ScenePet_pb.EPETEQUIPOPER_BODY, petid, tostring(bodyid));
|
|
TipManager.Instance:CloseTip();
|
|
end
|
|
end
|
|
|
|
local MoodSymbolMap = {
|
|
[0] = "pet_icon_02",
|
|
[1] = "pet_icon_01",
|
|
[2] = "pet_icon_03",
|
|
[3] = "pet_icon_04",
|
|
}
|
|
function PetInfoView:UpdatePetBriefInfo()
|
|
if(self.petInfoData)then
|
|
self.headData:TransByPetInfoData(self.petInfoData);
|
|
self.headIconCell:SetData(self.headData);
|
|
|
|
self.namelab.text = self.petInfoData.name;
|
|
|
|
self.friendly_valuelab.text = "Lv " .. self.petInfoData.friendlv;
|
|
self.level_valuelab.text = "Lv " .. self.petInfoData.lv;
|
|
|
|
self.friendly_slider.value = self.petInfoData:GetMyPetFriendPct();
|
|
|
|
local moodlevel = self.petInfoData:GetMoodLevel();
|
|
self.mood_symbol.spriteName = MoodSymbolMap[moodlevel];
|
|
|
|
local expslider_value = 0;
|
|
local nowlvConfig = Table_PetBaseLevel[self.petInfoData.lv + 1];
|
|
if(nowlvConfig)then
|
|
self.level_slider.value = self.petInfoData.exp/nowlvConfig.NeedExp_2;
|
|
else
|
|
self.level_slider.value = 1;
|
|
end
|
|
self:UpdateHandSymbol();
|
|
self:UpdateAtrtri();
|
|
end
|
|
end
|
|
|
|
function PetInfoView:UpdateHandSymbol()
|
|
local handFollowerId = Game.Myself:Client_GetHandInHandFollower();
|
|
self.ishand = handFollowerId~=0 and handFollowerId == self.petInfoData.guid or false;
|
|
local scenePet = PetProxy.Instance:GetMySceneNpet(petid)
|
|
self.behold = scenePet and scenePet.data:GetFeature_BeHold() or false;
|
|
|
|
if(self.ishand)then
|
|
if(self.behold)then
|
|
self.playButton_Symbol.spriteName = "pet_icon_putdown";
|
|
else
|
|
self.playButton_Symbol.spriteName = "pet_icon_hand2";
|
|
end
|
|
else
|
|
if(self.behold)then
|
|
self.playButton_Symbol.spriteName = "pet_icon_hug";
|
|
else
|
|
self.playButton_Symbol.spriteName = "pet_icon_hand";
|
|
end
|
|
end
|
|
|
|
if(self.petInfoData:CanHug())then
|
|
self.playButton_Collider.enabled = true;
|
|
self.playButton_Lock:SetActive(false);
|
|
self.playButton_Symbol.color = ColorUtil.NGUIWhite
|
|
else
|
|
self.playButton_Collider.enabled = false;
|
|
self.playButton_Lock:SetActive(true);
|
|
self.playButton_Symbol.color = ColorUtil.NGUIShaderGray
|
|
end
|
|
end
|
|
|
|
function PetInfoView:UpdatePetBody()
|
|
local unlockBodys = self.petInfoData:GetUnLockBodys();
|
|
-- if((unlockBodys and #unlockBodys>0))then
|
|
self.petBody_lock:SetActive(false);
|
|
|
|
self.petBody_Collider.enabled = true;
|
|
self.petBody_bg.color = ColorUtil.NGUIWhite;
|
|
self.petBody_Icon.color = ColorUtil.NGUIWhite;
|
|
-- else
|
|
-- self.petBody_lock:SetActive(true);
|
|
|
|
-- self.petBody_Collider.enabled = false;
|
|
-- self.petBody_bg.color = ColorUtil.NGUIShaderGray;
|
|
-- self.petBody_Icon.color = ColorUtil.NGUIShaderGray;
|
|
-- end
|
|
|
|
self.petBody_Icon.gameObject:SetActive(true);
|
|
IconManager:SetFaceIcon(self.petInfoData:GetHeadIcon(), self.petBody_Icon)
|
|
end
|
|
|
|
function PetInfoView:GetCurNpet()
|
|
if(self.petInfoData == nil)then
|
|
return;
|
|
end
|
|
|
|
return PetProxy.Instance:GetMySceneNpet(self.petInfoData.petid);
|
|
end
|
|
|
|
local PetShowAttris1 = {
|
|
"Atk","MAtk",
|
|
"Def","MDef",
|
|
}
|
|
local PetShowAttris2 = {
|
|
"Str","Int",
|
|
"Vit","Agi",
|
|
"Dex","Luk",
|
|
}
|
|
function PetInfoView:UpdateAtrtri()
|
|
local npet = self:GetCurNpet();
|
|
if(npet == nil)then
|
|
self:CloseSelf();
|
|
return;
|
|
end
|
|
|
|
local attriDatas = {};
|
|
local props = npet.data.props;
|
|
if(props)then
|
|
local hp = props.Hp:GetValue();
|
|
local maxhp = props.MaxHp:GetValue();
|
|
|
|
local hpdata = {}
|
|
hpdata[1] = PetInfoLabelCell.Type.Attri;
|
|
hpdata[2] = "Hp";
|
|
hpdata[3] = hp .. "/" .. maxhp;
|
|
table.insert(attriDatas, hpdata);
|
|
|
|
for i=1,#PetShowAttris1 do
|
|
local prop = props[ PetShowAttris1[i] ];
|
|
if(prop)then
|
|
local pdata = {};
|
|
pdata[1] = PetInfoLabelCell.Type.Attri;
|
|
pdata[2] = prop.propVO.displayName;
|
|
pdata[3] = prop:GetValue();
|
|
table.insert(attriDatas, pdata);
|
|
end
|
|
end
|
|
|
|
if(self.petInfoData.skills and #self.petInfoData.skills>0)then
|
|
local skilldatas = {};
|
|
skilldatas[1] = PetInfoLabelCell.Type.Skill;
|
|
skilldatas[2] = self.petInfoData.skills;
|
|
table.insert(attriDatas, skilldatas);
|
|
end
|
|
|
|
for i=1,#PetShowAttris2 do
|
|
local prop = props[ PetShowAttris2[i] ];
|
|
if(prop)then
|
|
local pdata = {};
|
|
pdata[1] = PetInfoLabelCell.Type.Attri;
|
|
pdata[2] = prop.propVO.displayName;
|
|
pdata[3] = prop:GetValue();
|
|
table.insert(attriDatas, pdata);
|
|
end
|
|
end
|
|
|
|
local petFriendRatio = self.petInfoData:GetPetFriendRatio() or _EmptyTable;
|
|
local friendlyEvents = self.petInfoData:GeMyPetFriendEvents();
|
|
local lastRatioValue = nil;
|
|
for i=1,10 do
|
|
for k,v in pairs(friendlyEvents)do
|
|
local level, eventkey = v[0],v[1];
|
|
if(level == i)then
|
|
local eventtip = self.EventTip[ eventkey ];
|
|
local unlocktip = {};
|
|
unlocktip[1] = PetInfoLabelCell.Type.Attri;
|
|
unlocktip[2] = string.format(ZhString.PetInfoView_UnlockTip, level, eventtip)
|
|
table.insert(attriDatas, unlocktip);
|
|
end
|
|
end
|
|
if(petFriendRatio[i] ~= 0 and petFriendRatio[i]~=lastRatioValue)then
|
|
lastRatioValue = petFriendRatio[i];
|
|
local unlocktip = {};
|
|
unlocktip[1] = PetInfoLabelCell.Type.Attri;
|
|
unlocktip[2] = string.format(ZhString.PetInfoView_Unlock_PetWort_MulTime, i, math.floor(petFriendRatio[i]*100));
|
|
table.insert(attriDatas, unlocktip);
|
|
end
|
|
end
|
|
end
|
|
self.attriCtl:ResetDatas(attriDatas);
|
|
end
|
|
|
|
function PetInfoView:UpdatePetEquips()
|
|
local equips = self.petInfoData:GetEquips();
|
|
self.petEquip1Cell:SetData(equips[1]);
|
|
|
|
local petEquips = self:GetPetEquips();
|
|
if(#petEquips > 0)then
|
|
self.petEquip1_add_Symbol.color = ColorUtil.NGUIWhite;
|
|
else
|
|
self.petEquip1_add_Symbol.color = ColorUtil.NGUIShaderGray;
|
|
end
|
|
end
|
|
|
|
function PetInfoView:UpdateGiftInfo()
|
|
local isComposePet = nil~=Table_PetCompose[self.petInfoData.petid]
|
|
if isComposePet then
|
|
self:Hide(self.gift_num)
|
|
IconManager:SetUIIcon(MulitiGiftIcon,self.giftSprite)
|
|
return
|
|
end
|
|
|
|
self:Show(self.gift_num)
|
|
local giftItems = self.petInfoData:GetGiftItems();
|
|
|
|
local itemid;
|
|
if(giftItems)then
|
|
_,itemid = next(giftItems);
|
|
end
|
|
|
|
self.gift_num.text = BagProxy.Instance:GetItemNumByStaticID(itemid) or 0;
|
|
|
|
local icon = Table_Item[itemid] and Table_Item[itemid].Icon;
|
|
if(icon)then
|
|
IconManager:SetItemIcon(icon,self.giftSprite)
|
|
end
|
|
end
|
|
|
|
function PetInfoView:UpdatePetTotalInfo()
|
|
self:UpdatePetBriefInfo();
|
|
self:UpdatePetBody();
|
|
self:UpdatePetEquips();
|
|
self:UpdateGiftInfo();
|
|
end
|
|
|
|
function PetInfoView:MapEvent()
|
|
self:AddListenEvt(ItemEvent.ItemUpdate, self.HandleItemUpdate);
|
|
self:AddListenEvt(ServiceEvent.ScenePetEquipUpdatePetCmd, self.UpdatePetEquips);
|
|
self:AddListenEvt(ServiceEvent.ScenePetPetInfoPetCmd, self.UpdatePetTotalInfo);
|
|
self:AddListenEvt(ServiceEvent.ScenePetPetInfoUpdatePetCmd, self.UpdatePetTotalInfo);
|
|
self:AddListenEvt(ServiceEvent.ScenePetUnlockNtfPetCmd, self.HandlePetUnlockNtfPetCmd);
|
|
self:AddListenEvt(ServiceEvent.ScenePetPetOffPetCmd, self.HandleScenePetPetOff);
|
|
|
|
self:AddListenEvt(ServiceEvent.ScenePetResetSkillPetCmd, self.HandleSkillReset);
|
|
|
|
self:AddListenEvt(ServiceEvent.NUserBeFollowUserCmd,self.UpdateHandSymbol);
|
|
self:AddDispatcherEvt(FunctionFollowCaptainEvent.StateChanged, self.UpdateHandSymbol);
|
|
|
|
self:AddListenEvt(SceneUserEvent.SceneRemovePets, self.HandleSceneRemovePets);
|
|
|
|
self:AddListenEvt(PetCreatureEvent.PetChangeDress, self.RecvPetChangeDress)
|
|
self:AddListenEvt(PetCreatureEvent.PetDressPreview,self.HandlePreview)
|
|
|
|
end
|
|
|
|
function PetInfoView:HandlePreview()
|
|
local previewData = FunctionPet.Me():GetPreviewData()
|
|
local result = false
|
|
for k,v in pairs(previewData) do
|
|
if nil~=k then
|
|
self:Show(self.previewObj)
|
|
return
|
|
end
|
|
end
|
|
self:Hide(self.previewObj)
|
|
end
|
|
|
|
function PetInfoView:RecvPetChangeDress(note)
|
|
local data = note.body
|
|
if data and self.petDressingBord then
|
|
self.petDressingBord:RecvPetChangeDress(data)
|
|
end
|
|
end
|
|
|
|
function PetInfoView:HandleSceneRemovePets(note)
|
|
if(self:GetCurNpet() == nil)then
|
|
self:CloseSelf();
|
|
end
|
|
end
|
|
|
|
function PetInfoView:HandleItemUpdate()
|
|
self:UpdateGiftInfo();
|
|
self:UpdatePetEquips();
|
|
end
|
|
|
|
function PetInfoView:HandleSkillReset(note)
|
|
local cells = self.attriCtl:GetCells();
|
|
if(cells)then
|
|
for i=1,#cells do
|
|
cells[i]:PlayResetEffect();
|
|
end
|
|
end
|
|
end
|
|
|
|
function PetInfoView:HandlePetUnlockNtfPetCmd(note)
|
|
self:UpdatePetEquips();
|
|
self:UpdatePetBody();
|
|
end
|
|
|
|
function PetInfoView:HandleScenePetPetOff(note)
|
|
local petid = note.body.petid;
|
|
if(petid and petid == self.petInfoData.petid)then
|
|
self:CloseSelf();
|
|
end
|
|
end
|
|
|
|
function PetInfoView:HandleSceneRemovePets(note)
|
|
local petids = note.body;
|
|
if(petids)then
|
|
for i=1,#petids do
|
|
if(petids[i] == self.petInfoData.guid)then
|
|
self:CloseSelf();
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function PetInfoView:OnEnter()
|
|
PetInfoView.super.OnEnter(self);
|
|
|
|
self.petInfoData = self.viewdata.viewdata.petInfoData;
|
|
if(self.petInfoData == nil)then
|
|
return;
|
|
end
|
|
|
|
local npet = self:GetCurNpet();
|
|
if(npet)then
|
|
self:CameraFaceTo(npet.assetRole.completeTransform, CameraConfig.NPC_FuncPanel_ViewPort);
|
|
end
|
|
|
|
self:UpdatePetTotalInfo();
|
|
|
|
FunctionPet.Me():SetCameraFoucus(false);
|
|
|
|
EventManager.Me():AddEventListener(MyselfEvent.Pet_HpChange, self.UpdateAtrtri, self)
|
|
end
|
|
|
|
function PetInfoView:OnExit()
|
|
EventManager.Me():RemoveEventListener(MyselfEvent.Pet_HpChange, self.UpdateAtrtri, self)
|
|
|
|
PetInfoView.super.OnExit(self);
|
|
|
|
TipManager.Instance:CloseTip();
|
|
|
|
FunctionPet.Me():SetCameraFoucus(true);
|
|
FunctionPet.Me():ClearPreviewData()
|
|
local scenePet = PetProxy.Instance:GetMySceneNpet()
|
|
if scenePet then
|
|
scenePet:ReDress()
|
|
end
|
|
|
|
self:CameraReset();
|
|
end |