ro-table/Asstes/Resources/Script/FrameWork/GUI/cell/AnnounceQuestPanelCell.txt
2025-06-04 05:02:57 +08:00

559 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local baseCell = autoImport("BaseCell")
AnnounceQuestPanelCell = class("AnnounceQuestPanelCell",baseCell)
autoImport("AnnounceQuestPanelTeamMemberPortrail")
local tempVector3 = LuaVector3.zero
AnnounceQuestPanelCellLabelColor = {
[1] = LuaColor.New(184/255,91/255,26/255,1),
[2] = LuaColor.New(38/255,107/255,0,1),
[3] = LuaColor.New(131/255,7/255,12/255,1),
}
function AnnounceQuestPanelCell:Init()
self:initView()
self:addViewEventListener()
end
function AnnounceQuestPanelCell:initView( )
-- body
-- self.des = self:FindGO("des"):GetComponent(UILabel)
self.questPublisherHead = self:FindGO("questPublisherHead")
self.publishName = self:FindGO("publishName"):GetComponent(UILabel)
self.questName = self:FindGO("questName"):GetComponent(UILabel)
self.questDetailLabel = self:FindGO("questDetailLabel"):GetComponent(UILabel)
self.questTarget = self:FindGO("questTarget"):GetComponent(UILabel)
self.questTargetCt = self:FindGO("questTargetCt")
-- self.questTargetNumLable = self:FindGO("numLabel",self.questTarget.gameObject):GetComponent(UILabel)
-- self.questRewardLabel = self:FindGO("questRewardLabel"):GetComponent(UILabel)
self.questReward = self:FindGO("questReward")
self.publishNameCt = self:FindGO("publishNameCt")
self.simpleIcon = self:FindComponent("simpleIcon",UISprite)
self.acceptActionBtn = self:FindGO("acceptActionBtn")
self.abandonActionBtn = self:FindGO("abandonActionBtn")
self.cannotActionBtn = self:FindGO("cannotActionBtn")
self.commitActionBtn = self:FindGO("commitActionBtn")
self.leaderAceeptBtn = self:FindGO("leaderAceeptBtn")
local leaderAceeptBtnText = self:FindComponent("actionBtnLabel1",UILabel,self.leaderAceeptBtn)
leaderAceeptBtnText.text = ZhString.AnnounceQuestPanel_LeaderAceeptBtn
self.actionBtn = self:FindComponent("actionBtn",UISprite)
self.actionBtnLabel = self:FindComponent("actionBtnLabel1",UILabel)
self.actionBtnCollider = self:FindComponent("actionBtn",BoxCollider)
self.questState = self:FindGO("questState")
self.questStateScale = self.questState:GetComponent(UIPlayTween)
self.completeHolder = self:FindGO("completeHolder")
self.questBaseReward = self:FindGO("questBaseReward")
self.baseExp = self:FindGO("baseExp"):GetComponent(UILabel)
self.jobExp = self:FindGO("jobExp"):GetComponent(UILabel)
self.robCount = self:FindGO("robCount"):GetComponent(UILabel)
self.itemCount = self:FindGO("itemCount"):GetComponent(UILabel)
self.itemIcon = self:FindGO("itemCt"):GetComponent(UISprite)
self.teamQuestPortrait = self:FindGO("teamQuestPortrait")
self.teamQuestPortraitGrid = self:FindComponent("portraitList",UIGrid)
self.teamQuestPortraitGrid = UIGridListCtrl.new(self.teamQuestPortraitGrid , AnnounceQuestPanelTeamMemberPortrail, "AnnounceQuestPanelTeamMemberPortrail");
self.teamQuestHelpReward = self:FindGO("teamQuestHelpReward")
self.teamQuestHelpRewardLabel = self:FindGO("teamQuestHelpRewardLabel")
self.teamQuestHelpRewardLabel = SpriteLabel.new(self.teamQuestHelpRewardLabel,nil,40,40,true)
self.helpQuestIcon = self:FindGO("helpQuestIcon")
self.radioCt = self:FindGO("ratioCt")
self.activityRelCt = self:FindGO("activityRelCt")
self.acBgCt = self:FindGO("acBgCt")
self.act_bg = self:FindGO("act_bg")
-- self.extraCt = self:FindGO("extraCt")
local ratioTip = self:FindComponent("ratioTip",UILabel)
ratioTip.text = ZhString.AnnounceQuestPanel_MultiRewardTip
self.ratioLabel = self:FindComponent("ratioLabel",UILabel)
-- self.extraLabel = self:FindComponent("extraLabel",UILabel)
local teamOngingLabel = self:FindComponent("teamOngingLabel",UILabel)
teamOngingLabel.text = ZhString.AnnounceQuestPanel_TeamOngingLabel
self:Hide(teamOngingLabel.gameObject)
self:Hide(self.activityRelCt)
self:Hide(self.acBgCt)
self:Hide(self.act_bg)
local upPanel = GameObjectUtil.Instance:FindCompInParents(self.gameObject, UIPanel);
local panels = self:FindComponents(UIPanel);
for i=1,#panels do
panels[i].depth = upPanel.depth + panels[i].depth;
end
end
function AnnounceQuestPanelCell:initHelpTeamReward( )
-- body
-- local reward = GameConfig.Quest.helpTeamMemberReward
-- if(reward)then
local itemId = 147
local itemData = Table_Item[itemId]
-- local count = reward.count
if(itemData)then
-- local text = string.format(ZhString.AnnounceQuestPanel_HelpTeammemberReward,reward.itemId,itemData.NameZh,count)
local text = string.format(ZhString.AnnounceQuestPanel_HelpTeammemberReward,itemId,itemData.NameZh)
self.teamQuestHelpRewardLabel:SetText(text)
return
end
-- end
-- self.teamQuestHelpRewardLabel:SetText("")
end
function AnnounceQuestPanelCell:addViewEventListener( )
-- body
self:AddButtonEvent("actionBtn",function ( obj )
-- body
if(self.data.notMine)then
self.actionBtn.color = Color(1/255,2/255,3/255,1)
self.actionBtnCollider.enabled = false
if(self.DisenableAnnounceQuestTwId)then
LeanTween.cancel(self.gameObject,self.DisenableAnnounceQuestTwId)
self.DisenableAnnounceQuestTwId = nil
end
local ret = LeanTween.delayedCall(self.gameObject,5,function ( )
self.DisenableAnnounceQuestTwId = nil
self.actionBtn.color = Color(1,1,1,1)
self.actionBtnCollider.enabled = true
end)
self.DisenableAnnounceQuestTwId = ret.id
end
self:PassEvent(MouseEvent.MouseClick, self);
end)
self:AddClickEvent(self.leaderAceeptBtn,function ( obj )
-- body
if(self:checkWantedTick(self.data))then
return
end
ServiceQuestProxy.Instance:CallInviteHelpAcceptQuestCmd(nil,self.data.id)
end)
end
function AnnounceQuestPanelCell:checkWantedTick( data )
if(not data or not data.wantedData or data.wantedData.IsActivity == 1)then
return
end
local questConfig = GameConfig.Quest.quick_finish_board_quest or {}
local wantedData = data.wantedData
local questMinLimit,questMaxLimit = wantedData.LevelRange[1],wantedData.LevelRange[2]
local dont = LocalSaveProxy.Instance:GetDontShowAgain(55)
local single
local itemId
local minLv
local maxLv
if(dont == nil)then
for i=1,#questConfig do
single = questConfig[i]
itemId = single[1] or nil
minLv = single[2] or 1
maxLv = single[3] or 999999
itemData = BagProxy.Instance:GetItemByStaticID(itemId)
if(self:checkLevelCross(questMinLimit,questMaxLimit,minLv,maxLv) and itemData )then
MsgManager.DontAgainConfirmMsgByID(55,
function ()
AudioUtil.Play2DRandomSound(AudioMap.Maps.AnnounceQuestPanel_Accept)
ServiceQuestProxy.Instance:CallQuestAction(SceneQuest_pb.EQUESTACTION_QUICK_SUBMIT_BOARD_TEAM,self.data.id)
end,
function ( )
AudioUtil.Play2DRandomSound(AudioMap.Maps.AnnounceQuestPanel_Accept)
ServiceQuestProxy.Instance:CallInviteHelpAcceptQuestCmd(nil,self.data.id)
end, nil, itemData:GetName(true,true))
return true
end
end
else
for i=1,#questConfig do
single = questConfig[i]
itemId = single[1] or nil
minLv = single[2] or 1
maxLv = single[3] or 999999
itemData = BagProxy.Instance:GetItemByStaticID(itemId)
if(self:checkLevelCross(questMinLimit,questMaxLimit,minLv,maxLv) and itemData)then
AudioUtil.Play2DRandomSound(AudioMap.Maps.AnnounceQuestPanel_Accept)
ServiceQuestProxy.Instance:CallQuestAction(SceneQuest_pb.EQUESTACTION_QUICK_SUBMIT_BOARD_TEAM,self.data.id)
return true
end
end
end
end
function AnnounceQuestPanelCell:checkLevelCross( qMinLv,qMaxLv,rMinLv,rMaxLv )
if(qMaxLv>=rMinLv and qMinLv <=rMaxLv)then
return true
end
end
function AnnounceQuestPanelCell:setIsSelected( isSelect )
-- body
if(self.isSelect ~= isSelect)then
self.isSelect = isSelect
if(self.isSelect)then
self:Show(self.selector.gameObject)
else
self:Hide(self.selector.gameObject)
end
end
end
function AnnounceQuestPanelCell:OnRemove()
if(self.DisenableAnnounceQuestTwId)then
LeanTween.cancel(self.gameObject,self.DisenableAnnounceQuestTwId)
self.DisenableAnnounceQuestTwId = nil
end
end
function AnnounceQuestPanelCell:setEnableAccept( )
-- body
local state = QuestProxy.Instance:hasGoingWantedQuest()
if(state)then
if(self.data:getQuestListType() == SceneQuest_pb.EQUESTLIST_CANACCEPT)then
self.actionBtn.color = Color(1/255,2/255,3/255,1)
self.actionBtnCollider.enabled = false
self.actionBtnLabel.effectStyle = UILabel.Effect.None
end
end
end
function AnnounceQuestPanelCell:playAnim( )
self:PlayUIEffect(EffectMap.UI.stamp,self.completeHolder,true,AnnounceQuestPanelCell.AnimEffectHandle, self)
end
function AnnounceQuestPanelCell.AnimEffectHandle(effectHandle, owner)
end
function AnnounceQuestPanelCell:checkQuest()
local charIds = ShareAnnounceQuestProxy.Instance:getOnGoTeamMembersByQuestIdAndAction(self.data.id)
if(TeamProxy.Instance:IHaveTeam())then
local questData = QuestProxy.Instance:getWantedQuestDataByIdAndType(self.data.id,SceneQuest_pb.EQUESTLIST_ACCEPT)
questData = questData and QuestData or QuestProxy.Instance:getWantedQuestDataByIdAndType(self.data.id,SceneQuest_pb.EQUESTLIST_COMPLETE)
if(questData)then
table.insert(charIds,Game.Myself.data.id)
end
end
if(charIds and #charIds>0)then
local teamMembersData = {}
if(not TeamProxy.Instance:IHaveTeam())then
return
end
local myTeam = TeamProxy.Instance.myTeam
for i=1,#charIds do
local single = charIds[i]
local memberData = myTeam:GetMemberByGuid(single);
if(memberData)then
table.insert(teamMembersData,memberData)
end
end
if(#teamMembersData>0)then
self:Show(self.teamQuestPortrait)
self:setTeamMembers(teamMembersData)
else
self:Hide(self.teamQuestPortrait)
end
else
self:Hide(self.teamQuestPortrait)
end
end
function AnnounceQuestPanelCell:setTeamMembers(teamMembersData)
self.teamQuestPortraitGrid:ResetDatas(teamMembersData)
end
function AnnounceQuestPanelCell:adjustButtonSt( data )
-- body
self.actionBtn.color = Color(1,1,1,1)
self.actionBtnCollider.enabled = true
self:Show(self.actionBtn.gameObject)
if(data.notMine)then
self:Hide(self.questState)
self.actionBtn.spriteName = "com_btn_3"
self.actionBtnLabel.text = ZhString.AnnounceQuestPanel_HelpQuest
self.actionBtnLabel.effectColor = AnnounceQuestPanelCellLabelColor[2]
self.actionBtnLabel.effectStyle = UILabel.Effect.Outline
self:checkQuest()
self:changeToNormalView()
elseif(data:getQuestListType() == SceneQuest_pb.EQUESTLIST_ACCEPT)then
self:Hide(self.questState)
self:checkQuest()
self.actionBtn.spriteName = "com_btn_0"
self.actionBtnLabel.text = ZhString.AnnounceQuestPanel_AbadonQuest
self:changeToNormalView()
self.actionBtnLabel.effectColor = AnnounceQuestPanelCellLabelColor[3]
self.actionBtnLabel.effectStyle = UILabel.Effect.Outline
elseif(data:getQuestListType() == SceneQuest_pb.EQUESTLIST_COMPLETE)then
self:Hide(self.questState)
self:checkQuest()
self.actionBtn.spriteName = "com_btn_2"
self.actionBtnLabel.text = ZhString.AnnounceQuestPanel_CommitQuest
self.actionBtnLabel.effectColor = AnnounceQuestPanelCellLabelColor[1]
self.actionBtnLabel.effectStyle = UILabel.Effect.Outline
self:changeToNormalView()
elseif(data:getQuestListType() == SceneQuest_pb.EQUESTLIST_SUBMIT)then
self:Show(self.questState)
self:Hide(self.actionBtn.gameObject)
self:Hide(self.teamQuestPortrait)
self:changeToNormalView()
-- self.actionBtnLabel.effectStyle = UILabel.Effect.Outline
-- self.actionBtnLabel.effectColor = AnnounceQuestPanelCellLabelColor[1]
elseif(data:getQuestListType() == SceneQuest_pb.EQUESTLIST_CANACCEPT)then
self:Hide(self.questState)
self:checkQuest()
self.actionBtn.spriteName = "com_btn_2"
self.actionBtnLabel.text = ZhString.AnnounceQuestPanel_AcceptQuest
self.actionBtnLabel.effectColor = AnnounceQuestPanelCellLabelColor[1]
self.actionBtnLabel.effectStyle = UILabel.Effect.Outline
-- 目前隊長
-- 收集殺怪
-- 可接取任務 local state = QuestProxy.Instance:hasGoingWantedQuest()
local condition = TeamProxy.Instance:IHaveTeam() and TeamProxy.Instance:CheckIHaveLeaderAuthority() or false
condition = condition and not QuestProxy.Instance:hasGoingWantedQuest() or false
-- self:Log(TeamProxy.Instance:IHaveTeam(),TeamProxy.Instance:CheckImTheLeader(),QuestProxy.Instance:hasGoingWantedQuest(),data.wantedData.Content )
-- condition = false
condition = condition and SkillProxy.Instance:HasLearnedSkill(AnnounceQuestPanel.skillid)
if(condition and data.wantedData.IsActivity ~= 1)then
self:changeToTeamLeaderView()
else
self:changeToNormalView()
end
end
end
function AnnounceQuestPanelCell:changeToTeamLeaderView( )
-- body
self:Show(self.leaderAceeptBtn)
tempVector3:Set(-88,0,0)
self.actionBtn.transform.localPosition = tempVector3
self.actionBtn.width = 161
end
function AnnounceQuestPanelCell:changeToNormalView( )
-- body
self:Hide(self.leaderAceeptBtn)
tempVector3:Set(0,0,0)
self.actionBtn.transform.localPosition = tempVector3
self.actionBtn.width = 226
end
function AnnounceQuestPanelCell:SetData( data )
-- body
self.data = data
if(self.data)then
self:Show()
else
if(not self:ObjIsNil(self.gameObject))then
self:Hide()
end
return
end
local wantedData = data.wantedData
if(wantedData)then
-- self:initBg()
local targetText = ""
if(data.notMine or data:getQuestListType() == SceneQuest_pb.EQUESTLIST_CANACCEPT)then
targetText = QuestDataUtil.parseWantedQuestTranceInfo(data,wantedData)
else
targetText = data:parseTranceInfo()
-- printRed(data:parseTranceInfo())
end
if(targetText ~= "")then
self:Show(self.questTargetCt)
self.questTarget.text = targetText
else
self:Hide(self.questTargetCt)
end
self.questDetailLabel.text = wantedData.Describe
self.questName.text = wantedData.Name
local ret
if(wantedData.Type ==2 and wantedData.Icon ~= "")then
ret = self:SetSimpleIcon(wantedData.Icon)
end
if(not ret)then
self:SetNpcData(wantedData.NpcId)
end
self:adjustButtonSt(data)
self:setEnableAccept()
if(data.notMine)then
self:Show(self.teamQuestHelpReward)
self:Hide(self.questBaseReward)
self:Show(self.helpQuestIcon)
else
self:Hide(self.helpQuestIcon)
self:Show(self.questBaseReward)
self:Hide(self.teamQuestHelpReward)
self:setQuestRewardData()
end
self:initHelpTeamReward()
else
printRed("can't find wantedData in Table_Wanted by id:"..data.id)
end
end
function AnnounceQuestPanelCell:setQuestRewardData( )
-- body
local data = self.data
local wantedData = self.data.wantedData
local BaseLv = data.acceptlv
local expData = Table_ExpPool[BaseLv]
local finishcount = data.finishcount
if(self.data:getQuestListType() == SceneQuest_pb.EQUESTLIST_CANACCEPT)then
finishcount = MyselfProxy.Instance:getVarValueByType(Var_pb.EVARTYPE_QUEST_WANTED)
end
if(not finishcount)then
finishcount = 0
end
local ratio = QuestProxy.Instance:getWantedQuestRatio( finishcount )
-- printRed("AnnounceQuestPanelCell:SetData( data )",BaseLv,ratio,finishcount,wantedData.Name)
if(wantedData.IsActivity == 1)then
ratio = 1
end
if(expData)then
self.baseExp.text = math.floor(expData.WantedBaseExp*ratio)
self.jobExp.text = math.floor(expData.WantedJobExp*ratio)
end
if(data.wantedData.Rob)then
self.robCount.text = math.floor(data.wantedData.Rob*ratio)
else
self.robCount.text = "0"
end
if(data.rewards)then
if(data.rewards[1])then
local rewarData = data.rewards[1]
local itemData = Table_Item[rewarData.id]
if(itemData)then
self.itemCount.text = rewarData.count
IconManager:SetItemIcon(itemData.Icon,self.itemIcon)
end
end
end
local showCt = false
local data = ActivityEventProxy.Instance:GetRewardByType(AERewardType.WantedQuest)
if(data and data:GetMultiple() and data:GetMultiple() ~= 0 and wantedData.IsActivity ~= 1)then
self:Show(self.activityRelCt)
self:Show(self.radioCt)
self.ratioLabel.text = "x"..data:GetMultiple()
showCt = true
else
self:Hide(self.radioCt)
end
if(not showCt)then
self:Hide(self.activityRelCt)
else
self:Show(self.activityRelCt)
end
if(wantedData.IsActivity ~= 1)then
self:Hide(self.acBgCt)
self:Hide(self.act_bg)
else
self:Show(self.acBgCt)
self:Show(self.act_bg)
end
end
function AnnounceQuestPanelCell:playRatioUpAnm( )
-- body
if(self.data)then
if(self.data:getQuestListType() == SceneQuest_pb.EQUESTLIST_ACCEPT or self.data:getQuestListType() == SceneQuest_pb.EQUESTLIST_CANACCEPT)then
self:Hide(self.baseExp.gameObject)
self:Hide(self.robCount.gameObject)
self:Hide(self.jobExp.gameObject)
local holder = self:FindGO("EffectContainer",self.baseExp.transform.parent.gameObject)
self:PlayUIEffect(EffectMap.UI.Refresh,holder,true)
holder = self:FindGO("EffectContainer",self.jobExp.transform.parent.gameObject)
self:PlayUIEffect(EffectMap.UI.Refresh,holder,true)
holder = self:FindGO("EffectContainer",self.robCount.transform.parent.gameObject)
self:PlayUIEffect(EffectMap.UI.Refresh,holder,true)
self:showReward()
end
end
end
function AnnounceQuestPanelCell:showReward( )
-- body
LeanTween.delayedCall(self.gameObject,0.5,function ( )
-- body
self:Show(self.baseExp.gameObject)
self:Show(self.robCount.gameObject)
self:Show(self.jobExp.gameObject)
end)
end
function AnnounceQuestPanelCell.effectLoaded(effectObj )
-- if( effectObj and not LuaGameObject.ObjectIsNull(effectObj.gameObject) )then
-- LuaGameObject.SetRenderQueue(effectObj.gameObject,3500)
-- end
end
function AnnounceQuestPanelCell:initBg( )
-- local wantedData = self.data.wantedData
-- if(wantedData and wantedData.Type ==1)then
-- self:Show(self.actBgSp.gameObject)
-- self:Hide(self.textureBg)
-- else
-- self:Hide(self.actBgSp.gameObject)
-- self:Show(self.textureBg)
-- end
end
function AnnounceQuestPanelCell:SetSimpleIcon( Icon )
local ret = IconManager:SetUIIcon(Icon,simpleIcon)
if(ret)then
self:Show(self.simpleIcon.gameObject)
self:Hide(self.publishNameCt)
end
return ret
end
function AnnounceQuestPanelCell:SetNpcData( npcId )
-- body
local npcdata = Table_Npc[npcId]
self:Hide(self.simpleIcon.gameObject)
self:Show(self.publishNameCt)
if(npcdata)then
if(not self.targetCell)then
self.targetCell = HeadIconCell.new()
self.targetCell:CreateSelf(self.questPublisherHead)
self.targetCell:SetScale(1)
self.targetCell:SetMinDepth(3)
end
self.publishName.text = npcdata.NameZh
local data = ReusableTable.CreateTable()
if(npcdata.Icon == "")then
data.bodyID = npcdata.Body or 0
data.hairID = npcdata.Hair or 0
data.haircolor = npcdata.HeadDefaultColor or 0
data.gender = npcdata.Gender or -1
data.eyeID = npcdata.Eye or 0
self.targetCell:SetData(data)
else
self.targetCell:SetSimpleIcon(npcdata.Icon)
end
ReusableTable.DestroyTable(data)
else
printRed("can't find npcData at id:"..npcId)
end
end
function AnnounceQuestPanelCell:OnExit()
self.super.OnExit(self)
LeanTween.cancel(self.gameObject)
end