148 lines
5.0 KiB
Plaintext
148 lines
5.0 KiB
Plaintext
UIModelAdventureSkill = class("UIModelAdventureSkill")
|
|
|
|
local gReusableArray = {}
|
|
|
|
function UIModelAdventureSkill:ctor()
|
|
|
|
end
|
|
|
|
function UIModelAdventureSkill.Instance()
|
|
if UIModelAdventureSkill.instance == nil then
|
|
UIModelAdventureSkill.instance = UIModelAdventureSkill.new()
|
|
end
|
|
return UIModelAdventureSkill.instance
|
|
end
|
|
|
|
local tabSkillShopItemsHaveNotLearn = {}
|
|
local tabSkillShopItemsDataHaveNotLearn = {}
|
|
|
|
function UIModelAdventureSkill:GetSkillShopItemsHaveNotLearn()
|
|
return tabSkillShopItemsHaveNotLearn
|
|
end
|
|
|
|
function UIModelAdventureSkill:PadTabSkillShopItemsHaveNotLearn(tab_skills_have_not_learn)
|
|
if tab_skills_have_not_learn ~= nil then
|
|
for i = 1, #tab_skills_have_not_learn do
|
|
local skillShopItemID = tab_skills_have_not_learn[i]
|
|
if not table.ContainsValue(tabSkillShopItemsHaveNotLearn, skillShopItemID) then
|
|
table.insert(tabSkillShopItemsHaveNotLearn, skillShopItemID)
|
|
local skillShopItemData = ShopProxy.Instance:GetShopItemDataByTypeId(
|
|
FuncAdventureSkill.iShopType,
|
|
FuncAdventureSkill.Instance().iSerialNumber,
|
|
skillShopItemID
|
|
)
|
|
table.insert(tabSkillShopItemsDataHaveNotLearn, skillShopItemData)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function UIModelAdventureSkill:RemoveFromTabSkillShopItemsHaveNotLearn(i_skill_shop_item_id)
|
|
for i = #tabSkillShopItemsHaveNotLearn, 1, -1 do
|
|
local skillShopItemID = tabSkillShopItemsHaveNotLearn[i]
|
|
if skillShopItemID == i_skill_shop_item_id then
|
|
table.remove(tabSkillShopItemsHaveNotLearn, i)
|
|
break
|
|
end
|
|
end
|
|
for i = #tabSkillShopItemsDataHaveNotLearn, 1, -1 do
|
|
local skillShopItemData = tabSkillShopItemsDataHaveNotLearn[i]
|
|
if skillShopItemData.id == i_skill_shop_item_id then
|
|
table.remove(tabSkillShopItemsDataHaveNotLearn, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function UIModelAdventureSkill:ClearTabSkillShopItemsHaveNotLearn()
|
|
TableUtility.ArrayClear(tabSkillShopItemsHaveNotLearn)
|
|
TableUtility.ArrayClear(tabSkillShopItemsDataHaveNotLearn)
|
|
end
|
|
|
|
function UIModelAdventureSkill:GetSkillShopItemsDataHaveNotLearn()
|
|
return tabSkillShopItemsDataHaveNotLearn
|
|
end
|
|
|
|
function UIModelAdventureSkill:GetSkillShopItemsDataHaveNotLearn_PreSkillBeLearned()
|
|
TableUtility.ArrayClear(gReusableArray)
|
|
for _, v in pairs(tabSkillShopItemsDataHaveNotLearn) do
|
|
local skillShopItemData = v
|
|
local skillID = skillShopItemData.SkillID
|
|
if skillID and skillID > 0 then
|
|
local skillConf = Table_Skill[skillID]
|
|
local filedCondition = skillConf.Contidion
|
|
if filedCondition ~= nil then
|
|
local preSkillID = filedCondition.skillid
|
|
if preSkillID == nil then
|
|
table.insert(gReusableArray, skillShopItemData)
|
|
elseif preSkillID > 0 then
|
|
if FuncAdventureSkill.Instance():SkillIsHaveLearned(preSkillID) then
|
|
table.insert(gReusableArray, skillShopItemData)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return gReusableArray
|
|
end
|
|
|
|
function UIModelAdventureSkill:GetAdventureLevel()
|
|
local appellation = MyselfProxy.Instance:GetCurManualAppellation();
|
|
return appellation and appellation.id or 1;
|
|
end
|
|
|
|
-- need optimize
|
|
function UIModelAdventureSkill:SortFromUnlockToLock(tab_skill_shop_items_data)
|
|
local adventureLevel = self:GetAdventureLevel()
|
|
if adventureLevel == nil or adventureLevel <= 0 then
|
|
LogUtility.Error(string.format('Local variable adventureLevel is illegal'))
|
|
else
|
|
if tab_skill_shop_items_data ~= nil and not table.IsEmpty(tab_skill_shop_items_data) then
|
|
local lockSkillShopItems = {}
|
|
local lockSkillShopItemsAppellation = {}
|
|
for i = #tab_skill_shop_items_data, 1, -1 do
|
|
local skillShopItemData = tab_skill_shop_items_data[i]
|
|
local requireAppellation = self:GetSkillRequireAppellation(skillShopItemData.id)
|
|
if requireAppellation > adventureLevel then
|
|
lockSkillShopItems[skillShopItemData.id] = skillShopItemData
|
|
table.insert(lockSkillShopItemsAppellation, {id = skillShopItemData.id, appellation = requireAppellation})
|
|
table.remove(tab_skill_shop_items_data, i)
|
|
end
|
|
end
|
|
table.sort(lockSkillShopItemsAppellation, function (x, y)
|
|
return x.appellation < y.appellation
|
|
end)
|
|
local sortedLockSkillShopItems = {}
|
|
for _, v in pairs(lockSkillShopItemsAppellation) do
|
|
local skillShopItemID = v.id
|
|
table.insert(sortedLockSkillShopItems, lockSkillShopItems[skillShopItemID])
|
|
end
|
|
for _, v in pairs(sortedLockSkillShopItems) do
|
|
local lockSkillShopItem = v
|
|
table.insert(tab_skill_shop_items_data, lockSkillShopItem)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function UIModelAdventureSkill:SortBaseFieldShopOrder(tab_skill_shop_items_data)
|
|
if tab_skill_shop_items_data ~= nil and not table.IsEmpty(tab_skill_shop_items_data) then
|
|
table.sort(tab_skill_shop_items_data, function (x, y)
|
|
return x.ShopOrder < y.ShopOrder
|
|
end)
|
|
end
|
|
end
|
|
|
|
function UIModelAdventureSkill:GetSkillRequireAppellation(i_shop_item_id)
|
|
local retValue = 0
|
|
if i_shop_item_id and i_shop_item_id > 0 then
|
|
local skillShopItemData = ShopProxy.Instance:GetShopItemDataByTypeId(
|
|
FuncAdventureSkill.iShopType,
|
|
FuncAdventureSkill.Instance().iSerialNumber,
|
|
i_shop_item_id
|
|
)
|
|
local skillID = skillShopItemData.SkillID
|
|
local skillConf = Table_Skill[skillID]
|
|
retValue = skillConf.Contidion.riskid
|
|
end
|
|
return retValue
|
|
end |