848 lines
25 KiB
Plaintext
848 lines
25 KiB
Plaintext
autoImport("TaskQuestCell")
|
||
autoImport("DeathPopView")
|
||
autoImport("QuestDetailTip")
|
||
MainViewTaskQuestPage = class("MainViewTaskQuestPage",SubView)
|
||
|
||
--ZGBTODO
|
||
-- 去除gameobjpool
|
||
-- effectmap
|
||
-- 控制人物表現 通過ncreature.client_xxx
|
||
|
||
-- 播放動作不再支援循環次數,只能設定是否循環
|
||
-- Game.Config_Action
|
||
-- Game.Config_Action["action_name"] = Table_ActionAnime[action_id]
|
||
|
||
--人物死亡動作回撥
|
||
|
||
|
||
-- LuaGameObject新增GetProperty和GetComponent介面
|
||
|
||
-- Game.Config_Action
|
||
-- Game.Config_Action["action_name"] = Table_ActionAnime[action_id]
|
||
-- 將以前的ID,改為專案里resources/public/effect下相對完整路徑+檔名
|
||
-- 金幣
|
||
-- Mapmanager nsceneUserproxy luacolor
|
||
--photoAi -- questIcon --share --adventureture -- npcEffect
|
||
|
||
local tempVector3 = LuaVector3.zero
|
||
|
||
function MainViewTaskQuestPage:Init()
|
||
self:AddViewEvts()
|
||
self:initView()
|
||
self:initData()
|
||
self:initQusetList()
|
||
self.currentMapId = 0
|
||
self.isInFuben = false
|
||
self.isInHand = false
|
||
end
|
||
|
||
function MainViewTaskQuestPage:initData( )
|
||
-- body
|
||
self.appearAmMap = {}
|
||
self.onGoingQuestId = nil
|
||
end
|
||
|
||
function MainViewTaskQuestPage:initView( )
|
||
-- body
|
||
self.gameObject = self:FindGO("TaskQuestBord")
|
||
self.foldSymbol = self:FindGO("taskCellFoldSymbol")
|
||
self.taskBordFoldSymbol = self:FindGO("taskBordFoldSymbol")
|
||
local taskCellFoldSymbolSp = self:FindComponent("taskCellFoldSymbol",UISprite)
|
||
self:AddClickEvent(self.taskBordFoldSymbol,function ( )
|
||
-- body
|
||
TipManager.Instance:ShowTaskQuestTip(taskCellFoldSymbolSp,NGUIUtil.AnchorSide.Left,{-450,0})
|
||
end)
|
||
self:AddClickEvent(self.foldSymbol)
|
||
-- self:AddClickEvent(self.foldSymbol,function ( )
|
||
-- -- body
|
||
-- local cellCtrl = self:getTraceCellByQuestId( self.onGoingQuestId )
|
||
-- local panel = self.scrollview.panel
|
||
-- local bound = NGUIMath.CalculateRelativeWidgetBounds(panel.cachedTransform,cellCtrl.gameObject.transform)
|
||
-- local offset = panel:CalculateConstrainOffset(bound.min,bound.max)
|
||
-- offset = Vector3(0,offset.y,0)
|
||
-- self.scrollview:MoveRelative(offset)
|
||
-- self:Log("AddClickEvent",offset.y)
|
||
-- end)
|
||
|
||
self.playTweens = self.foldSymbol:GetComponents(UIPlayTween)
|
||
self.rotationTwn = self.foldSymbol:GetComponent(TweenRotation)
|
||
self.scrollview = self:FindGO("taskQuestScrollView"):GetComponent(UIScrollView);
|
||
self.EffectPanel = self:FindGO("EffectPanel")
|
||
self.taskBord = self:FindChild("taskBord")
|
||
self.taskQuestTable = self.taskBord:GetComponent(UITable)
|
||
self.questList = UIGridListCtrl.new(self.taskQuestTable,TaskQuestCell,"TaskQuestCell")
|
||
self.questList:AddEventListener(MouseEvent.MouseClick,self.questCellClick,self)
|
||
local objLua = self.gameObject:GetComponent(GameObjectForLua)
|
||
objLua.onEnable = function ( )
|
||
-- body
|
||
LeanTween.delayedCall(0.8, function ()
|
||
self:adjustScrollView()
|
||
end)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:adjustScrollView( )
|
||
-- body
|
||
-- self:Log("adjustScrollView RestrictWithinBounds")
|
||
self.questList:Layout()
|
||
self.scrollview:RestrictWithinBounds(true)
|
||
-- self.scrollview:ResetPosition()
|
||
|
||
-- local bound = NGUIMath.CalculateRelativeWidgetBounds(self.taskBord.transform,true)
|
||
-- if(self.scrollview and self.scrollview.panel)then
|
||
-- local panel = self.scrollview.panel
|
||
-- local y = panel:GetViewSize().y
|
||
-- if(bound.size.y < y)then
|
||
-- end
|
||
-- end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:AddViewEvts()
|
||
self:AddListenEvt(ServiceEvent.QuestQuestUpdate, self.QuestQuestUpdate)
|
||
self:AddListenEvt(ServiceEvent.QuestQuestList, self.setQuestData)
|
||
self:AddListenEvt(ServiceEvent.QuestQuestStepUpdate,self.QuestQuestStepUpdate)
|
||
self:AddListenEvt(ServiceEvent.QuestQueryOtherData,self.QuestQueryOtherData)
|
||
self:AddListenEvt(ItemEvent.ItemUpdate,self.ItemUpdate)
|
||
self:AddListenEvt(MyselfEvent.MyDataChange,self.ItemUpdate)
|
||
self:AddListenEvt(ServiceEvent.PlayerMapChange,self.handlePlayerMapChange)
|
||
self:AddListenEvt(QuestEvent.QuestDelete,self.questDelete)
|
||
self:AddListenEvt(MyselfEvent.DeathBegin,self.handleDeathStatus)
|
||
self:AddListenEvt(ServiceEvent.FuBenCmdTrackFuBenUserCmd,self.FuBenCmdTrackFuBenUserCmd)
|
||
self:AddListenEvt(QuestEvent.ProcessChange,self.ProcessChange)
|
||
self:AddListenEvt(QuestEvent.RemoveHelpQuest,self.RemoveHelpQuest)
|
||
self:AddListenEvt(QuestEvent.UpdateAnnounceQuestList,self.UpdateAnnounceQuestList)
|
||
self:AddListenEvt(QuestEvent.RemoveGuildQuestList,self.RemoveGuildQuestList)
|
||
self:AddListenEvt(QuestEvent.UpdateGuildQuestList,self.UpdateGuildQuestList)
|
||
self:AddListenEvt(QuestEvent.ShowManualGoEffect,self.HandleManualGoEffect)
|
||
-- self:AddListenEvt(MissionCommandEvent.MissionCommandEvent,self.handleMissionCommand)
|
||
|
||
|
||
local eventManager = EventManager.Me()
|
||
eventManager:AddEventListener(MyselfEvent.SceneGoToUserCmdHanded, self.SceneGoToUserCmd, self)
|
||
eventManager:AddEventListener(FunctionQuest.UpdateTraceInfo,self.updateTraceInfo,self)
|
||
eventManager:AddEventListener(FunctionQuest.RemoveTraceInfo,self.RemoveTraceInfo,self)
|
||
eventManager:AddEventListener(FunctionQuest.AddTraceInfo,self.AddTraceInfo,self)
|
||
eventManager:AddEventListener(HandEvent.MyStartHandInHand,self.MyStartHandInHand,self)
|
||
eventManager:AddEventListener(HandEvent.MyStopHandInHand,self.MyStopHandInHand,self)
|
||
eventManager:AddEventListener(MyselfEvent.MissionCommandChanged,self.handleMissionCommand,self)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:UpdateGuildQuestList( note )
|
||
local upQuests = note.body
|
||
for k,v in pairs(upQuests) do
|
||
-- helplog("UpdateGuildQuestList remove taskcell:",k,v.staticData.TraceInfo)
|
||
local cell,index = self:getTraceCellByQuestId(k)
|
||
if(cell)then
|
||
resetPos = true
|
||
cell:SetData(cell.data)
|
||
end
|
||
end
|
||
if(resetPos)then
|
||
self.questList:Layout()
|
||
end
|
||
self:selectShowDirQuest(self.onGoingQuestId,true)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:RemoveGuildQuestList( note )
|
||
|
||
local rmQuests = note.body
|
||
for k,v in pairs(rmQuests) do
|
||
-- helplog("RemoveGuildQuestList remove taskcell:",k,v.staticData.TraceInfo)
|
||
local cell,index = self:getTraceCellByQuestId(k)
|
||
if(cell)then
|
||
resetPos = true
|
||
self.questList:RemoveCell(index)
|
||
end
|
||
end
|
||
if(resetPos)then
|
||
self.questList:Layout()
|
||
self.scrollview:InvalidateBounds()
|
||
self.scrollview:RestrictWithinBounds(true)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:RemoveHelpQuest( note )
|
||
-- body
|
||
local ids = note.body;
|
||
if(type(ids)=="number")then
|
||
ids = {ids};
|
||
end
|
||
for i=1,#ids do
|
||
-- helplog("MainViewTaskQuestPage:RemoveHelpQuest( ):",ids[i])
|
||
ServiceSessionTeamProxy.Instance:CallAcceptHelpWantedTeamCmd(ids[i],true)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:UpdateAnnounceQuestList( note )
|
||
-- body
|
||
local questId = note.body;
|
||
local cell = self:getTraceCellByQuestId(questId)
|
||
local data = QuestProxy.Instance:getQuestDataByIdAndType(questId)
|
||
if(cell and data)then
|
||
cell:SetData(data)
|
||
local updateList = cell.bgSizeChanged
|
||
if(updateList)then
|
||
self.taskQuestTable.repositionNow = true
|
||
end
|
||
end
|
||
self:selectShowDirQuest(self.onGoingQuestId,true)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:removeAppearAnm( id )
|
||
-- body
|
||
self.appearAmMap[id] = nil
|
||
end
|
||
|
||
function MainViewTaskQuestPage:checkCellIsVisible( widget )
|
||
-- body
|
||
local panel = self.scrollview.panel
|
||
if(panel)then
|
||
return panel:IsVisible(widget)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage.effectLoaded(effectObj, pos )
|
||
-- body
|
||
if(not LuaGameObject.ObjectIsNull(effectObj))then
|
||
effectObj.transform.localPosition = pos
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:playTaskAppearAnm( cell )
|
||
-- body
|
||
if(cell.data.getIfShowAppearAnm and cell.data:getIfShowAppearAnm() and not self.appearAmMap[cell.data.id])then
|
||
if(self:checkCellIsVisible(cell.title))then
|
||
-- LogUtility.Info("playTaskAppearAnm")
|
||
self.appearAmMap[cell.data.id] = true
|
||
--ZGBTODO
|
||
tempVector3:Set(LuaGameObject.InverseTransformPointByTransform(self.EffectPanel.transform,cell.title.transform, Space.World))
|
||
self:PlayUIEffect(EffectMap.UI.Refresh,self.EffectPanel,true,MainViewTaskQuestPage.effectLoaded,tempVector3)
|
||
LeanTween.delayedCall(0.5, function ()
|
||
self:removeAppearAnm(cell.data.id)
|
||
cell.data:setIfShowAppearAnm(false)
|
||
end)
|
||
else
|
||
-- printRed("widget is invisible")
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:ItemUpdate( )
|
||
-- body
|
||
--item quest
|
||
local cells = self.questList:GetCells()
|
||
-- printRed("ItemUpdate",id,step)
|
||
for j=1,#cells do
|
||
local cell = cells[j]
|
||
local data = cell.data
|
||
-- printRed(cell.data:getIfShowAppearAnm())
|
||
if(QuestProxy.Instance:checkUpdateWithItemUpdate(data))then
|
||
local questData = QuestProxy.Instance:getQuestDataByIdAndType(data.id,SceneQuest_pb.EQUESTLIST_ACCEPT)
|
||
if(questData)then
|
||
cell:SetData(questData)
|
||
end
|
||
end
|
||
end
|
||
self:selectShowDirQuest(self.onGoingQuestId,true)
|
||
end
|
||
|
||
|
||
function MainViewTaskQuestPage:QuestQueryOtherData( )
|
||
-- body
|
||
--daily quest
|
||
local cells = self.questList:GetCells()
|
||
-- printRed("QuestQueryOtherData",id,step)
|
||
for j=1,#cells do
|
||
local cell = cells[j]
|
||
local data = cell.data
|
||
-- printRed(cell.data:getIfShowAppearAnm())
|
||
if(QuestDataType.QuestDataType_DAILY == data.type)then
|
||
local questData = QuestProxy.Instance:getQuestDataByIdAndType(data.id,SceneQuest_pb.EQUESTLIST_ACCEPT)
|
||
if(questData)then
|
||
cell:SetData(questData)
|
||
end
|
||
end
|
||
end
|
||
self:selectShowDirQuest(self.onGoingQuestId,true)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:QuestQuestUpdate( note )
|
||
-- body
|
||
self:setQuestData()
|
||
local data = note.body
|
||
local items = data.items
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note )1:")
|
||
if(items)then
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note )2:")
|
||
local topIndex = 99999
|
||
local topCell
|
||
for i=1,#items do
|
||
local item = items[i]
|
||
local del = item.del
|
||
local update = item.update
|
||
local type = item.type
|
||
if(type == SceneQuest_pb.EQUESTLIST_ACCEPT)then
|
||
if(update)then
|
||
for i=1,#update do
|
||
local single = update[i]
|
||
local cell,index = self:getTraceCellByQuestId(single.id)
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note )1:",index,single.id)
|
||
if(cell and QuestProxy.Instance:checkIsShowDirAndDis(cell.data))then
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note )2:",QuestProxy.Instance:checkIsShowDirAndDis(cell.data))
|
||
if(index < topIndex)then
|
||
topIndex = index
|
||
topCell = cell
|
||
end
|
||
end
|
||
end
|
||
end
|
||
break
|
||
end
|
||
end
|
||
if(topCell)then
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note ):",topCell.data.id,self.onGoingQuestId)
|
||
self:stopShowDirAndDis(self.onGoingQuestId)
|
||
self:ShowDirAndDis(topCell)
|
||
return
|
||
end
|
||
end
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestUpdate( note ) selectShowDirQuest:",self.onGoingQuestId)
|
||
self:selectShowDirQuest(self.onGoingQuestId)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:QuestQuestStepUpdate( note )
|
||
-- body
|
||
self:setQuestData()
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestStepUpdate( note ):",questId)
|
||
local data = note.body
|
||
local questId = data.id
|
||
if(questId ~= self.onGoingQuestId)then
|
||
local cell = self:getTraceCellByQuestId(questId)
|
||
if(cell and QuestProxy.Instance:checkIsShowDirAndDis(cell.data))then
|
||
self:stopShowDirAndDis(self.onGoingQuestId)
|
||
self:ShowDirAndDis(cell)
|
||
return
|
||
end
|
||
end
|
||
|
||
self:selectShowDirQuest(self.onGoingQuestId)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:ProcessChange( note )
|
||
-- body
|
||
-- self:Log("MainViewTaskQuestPage:QuestQuestStepUpdate( note ):",questId)
|
||
local data = note.body
|
||
local questId = data.id
|
||
local cell = self:getTraceCellByQuestId(questId)
|
||
if(cell)then
|
||
local questData = QuestProxy.Instance:getQuestDataByIdAndType(questId,SceneQuest_pb.EQUESTLIST_ACCEPT)
|
||
if(questData)then
|
||
cell:SetData(questData)
|
||
local updateList = cell.bgSizeChanged
|
||
if(updateList)then
|
||
self.taskQuestTable.repositionNow = true
|
||
end
|
||
end
|
||
end
|
||
if(questId ~= self.onGoingQuestId)then
|
||
if(cell and QuestProxy.Instance:checkIsShowDirAndDis(cell.data))then
|
||
self:stopShowDirAndDis(self.onGoingQuestId)
|
||
self:ShowDirAndDis(cell)
|
||
return
|
||
end
|
||
end
|
||
|
||
self:selectShowDirQuest(self.onGoingQuestId,true)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:initQusetList( )
|
||
-- body
|
||
self:setQuestData(true)
|
||
local id = LocalSaveProxy.Instance:getLastTraceQuestId()
|
||
self:selectShowDirQuest(id)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:selectShowDirQuest( id ,noMove)
|
||
-- body
|
||
local result = self:ShowDirAndDisByQuestId(id,noMove)
|
||
if( result)then
|
||
return
|
||
end
|
||
local cells = self.questList:GetCells()
|
||
for j=1,#cells do
|
||
local cell = cells[j]
|
||
local data = cell.data
|
||
local isShowDirAndDis = QuestProxy.Instance:checkIsShowDirAndDis(data)
|
||
if(isShowDirAndDis)then
|
||
self:ShowDirAndDis(cell,noMove)
|
||
break
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:RemoveTraceInfo( traceData )
|
||
if(traceData)then
|
||
local id = traceData.id
|
||
local type = traceData.type
|
||
local cell,index = self:getTraceCellByQuestId(id,type)
|
||
local resetPos = false
|
||
if(cell)then
|
||
resetPos = true
|
||
self.questList:RemoveCell(index)
|
||
end
|
||
if(resetPos)then
|
||
self.questList:Layout()
|
||
self.scrollview:InvalidateBounds()
|
||
self.scrollview:RestrictWithinBounds(true)
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:AddTraceInfo( traceData )
|
||
if(traceData)then
|
||
local id = traceData.id
|
||
local type = traceData.type
|
||
local list = QuestProxy.Instance:getValidAcceptQuestList(true)
|
||
local traceDatas = QuestProxy.Instance:getTraceDatas()
|
||
if(traceDatas)then
|
||
for i=1,#traceDatas do
|
||
local single = traceDatas[i]
|
||
table.insert(list,single)
|
||
end
|
||
end
|
||
QuestProxy.Instance:SetTraceCellCount(#list)
|
||
self:sortTraceDatas(list)
|
||
|
||
local index = 1
|
||
for j=1,#list do
|
||
local data = list[j]
|
||
if(id == data.id and type == data.type)then
|
||
index = j
|
||
break
|
||
end
|
||
end
|
||
local cell = self.questList:AddCell(traceData,index)
|
||
cell.gameObject.transform:SetSiblingIndex(index-1)
|
||
self.questList:Layout()
|
||
self.scrollview:InvalidateBounds()
|
||
self.scrollview:RestrictWithinBounds(true)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:updateTraceInfo( traceData )
|
||
-- body
|
||
if(traceData)then
|
||
local id = traceData.id
|
||
local type = traceData.type
|
||
local cell = self:getTraceCellByQuestId(id,type)
|
||
|
||
local resetPos = false
|
||
if(cell)then
|
||
cell:SetData(traceData)
|
||
resetPos = cell.bgSizeChanged
|
||
end
|
||
if(resetPos)then
|
||
self.questList:Layout()
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:MyStartHandInHand( isSelf )
|
||
-- body
|
||
-- printRed("receive HandEvent.MyStartHandInHand")
|
||
local handed,handowner = Game.Myself:IsHandInHand();
|
||
self.isInHand = true
|
||
if(handed and not handowner)then
|
||
self:folderSymbol(false)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:MyStopHandInHand( isSelf )
|
||
-- body
|
||
-- printRed("receive HandEvent.MyStopHandInHand")
|
||
self.isInHand = false
|
||
if(not self.isInFuben)then
|
||
local handed,handowner = Game.Myself:IsHandInHand();
|
||
if(handed and not handowner)then
|
||
self:folderSymbol(true)
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:questCellClick( cellCtrl )
|
||
-- body
|
||
-- helplog("questCellClick!!!")
|
||
if(cellCtrl and cellCtrl.data )then
|
||
local isShowDirAndDis = QuestProxy.Instance:checkIsShowDirAndDis(cellCtrl.data)
|
||
-- helplog("questCellClick!!!:",cellCtrl.data.id,cellCtrl.data.step,isShowDirAndDis,self.onGoingQuestId)
|
||
if(isShowDirAndDis)then
|
||
if(cellCtrl.data.id ~= self.onGoingQuestId)then
|
||
self:stopShowDirAndDis(self.onGoingQuestId)
|
||
self:ShowDirAndDis(cellCtrl)
|
||
Game.QuestMiniMapEffectManager:ShowMiniMapDirEffect(cellCtrl.data.id)
|
||
else
|
||
self:ShowDirAndDis(cellCtrl)
|
||
Game.QuestMiniMapEffectManager:ShowMiniMapDirEffect(cellCtrl.data.id)
|
||
end
|
||
else
|
||
FunctionQuest.Me():executeQuest(cellCtrl.data)
|
||
end
|
||
|
||
FunctionGuide.Me():AddMapGuide(cellCtrl.data.map)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:ShowDirAndDis( cellCtrl,noMove )
|
||
-- body
|
||
-- self:Log("ShowDirAndDis:",cellCtrl.data.id,cellCtrl.data.step,noMove)
|
||
local args = ReusableTable.CreateTable()
|
||
local questData = cellCtrl.data
|
||
args.questData = questData
|
||
args.owner = cellCtrl
|
||
args.callback = cellCtrl.Update
|
||
FunctionQuestDisChecker.Me():AddQuestCheck(args)
|
||
ReusableTable.DestroyAndClearTable(args)
|
||
|
||
FunctionQuest.Me():addQuestMiniShow(questData)
|
||
FunctionQuest.Me():addMonsterNamePre(questData)
|
||
|
||
cellCtrl:setISShowDir(true)
|
||
self.onGoingQuestId = cellCtrl.data.id
|
||
LocalSaveProxy.Instance:setLastTraceQuestId(self.onGoingQuestId)
|
||
if( noMove or self:ObjIsNil(cellCtrl.gameObject) )then
|
||
return
|
||
end
|
||
local panel = self.scrollview.panel
|
||
local bound = NGUIMath.CalculateRelativeWidgetBounds(panel.cachedTransform,cellCtrl.gameObject.transform)
|
||
local offset = panel:CalculateConstrainOffset(bound.min,bound.max)
|
||
offset = Vector3(0,offset.y,0)
|
||
self.scrollview:MoveRelative(offset)
|
||
end
|
||
|
||
|
||
function MainViewTaskQuestPage:getTraceCellByQuestId( id ,type)
|
||
-- body
|
||
if(not id)then
|
||
return
|
||
end
|
||
local cells = self.questList:GetCells()
|
||
for j=1,#cells do
|
||
local cell = cells[j]
|
||
local data = cell.data
|
||
if(data and id == data.id and not type)then
|
||
return cell,j
|
||
elseif(data and id == data.id and type == data.type)then
|
||
return cell,j
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:ShowDirAndDisByQuestId( id ,noMove)
|
||
-- body
|
||
if(not id)then
|
||
return
|
||
end
|
||
|
||
local cellCtrl = self:getTraceCellByQuestId(id)
|
||
if(cellCtrl and QuestProxy.Instance:checkIsShowDirAndDis(cellCtrl.data))then
|
||
self:ShowDirAndDis(cellCtrl,noMove)
|
||
return true
|
||
end
|
||
self.onGoingQuestId = nil
|
||
return false
|
||
end
|
||
|
||
function MainViewTaskQuestPage:stopShowDirAndDis( id )
|
||
-- body
|
||
if(not id)then
|
||
return
|
||
end
|
||
-- body
|
||
FunctionQuest.Me():stopQuestMiniShow(id)
|
||
local cells = self.questList:GetCells()
|
||
-- printRed("ItemUpdate",id,step)
|
||
for j=1,#cells do
|
||
local cell = cells[j]
|
||
local data = cell.data
|
||
-- printRed(cell.data:getIfShowAppearAnm())
|
||
if(data and id == data.id)then
|
||
FunctionQuestDisChecker.RemoveQuestCheck(id)
|
||
cell:setISShowDir(false)
|
||
break
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:handleMissionCommand( note )
|
||
-- body
|
||
local data = note.data
|
||
local oldCmd = data[1]
|
||
local newCmd = data[2]
|
||
local oldQuestId
|
||
local newQuestId
|
||
if(oldCmd)then
|
||
oldQuestId = oldCmd.args.custom
|
||
end
|
||
|
||
if(newCmd)then
|
||
newQuestId = newCmd.args.custom
|
||
end
|
||
|
||
if(oldQuestId and oldQuestId ~= newQuestId)then
|
||
local cell = self:getTraceCellByQuestId(oldQuestId)
|
||
if(cell)then
|
||
cell:setIsOngoing(false)
|
||
end
|
||
end
|
||
|
||
if(newQuestId and oldQuestId ~= newQuestId)then
|
||
local cell = self:getTraceCellByQuestId(newQuestId)
|
||
if(cell)then
|
||
cell:setIsOngoing(true)
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:setQuestData(resetPos,noAppearAm)
|
||
local list = QuestProxy.Instance:getValidAcceptQuestList(true)
|
||
local myself = Game.Myself;
|
||
local currentProfession = MyselfProxy.Instance:GetMyProfession()
|
||
local destProfession = myself.data.userdata:Get(UDEnum.DESTPROFESSION);
|
||
|
||
if(not myself or not myself.data)then
|
||
self.questList:RemoveAll()
|
||
return
|
||
end
|
||
local traceDatas = QuestProxy.Instance:getTraceDatas()
|
||
if(traceDatas)then
|
||
for i=1,#traceDatas do
|
||
local single = traceDatas[i]
|
||
table.insert(list,single)
|
||
end
|
||
end
|
||
QuestProxy.Instance:SetTraceCellCount(#list)
|
||
|
||
if(not list or #list == 0)then
|
||
self.questList:RemoveAll()
|
||
return
|
||
end
|
||
|
||
self:sortTraceDatas(list)
|
||
self.questList:ResetDatas(list)
|
||
self.taskQuestTable.repositionNow = true
|
||
QuestProxy.Instance:checkIfNeedStopMissionTrigger()
|
||
QuestProxy.Instance:checkIfNeedRemoveGuideView()
|
||
-- self.scrollview:InvalidateBounds()
|
||
self.scrollview:RestrictWithinBounds(true);
|
||
-- self.questList:Layout()
|
||
if(resetPos)then
|
||
self.scrollview:ResetPosition();
|
||
end
|
||
local curCmdData = FunctionQuest.Me():getCurCmdData( )
|
||
if(curCmdData)then
|
||
self:setQuestIsOngoing(curCmdData,true)
|
||
end
|
||
if(not noAppearAm)then
|
||
self:playAppearAnm()
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:playAppearAnm( )
|
||
-- body
|
||
local cells = self.questList:GetCells()
|
||
for i=1,#cells do
|
||
local single = cells[i]
|
||
-- printRed(single.data.id)
|
||
local data = single.data
|
||
if(data)then
|
||
self:playTaskAppearAnm(single)
|
||
end
|
||
end
|
||
end
|
||
|
||
local func = function (t1,t2)
|
||
if(t1.type == t2.type)then
|
||
if(t1.type == QuestDataType.QuestDataType_WANTED)then
|
||
return t1.time > t2.time
|
||
else
|
||
return t1.orderId < t2.orderId
|
||
end
|
||
elseif(t1.type == QuestDataType.QuestDataType_INVADE)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_INVADE)then
|
||
return false
|
||
elseif(t1.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO)then
|
||
return false
|
||
else
|
||
if(t1.type == QuestDataType.QuestDataType_WANTED)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_WANTED)then
|
||
return false
|
||
elseif(t1.type == QuestDataType.QuestDataType_MAIN)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_MAIN)then
|
||
return false
|
||
elseif(t1.type == QuestDataType.QuestDataType_SEALTR)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_SEALTR)then
|
||
return false
|
||
elseif(t1.type == QuestDataType.QuestDataType_DAILY)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_DAILY)then
|
||
return false
|
||
elseif(t1.type == QuestDataType.QuestDataType_BRANCH)then
|
||
return true
|
||
elseif(t2.type == QuestDataType.QuestDataType_BRANCH)then
|
||
return false
|
||
else
|
||
return t1.type == QuestDataType.QuestDataType_ITEMTR
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:sortTraceDatas( questList)
|
||
-- body
|
||
if(questList ~=nil and #questList ~=0 )then
|
||
table.sort(questList,func)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:addItemTraces( list,itemTrs )
|
||
-- body
|
||
if(itemTrs)then
|
||
for i=1,#itemTrs do
|
||
local single = itemTrs[i]
|
||
table.insert(list,single)
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:questDelete( note )
|
||
local data = note.body
|
||
for i=1,#data do
|
||
local single = data[i]
|
||
self:removeAppearAnm(single.id)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:handleDeathStatus( note )
|
||
-- body
|
||
-- self:sendNotification(UIEvent.CloseUI,DeathPopView.ViewType)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:FuBenCmdTrackFuBenUserCmd( note )
|
||
-- body
|
||
self.isInFuben = true
|
||
-- if(self.isInHand)
|
||
self:folderSymbol(false)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:folderSymbol( state )
|
||
-- body
|
||
-- AnimationOrTween.Direction.Reverse
|
||
if(self.playTweens)then
|
||
if(not state and self.rotationTwn.tweenFactor == 0)then
|
||
for i=1,#self.playTweens do
|
||
local single = self.playTweens[i]
|
||
single:Play(true)
|
||
end
|
||
elseif(state and self.rotationTwn.tweenFactor == 1)then
|
||
for i=1,#self.playTweens do
|
||
local single = self.playTweens[i]
|
||
single:Play(true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:OnExit( )
|
||
-- body
|
||
MainViewTaskQuestPage.super.OnExit(self)
|
||
EventManager.Me():RemoveEventListener(FunctionQuest.UpdateTraceInfo,self.updateTraceInfo,self)
|
||
EventManager.Me():RemoveEventListener(FunctionQuest.RemoveTraceInfo,self.RemoveTraceInfo,self)
|
||
EventManager.Me():RemoveEventListener(FunctionQuest.AddTraceInfo,self.AddTraceInfo,self)
|
||
EventManager.Me():RemoveEventListener(HandEvent.MyStartHandInHand,self.MyStartHandInHand,self)
|
||
EventManager.Me():RemoveEventListener(HandEvent.MyStopHandInHand,self.MyStopHandInHand,self)
|
||
EventManager.Me():RemoveEventListener(HandEvent.SceneGoToUserCmdHanded,self.SceneGoToUserCmd,self)
|
||
EventManager.Me():RemoveEventListener(MyselfEvent.MissionCommandChanged,self.handleMissionCommand,self)
|
||
TimeTickManager.Me():ClearTick(self)
|
||
end
|
||
|
||
function MainViewTaskQuestPage:handlePlayerMapChange( note )
|
||
-- body
|
||
if(note.type == LoadSceneEvent.StartLoad) then
|
||
return
|
||
end
|
||
|
||
self:MapChange()
|
||
|
||
local data = note.body
|
||
if(self.currentMapId ~= 0 and data.dmapID == 0)then
|
||
if(not self.isInHand)then
|
||
self:folderSymbol(true)
|
||
end
|
||
self.isInFuben = false
|
||
self:sendNotification(UIEvent.CloseUI,DeathPopView.ViewType)
|
||
end
|
||
self.currentMapId = data.dmapID
|
||
if(note.type == LoadSceneEvent.StartLoad)then
|
||
local cells = self.questList:GetCells()
|
||
for i=1,#cells do
|
||
cells[i]:setIsSelected(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:HandleManualGoEffect( note )
|
||
local body = note.body
|
||
if(not body or not body.questid)then
|
||
return
|
||
end
|
||
local questId = body.questid
|
||
local cellCtrl = self:getTraceCellByQuestId(questId)
|
||
if(not cellCtrl)then
|
||
return
|
||
end
|
||
|
||
self:stopShowDirAndDis(self.onGoingQuestId)
|
||
local args = ReusableTable.CreateTable()
|
||
local questData = cellCtrl.data
|
||
args.questData = questData
|
||
args.owner = cellCtrl
|
||
args.callback = cellCtrl.Update
|
||
FunctionQuestDisChecker.Me():AddQuestCheck(args)
|
||
ReusableTable.DestroyAndClearTable(args)
|
||
cellCtrl:setISShowDir(true)
|
||
self.onGoingQuestId = cellCtrl.data.id
|
||
LocalSaveProxy.Instance:setLastTraceQuestId(self.onGoingQuestId)
|
||
|
||
if(not self:ObjIsNil(cellCtrl.gameObject))then
|
||
local panel = self.scrollview.panel
|
||
local bound = NGUIMath.CalculateRelativeWidgetBounds(panel.cachedTransform,cellCtrl.gameObject.transform)
|
||
local offset = panel:CalculateConstrainOffset(bound.min,bound.max)
|
||
offset = Vector3(0,offset.y,0)
|
||
self.scrollview:MoveRelative(offset)
|
||
cellCtrl:ShowAnimSp()
|
||
LeanTween.cancel(cellCtrl.gameObject)
|
||
LeanTween.delayedCall(cellCtrl.gameObject,3,function ( )
|
||
cellCtrl:HideAnimSp()
|
||
end)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:MapChange( )
|
||
-- body
|
||
-- LeanTween.cancel(self.gameObject)
|
||
-- body
|
||
local cellCtrl = self:getTraceCellByQuestId(self.onGoingQuestId)
|
||
if(cellCtrl and cellCtrl.data)then
|
||
FunctionQuest.Me():addQuestMiniShow(cellCtrl.data)
|
||
end
|
||
end
|
||
|
||
function MainViewTaskQuestPage:SceneGoToUserCmd( )
|
||
-- body
|
||
self:MapChange()
|
||
end |