GSServer-CBT/soggy_resources/lua/Actor/Quest/Q301/WendyAudience.lua

215 lines
5.5 KiB
Lua
Raw Normal View History

2022-11-21 11:30:31 +03:00
require('Actor/ActorCommon')
local npcActorProxy = require('Actor/Npc/NpcActorProxy')
local WendyAudience = class("WendyAudience", npcActorProxy)
WendyAudience.defaultAlias = "WendyAudience"
WendyAudience.seatPos = nil
WendyAudience.seatDir = nil
WendyAudience.bornPos = nil
WendyAudience.bornDir = nil
WendyAudience.returnCallback = nil
WendyAudience.pointID = 1
WendyAudience.currWeather = WeatherType.ClearSky
-- local config begin
local q301Cfg = require('Actor/Quest/Q301/Config/Q301Config')
local q401Cfg = require('Actor/Quest/Q401/Q401Config')
local wendyData = q301Cfg.WendyData
local audienceInter = q301Cfg.AudienceInter
local extrasData = q301Cfg.ExtrasData
function WendyAudience:PreGetAlias()
local extraAlias = extrasData.Extras .. tostring(self.dataIndex)
return extraAlias
end
-- local config end
function WendyAudience:MoveToSeat()
print("move to seat ")
self:AddPriorityInter(InterTimingType.BTN, audienceInter)
self:RunToTask(self.seatPos,
function(self, task)
self:TurnTo(M.Euler2DirXZ(self.seatDir))
self:Standby()
end,
function(self, task)
self:Standby()
end
)
end
function WendyAudience:ReturnToNormal()
--print("ai return " .. tostring(self.configID))
self:ClearPriorityInter(InterTimingType.BTN)
self:WalkToTask(extrasData.ExtrasOriginPos[self.extrasIndex],
function(self, task)
self:TurnTo(M.Euler2DirXZ(extrasData.ExtrasOriginDir[self.extrasIndex]))
self:Standby()
if self.returnCallback ~= nil then
self:returnCallback()
end
end,
function(self, task)
self:Standby()
end
)
end
-- local method begin
function WendyAudience:OnEvent(evt)
if evt.evtType == wendyData.EvtFinishDance then
self:ReturnToNormal()
end
end
function WendyAudience:IsRaining()
if self.currWeather == WeatherType.Rain or
self.currWeather == WeatherType.Storm then
return true
end
return false
end
function WendyAudience:FinishBehave()
if self.pointID == 1 then
self.pointID = 2
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily2Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 2 then
self.pointID =3
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily3Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 3 then
self.pointID = 4
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily4Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 4 then
self.pointID = 1
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily1Pos[self.extrasIndex],self.Behave,self.Standby)
end
end
function WendyAudience:Behave()
if self.pointID == 1 or self.pointID == 3 then
self:DoFreeStyle(1)
self:CallDelay(5,self.FinishBehave)
else
self:DoFreeStyle(0)
self:CallDelay(5,self.FinishBehave)
end
end
function WendyAudience:StartDay()
--print("audience StartDay")
-- if IsRaining() then
-- return
-- end
self.pointID = 1
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily1Pos[self.extrasIndex],self.Behave,self.Standby)
end
function WendyAudience:StartNight()
--print("audience StartNight")
-- if IsRaining() then
-- return
-- end
--print("天黑了,回家")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasHomePos[self.extrasIndex],self.Standby,self.Standby)
end
function WendyAudience:OnWeather(weatherType)
--print("OnWeather")
--本来就在下雨
if self:IsRaining() then
--现在不下了
if weatherType ~= WeatherType.Rain and
weatherType ~= WeatherType.Storm then
--是白天,就跑出来
if globalActor.isDay then
self.currWeather = weatherType
print("雨停了,是白天,跑出来")
self:StartDay()
end
end
self.currWeather = weatherType
return
end
self.currWeather = weatherType
--本来没下雨,现在也不下雨了
if weatherType ~= WeatherType.Rain and
weatherType ~= WeatherType.Storm then
return
end
--本来没下雨,现在下雨了,而且是白天
if globalActor.isDay then
--print("下雨了,躲雨")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasOriginPos[self.extrasIndex],self.Standby,self.Standby)
end
end
function WendyAudience:MoveHome()
--print("任务401回家")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasHomePos[self.extrasIndex],
function(self,task)
local quest = actorMgr:GetActor(q401Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
end
)
end
function WendyAudience:StartDaily()
--print("audience StartDaily")
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterSelfWeatherChange(self.OnWeather)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function WendyAudience:ShowStart()
print("audience ShowStart")
self:SetPos(self.bornPos)
self:RegisterActorEvent(self.OnEvent)
self:MoveToSeat()
end
-- local method end
function WendyAudience:OnPostDataPrepare()
self.extrasIndex = self.dataIndex
self.seatPos = extrasData.ExtrasSeatPos[self.extrasIndex]
self.seatDir = extrasData.ExtrasSeatDir[self.extrasIndex]
self.bornPos = extrasData.ExtrasOriginPos[self.extrasIndex]
self.bornDir = extrasData.ExtrasOriginDir[self.extrasIndex]
self.returnCallback = extrasData.ExtrasReturnCallback[self.extrasIndex]
end
function WendyAudience:Start()
--print("start!wendy audience " .. self.configID)
self:StartDaily()
end
function WendyAudience:OnDestroy()
--print("wendy audience " .. self.configID .. " destroied")
-- self:UnregisterSelfNightTime(self.StartDay)
-- self:UnregisterSelfNightTime(self.StartNight)
-- self:UnregisterSelfWeatherChange(self.OnWeather)
end
return WendyAudience