源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 

515 wiersze
15 KiB

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