2025-06-04 05:02:57 +08:00

145 lines
3.9 KiB
Plaintext

autoImport("Table_Question")
WeddingQuestionView = class("WeddingQuestionView",ContainerView)
WeddingQuestionView.ViewType = UIViewType.NormalLayer
local _WeddingProxy = WeddingProxy.Instance
function WeddingQuestionView:OnExit()
self:CameraReset()
ServiceWeddingCCmdProxy.Instance:CallWeddingSwitchQuestionCCmd(false)
WeddingQuestionView.super.OnExit(self)
end
function WeddingQuestionView:Init()
self:FindObj()
self:AddEvt()
self:AddViewEvt()
self:InitShow()
end
function WeddingQuestionView:FindObj()
self.content = self:FindGO("Content"):GetComponent(UILabel)
self.contentEffect = self.content.gameObject:GetComponent(TypewriterEffect)
self.collider = self:FindGO("Dialog"):GetComponent(BoxCollider)
self.choose = self:FindGO("Choose")
self.chooseA = self:FindGO("ChooseA", self.choose):GetComponent(UILabel)
self.chooseB = self:FindGO("ChooseB", self.choose):GetComponent(UILabel)
end
function WeddingQuestionView:AddEvt()
self:AddClickEvent(self.collider.gameObject, function ()
if self.canAnswer then
self.contentEffect:Finish()
if self.questionid ~= nil then
ServiceWeddingCCmdProxy.Instance:CallAnswerWeddingCCmd(self.questionid, 1)
end
self.collider.enabled = false
self.canAnswer = false
end
end)
self:AddClickEvent(self.chooseA.gameObject, function ()
if self.canAnswer and self.questionid ~= nil then
ServiceWeddingCCmdProxy.Instance:CallAnswerWeddingCCmd(self.questionid, 1)
self.canAnswer = false
end
end)
self:AddClickEvent(self.chooseB.gameObject, function ()
if self.canAnswer and self.questionid ~= nil then
ServiceWeddingCCmdProxy.Instance:CallAnswerWeddingCCmd(self.questionid, 2)
self.canAnswer = false
end
end)
EventDelegate.Set(self.contentEffect.onFinished, function ()
self.canAnswer = true
end)
end
function WeddingQuestionView:AddViewEvt()
self:AddListenEvt(ServiceEvent.WeddingCCmdQuestionWeddingCCmd, self.HandleQuestion)
self:AddListenEvt(ServiceEvent.WeddingCCmdWeddingSwitchQuestionCCmd, self.HandleSwitchQuestion)
end
function WeddingQuestionView:InitShow()
self.collider.enabled = false
self.canAnswer = false
end
function WeddingQuestionView:HandleQuestion(note)
local data = note.body
if data ~= nil then
self.questionid = data.questionid
helplog("HandleQuestion",self.questionid)
local staticData = Table_Question[self.questionid]
if staticData ~= nil then
local question = staticData.Title
if self:CheckCanAnswer(data.charids) then
if self.questionid == 11 then
question = string.format(question, Game.Myself.data.name, _WeddingProxy:GetPartnerName())
end
local isShowOption = #staticData.Option > 0
self.choose:SetActive(isShowOption)
self.collider.enabled = not isShowOption
if isShowOption then
local optionA = staticData.Option[1]
if optionA ~= nil then
self.chooseA.text = optionA.content
end
local optionB = staticData.Option[2]
if optionB ~= nil then
self.chooseB.text = optionB.content
end
end
else
if self.questionid == 11 then
question = string.format(question, _WeddingProxy:GetPartnerName(), Game.Myself.data.name)
end
self.choose:SetActive(false)
self.collider.enabled = false
end
self.content.text = question
self.contentEffect:ResetToBeginning()
end
end
end
function WeddingQuestionView:HandleSwitchQuestion(note)
local data = note.body
if data ~= nil then
if data.onoff == true then
local npcId = data.npcguid
if npcId ~= nil then
local npc = NSceneNpcProxy.Instance:Find(npcId)
if npc ~= nil then
local viewPort = CameraConfig.WeddingQuestion_ViewPort
local rotation = CameraConfig.WeddingQuestion_Rotation
self:CameraFaceTo(npc.assetRole.completeTransform,viewPort,rotation)
end
end
else
self:CloseSelf()
end
end
end
function WeddingQuestionView:CheckCanAnswer(charids)
for i=1,#charids do
if charids[i] == Game.Myself.data.id then
return true
end
end
return false
end