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("setIsOngoing(data)"..tostring(isOngoing).."") 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