|
ExpDunRouteItem = ExpDunRouteItem or BaseClass(BaseItem)
|
|
local ExpDunRouteItem = ExpDunRouteItem
|
|
local SetImageGray = SetImageGray
|
|
|
|
function ExpDunRouteItem:__init(parent_wnd,prefab_asset,layer_name)
|
|
self.base_file = "expDun"
|
|
self.layout_file = "ExpDunRouteItem"
|
|
self.parent_wnd = parent_wnd
|
|
self.layer_name = layer_name
|
|
self.is_selected = false
|
|
self.show_reward = false
|
|
self.limit_page = 0
|
|
self.wave_node_list = {}
|
|
self.model = ExpDunModel:getInstance()
|
|
self.dun_model = BaseDungeonModel:getInstance()
|
|
self:Load()
|
|
end
|
|
|
|
function ExpDunRouteItem:Load_callback()
|
|
local nodes = {
|
|
"bg:img",
|
|
"bg/box:obj:img",
|
|
"bg/selected:obj:img", "bg/selected/route_exp:tmp", "bg/selected/route_exp_bg:img",
|
|
"bg/box_red:img",
|
|
-- 星星节点
|
|
"bg/light_con:obj",
|
|
"bg/route_name:obj:tmp",
|
|
}
|
|
self:GetChildren(nodes)
|
|
self.ori_arrow_posy = 45
|
|
self.up_arrow_posy = self.ori_arrow_posy + 5
|
|
self.down_arrow_posy = self.ori_arrow_posy - 5
|
|
SetAnchoredPositionY(self.selected, self.up_arrow_posy)
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function ExpDunRouteItem:AddEvents( )
|
|
local function click_event(target)
|
|
if target == self.box_obj then
|
|
if self.receive_status == 0 then
|
|
self.dun_model:Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61045, BaseDungeonModel.EXP_DUN_ID, self.cur_ms_wave)
|
|
else
|
|
self.model:Fire(ExpDunModel.SHOW_MS_REWARD, self.data.ms_data, self.transform.anchoredPosition, self.index)
|
|
end
|
|
end
|
|
end
|
|
AddClickEvent(self.box_obj, click_event)
|
|
|
|
-- 领取成功后要更新领取状态
|
|
local function update_receive_flag()
|
|
self:UpdateReceiveData()
|
|
end
|
|
self:BindEvent(self.dun_model, BaseDungeonModel.UPDATE_EXP_ROUTE_DATA, update_receive_flag)
|
|
end
|
|
|
|
-- cur_wave:当前进行中的波次
|
|
function ExpDunRouteItem:SetData(data, cur_wave, index, limit_page_min_wave)
|
|
self.data = data
|
|
self.cur_wave = cur_wave
|
|
self.index = index
|
|
self.limit_page_min_wave = limit_page_min_wave
|
|
self.cur_ms_wave = self.data.ms_data.wave
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function ExpDunRouteItem:UpdateView( )
|
|
if self.data then
|
|
local is_lower_index = self.index % 2 == 1 -- 是否是处于下侧的item
|
|
|
|
SetAnchoredPosition(self.bg, 64, is_lower_index and -33.5 or 33.5)
|
|
SetAnchoredPositionY(self.light_con, is_lower_index and 0 or -56)
|
|
|
|
-- 是否还没开始打
|
|
local still_unlock = self.cur_ms_wave > self.cur_wave + 1
|
|
lua_resM:setImageSprite(self, self.bg_img, "expDun_asset", still_unlock and "exp_dun_ms_point1" or "exp_dun_ms_point2")
|
|
local is_limit = self.limit_page_min_wave and self.cur_ms_wave >= self.limit_page_min_wave or false
|
|
SetImageGray(self.bg_img, is_limit)
|
|
SetImageGray(self.box_img, is_limit)
|
|
self.route_name_tmp.text = string.format("第%s波", self.cur_ms_wave)
|
|
-- 提前获取下一波可以获得的经验值
|
|
local next_wave = self.cur_wave < TableSize(Config.Expdunwave) and self.cur_wave + 1 or self.cur_wave
|
|
local wave_cfg = self.dun_model:GetDunWaveCfg(BaseDungeonModel.EXP_DUN_ID, next_wave)
|
|
local exp_num = 0
|
|
if wave_cfg and wave_cfg.first_reward and TableSize(wave_cfg.first_reward) > 0 then
|
|
for k, v in ipairs(wave_cfg.first_reward) do
|
|
if v[1] == 5 then -- 经验
|
|
exp_num = exp_num + v[3]
|
|
end
|
|
end
|
|
end
|
|
local next_wave_exp_str = string.format("经验%s", WordManager:ConvertNum1(exp_num))
|
|
-- 加载波数节点点亮
|
|
for k, v in ipairs(self.wave_node_list) do
|
|
v:SetVisible(false)
|
|
v:ShowLight(false)
|
|
end
|
|
local normal_node_num = #self.data.normal_data
|
|
local item_gap_x = (self.light_con.sizeDelta.x - 30 * normal_node_num) / (normal_node_num + 1)
|
|
local item_gap_y = 36 / (normal_node_num - 1)
|
|
for k, v in ipairs(self.data.normal_data) do -- 普通的路线节点
|
|
self.wave_node_list[k] = self.wave_node_list[k] or ExpDunRouteWaveItem.New(self.light_con)
|
|
self.wave_node_list[k]:ShowLight(v.wave <= self.cur_wave)
|
|
self.wave_node_list[k]:SetSelected(v.wave == self.cur_wave + 1, next_wave_exp_str)
|
|
self.wave_node_list[k]:SetVisible(true)
|
|
self.wave_node_list[k]:SetAnchoredPosition(
|
|
(k - 1) * (30 + item_gap_x) + item_gap_x + 2,
|
|
36 * (is_lower_index and 1 or -1) + (is_lower_index and -1 or 1) * item_gap_y * k
|
|
)
|
|
end
|
|
-- 本节点是不是下一次挑战要继续的节点
|
|
local is_next = self.cur_ms_wave == self.cur_wave + 1
|
|
self.selected_obj:SetActive(is_next)
|
|
self.route_exp_bg_img.enabled = is_next
|
|
self.route_exp_tmp.text = is_next and next_wave_exp_str or ""
|
|
self:StartNextWaveArrowAnim(is_next)
|
|
self:UpdateReceiveData()
|
|
end
|
|
end
|
|
|
|
function ExpDunRouteItem:StartNextWaveArrowAnim(show)
|
|
self:StopArrowAnim()
|
|
if show then
|
|
local move_up_func = function ()
|
|
local function repeat_func()
|
|
self:StartNextWaveArrowAnim(true)
|
|
end
|
|
self.arrow_move_up_id = TweenLite.to(self, self.selected, TweenLite.UiAnimationType.POSY, self.up_arrow_posy, 1.2, repeat_func)
|
|
end
|
|
self.arrow_con_move_down_id = TweenLite.to(self, self.selected, TweenLite.UiAnimationType.POSY, self.down_arrow_posy, 1.2, move_up_func)
|
|
end
|
|
end
|
|
|
|
function ExpDunRouteItem:StopArrowAnim()
|
|
if self.arrow_con_move_down_id then
|
|
TweenLite.Stop(self.arrow_con_move_down_id)
|
|
self.arrow_con_move_down_id = nil
|
|
end
|
|
if self.arrow_move_up_id then
|
|
TweenLite.Stop(self.arrow_move_up_id)
|
|
self.arrow_move_up_id = nil
|
|
end
|
|
end
|
|
|
|
function ExpDunRouteItem:UpdateReceiveData( )
|
|
-- 加载领取信息 0为未领取,1为已领取 没有的为空记-1
|
|
self.receive_status = self.dun_model:GetDunWaveRewardData(BaseDungeonModel.EXP_DUN_ID, self.cur_ms_wave) or -1
|
|
lua_resM:setImageSprite(self, self.box_img, "expDun_asset", self.receive_status == 1 and "exp_route_box2" or "exp_route_box1", true)
|
|
self.box_red_img.enabled = self.receive_status == 0
|
|
end
|
|
|
|
function ExpDunRouteItem:__delete( )
|
|
for k, v in pairs(self.wave_node_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.wave_node_list = nil
|
|
self:StopArrowAnim()
|
|
end
|