源战役客户端
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.
 
 
 
 
 

233 lines
7.1 KiB

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