SkillUIItem = SkillUIItem or BaseClass(BaseItem)
|
|
SkillUIItem.HANDLE_TYPE =
|
|
{
|
|
default = 0,
|
|
up = 1, --可升级
|
|
learn = 2, --可学习
|
|
change = 4, --可替换
|
|
config = 5, --可上阵
|
|
}
|
|
|
|
SkillUIItem.GO_TYPE =
|
|
{
|
|
VIP = 1,
|
|
DAILT_SKILL = 2,
|
|
SPECIAL_SKILL = 3,
|
|
SEVEN_DAY_TARGET = 4,
|
|
SUPER_VIP = 5,
|
|
}
|
|
|
|
function SkillUIItem:__init(parent_wnd, _, mask_id, scroll_veiw)
|
|
self.base_file = "skillUI"
|
|
self.layout_file = "SkillUIItem"
|
|
|
|
self.skillui_model = SkillUIModel:getInstance()
|
|
self.skill_vo = nil
|
|
self.pos = nil
|
|
self.is_select = false
|
|
self.next_asset = false
|
|
self.is_lock = false
|
|
self.hide_name = false
|
|
self.show_red_dot = false
|
|
self.view_index = false
|
|
self.can_drag = false
|
|
self.mScroll = scroll_veiw
|
|
self.drag_listener = false
|
|
self.show_lock_info = false
|
|
self.show_level = true
|
|
self.handle_type = SkillUIItem.HANDLE_TYPE.default
|
|
self.need_turn_handle = false
|
|
self.use_for = "default"
|
|
self.showing_effect = false
|
|
self.will_show_effect = false
|
|
self.show_next = false
|
|
self:Load()
|
|
end
|
|
|
|
--清除界面
|
|
function SkillUIItem:__delete()
|
|
self:Remove()
|
|
end
|
|
|
|
function SkillUIItem:Load_callback()
|
|
self:LoadSuccess()
|
|
self:InitEvent()
|
|
end
|
|
|
|
function SkillUIItem:Remove()
|
|
self.call_back = nil
|
|
self:ClearUIEffect(self.effect_con)
|
|
end
|
|
|
|
function SkillUIItem:LoadSuccess()
|
|
|
|
local nodes = {
|
|
"red_dot:obj",
|
|
"select:obj:img",
|
|
"btn:obj",
|
|
"icon:img:obj",
|
|
"lock:obj",
|
|
"namebg/name:tmp",
|
|
"namebg:obj",
|
|
"bg:obj:img",
|
|
"tips:tmp:obj",
|
|
"go_btn:obj",
|
|
"levelbg:obj:img",
|
|
"levelbg/level:tmp",
|
|
"handle:obj:img",
|
|
"effect_con",
|
|
"is_max:obj",
|
|
"is_config:obj",
|
|
"type_img:obj:img",
|
|
"next:obj:img",
|
|
"is_auto_daily_skill:obj",
|
|
"is_ex:obj",
|
|
}
|
|
self:GetChildren(nodes)
|
|
self.red_dot_obj:SetActive(false)
|
|
self.select_obj:SetActive(false)
|
|
|
|
if self.need_refreshData then
|
|
self:SetUseFor(self.use_for)
|
|
if self.is_nil then
|
|
self:SetNil(self.pos, self.view_index)
|
|
else
|
|
self:SetData(self.skill_vo, self.pos,self.view_index,self.hide_name, self.show_level)
|
|
self:WillShowEffect(self.will_show_effect)
|
|
end
|
|
self:SetSelect(self.is_select)
|
|
self:ShowRedDot(self.show_red_dot)
|
|
self:SetHandle(self.handle_type)
|
|
self:CanDrag(self.can_drag)
|
|
self:SetLockInfo(self.show_lock_info)
|
|
self:ShowNext(self.show_next)
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetData(vo, pos,view_index,hide_name, show_level)
|
|
self.skill_vo = vo
|
|
self.pos = pos
|
|
self.hide_name = hide_name
|
|
self.is_nil = false
|
|
self.view_index = view_index
|
|
self.show_level = show_level == nil and true or show_level
|
|
if self.is_loaded then
|
|
self:UpdateItem()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetNil(pos,view_index)
|
|
self.is_nil = true
|
|
self.view_index = view_index
|
|
self.pos = pos
|
|
self.skill_vo = false
|
|
if self.is_loaded then
|
|
self:UpdateItem()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:IsNil()
|
|
return self.is_nil
|
|
end
|
|
|
|
function SkillUIItem:UpdateItem()
|
|
if self.is_nil then
|
|
self.namebg_obj:SetActive(false)
|
|
self.lock_obj:SetActive(self.is_lock)
|
|
self.icon_obj:SetActive(false)
|
|
self.levelbg_obj:SetActive(false)
|
|
self.tips_obj:SetActive(false)
|
|
self.go_btn_obj:SetActive(false)
|
|
self.handle_obj:SetActive(false)
|
|
return
|
|
end
|
|
if not self.skill_vo then
|
|
return
|
|
end
|
|
self.icon_obj:SetActive(true)
|
|
local skill_vo = self.skill_vo
|
|
self.namebg_obj:SetActive(not self.hide_name)
|
|
self.name_tmp.text = skill_vo:getName()
|
|
self.lock_obj:SetActive(skill_vo.level == 0)
|
|
|
|
self.levelbg_obj:SetActive(self.show_level and skill_vo.level ~= 0)
|
|
if self.use_for == "SkillViewList" then
|
|
self.is_config_obj:SetActive(SkillManager.getInstance():IsCurShortcutSkill(skill_vo.id))
|
|
self.type_img_obj:SetActive(skill_vo:IsPassitiveSkill() or skill_vo:IsAngerSkill())
|
|
--被动技能
|
|
if skill_vo:IsPassitiveSkill() then
|
|
lua_resM:setImageSprite(self,self.type_img_img,"skillUI_asset",skill_vo.level == 0 and "skill_ui_item_4" or "skill_ui_item_3", true)
|
|
--怒气技能
|
|
elseif skill_vo:IsAngerSkill() then
|
|
lua_resM:setImageSprite(self,self.type_img_img,"skillUI_asset",skill_vo.level == 0 and "skill_ui_item_2" or "skill_ui_item_1", true)
|
|
end
|
|
|
|
if skill_vo:IsMaxLevel() then
|
|
self.is_max_obj:SetActive(true)
|
|
self.level_tmp.text = ""
|
|
else
|
|
self.is_max_obj:SetActive(false)
|
|
self.level_tmp.text = string.format("等级 %s/%d", HtmlColorTxt(skill_vo.level, "#0ce148") , skill_vo:GetTotalLevel())
|
|
end
|
|
elseif self.use_for == "LegendlSkill" then
|
|
self.levelbg_obj:SetActive(true)
|
|
self.level_tmp.text = string.format("Lv.%d", skill_vo.level)
|
|
|
|
elseif self.use_for == "SkillLevelShow" then
|
|
self.level_tmp.text = string.format("等级 %d", skill_vo.level)
|
|
|
|
else
|
|
self.level_tmp.text = string.format("Lv.%d", skill_vo.level)
|
|
end
|
|
|
|
lua_resM:setOutsideImageSprite(self,self.icon_img,GameResPath.GetSkillIcon(self.skill_vo.id), true)
|
|
|
|
-- VIP怒气大招EX
|
|
if skill_vo.level == 3 and SkillManager:getInstance():IsAngrySkill(self.skill_vo.id) then
|
|
self.is_ex_obj:SetActive(true)
|
|
elseif self.is_ex_obj.activeSelf ~= false then
|
|
self.is_ex_obj:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:InitEvent()
|
|
local function onBtnClickHandler(target)
|
|
print('Cat:SkillUIItem.lua[191] data',self.use_for, self.view_index)
|
|
if self.use_for == "CareerSkillViewConfigList" then
|
|
return
|
|
end
|
|
if target == self.btn_obj then
|
|
-- if self.need_turn_handle then
|
|
-- local career = RoleManager:getInstance():GetMainRoleVo().career
|
|
-- local cfg = Config.Transfercareer
|
|
-- local career_name = ""
|
|
-- for k,v in pairs(cfg) do
|
|
-- if v.career == career and v.transfer_id == self.need_turn_handle then
|
|
-- career_name = Trim(v.name)
|
|
-- break
|
|
-- end
|
|
-- end
|
|
-- Message.show(string.format("转职为%s后可解", HtmlColorTxt(career_name, "#2cf86f")))
|
|
-- return
|
|
-- end
|
|
self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, self.view_index, self:GetSkillId(), self.pos)
|
|
|
|
elseif target == self.go_btn_obj then
|
|
if self.use_for == "LegendlSkill" then
|
|
return
|
|
end
|
|
if self.can_go then
|
|
if SkillUIItem.GO_TYPE.DAILT_SKILL == self.can_go then
|
|
OpenFun.Open(147, 0)
|
|
elseif SkillUIItem.GO_TYPE.SPECIAL_SKILL == self.can_go then
|
|
OpenFun.Open(144, 0)
|
|
elseif SkillUIItem.GO_TYPE.VIP == self.can_go then
|
|
OpenFun.Open(158, 0)
|
|
elseif SkillUIItem.GO_TYPE.SEVEN_DAY_TARGET == self.can_go then
|
|
SevenDayTargetModel:getInstance():Fire(SevenDayTargetModel.OPEN_SEVEN_DAY_TARGET_MAIN_VIEW)
|
|
elseif SkillUIItem.GO_TYPE.SUPER_VIP == self.can_go then
|
|
if SupremeVipModel:getInstance():IsMomentSupremeVip() then
|
|
OpenFun.Open(451,6)
|
|
else
|
|
OpenFun.Open(451,5)
|
|
end
|
|
else
|
|
GlobalEventSystem:Fire(EventName.OPEN_SHOP_VIEW, self.can_go.shop_type, self.can_go.sub_type, self.can_go.goods_id, true)
|
|
end
|
|
else
|
|
Message.show("参与各项活动概率获得哦!")
|
|
end
|
|
end
|
|
end
|
|
AddClickEvent(self.btn_obj, onBtnClickHandler)
|
|
AddClickEvent(self.go_btn_obj, onBtnClickHandler)
|
|
|
|
-- if self.mScroll then
|
|
-- self.drag_listener = GetLuaDragExtendListener(self.btn_obj)
|
|
-- if self.drag_listener then
|
|
-- local function OnBtnDragTigger(target)
|
|
-- if target == self.btn_obj then
|
|
-- if self.can_drag then
|
|
-- self.skillui_model:Fire(SkillUIModel.DRAG_SKILL_ITEM_BEGIN, self:GetSkillId(), self.pos, 1)
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- LuaDragExtendTriggeListener(self.btn_obj, OnBtnDragTigger)
|
|
|
|
-- if self.mScroll then
|
|
-- self.drag_listener:SetParentScrollRect(self.mScroll)
|
|
-- end
|
|
-- --拖拽阈值
|
|
-- self.drag_listener:SetTriggerVector({x = 30, y = 0})
|
|
-- end
|
|
-- end
|
|
end
|
|
|
|
function SkillUIItem:SetSelect(b)
|
|
self.is_select = b
|
|
if self.is_loaded then
|
|
self.select_obj:SetActive(self.is_select)
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetLock(lock)
|
|
self.is_lock = lock
|
|
if self.is_loaded then
|
|
self.lock_obj:SetActive(self.is_lock)
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:ShowRedDot(b)
|
|
self.show_red_dot = b
|
|
if self.is_loaded then
|
|
self.red_dot_obj:SetActive(self.show_red_dot)
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:GetSkillId()
|
|
local skill_id = 0
|
|
if self.skill_vo then
|
|
skill_id = self.skill_vo.id
|
|
end
|
|
return skill_id
|
|
end
|
|
|
|
function SkillUIItem:GetSkillLevel()
|
|
local skill_level = 0
|
|
if self.skill_vo then
|
|
skill_level = self.skill_vo.level
|
|
end
|
|
return skill_level
|
|
end
|
|
|
|
function SkillUIItem:CanDrag(can_drag)
|
|
self.can_drag = can_drag
|
|
if self.is_loaded then
|
|
if self.drag_listener then
|
|
self.drag_listener.isTriggerItem = self.can_drag
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
|
|
function SkillUIItem:SetUseFor(use_for)
|
|
self.use_for = use_for
|
|
if self.is_loaded then
|
|
self.bg_obj:SetActive(true)
|
|
self.is_max_obj:SetActive(false)
|
|
self.next_obj:SetActive(false)
|
|
self.is_config_obj:SetActive(false)
|
|
self.type_img_img.enabled = false
|
|
self.name_tmp.enabled = true
|
|
self.levelbg_img.enabled = false
|
|
self.tips_tmp.enabled = true
|
|
self.level_tmp.enabled = true
|
|
self.name_tmp.fontSize = 18
|
|
SetAnchoredPositionY(self.level, -30)
|
|
|
|
|
|
if self.use_for == "SkillConfigViewList" then
|
|
SetAnchoredPositionY(self.level, 0)
|
|
self.levelbg_img.enabled = true
|
|
lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_19", true)
|
|
elseif self.use_for == "SkillViewList" then
|
|
self.type_img_img.enabled = true
|
|
self.name_tmp.enabled = false
|
|
lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_19", true)
|
|
elseif self.use_for == "SkillConfigViewSlot" then
|
|
lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_15", true)
|
|
|
|
elseif self.use_for == "LegendlSkill" then
|
|
self.tips_tmp.enabled = false
|
|
self.name_tmp.fontSize = 16
|
|
SetAnchoredPositionY(self.level, 0)
|
|
self.levelbg_img.enabled = true
|
|
lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_27", true)
|
|
|
|
elseif self.use_for == "SkillDrag" then
|
|
self.level_tmp.enabled = false
|
|
|
|
elseif self.use_for == "SkillLevelShow" then
|
|
lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_24", true)
|
|
self.name_tmp.enabled = false
|
|
else
|
|
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetHandle(handle_type)
|
|
self.handle_type = handle_type
|
|
if self.is_loaded then
|
|
self:ShowRedDot(false)
|
|
if self.handle_type == SkillUIItem.HANDLE_TYPE.default then
|
|
self.handle_obj:SetActive(false)
|
|
else
|
|
self.handle_obj:SetActive(true)
|
|
local img_str = "skill_ui_item_30"
|
|
if self.handle_type == SkillUIItem.HANDLE_TYPE.up then
|
|
img_str = "skill_ui_item_31"
|
|
self:ShowRedDot(true)
|
|
elseif self.handle_type == SkillUIItem.HANDLE_TYPE.learn then
|
|
img_str = "skill_ui_item_33"
|
|
self:ShowRedDot(true)
|
|
elseif self.handle_type == SkillUIItem.HANDLE_TYPE.change then
|
|
img_str = "skill_ui_item_32"
|
|
elseif self.handle_type == SkillUIItem.HANDLE_TYPE.config then
|
|
img_str = "skill_ui_item_30"
|
|
end
|
|
lua_resM:setImageSprite(self, self.handle_img, "skillui_asset",img_str, true)
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetLockInfo(show_lock_info)
|
|
self.show_lock_info = show_lock_info
|
|
if self.is_loaded then
|
|
self.can_go = false
|
|
self.go_btn_obj:SetActive(false)
|
|
self.is_auto_daily_skill_obj:SetActive(self.use_for == "SkillViewList" and self.skill_vo and self.skill_vo:IsDailyLightSkill() and self.skill_vo.level > 0 and self.skillui_model:IsAutoChangeDailySkillid())
|
|
if (self.show_lock_info and self.skill_vo and self.skill_vo.level == 0) or (self.skill_vo and self.skill_vo:IsSpecialSkill()) or (self.skill_vo and self.skill_vo:IsForbidJumpSkill()) then
|
|
self.tips_obj:SetActive(true)
|
|
local str = ""
|
|
local skill_vo = self.skill_vo
|
|
if self.use_for == "SkillLevelShow" then return end
|
|
if skill_vo:IsSpecialSkill() and not SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(skill_vo.id) then
|
|
if skill_vo.level == 0 then
|
|
self.go_btn_obj:SetActive(true)
|
|
str = string.format("%s", HtmlColorTxt("<u>魂力突破</u>", "#2cf86f"))
|
|
self.can_go = SkillUIItem.GO_TYPE.SPECIAL_SKILL
|
|
end
|
|
elseif skill_vo:IsDailyLightSkill() then
|
|
local item = self.skillui_model:GetDailySkillItem(skill_vo.id, skill_vo.level + 1)
|
|
if item then
|
|
self.go_btn_obj:SetActive(true)
|
|
str = string.format("%s", HtmlColorTxt("<u>激活幻光</u>", "#2cf86f"))
|
|
self.can_go = SkillUIItem.GO_TYPE.DAILT_SKILL
|
|
end
|
|
elseif SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(skill_vo.id) then
|
|
self.go_btn_obj:SetActive(true)
|
|
str = string.format("%s", HtmlColorTxt("<u>七日目标</u>", "#2cf86f"))
|
|
self.can_go = SkillUIItem.GO_TYPE.SEVEN_DAY_TARGET
|
|
elseif skill_vo:IsForbidJumpSkill() then
|
|
if skill_vo.level == 0 then
|
|
if not SupremeVipModel:getInstance():IsForeverSupremeVip() then
|
|
self.go_btn_obj:SetActive(true)
|
|
str = string.format("%s", HtmlColorTxt("<u>二阶贵族</u>", "#2cf86f"))
|
|
self.can_go = SkillUIItem.GO_TYPE.SUPER_VIP
|
|
end
|
|
end
|
|
else
|
|
local vip = skill_vo:GetNextConditionByKey("vip")
|
|
local turn = skill_vo:GetNextConditionByKey("turn")
|
|
local level = skill_vo:GetNextConditionByKey("level")
|
|
local goods = skill_vo:GetNextConditionByKey("goods")
|
|
if vip then
|
|
self.go_btn_obj:SetActive(true)
|
|
str = HtmlColorTxt(string.format("<u>达到VIP%d</u>", vip) , "#0ce148")
|
|
self.can_go = SkillUIItem.GO_TYPE.VIP
|
|
elseif goods and goods[1][1] then
|
|
self.go_btn_obj:SetActive(true)
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods[1][1])
|
|
local cfg = ShopModel:getInstance():GetShopTypeIdBuyCFG(basic.type_id)
|
|
self.go_btn_obj:SetActive(true)
|
|
if cfg and TableSize(cfg) > 0 then
|
|
local shop_cfg = false
|
|
for k,v in pairs(cfg) do
|
|
shop_cfg = v
|
|
break
|
|
end
|
|
str = HtmlColorTxt( string.format("<u>%s</u>", ShopModel:getInstance():GetShopTabName(shop_cfg.shop_type)), "#0ce148")
|
|
self.can_go = shop_cfg
|
|
else
|
|
str = HtmlColorTxt("<u>运营活动</u>", "#0ce148")
|
|
end
|
|
elseif level then
|
|
str = HtmlColorTxt(string.format("%d级 自动学习", level) , "#fdffc2")
|
|
end
|
|
end
|
|
self.tips_tmp.text = str
|
|
else
|
|
self.tips_obj:SetActive(false)
|
|
end
|
|
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:SetNeedTurnHandle(handle)
|
|
self.need_turn_handle = handle
|
|
end
|
|
|
|
function SkillUIItem:WillShowEffect(show)
|
|
self.will_show_effect = show
|
|
if self.is_loaded then
|
|
if self.will_show_effect then
|
|
self.will_show_effect = false
|
|
self:AddEffect()
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:ShowNext(show_next)
|
|
self.show_next = show_next
|
|
if self.is_loaded then
|
|
if self.show_next then
|
|
self.next_obj:SetActive(true)
|
|
lua_resM:setImageSprite(self,self.next_img,"skillUI_asset",self.show_next == 0 and "skill_ui_item_15" or "skill_ui_item_16", true)
|
|
else
|
|
self.next_obj:SetActive(false)
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIItem:AddEffect()
|
|
if not self.showing_effect then
|
|
local function call_back( )
|
|
self.showing_effect = false
|
|
end
|
|
|
|
self:ClearUIEffect(self.effect_con)
|
|
self:AddUIEffect("ui_hunliqiudianliang", self.effect_con, "Activity", nil, 2.8, false, 0.6, nil, call_back)
|
|
self.showing_effect = true
|
|
end
|
|
end
|