|
|
- 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
|