源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

247 righe
8.1 KiB

PetDiamondChooseView = PetDiamondChooseView or BaseClass(BaseView)
local PetDiamondChooseView = PetDiamondChooseView
function PetDiamondChooseView:__init()
self.base_file = "pet"
self.layout_file = "PetDiamondChooseView"
self.layer_name = "Activity"
self.destroy_imm = true
self.use_background = true
self.change_scene_close = true
self.append_to_ctl_queue = false --是否要添加进界面堆栈
self.need_show_money = false --是否要显示顶部的金钱栏
self.click_bg_toClose = true
self.blur_activity_bg = true
self.use_show_anim = true
self.use_hide_anim = true
self.model = PetModel:getInstance()
self.choose_diamond_id = 0
self.item_list = {}
self.loop_mgr = LoopScrowViewMgr.New()
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:OpenSuccess()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
--pet_id宠物id,slot_id槽位id
function PetDiamondChooseView:Open(pet_id,slot_id)
self.pet_id = pet_id
self.slot_id = slot_id
BaseView.Open(self)
end
function PetDiamondChooseView:LoadSuccess()
local nodes = {
"bg:raw",--背景
"changeBtn:img:obj",--替换按钮
"changeBtn/changeTxt:tmp",
"ScrollView/Viewport/Content","ScrollView",--宝石容器
"des1:tmp","fight2:tmp","fight1:tmp","name1:tmp","des2:tmp","name2:tmp",
"goText:obj",--前往
"awardCon2:obj","awardCon1:obj",
"nowDiamond",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.bg_raw,GameResPath.GetViewBigBg("pet_diamond_choose_bg"),false)
self.awardItem1 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon1)
self.awardItem2 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon2)
self.awardItem1:SetItemSize(62, 62)
self.awardItem2:SetItemSize(62, 62)
end
function PetDiamondChooseView:AddEvent()
local on_click = function ( click_obj )
if self.changeBtn_obj == click_obj then--替换按钮
if self.choose_diamond_id ~= 0 then
if self.model.is_true_race then
local data = GoodsModel:getInstance():GetPetDiamondDicByType()
self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16305,self.pet_id,self.slot_id,self.choose_diamond_id,data[self.choose_diamond_id].goods_id)
else
Message.show("只能镶嵌相应种族的宝石","fault")
end
else
Message.show("没有选中宝石","fault")
end
elseif self.goText_obj == click_obj then
OpenFun.Open(153,1)
end
end
AddClickEvent(self.changeBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
AddClickEvent(self.goText_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
--刷新宝石数量时
local update_feed_goods_num = function(goods_sub_type)
if goods_sub_type == 3 then
self:UpdateDiamondBag()
end
end
self:BindEvent(self.model, PetConst.UPDATE_PET_GOODS_NUM, update_feed_goods_num)
--镶嵌宝石成功后关闭界面
local update_feed_goods_num = function()
if not self.is_loaded then return end
self:Close()
end
self:BindEvent(self.model, PetConst.UPDATE_PET_DIAMOND_CON, update_feed_goods_num)
end
function PetDiamondChooseView:OpenSuccess()
self:UpdateView()
end
function PetDiamondChooseView:UpdateView()
self:UpdateNowDiamond()
self:UpdateDiamondBag()
-- self:UpdateChooseDiamond()
end
--刷新当前装备的宝石信息栏
function PetDiamondChooseView:UpdateNowDiamond()
--拿到当前槽位的宝石装备信息
local data = self.model:GetPetDiamondDataByIdAndSlot(self.pet_id,self.slot_id)
if data then
local diamond_cfg = self.model:GetPetDiamondCfg(data.diamond_id)
local color = GoodsModel:getInstance():GetGoodsColor(data.diamond_id)
self.name1_tmp.text = HtmlColorTxt(Trim(diamond_cfg.diamond_name),color)
self.changeTxt_tmp.text = "替换"
self.des1_tmp.text = Trim(diamond_cfg.diamond_desc)
local attr_data = stringtotable(diamond_cfg.add_attr_list)
self.fight1_tmp.text = string.format("战力:<#fdffc2>%s</color>",GetFighting(attr_data))
self.awardCon1_obj:SetActive(true)
self.awardItem1:SetData(data.diamond_id)
else--没有装备信息时
self.name1_tmp.text = "暂无宝石"
self.changeTxt_tmp.text = "镶嵌"
self.des1_tmp.text = "宝石效果:暂未镶嵌宝石"
self.fight1_tmp.text = ""
self.awardCon1_obj:SetActive(false)
end
end
--刷新选中的宝石信息栏
function PetDiamondChooseView:UpdateChooseDiamond(choose_diamond_id)
SetImageGray(self.changeBtn_img,false)
SetTMPSharedMaterial(self.changeTxt_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
self.model.is_true_race = true -- 设置标识位,当前种族的宠物能否使用这个宝石
self.choose_diamond_id = choose_diamond_id or 0
if not choose_diamond_id or choose_diamond_id == 0 then--表示没有选中宝石
self.name2_tmp.text = "暂无宝石"
self.des2_tmp.text = "宝石效果:暂未镶嵌宝石"
self.fight2_tmp.text = ""
self.awardCon2_obj:SetActive(false)
else
--根据宝石id获取相应配置
local diamond_cfg = self.model:GetPetDiamondCfg(choose_diamond_id)
if not diamond_cfg then
Message.show("没找到对应配置","fault")
return
end
local is_true_race = self.model:GetPetRaceById(self.pet_id) == diamond_cfg.need_race
SetImageGray(self.changeBtn_img,not is_true_race)
if is_true_race then
SetTMPSharedMaterial(self.changeTxt_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
else
SetTMPSharedMaterial(self.changeTxt_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
end
self.model.is_true_race = is_true_race
local color = GoodsModel:getInstance():GetGoodsColor(choose_diamond_id)
self.name2_tmp.text = HtmlColorTxt(Trim(diamond_cfg.diamond_name),color)
self.des2_tmp.text = Trim(diamond_cfg.diamond_desc)--宝石描述
local attr_data = stringtotable(diamond_cfg.add_attr_list)
self.fight2_tmp.text = string.format("战力:<#fdffc2>%s</color>",GetFighting(attr_data))
self.awardCon2_obj:SetActive(true)
self.awardItem2:SetData(choose_diamond_id)
end
end
--刷新技能石背包
function PetDiamondChooseView:UpdateDiamondBag()
local list = GoodsModel:getInstance():GetPetDiamondDicByType() or {}--取到技能石物品信息
--技能石物品信息以goodsid为键,无序,所以我们搞一个有序的列表goods_list
local goods_list = {}
for k,v in pairs(list) do
v.need_race = self.model:GetPetDiamondCfg(v.type_id).need_race
v.is_now_race = v.need_race == self.model:GetPetRaceById(self.pet_id) and 1 or 2
v.color = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.type_id).color
local diamond_cfg = self.model:GetPetDiamondCfg(v.type_id)
local attr_data = stringtotable(diamond_cfg.add_attr_list)
v.fight = GetFighting(attr_data)
table.insert(goods_list,v)
end
--需要进行排序,是当前宠物种族使用的宝石靠前,然后根据品质、战力排序
local arg = {"is_now_race","color","fight"}
local condition = {Array.LOWER,Array.UPPER,Array.UPPER}
SortTools.MoreKeysSorter(goods_list, arg, condition)
local diamondItemType = 1
for k = 1,30 do
local item = self.item_list[k]
if item == nil then
item = PetDiamondItem.New(self.Content)
item:SetVisible(true)
self.item_list[k] = item
end
end
local function select_callback(choose_diamond_id)
--点击钻石后刷新当前选中宝石栏信息
self:UpdateChooseDiamond(choose_diamond_id)
end
self.loop_mgr:Init(self.ScrollView,self.Content,5,70,72,
function(item,index,realIndex )
--最后一个参数是新加的需求,需要根据种族判断该宝石能不能用,所以要传进petid去用
item:SetData(diamondItemType,index,goods_list[realIndex],select_callback,self.pet_id)
item:OnClick(1)
end,0,0,{x=6, y=-6.5})
self.loop_mgr:InitChildren(self.item_list, 30)
self.loop_mgr:RestToBeginning()
self.loop_mgr:SetContentSizeData()
end
function PetDiamondChooseView:DestroySuccess( )
for k,v in pairs(self.item_list) do
v:DeleteMe()
end
self.item_list = {}
if self.awardItem1 then
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem1)
self.awardItem1 = nil
end
if self.awardItem2 then
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem2)
self.awardItem2 = nil
end
end