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