|
|
CapsuleEggRewardView = CapsuleEggRewardView or BaseClass(BaseView)
|
|
local CapsuleEggRewardView = CapsuleEggRewardView
|
|
|
|
function CapsuleEggRewardView:__init()
|
|
self.base_file = "capsuleEgg"
|
|
self.layout_file = "CapsuleEggRewardView"
|
|
|
|
self.layer_name = "Activity"
|
|
self.mainVo = RoleManager.Instance.mainRoleInfo
|
|
self.model = CapsuleEggModel:getInstance()
|
|
self.destroy_imm = true
|
|
self.use_background = true
|
|
self.hide_clear_role_model = false
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = false
|
|
|
|
self.close_fog = true
|
|
self.is_set_zdepth = true
|
|
|
|
self.show_item_list = {}
|
|
self.record_list = {}
|
|
self.play_record_idx = 0
|
|
self.play_record_item = false
|
|
self.last_play_record_item = false
|
|
self.record_item = false
|
|
self.is_ani = false
|
|
|
|
self.blur_activity_bg = true
|
|
self.use_show_anim = true
|
|
self.use_hide_anim = true
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:InitEvent()
|
|
end
|
|
self.open_callback = function ()
|
|
self:UpdateView()
|
|
end
|
|
|
|
self.close_callback = function ()
|
|
self:Remove()
|
|
end
|
|
end
|
|
|
|
function CapsuleEggRewardView:Open(pool_type)
|
|
self.pool_type = pool_type or 1
|
|
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17011,1, self.pool_type, 0)
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function CapsuleEggRewardView:Remove()
|
|
for i,v in ipairs(self.show_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
if self.delay_timer then
|
|
GlobalTimerQuest:CancelQuest(self.delay_timer)
|
|
self.delay_timer = false
|
|
end
|
|
if self.record_item then
|
|
for i,v in ipairs(self.record_item) do
|
|
v:DeleteMe()
|
|
end
|
|
end
|
|
end
|
|
|
|
function CapsuleEggRewardView:LoadSuccess()
|
|
local nodes = {
|
|
"contain/helpBtn:obj",
|
|
"contain/title_img_3:img",
|
|
"contain/title_img_2:img",
|
|
"contain/title_img_1:img",
|
|
"contain/close:obj",
|
|
"contain/bg:raw",
|
|
"contain/reward_scroll",
|
|
"contain/reward_scroll/Viewport/reward_con",
|
|
"contain/target_scroll",
|
|
"contain/target_scroll/Viewport/target_con",
|
|
"contain/record_scroll/Viewport/record_con",
|
|
"contain/record_scroll",
|
|
"contain/reward_icon/role_con:raw",
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("capsule_egg_bg_2_1238_609"))
|
|
--lua_resM:setOutsideRawImage(self, self.reward_icon_raw, GameResPath.GetCapsuleEggRes("capsule_egg_icon_2"), true)
|
|
lua_resM:setOutsideImageSprite(self, self.title_img_1_img, GameResPath.GetCapsuleEggRes("capsule_egg_draw_type_title_2"), false)
|
|
lua_resM:setOutsideImageSprite(self, self.title_img_2_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_3"), false)
|
|
lua_resM:setOutsideImageSprite(self, self.title_img_3_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_2"), false)
|
|
local model_pos = CapsuleEggShowAwardItem.HorseRewardShowPos.pos
|
|
SetLocalPosition(self.role_con, model_pos.x, model_pos.y, model_pos.z)
|
|
self:UpdateHourseModelCon(self.role_con, CapsuleEggShowAwardItem.HorseRewardShowPos.model_id)
|
|
self:UpdateScord()
|
|
end
|
|
|
|
function CapsuleEggRewardView:InitEvent()
|
|
local function onBtnClickHandler(target)
|
|
if target == self.close_obj then
|
|
self:Close()
|
|
elseif target == self.helpBtn_obj then
|
|
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 17001)
|
|
end
|
|
end
|
|
AddClickEvent(self.close_obj,onBtnClickHandler)
|
|
AddClickEvent(self.helpBtn_obj,onBtnClickHandler)
|
|
|
|
--刷新结果
|
|
local function on_update_times(pool_type)
|
|
if pool_type == self.pool_type then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
self:BindEvent(self.model,CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_UPDATE,on_update_times)
|
|
end
|
|
|
|
function CapsuleEggRewardView:UpdateView()
|
|
local reward_cfg = self.model:GetTimeRewardCfg(self.pool_type)
|
|
local reward_data_list = {}
|
|
for i,v in ipairs(reward_cfg) do
|
|
local t = DeepCopy(v)
|
|
local status = self.model:GetTimesRewardStatusByTimes(self.pool_type, t.draw_times)
|
|
if status then
|
|
t.status = 1
|
|
else
|
|
t.status = 0
|
|
end
|
|
table.insert(reward_data_list, t)
|
|
end
|
|
table.sort( reward_data_list, function (a, b)
|
|
if a.status ~= b.status then
|
|
return a.status < b.status
|
|
else
|
|
return a.draw_times < b.draw_times
|
|
end
|
|
end)
|
|
|
|
self.award_item_creator = self.award_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = reward_data_list,
|
|
item_con = self.reward_con,
|
|
scroll_view = self.reward_scroll,
|
|
item_class = CapsuleEggRewardItem,
|
|
item_width = 731,
|
|
item_height = 101,
|
|
space_y = 5,
|
|
create_frequency = 0.01,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v, i, self.pool_type)
|
|
end,
|
|
}
|
|
self.award_item_creator:UpdateItems(info)
|
|
|
|
local show_reward_cfg = self.model:GetShowTimeRewardCfg()
|
|
for i,v in ipairs(self.show_item_list) do
|
|
v:SetVisible(false)
|
|
end
|
|
for i,v in ipairs(show_reward_cfg) do
|
|
local item = self.show_item_list[i]
|
|
if not item then
|
|
item = CapsuleEggTargetItem.New(self.target_con, nil, self.layer_name)
|
|
self.show_item_list[i] = item
|
|
item:SetAnchoredPosition((78 + 40) * (i - 1) + 18, -3)
|
|
end
|
|
item:SetVisible(true)
|
|
item:SetData(v, i, self.pool_type)
|
|
end
|
|
SetSizeDelta(self.target_con, (70 + 45) * (#show_reward_cfg) + 18, 120)
|
|
end
|
|
|
|
function CapsuleEggRewardView:UpdateScord()
|
|
self.record_list = self.model:GetAllRecordList(self.pool_type)
|
|
if #self.record_list > 0 then
|
|
self:PlayScrodAction()
|
|
end
|
|
end
|
|
|
|
function CapsuleEggRewardView:PlayScrodAction()
|
|
if not self.record_item then
|
|
self.record_item = {}
|
|
self.record_item[1] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name)
|
|
self.record_item[2] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name)
|
|
self.record_item[1]:SetAnchoredPosition(0, -100)
|
|
self.record_item[2]:SetAnchoredPosition(0, -100)
|
|
end
|
|
|
|
if self.is_ani then
|
|
return
|
|
end
|
|
self.is_ani = true
|
|
if self.play_record_item ~= self.record_item[1] then
|
|
self.play_record_item = self.record_item[1]
|
|
else
|
|
self.play_record_item = self.record_item[2]
|
|
end
|
|
self.play_record_idx = self.play_record_idx + 1
|
|
if self.play_record_idx > #self.record_list then
|
|
self.play_record_idx = 1
|
|
end
|
|
self.play_record_item:SetData(self.record_list[self.play_record_idx])
|
|
self.play_record_item:MoveIn()
|
|
|
|
if self.last_play_record_item then
|
|
self.last_play_record_item:MoveOut()
|
|
end
|
|
self.last_play_record_item = self.play_record_item
|
|
|
|
if self.delay_timer then
|
|
GlobalTimerQuest:CancelQuest(self.delay_timer)
|
|
self.delay_timer = false
|
|
end
|
|
local function delay_func( )
|
|
self.is_ani = false
|
|
self:PlayScrodAction()
|
|
end
|
|
self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_func,4)
|
|
end
|
|
|
|
|
|
function CapsuleEggRewardView:UpdateHourseModelCon(transform,figure_id )
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = transform,
|
|
fashion_type = FuncOpenModel.TypeId.FHorse,
|
|
raycast_size = Vector2(0,0),
|
|
scale = CapsuleEggShowAwardItem.HorseRewardShowPos.scale,
|
|
model_rotation = CapsuleEggShowAwardItem.HorseRewardShowPos.model_rotation,
|
|
figure_id = figure_id,
|
|
action_name_list = {"show"},
|
|
position = Vector3(0,0,0),
|
|
layer_name = self.layer_name,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|