Files
Main/Assets/GameAssets/Resources/Lua/Logic/ModelView/ModelViewSystem.lua
2025-01-25 04:38:09 +08:00

256 lines
7.4 KiB
Lua

------------------------------------------------
--作者: 王圣
--日期: 2019-04-22
--文件: ModelViewSystem.lua
--模块: ModelViewSystem
--描述: 模型展示
------------------------------------------------
--引用
local ModelViewSystem = {
ModelId = 0, --模型id
FashionBodyId = 0, --时装模型id
FashionWeaponId = 0, --时装武器id
Scale = 0, --缩放值
PosY = nil, --Y位置
ShowType = 0, --展示类型
Name = "", --展示名字
IsShowWear = false, --是否显示穿戴
WearId = 0, --穿戴id
IsStartTaskOnHide = false, --关闭后是否执行主线
ExtData = nil, --额外数据
DelayTime = 0, --打开界面的延时时间
}
--初始化
function ModelViewSystem:Initialize()
GameCenter.RegFixEventHandle(LogicLuaEventDefine.EID_EVENT_SHOWMODEL_VIEW, self.OnShowModelEvent, self);
end
--反初始化
function ModelViewSystem:UnInitialize()
GameCenter.UnRegFixEventHandle(LogicLuaEventDefine.EID_EVENT_SHOWMODEL_VIEW, self.OnShowModelEvent, self);
end
function ModelViewSystem:Update(dt)
if self.DelayTime > 0 then
self.DelayTime = self.DelayTime - dt
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
end
--展示模型
function ModelViewSystem:OnShowModelEvent(obj, sender)
if obj == nil then
return
end
if type(obj) == "table" then
local type = obj[1]
local id = obj[2]
local scale = obj[3]
local posY = obj[4]
local name = ""
if obj[5] then
name = obj[5]
end
self:ShowModel(type, id, scale, posY, name)
else
local type = obj[0]
local id = obj[1]
local scale = obj[2]
local posY = obj[3]
local name = ""
if obj[4] then
name = obj[4]
end
self:ShowModel(type, id, scale, posY, name)
end
end
function ModelViewSystem:ShowModel(mtype,id, scale, posY, name, isShowWear, wearId, info)
self.IsShowWear = false
if isShowWear then
self.IsShowWear = true
self.WearId = wearId
end
self.DelayTime = 0
self.ExtData = nil
if info ~= nil and type(info) == "number" then
self.DelayTime = info
elseif info ~= nil then
self.ExtData = info
end
if mtype == ShowModelType.Mount then
self:ShowMount(id,scale,posY, name)
elseif mtype == ShowModelType.Wing then
self:ShowWing(id, name)
elseif mtype == ShowModelType.FaBao then
self:ShowFaBao(id,scale,posY, name)
elseif mtype == ShowModelType.Player then
self:ShowPlayer(id,scale,posY, name)
elseif mtype == ShowModelType.Fashion then
self:ShowLpFashion(scale,posY, name)
elseif mtype == ShowModelType.Pet then
self:ShowPet(id, scale,posY, name)
elseif mtype == ShowModelType.LpWeapon then
self:ShowLpWeapon(id, scale, posY, name)
elseif mtype == ShowModelType.SoulEquip then
self:ShowSoulEquip(id, scale, posY, name)
elseif mtype == ShowModelType.SpecialBox then
self:ShowSpecialBox(id, scale, posY, name)
end
end
--展示坐骑模型
function ModelViewSystem:ShowMount(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.ShowType = ShowModelType.Mount
self.IsShowWear = false
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示翅膀模型
function ModelViewSystem:ShowWing(id, name)
self.ModelId = id
self.Name = name
self.ShowType = ShowModelType.Wing
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示法宝模型
function ModelViewSystem:ShowFaBao(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.IsShowWear = false
self.ShowType = ShowModelType.FaBao
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示宝箱模型
function ModelViewSystem:ShowSpecialBox(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.ShowType = ShowModelType.SpecialBox
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示魂甲模型
function ModelViewSystem:ShowSoulEquip(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.ShowType = ShowModelType.SoulEquip
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示角色模型
function ModelViewSystem:ShowPlayer(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.ShowType = ShowModelType.Player
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示武器模型
function ModelViewSystem:ShowLpWeapon(id, scale, posY, name)
--LpWeapon
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.ShowType = ShowModelType.LpWeapon
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示时装
function ModelViewSystem:ShowLpFashion(scale, posY, name)
self.Scale = scale
self.PosY = posY
self.Name = name
local wearList = GameCenter.NewFashionSystem.WearList
if wearList == nil then
return
end
local occ = 0
local player = GameCenter.GameSceneSystem:GetLocalPlayer()
if player then
occ = player.IntOcc
end
for i = 1,#wearList do
if wearList[i].Type == NewFashionType.Body then
--获取时装模型ID
self.FashionBodyId = RoleVEquipTool.GetFashionBodyModelID(occ, wearList[i].Id)
elseif wearList[i].Type == NewFashionType.Weapon then
--获取时装武器ID
self.FashionWeaponId = RoleVEquipTool.GetFashionWeaponModelID(occ, wearList[i].Id)
end
end
self.ShowType = ShowModelType.Fashion
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示时装
function ModelViewSystem:ShowFashion(data,scale, posY, name)
self.Scale = scale
self.PosY = posY
self.Name = name
local occ = 0
local player = GameCenter.GameSceneSystem:GetLocalPlayer()
if player then
occ = player.IntOcc
end
local type = data:GetType()
if type == NewFashionType.Body then
self.FashionBodyId = data:GetModelId(occ)
elseif type == NewFashionType.Weapon then
self.FashionWeaponId = data:GetModelId(occ)
end
self.ShowType = ShowModelType.Fashion
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
--展示法宝模型
function ModelViewSystem:ShowPet(id, scale, posY, name)
self.ModelId = id
self.Scale = scale
self.PosY = posY
self.Name = name
self.IsShowWear = false
self.ShowType = ShowModelType.Pet
if self.DelayTime <= 0 then
GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN)
end
end
return ModelViewSystem