源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

230 lines
7.8 KiB

--[[@------------------------------------------------------------------
@description:云购上期奖励界面
@author:wyb
----------------------------------------------------------------------]]
CloudShoppingRewardView = CloudShoppingRewardView or BaseClass(BaseView)
function CloudShoppingRewardView:__init()
self.base_file = "cloudShopping"
self.layout_file = "CloudShoppingRewardView"
self.layer_name = "UI"
-- self.use_local_view = true
self.use_background = true
self.close_mode = CloseMode.CloseDestroy
self.destroy_imm = true
self.append_to_ctl_queue = true
self.item_list = {}
self.model = CustomActivityModel:getInstance()
self.load_callback = function ()
self:LoadSuccess()
self:InitEvent()
end
self.open_callback = function ()
if self.sub_type then
self.model:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33114, self.sub_type)
end
end
self.close_callback = function ()
self:Remove()
end
end
function CloudShoppingRewardView:Open(sub_type)
self.sub_type = sub_type
BaseView.Open(self)
end
function CloudShoppingRewardView:Remove()
for i, item in ipairs(self.item_list) do
item:DeleteMe()
end
self.item_list = {}
if self.event_update_id then
self.model:UnBind(self.event_update_id)
self.event_update_id = nil
end
end
function CloudShoppingRewardView:LoadSuccess()
self.txtNum,
self.txtPrice,
self.contentTxt
= GetChildTexts(self.transform, {
"leftCon/txtNum",
"leftCon/priceCon/txtPrice",
"rightCon/ScrollView/Viewport/Content/contentTxt"
})
self.goodsCon,
self.scroll,
self.effect
= GetChildTransforms(self.transform, {
"leftCon/goodsCon",
"rightCon/ScrollView/Viewport/Content",
"leftCon/effect"
})
self.empty,
self.clickGo
= GetChildGameObjects(self.transform, {
"rightCon/emptyCon",
"clickGo"
})
self:AddUIEffect("effect_xunbao_001_3", self.effect, self.layer_name, nil, 0.6, true)
end
function CloudShoppingRewardView:InitEvent()
local onClickHandler = function (target, x, y)
if target == self.clickGo then
self:ClickBigRewardFunc(x,y)
end
end
AddClickEvent(self.clickGo, onClickHandler)
local onUpdate = function ()
self:SetData()
end
self.event_update_id = self.model:Bind(CustomActivityModel.UPDATE_CLOUD_REWARD_INFO, onUpdate)
end
function CloudShoppingRewardView:SetData()
local win_info = self.model.cloud_reward_info
if not win_info then
return
end
local cfg = Config.Cloudbuy[win_info.big_bingo_id]
if cfg then
self.txtPrice.text = cfg.worth
local resouce_id_list = ErlangParser:GetInstance():Parse(cfg.resouce_id)
local res_id = 0
local career = RoleManager.Instance.mainRoleInfo.career
for _, v in pairs(resouce_id_list) do
if tonumber(v[1]) == career then
res_id = tonumber(v[2])
break
end
end
local posList = ErlangParser:GetInstance():Parse(cfg.resouce_height)
local x, y = 0, 0
if TableSize(posList) > 0 then
x = tonumber(posList[1][1]) * 0.6
y = tonumber(posList[1][2]) * 0.6
end
local data = {
clothe_res_id = res_id,
type = SceneBaseType.Role,
layer_name = self.layer_name,
action_name_list = {"show", "idle"},
can_rotate = true,
layout_file = self.layout_file,
position = Vector3(x, y - 40, 0)}
lua_resM:SetRoleModel(self, self.goodsCon, data)
self:SetGiftName(cfg)
self.goodsCon:GetComponent("RawImage").raycastTarget = true
end
local player_list = win_info.bingo_player_list
if #player_list > 0 then
self.scroll.sizeDelta = Vector2(400, 60 * #player_list)
for i, v in ipairs(player_list) do
local item = self.item_list[i]
if not item then
item = CloudShoppingRewardItem.New(self.scroll)
self.item_list[i] = item
end
item:SetData(v.server_num, v.name)
item:SetPosition(0, (i - 1) * 60)
end
end
self.empty:SetActive(TableSize(player_list) == 0)
end
function CloudShoppingRewardView:SetGiftName(cfg)
local reward = ErlangParser:GetInstance():Parse(cfg.rewards)
if TableSize(reward) > 0 then
local type_id = 0
if cfg.reward_type == 2 then --按职业区分
local career = RoleManager.Instance:GetMainRoleVo().career
for _,v in pairs(reward) do
if career == tonumber(v[1]) then
type_id = tonumber(v[2][1][2])
break
end
end
else
type_id = tonumber(reward[1][2])
end
local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
if goods_basic then
local goodsName = "<color="..WordManager.GetGoodsColor(goods_basic.color) .. "><a@><u>"..Trim(goods_basic.goods_name) .. "</u></a></color>"
local numStr = "<color="..ColorUtil.GREEN..">(" .. cfg.award_count .. "份)</color>"
self.txtNum.text = goodsName .. numStr
local call_back = function(param, x, y)
self:ClickBigRewardFunc(x,y)
end
AddUnderLineAndClick(self, self.txtNum.transform, call_back, false, true)
end
end
end
function CloudShoppingRewardView:ClickBigRewardFunc(x,y)
local win_info = self.model.cloud_reward_info
if not win_info then
return
end
local cfg = Config.Cloudbuy[win_info.big_bingo_id]
if not cfg then
return
end
local reward = ErlangParser:GetInstance():Parse(cfg.rewards)
if TableSize(reward) > 0 then
local type_id = 0
if cfg.reward_type == 2 then --按职业区分
local career = RoleManager.Instance:GetMainRoleVo().career
for _,v in pairs(reward) do
if career == tonumber(v[1]) then
type_id = tonumber(v[2][1][2])
break
end
end
else
type_id = tonumber(reward[1][2])
end
local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
if goods_basic then
if goods_basic.type == GoodsModel.TYPE.EQUIP then
local target_config = Config.Equipattr[type_id]
if target_config then
local dynamic = {}
dynamic.type_id = type_id
dynamic.rating = target_config.base_rating
dynamic.equip_extra_attr = {}
dynamic.equip_type = goods_basic.equip_type
local target_pro = ErlangParser:GetInstance():Parse(target_config.recommend_attr)
for i, v in ipairs(target_pro) do
local attr = {}
attr.color = tonumber(v[2][1])
attr.attr_id = tonumber(v[2][2])
if #v[2] == 5 then
attr.type_id = 1
attr.plus_interval = tonumber(v[2][4])
attr.plus_unit = tonumber(v[2][5])
else
attr.type_id = 2
attr.attr_val = tonumber(v[2][3])
end
table.insert(dynamic.equip_extra_attr, attr)
end
UIToolTipMgr:getInstance():AppendEquipShowTips(dynamic, x, y, EquipShowTips.EQUIP_RECOMMAND_TARGET)
end
else
UIToolTipMgr:getInstance():AppendGoodsTips(type_id, x, y)
end
end
end
end