------------------------------------------------ --作者: 王圣 --日期: 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