AdventureBookModel = AdventureBookModel or BaseClass(EventDispatcher)
|
|
|
|
AdventureBookModel.REQUEST_PROTOCAL = "AdventureBookModel.REQUEST_PROTOCAL"
|
|
AdventureBookModel.UPDATE_ADVENTURE_BOOK_INFO = "AdventureBookModel.UPDATE_ADVENTURE_BOOK_INFO" --更新冒险之书信息
|
|
AdventureBookModel.UPDATE_ADVENTURE_BOOK_DETAIL_VIEW = "AdventureBookModel.UPDATE_ADVENTURE_BOOK_DETAIL_VIEW" --打开详情界面
|
|
|
|
AdventureBookType = AdventureBookType or {
|
|
MAP = 1,
|
|
}
|
|
|
|
function AdventureBookModel:__init()
|
|
AdventureBookModel.Instance = self
|
|
|
|
self.book_info = {}
|
|
self.unactive_list = {}
|
|
self.need_find_way = true
|
|
end
|
|
|
|
function AdventureBookModel:getInstance()
|
|
if AdventureBookModel.Instance == nil then
|
|
AdventureBookModel.New()
|
|
end
|
|
return AdventureBookModel.Instance
|
|
end
|
|
|
|
--设置未激活冒险之书列表
|
|
function AdventureBookModel:SetUnActiveList(list)
|
|
for i, v in ipairs(list) do
|
|
self:AddUnActiveBook(v.type, v.subtype)
|
|
end
|
|
end
|
|
|
|
--增加未激活冒险之书
|
|
function AdventureBookModel:AddUnActiveBook(type, subtype)
|
|
if not self.unactive_list then
|
|
self.unactive_list = {}
|
|
end
|
|
if not self.unactive_list[type] then
|
|
self.unactive_list[type] = {}
|
|
end
|
|
local have = false
|
|
for i, v in ipairs(self.unactive_list[type]) do
|
|
if subtype == v then
|
|
have = true
|
|
break
|
|
end
|
|
end
|
|
if not have then
|
|
table.insert(self.unactive_list[type], subtype)
|
|
end
|
|
end
|
|
|
|
--移除已激活冒险之书
|
|
function AdventureBookModel:RemoveActiveBook(type, subtype)
|
|
if self.unactive_list and self.unactive_list[type] then
|
|
for i, v in ipairs(self.unactive_list[type]) do
|
|
if subtype == v then
|
|
table.remove(self.unactive_list[type], i)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--设置冒险之书信息
|
|
function AdventureBookModel:SetBookInfo(data)
|
|
self.book_info = self.book_info or {}
|
|
self.book_info[data.type] = data.book_list
|
|
|
|
local arg = {"subtype"}
|
|
local condition = {Array.LOWER}
|
|
SortTools.MoreKeysSorter(self.book_info[data.type], arg, condition)
|
|
end
|
|
|
|
--获取当前完成的最大索引
|
|
function AdventureBookModel:GetBookShowIndex(type)
|
|
local list = self.book_info[type]
|
|
if list then
|
|
return #list
|
|
end
|
|
|
|
return 1
|
|
end
|
|
|
|
function AdventureBookModel:GetBookListByType(type)
|
|
if not type then return {} end
|
|
return self.book_info and self.book_info[type] or {}
|
|
end
|
|
|
|
function AdventureBookModel:GetBookInfo(type, subtype)
|
|
local list = self:GetBookListByType(type)
|
|
for i, v in ipairs(list) do
|
|
if v.subtype == subtype then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
|
|
--更新冒险之书信息
|
|
function AdventureBookModel:UpdateBookInfo(list)
|
|
self.book_info = self.book_info or {}
|
|
|
|
for i, v in ipairs(list) do
|
|
self.book_info[v.type] = self.book_info[v.type] or {}
|
|
|
|
local have = false
|
|
for i2, v2 in ipairs(self.book_info[v.type]) do
|
|
if v2.subtype == v.subtype then
|
|
self.book_info[v.type][i2].progress = v.progress
|
|
self.book_info[v.type][i2].status = v.status
|
|
have = true
|
|
break
|
|
end
|
|
end
|
|
if not have then
|
|
table.insert(self.book_info[v.type], v)
|
|
end
|
|
|
|
local arg = {"subtype"}
|
|
local condition = {Array.LOWER}
|
|
SortTools.MoreKeysSorter(self.book_info[v.type], arg, condition)
|
|
|
|
self:Fire(AdventureBookModel.UPDATE_ADVENTURE_BOOK_INFO, v.type, v.subtype)
|
|
end
|
|
end
|
|
|
|
--获取配置表中所有的冒险之书
|
|
function AdventureBookModel:GetAllBookByType(type)
|
|
if not type then return {} end
|
|
|
|
local list = {}
|
|
for i, v in pairs(Config.Adventurebook) do
|
|
if v.type == type then
|
|
table.insert(list, v)
|
|
end
|
|
end
|
|
|
|
local arg = {"subtype"}
|
|
local condition = {Array.LOWER}
|
|
SortTools.MoreKeysSorter(list, arg, condition)
|
|
return list
|
|
end
|