86 lines
No EOL
3.3 KiB
Lua
86 lines
No EOL
3.3 KiB
Lua
local XRpgMakerGameObject = require("XEntity/XRpgMakerGame/Object/XRpgMakerGameObject")
|
||
|
||
local type = type
|
||
local pairs = pairs
|
||
local Vector3 = CS.UnityEngine.Vector3
|
||
|
||
---水、冰对象
|
||
---@class XRpgMakerGameWaterData:XRpgMakerGameObject
|
||
local XRpgMakerGameWaterData = XClass(XRpgMakerGameObject, "XRpgMakerGameWaterData")
|
||
|
||
function XRpgMakerGameWaterData:Ctor(id, gameObject)
|
||
self.WaterStatus = XRpgMakerGameConfigs.XRpgMakerGameWaterType.Water
|
||
self.IsCheckPlayFlat = false --是否需要根据当前的状态加载对应的特效
|
||
end
|
||
|
||
function XRpgMakerGameWaterData:InitData()
|
||
-- local id = self:GetId()
|
||
-- local x = XRpgMakerGameConfigs.GetEntityX(id)
|
||
-- local y = XRpgMakerGameConfigs.GetEntityY(id)
|
||
-- self:UpdatePosition({PositionX = x, PositionY = y})
|
||
-- local type = XRpgMakerGameConfigs.GetEntityType(id)
|
||
-- self:SetStatus(type == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Water and
|
||
-- XRpgMakerGameConfigs.XRpgMakerGameWaterType.Water or
|
||
-- XRpgMakerGameConfigs.XRpgMakerGameWaterType.Ice)
|
||
if not XTool.IsTableEmpty(self.MapObjData) then
|
||
self:InitDataByMapObjData(self.MapObjData)
|
||
end
|
||
end
|
||
|
||
---@param mapObjData XMapObjectData
|
||
function XRpgMakerGameWaterData:InitDataByMapObjData(mapObjData)
|
||
self.MapObjData = mapObjData
|
||
self:UpdatePosition({PositionX = self.MapObjData:GetX(), PositionY = self.MapObjData:GetY()})
|
||
self:SetStatus(self.MapObjData:GetType() == XRpgMakerGameConfigs.XRpgMakeBlockMetaType.Water and
|
||
XRpgMakerGameConfigs.XRpgMakerGameWaterType.Water or
|
||
XRpgMakerGameConfigs.XRpgMakerGameWaterType.Ice)
|
||
end
|
||
|
||
---@return XMapObjectData
|
||
function XRpgMakerGameWaterData:GetMapObjData()
|
||
return self.MapObjData
|
||
end
|
||
|
||
--1水,2冰
|
||
function XRpgMakerGameWaterData:SetStatus(waterType)
|
||
if self.WaterStatus ~= waterType then
|
||
self.IsCheckPlayFlat = true
|
||
end
|
||
self.WaterStatus = waterType
|
||
end
|
||
|
||
function XRpgMakerGameWaterData:GetStatus()
|
||
return self.WaterStatus
|
||
end
|
||
|
||
--检查加载哪种特效
|
||
function XRpgMakerGameWaterData:CheckPlayFlat()
|
||
if not self.IsCheckPlayFlat then
|
||
return
|
||
end
|
||
|
||
local status = self:GetStatus()
|
||
local modelKey = (status == XRpgMakerGameConfigs.XRpgMakerGameWaterType.Ice and XRpgMakerGameConfigs.ModelKeyMaps.Freeze) or
|
||
(status == XRpgMakerGameConfigs.XRpgMakerGameWaterType.Melt and XRpgMakerGameConfigs.ModelKeyMaps.Melt) or
|
||
XRpgMakerGameConfigs.ModelKeyMaps.WaterRipper
|
||
|
||
local modelPath = XRpgMakerGameConfigs.GetRpgMakerGameModelPath(modelKey)
|
||
self:LoadModel(modelPath, nil, nil, modelKey)
|
||
|
||
--融化动画播完后切换水波纹特效
|
||
if status == XRpgMakerGameConfigs.XRpgMakerGameWaterType.Melt then
|
||
XScheduleManager.ScheduleOnce(function()
|
||
self:LoadModel(XRpgMakerGameConfigs.GetRpgMakerGameModelPath(XRpgMakerGameConfigs.ModelKeyMaps.WaterRipper))
|
||
end, 500)
|
||
end
|
||
self.IsCheckPlayFlat = false
|
||
|
||
--播放音效
|
||
if status == XRpgMakerGameConfigs.XRpgMakerGameWaterType.Ice then
|
||
XSoundManager.PlaySoundByType(XSoundManager.UiBasicsMusic.RpgMakerGame_Frezz, XSoundManager.SoundType.Sound)
|
||
elseif status == XRpgMakerGameConfigs.XRpgMakerGameWaterType.Melt then
|
||
XSoundManager.PlaySoundByType(XSoundManager.UiBasicsMusic.RpgMakerGame_Melt, XSoundManager.SoundType.Sound)
|
||
end
|
||
end
|
||
|
||
return XRpgMakerGameWaterData |