563 lines
16 KiB
Plaintext
563 lines
16 KiB
Plaintext
local baseCell = autoImport("BaseCell")
|
|
autoImport("QuestData")
|
|
TaskQuestCell = class("TaskQuestCell",baseCell)
|
|
|
|
TaskQuestCell.FilterQuestStepType = {
|
|
QuestDataStepType.QuestDataStepType_VISIT ,
|
|
QuestDataStepType.QuestDataStepType_KILL,
|
|
QuestDataStepType.QuestDataStepType_COLLECT ,
|
|
QuestDataStepType.QuestDataStepType_USE ,
|
|
QuestDataStepType.QuestDataStepType_GATHER ,
|
|
QuestDataStepType.QuestDataStepType_MOVE,
|
|
QuestDataStepType.QuestDataStepType_SELFIE ,
|
|
}
|
|
|
|
local tempVector3 = LuaVector3.zero
|
|
local getlocalPos = LuaGameObject.GetLocalPosition
|
|
local calSize = NGUIMath.CalculateRelativeWidgetBounds
|
|
local isNil = LuaGameObject.ObjectIsNull
|
|
function TaskQuestCell:Init()
|
|
self:initView()
|
|
self:initData()
|
|
end
|
|
|
|
function TaskQuestCell:initData()
|
|
-- body
|
|
self.questType = -1
|
|
-- self.effectObj = nil
|
|
self.isSelected = true
|
|
self.bgSizeChanged = false
|
|
self:setIsSelected(false)
|
|
self:setIsOngoing(false)
|
|
self.type = nil
|
|
self.titleBg = nil
|
|
self.iconStr = nil
|
|
self.thumbBgStr = nil
|
|
self.thumbStr = nil
|
|
end
|
|
|
|
function TaskQuestCell:AddLongPress( )
|
|
-- body
|
|
-- print(self.data.type)
|
|
local long = self.bgSprite.gameObject:GetComponent(UILongPress)
|
|
if(long)then
|
|
long.pressEvent = function ( obj,isPress )
|
|
-- body
|
|
if(not self.data or self.data.type == QuestDataType.QuestDataType_SEALTR or self.data.type == QuestDataType.QuestDataType_ITEMTR
|
|
or self.data.type == QuestDataType.QuestDataType_HelpTeamQuest or self.data.type == QuestDataType.QuestDataType_INVADE
|
|
or self.data.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO)then
|
|
return
|
|
end
|
|
if(isPress)then
|
|
TipsView.Me():ShowStickTip(QuestDetailTip,self.data,NGUIUtil.AnchorSide.TopLeft,self.bgSprite,{0,0})
|
|
else
|
|
TipsView.Me():HideTip(QuestDetailTip)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:initView( )
|
|
-- body
|
|
self.progress = self:FindGO("progress")
|
|
if(self.progress)then
|
|
self.slWidget = self.progress:GetComponent(UIWidget)
|
|
self.progress = self.progress:GetComponent(UISlider)
|
|
self.thumb = self:FindComponent("thumb",UISprite)
|
|
self.thumbCt = self:FindGO("thumbCt")
|
|
self.thumbBg = self:FindComponent("bg",UISprite,self.thumbCt)
|
|
self.foreBg = self:FindComponent("forebg",UISprite,self.progress.gameObject)
|
|
self.progressBg = self:FindComponent("bg",UISprite,self.progress.gameObject)
|
|
end
|
|
self.titleBgCt = self:FindGO("titleBgCt")
|
|
self.content = self:FindGO("content")
|
|
self.title = self:FindComponent("Title",UILabel)
|
|
self.desc = self:FindComponent( "Desc",UIRichLabel)
|
|
self.desc = SpriteLabel.new(self.desc,nil,20,20)
|
|
self.icon = self:FindComponent( "Icon",UISprite)
|
|
self.bgSprite = self:FindComponent("bg",UISprite)
|
|
self.disLabel = self:FindComponent("currentDisLb",UILabel)
|
|
self.mainQuestSymbol = self:FindGO("mainQuestSymbol")
|
|
-- self.foreBg = self:FindGO("foreBg"):GetComponent(UISprite)
|
|
-- self.disSlider = self:FindGO("Distance"):GetComponent(UISlider)
|
|
local click = function(obj)
|
|
-- print("questData monsterid or npcid:"..self.stepData.param1.."---quest type:"..self.stepData.type)
|
|
self:PassEvent(MouseEvent.MouseClick, self);
|
|
end
|
|
self:SetEvent(self.bgSprite.gameObject,click)
|
|
|
|
self.animSp = self:FindComponent("ShowAnimSp",UISprite)
|
|
self.closeTrace = self:FindGO("CloseTrace")
|
|
click = function ( obj )
|
|
-- body
|
|
if(self.data.type == QuestDataType.QuestDataType_ITEMTR)then
|
|
self:sendNotification(MainViewEvent.CancelItemTrace,{self.data.id})
|
|
elseif(self.data.type == QuestDataType.QuestDataType_HelpTeamQuest)then
|
|
self:sendNotification(QuestEvent.RemoveHelpQuest,{self.data.id})
|
|
else
|
|
QuestProxy.Instance:RemoveTraceCell( self.data.type,self.data.id )
|
|
end
|
|
end
|
|
if(self.closeTrace)then
|
|
self:SetEvent(self.closeTrace,click)
|
|
end
|
|
|
|
-- local selector = self:FindGO("Selector")
|
|
self.selectorSp = self:FindGO("selector"):GetComponent(UISprite)
|
|
local press = function (obj,isPress )
|
|
-- body
|
|
self:setIsSelected(isPress)
|
|
end
|
|
self:AddPressEvent(self.bgSprite.gameObject, press);
|
|
-- self.appearAm = self:FindGO("AppearAnm"):GetComponent(UIPlayTween)
|
|
-- EventDelegate.Set(self.appearAm.onFinished,function ( )
|
|
-- -- body
|
|
-- self:Hide(self.appearAm.gameObject)
|
|
-- printRed("appearAm onFinished!")
|
|
-- end)
|
|
local objLua = self.gameObject:GetComponent(GameObjectForLua)
|
|
objLua.onEnable = function ( )
|
|
-- body
|
|
-- self:Log("onEnable")
|
|
-- LeanTween.delayedCall(0.1, function ()
|
|
if(QuestProxy.Instance:checkIsShowDirAndDis(self.data))then
|
|
self:resetBgSize(true)
|
|
else
|
|
self:resetBgSize(false)
|
|
end
|
|
-- end)
|
|
end
|
|
self.disObj = self.disLabel.gameObject
|
|
self.disObjTrans = self.disObj.transform
|
|
self.richObjTrans = self.desc.richLabel.gameObject.transform
|
|
self.progressObj = self.progress.gameObject
|
|
self:AddLongPress()
|
|
end
|
|
|
|
function TaskQuestCell:setIsSelected( isSelected )
|
|
-- body
|
|
if(self.isSelected ~= isSelected)then
|
|
self.isSelected = isSelected
|
|
if(isSelected)then
|
|
self.selectorSp.color = Color(1,1,1,1)
|
|
else
|
|
self.selectorSp.color = Color(1,1,1,1/255)
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:ShowAnimSp( )
|
|
if(self.animSp)then
|
|
self:Show(self.animSp.gameObject)
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:HideAnimSp( )
|
|
if(self.animSp)then
|
|
self:Hide(self.animSp.gameObject)
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:setISShowDir( value )
|
|
-- body
|
|
self.isShowDir = value
|
|
if(value)then
|
|
self:Show(self.icon.gameObject)
|
|
if(self.data.type == QuestDataType.QuestDataType_HelpTeamQuest)then
|
|
IconManager:SetUIIcon("Rewardtask_icon_team",self.icon)
|
|
else
|
|
IconManager:SetUIIcon("icon_39",self.icon)
|
|
end
|
|
self.icon:MakePixelPerfect()
|
|
|
|
else
|
|
self:Hide(self.icon.gameObject)
|
|
local disStr = self:GetShowMap()
|
|
self.disLabel.text = disStr
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:GetIsShowDir( )
|
|
-- body
|
|
return self.isShowDir
|
|
end
|
|
|
|
function TaskQuestCell:GetShowMap( data )
|
|
-- body
|
|
data = data or self.data
|
|
local tarMap = data.map
|
|
if(not tarMap)then
|
|
tarMap = Game.MapManager:GetMapID()
|
|
end
|
|
local mapData = Table_Map[tarMap]
|
|
local toMap = "..."
|
|
if(mapData)then
|
|
toMap = mapData.CallZh
|
|
end
|
|
local disStr = string.format(ZhString.TaskQuestCell_Dis,tostring(toMap))
|
|
return disStr
|
|
end
|
|
|
|
function TaskQuestCell:checkShowDisAndIcon( data )
|
|
-- body
|
|
-- self:Log("TaskQuestCell:checkShowDisAndIcon")
|
|
if(QuestProxy.Instance:checkIsShowDirAndDis(data))then
|
|
-- self:Log("TaskQuestCell:checkShowDisAndIcon1")
|
|
self:Hide(self.icon.gameObject)
|
|
self:Show(self.disLabel.gameObject)
|
|
local disStr = self:GetShowMap(data)
|
|
self.disLabel.text = disStr
|
|
self:resetBgSize(true)
|
|
--TODO
|
|
-- local args = ReusableTable.CreateTable()
|
|
-- args.questData = self.data
|
|
-- args.owner = self
|
|
-- args.callback = self.Update
|
|
-- FunctionQuestDisChecker.Me():AddQuestCheck(args)
|
|
-- ReusableTable.DestroyTable(args)
|
|
else
|
|
-- self:Log("TaskQuestCell:checkShowDisAndIcon2")
|
|
if((data.type == QuestDataType.QuestDataType_INVADE or data.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO) and data.icon)then
|
|
if(self.iconStr ~= data.icon)then
|
|
self:Show(self.icon.gameObject)
|
|
IconManager:SetUIIcon(data.icon,self.icon)
|
|
self.icon:MakePixelPerfect()
|
|
end
|
|
else
|
|
self:Hide(self.icon.gameObject)
|
|
end
|
|
self:Hide(self.disLabel.gameObject)
|
|
-- self:resetIcon()
|
|
self:resetBgSize(false)
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:setIsOngoing( isOngoing )
|
|
-- body
|
|
-- LogUtility.Info("<color=red>setIsOngoing(data)"..tostring(isOngoing).."</color>")
|
|
if(self.isOngoing ~= isOngoing)then
|
|
self.isOngoing = isOngoing
|
|
if(isOngoing)then
|
|
self.title.color = Color(1,197/255,20/255,1)
|
|
else
|
|
self.title.color = Color(1,1,1,1)
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:AdjustRelatedComp(data)
|
|
if(data.type ~= QuestDataType.QuestDataType_ACTIVITY_TRACEINFO and (self.type ~= data.type))then
|
|
local name = data.traceTitle
|
|
local desStr = data:parseTranceInfo()
|
|
self.title.pivot = UIWidget.Pivot.Left;
|
|
tempVector3:Set(getlocalPos(self.title.transform))
|
|
tempVector3:Set(41.5,tempVector3.y,tempVector3.z)
|
|
self.title.transform.localPosition = tempVector3
|
|
|
|
tempVector3:Set(getlocalPos(self.icon.transform))
|
|
tempVector3:Set(22,tempVector3.y,tempVector3.z)
|
|
self.icon.transform.localPosition = tempVector3
|
|
|
|
tempVector3:Set(getlocalPos(self.desc.richLabel.transform))
|
|
tempVector3:Set(45.6,tempVector3.y,tempVector3.z)
|
|
self.desc.richLabel.transform.localPosition = tempVector3
|
|
self.desc.richLabel.width = 154
|
|
|
|
self:Hide(self.titleBgCt.gameObject)
|
|
end
|
|
|
|
if(self.progress )then
|
|
if(data.type ~= QuestDataType.QuestDataType_ACTIVITY_TRACEINFO and data.type ~= QuestDataType.QuestDataType_INVADE)then
|
|
if(self.type ~= data.type)then
|
|
self:Hide(self.progress.gameObject)
|
|
self:Hide(self.thumbCt.gameObject)
|
|
end
|
|
end
|
|
end
|
|
|
|
if(self.closeTrace )then
|
|
if(data.type ~= QuestDataType.QuestDataType_HelpTeamQuest and data.type ~= QuestDataType.QuestDataType_ITEMTR)then
|
|
if(self.type ~= data.type)then
|
|
self:Hide(self.closeTrace)
|
|
end
|
|
else
|
|
if(self.type ~= data.type)then
|
|
self:Show(self.closeTrace)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:SetData(data)
|
|
if(data == nil)then
|
|
return
|
|
end
|
|
|
|
local name = data.traceTitle
|
|
local desStr = data:parseTranceInfo()
|
|
self:AdjustRelatedComp(data)
|
|
self:setIsOngoing(false)
|
|
|
|
local disY = 0
|
|
local distPos = 0
|
|
if(data.type == QuestDataType.QuestDataType_DAILY)then
|
|
local dailyData = QuestProxy.Instance:getDailyQuestData(SceneQuest_pb.EOTHERDATA_DAILY)
|
|
local ratio = "0%"
|
|
local exp = "0"
|
|
if(dailyData)then
|
|
ratio = dailyData.param4 * 100
|
|
ratio = ratio.."%"
|
|
exp = dailyData.param3
|
|
end
|
|
name = string.format(name,ratio)
|
|
desStr = string.format(desStr,exp)
|
|
elseif data.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO then
|
|
self:UpActivityTraceView(data)
|
|
elseif data.type == QuestDataType.QuestDataType_INVADE then
|
|
self:UpInvadeTraceView(data)
|
|
end
|
|
|
|
if(self.mainQuestSymbol and data.type == QuestDataType.QuestDataType_MAIN and MyselfProxy.Instance:RoleLevel()>=80)then
|
|
self:Show(self.mainQuestSymbol)
|
|
else
|
|
self:Hide(self.mainQuestSymbol)
|
|
end
|
|
|
|
self:Show(self.icon.gameObject)
|
|
self.title.text = name
|
|
if(StringUtil.ChLength(name)>18)then
|
|
self.title.fontSize = 18
|
|
else
|
|
self.title.fontSize = 20
|
|
end
|
|
UIUtil.WrapLabel (self.title)
|
|
if not desStr then
|
|
desStr = ""
|
|
end
|
|
self.desc:SetText(desStr)
|
|
self:checkShowDisAndIcon(data)
|
|
self.data = data
|
|
self.titleBg = data.titleBg
|
|
self.iconStr = data.icon
|
|
self.thumbBgStr = data.thumbBg
|
|
self.thumbStr = data.thumb
|
|
self.type = data.type
|
|
-- self.foreBg.height = self.bgSprite.height
|
|
end
|
|
|
|
function TaskQuestCell:UpActivityTraceView(data )
|
|
|
|
if(data.type == QuestDataType.QuestDataType_ACTIVITY_TRACEINFO and (not self.data or self.data.type ~= data.type ))then
|
|
self.title.pivot = UIWidget.Pivot.Center;
|
|
tempVector3:Set(getlocalPos(self.title.transform))
|
|
tempVector3:Set(118,tempVector3.y,tempVector3.z)
|
|
self.title.transform.localPosition = tempVector3
|
|
|
|
tempVector3:Set(getlocalPos(self.icon.transform))
|
|
tempVector3:Set(35.44,tempVector3.y,tempVector3.z)
|
|
self.icon.transform.localPosition = tempVector3
|
|
|
|
tempVector3:Set(getlocalPos(self.desc.richLabel.transform))
|
|
tempVector3:Set(14,tempVector3.y,tempVector3.z)
|
|
self.desc.richLabel.transform.localPosition = tempVector3
|
|
self.desc.richLabel.width = 185
|
|
end
|
|
|
|
if(self.titleBgCt and data.titleBg and (self.titleBg ~= data.titleBg))then
|
|
self:Show(self.titleBgCt)
|
|
end
|
|
if(self.progress and data.process and not self.progressObj.activeSelf)then
|
|
self:Show(self.progress.gameObject)
|
|
self:Show(self.thumbCt)
|
|
if(self.slWidget)then
|
|
self.slWidget:ResetAndUpdateAnchors()
|
|
end
|
|
end
|
|
|
|
if(not data.process and self.progressObj.activeSelf)then
|
|
self:Hide(self.progress.gameObject)
|
|
self:Hide(self.thumbCt)
|
|
end
|
|
|
|
if(self.progress and data.process)then
|
|
self.progress.value = data.process
|
|
if((data.thumb and data.thumb ~="") or (data.thumbBg and data.thumbBg~="" ))then
|
|
if(data.thumb)then
|
|
self:Show(self.thumb.gameObject)
|
|
if(data.thumb ~= self.thumbStr)then
|
|
IconManager:SetUIIcon(data.thumb,self.thumb)
|
|
self.thumb:MakePixelPerfect()
|
|
end
|
|
else
|
|
self:Hide(self.thumb.gameObject)
|
|
end
|
|
|
|
if(data.thumbBg)then
|
|
self:Show(self.thumbBg.gameObject)
|
|
if (data.thumbBg ~= self.thumbBgStr)then
|
|
IconManager:SetUIIcon(data.thumbBg,self.thumbBg)
|
|
self.thumbBg:MakePixelPerfect()
|
|
end
|
|
else
|
|
self:Hide(self.thumbBg.gameObject)
|
|
end
|
|
else
|
|
self:Hide(self.thumbCt)
|
|
end
|
|
|
|
if(data.foreBg and data.foreBg ~="")then
|
|
self.foreBg.spriteName = data.foreBg
|
|
end
|
|
|
|
if(data.progressBg and data.progressBg ~= "")then
|
|
self.progressBg.spriteName = data.progressBg
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:UpInvadeTraceView( data )
|
|
if(self.progress and data.process and not self.progressObj.activeSelf)then
|
|
if(self.slWidget)then
|
|
self.slWidget:ResetAndUpdateAnchors()
|
|
end
|
|
self:Show(self.progress.gameObject)
|
|
self:Show(self.thumbCt)
|
|
end
|
|
if(self.progress and data.process)then
|
|
self.progress.value = data.process
|
|
if(data.thumb)then
|
|
self:Show(self.thumb.gameObject)
|
|
if(data.thumb ~= self.thumbStr)then
|
|
IconManager:SetUIIcon(data.thumb,self.thumb)
|
|
self.thumb:MakePixelPerfect()
|
|
end
|
|
else
|
|
self:Hide(self.thumb.gameObject)
|
|
end
|
|
if(data.thumbBg)then
|
|
self:Show(self.thumbBg.gameObject)
|
|
if (data.thumbBg ~= self.thumbBgStr)then
|
|
IconManager:SetUIIcon(data.thumbBg,self.thumbBg)
|
|
self.thumbBg:MakePixelPerfect()
|
|
end
|
|
else
|
|
self:Hide(self.thumbBg.gameObject)
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskQuestCell:resetBgSize( showDistance )
|
|
-- body
|
|
self.bgSizeChanged = false
|
|
if isNil(self.disLabel) then
|
|
return
|
|
end
|
|
|
|
if isNil(self.disObj) then
|
|
return
|
|
end
|
|
tempVector3:Set(getlocalPos(self.disObjTrans))
|
|
local _,y,_ = getlocalPos(self.richObjTrans)
|
|
local deshg = self.desc.richLabel.height
|
|
y = y - deshg - 14
|
|
tempVector3:Set(tempVector3.x,y,tempVector3.z)
|
|
self.disObjTrans.localPosition = tempVector3
|
|
local height = calSize(self.content.transform)
|
|
height = height.size.y
|
|
-- self:Log("height:",height)
|
|
-- if(showDistance)then
|
|
-- height = 73+ 20*(deshg/20-1)+self.disLabel.height+5
|
|
-- self:Log("height:1",height)
|
|
-- else
|
|
-- height = 73+ 20*(deshg/20-1)
|
|
-- self:Log("height:2",height)
|
|
-- end
|
|
height = height+4
|
|
local originHeight = self.bgSprite.height
|
|
if(math.abs(originHeight- height)>2)then
|
|
self.bgSizeChanged = true
|
|
if(self.slWidget)then
|
|
self.slWidget:ResetAndUpdateAnchors()
|
|
end
|
|
end
|
|
self.bgSprite.height = height
|
|
height = height+8
|
|
self.selectorSp.height = height
|
|
self.animSp.height = height + 4
|
|
|
|
end
|
|
|
|
-- function TaskQuestCell:resetIcon( )
|
|
-- -- body
|
|
-- local iconName = "icon_39"
|
|
|
|
-- if(self.icon.spriteName ~= iconName)then
|
|
-- IconManager:SetUIIcon("icon_39",self.icon)iconName
|
|
-- self.icon:MarkAsChanged()
|
|
-- end
|
|
-- end
|
|
|
|
function TaskQuestCell:Update(teleData)
|
|
-- local spriteName = "main_icon_01"
|
|
local distance = teleData["distance"]
|
|
local toMap = teleData["toMap"]
|
|
-- local indicatorPos = teleData["indicatorPos"]
|
|
local disStr
|
|
if(distance)then
|
|
--目前地圖
|
|
local str = ZhString.TaskQuestCell_Dis.."M"
|
|
disStr = string.format(str,tostring(distance))
|
|
-- if(distance<=2)then
|
|
-- spriteName = "main_icon_02"
|
|
-- end
|
|
else
|
|
--非當前地圖
|
|
if(toMap)then
|
|
disStr = string.format(ZhString.TaskQuestCell_Dis,tostring(toMap))
|
|
else
|
|
disStr = string.format(ZhString.TaskQuestCell_Dis,"...")
|
|
end
|
|
end
|
|
if(disStr ~= "")then
|
|
self.disLabel.text = disStr
|
|
self:resetBgSize(true)
|
|
end
|
|
-- NGUITools.AddWidgetCollider(self.gameObject,true);
|
|
-- -- self:Log("update",indicatorPos)
|
|
-- if(indicatorPos)then
|
|
-- IconManager:SetUIIcon("icon_39",self.icon)spriteName
|
|
-- -- printRed("rotation",rotation)
|
|
-- local rotation = FunctionQuestDisChecker.Me():getRotationByIconPosAndTarPos(self.icon,indicatorPos)
|
|
-- -- printRed("rotation",rotation)
|
|
-- if(not distance or distance >2)then
|
|
-- tempVector3:Set(0, 0,rotation)
|
|
-- tempQuaternion.eulerAngles = tempVector3
|
|
-- self.icon.transform.rotation = tempQuaternion
|
|
-- else
|
|
-- tempVector3:Set(0, 0,0)
|
|
-- tempQuaternion.eulerAngles = tempVector3
|
|
-- self.icon.transform.localRotation = tempQuaternion
|
|
-- end
|
|
-- else
|
|
-- tempVector3:Set(0, 0,0)
|
|
-- tempQuaternion.eulerAngles = tempVector3
|
|
-- self.icon.transform.localRotation = tempQuaternion
|
|
-- self:resetIcon()
|
|
-- end
|
|
end
|
|
|
|
function TaskQuestCell:OnExit( )
|
|
-- body
|
|
FunctionQuestDisChecker.RemoveQuestCheck(self.data.id)
|
|
self.type = nil
|
|
self.titleBg = nil
|
|
self.iconStr = nil
|
|
self.thumbBgStr = nil
|
|
self.thumbStr = nil
|
|
TaskQuestCell.super.OnExit(self)
|
|
end
|
|
|
|
function TaskQuestCell:OnRemove( )
|
|
-- body
|
|
FunctionQuestDisChecker.RemoveQuestCheck(self.data.id)
|
|
end |