|
|
- AdventureBookItem = AdventureBookItem or BaseClass(BaseItem)
-
- local AdventureBookItem = AdventureBookItem
- local math_abs = math.abs
-
- AdventureBookItem.ITEM_OFFSET = 380
-
- function AdventureBookItem:__init()
- self.base_file = "adventureBook"
- self.layout_file = "AdventureBookItem"
- self.is_delay_callback = true
-
- self.model = AdventureBookModel:getInstance()
-
- self.need_refreshData = false
- self.real_index = -1
- self.is_lock = false
- self.cur_scale = -1
- self.drag_begin_x = 0
-
- self.max_book_index = 10
-
- self.curr_pos_x = 0
-
- self:Load()
- end
-
- function AdventureBookItem:Load_callback()
- self:LoadSuccess()
- self:InitEvent()
-
- if self.need_refreshData then
- self:SetData(self.data)
- end
- end
-
- function AdventureBookItem:LoadSuccess()
-
- self.icon_img,
- self.chapt_img,
- self.state_img = self:GetChildImages({
- "icon",
- "chapt",
- "state",
- })
-
-
- self.state_object,
- self.lock_object,
- self.select_object = self:GetChildGameObjects(
- {
- "state",
- "lock",
- "select",
- })
-
- self.lock_txt,
- self.content_txt = self:GetChildTexts({
- "lock/text",
- "content",
- })
- end
-
- function AdventureBookItem:InitEvent()
- end
-
- function AdventureBookItem:OnClickItem()
- if not self.is_loaded then
- return
- end
- if self.is_lock then
- Message.show("暂未解锁本书")
- else
- self.model:Fire(AdventureBookModel.UPDATE_ADVENTURE_BOOK_DETAIL_VIEW, self.data.type, self.data.subtype)
- end
- end
-
- function AdventureBookItem:SetData(data)
- self.data = data
- if not self.data then return end
-
- if self.is_loaded then
- local info = self.model:GetBookInfo(self.data.type, self.data.subtype)
- if info then
- self:SetLockState(false)
- self.state_object:SetActive(true)
- if info.status == 0 then --进行中
- lua_resM:setImageSprite(self,self.state_img,"adventureBook_asset", "tyui_jxz")
- elseif info.status == 1 then --可激活
- lua_resM:setImageSprite(self,self.state_img,"adventureBook_asset", "tyui_kjh")
- elseif info.status == 2 then --已完成
- lua_resM:setImageSprite(self,self.state_img,"adventureBook_asset", "tyui_ywc")
- end
- self.content_txt.text = "获得" ..Trim(self.data.reward_name)
- else
- self:SetLockState(true)
- self.state_object:SetActive(false)
- self.content_txt.text = ""
- end
-
- local show_index = self.model:GetBookShowIndex(self.data.type)
- if show_index == self.data.subtype then
- self:SetItemScale(1)
- self.select_object:SetActive(true)
- else
- self:SetItemScale(0.8)
- self.select_object:SetActive(false)
- end
-
- self.max_book_index = TableSize(Config.Adventurebook)
-
- lua_resM:setImageSprite(self,self.chapt_img,"adventureBook_asset", "zjui_title_" .. self.data.subtype,true)
- lua_resM:setOutsideImageSprite(self, self.icon_img, GameResPath.GetImage("adventureBook","zjui_bg1_"..self.data.subtype),true)
- else
- self.need_refreshData = true
- end
- end
-
- function AdventureBookItem:SetLockState(bool)
- self.is_lock = bool
-
- self.lock_object:SetActive(bool)
- if bool then
- self.icon_img.gray = true
-
- local unlock = ErlangParser:GetInstance():Parse(self.data.unlock_condition)
- if unlock and unlock[1] then
- if unlock[1][1] == "book" then
- local last_data = Config.Adventurebook[unlock[1][2].."@"..unlock[1][3]]
- if last_data then
- self.lock_txt.text = "激活"..Trim(last_data.name).."后解锁"
- end
- end
- end
- else
- self.icon_img.gray = false
- end
- end
-
- function AdventureBookItem:__delete()
-
- end
-
- function AdventureBookItem:SetItemScale(scale)
- scale = scale > 0.8 and scale or 0.8
- if self.cur_scale ~= scale then
- self.cur_scale = scale
- self:SetScale(scale)
- end
- end
-
- function AdventureBookItem:DragBegin()
- self:SetDragBeginX()
- end
-
- function AdventureBookItem:Drag(x,y)
- if not self.is_loaded then
- return
- end
-
- self:SetAnchoredPosition(self.drag_begin_x + x,0)
- self.curr_pos_x = self.transform.anchoredPosition.x
- if self.curr_pos_x < - AdventureBookItem.ITEM_OFFSET * 2 then
- local new_pos_x = self.curr_pos_x + AdventureBookItem.ITEM_OFFSET * 4
- self:SetAnchoredPosition(new_pos_x,0)
- self:SetDragBeginX(new_pos_x - x)
- local subtype = self.data.subtype + 4
- if subtype > self.max_book_index then
- subtype = subtype - self.max_book_index
- end
-
- local data = Config.Adventurebook[self.data.type .. "@" .. subtype]
- if data then
- self:SetData(data)
- end
-
- elseif self.curr_pos_x > AdventureBookItem.ITEM_OFFSET * 2 then
- local new_pos_x = self.curr_pos_x - AdventureBookItem.ITEM_OFFSET * 4
- self:SetAnchoredPosition(new_pos_x,0)
- self:SetDragBeginX(new_pos_x - x)
- local subtype = self.data.subtype - 4
- if subtype < 1 then
- subtype = subtype + self.max_book_index
- end
-
- local data = Config.Adventurebook[self.data.type .. "@" .. subtype]
- if data then
- self:SetData(data)
- end
- end
-
- self:SetItemScale(1 - 0.2 * math_abs(self.curr_pos_x) / AdventureBookItem.ITEM_OFFSET)
- end
-
- function AdventureBookItem:DragEnd()
- self:SetDragBeginX()
- end
-
- function AdventureBookItem:SetDragBeginX(x)
- if not self.is_loaded then
- return
- end
- self.drag_begin_x = x or self.transform.anchoredPosition.x
- end
|