|
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
|