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
|