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

376 lines
14 KiB
Lua

--作者: xc
--日期: 2019-04-17
--文件: NatureSystem.lua
--模块: NatureSystem
--描述: 造化面板通用数据
------------------------------------------------
--引用
local WingsData = require "Logic.Nature.NatureWingsData"
local WeaponData = require "Logic.Nature.NatureWeaponData"
local MountData = require "Logic.Nature.NatureMountData"
local L_FabaoData = require "Logic.Nature.NatureFabaoData"
local L_FlySwordData = require "Logic.Nature.NatureFlySwordData"
local L_PetData = require "Logic.Nature.NaturePetData"
local NatureSystem = {
NatureDrugDir = nil,--吃药配置表所有数据 k是各系统类型
NatureDrugItemMax = nil,--各系统的道具ID最多升级多少
NatureWingsData = nil, --翅膀数据
NatureWeaponData = nil ,--神兵数据
NatureMountData = nil ,--坐骑数据
NatureFaBaoData = nil, --法宝数据
NatureFlySwordData = nil, --飞剑
NaturePetData = nil, --宠物
}
function NatureSystem:Initialize()
self.NatureDrugDir = Dictionary:New()
self.NatureDrugItemMax = Dictionary:New()
self.NatureWingsData = WingsData:New()
self.NatureWingsData:Initialize()
self.NatureMountData = MountData:New()
self.NatureMountData:Initialize()
self.NatureFaBaoData = L_FabaoData:New()
self.NatureFaBaoData:Initialize()
self.NatureFlySwordData = L_FlySwordData:New()
self.NatureFlySwordData:Initialize()
self.NaturePetData = L_PetData:New()
self.NaturePetData:Initialize()
self.NatureWeaponData = WeaponData:New()
self.NatureWeaponData:Initialize()
end
function NatureSystem:UnInitialize()
self.NatureWingsData:UnInitialize()
self.NatureWingsData = nil
if self.NatureWeaponData then
self.NatureWeaponData:UnInitialize()
self.NatureWeaponData = nil
end
self.NatureMountData:UnInitialize()
self.NatureMountData = nil
self.NatureFaBaoData:UnInitialize()
self.NatureFaBaoData = nil
self.NatureFlySwordData:UnInitialize()
self.NatureFlySwordData = nil
self.NaturePetData:UnInitialize()
self.NaturePetData = nil
end
--初始化配置表
function NatureSystem:InitConfig()
--初始化吃果子信息
if self.NatureDrugDir == nil then
self.NatureDrugDir = Dictionary:New()
end
if #self.NatureDrugDir > 0 then
return
end
DataConfig.DataNatureAtt:Foreach(function(k, v)
if not self.NatureDrugDir:ContainsKey(v.Type) then
if v.Level == 0 then
local _list = List:New()
_list:Add(v)
self.NatureDrugDir:Add(v.Type, _list)
end
else
if v.Level == 0 then
self.NatureDrugDir[v.Type]:Add(v)
end
end
if not self.NatureDrugItemMax:ContainsKey(v.Type) then
local _dic = Dictionary:New()
_dic:Add(v.ItemId,v.Level)
self.NatureDrugItemMax:Add(v.Type,_dic)
else
if self.NatureDrugItemMax[v.Type]:ContainsKey(v.ItemId) then
if self.NatureDrugItemMax[v.Type][v.ItemId] < v.Level then
self.NatureDrugItemMax[v.Type][v.ItemId] = v.Level
end
else
self.NatureDrugItemMax[v.Type]:Add(v.ItemId,v.Level)
end
end
end)
for k, v in pairs(self.NatureDrugDir) do
v:Sort(
function(a,b)
return tonumber(a.Position) < tonumber(b.Position)
end
)
end
end
--通过类型和道具ID得到单个吃药的最大等级
function NatureSystem:GetDrugItemMax(type,item)
local _maxlv = 0
self:InitConfig()
if self.NatureDrugItemMax:ContainsKey(type) then
if self.NatureDrugItemMax[type]:ContainsKey(item) then
_maxlv = self.NatureDrugItemMax[type][item]
end
end
return _maxlv
end
--接受返回造化面板信息
function NatureSystem:ResNatureInfo(msg)
if msg.natureType == NatureEnum.Mount then --坐骑数据
self.NatureMountData:InitWingInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_MOUNT_INIT)
elseif msg.natureType == NatureEnum.Wing then --翅膀数据
self.NatureWingsData:InitWingInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WING_INIT)
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
self.NatureWeaponData:InitWingInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WEAPON_INIT)
elseif msg.natureType == NatureEnum.FaBao then --法宝数据
self.NatureFaBaoData:InitWingInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WEAPON_INIT)
elseif msg.natureType == NatureEnum.Pet then
self.NaturePetData:InitWingInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_REFRESH_PET_FORM)
end
end
function NatureSystem:ResOnlineInitHuaxin(msg)
self.NatureFlySwordData:InitWingInfo(msg)
end
function NatureSystem:ResUseHuxinResult(msg)
self.NatureFlySwordData:UpDateFashionInfo(msg)
end
--返回使用物品升级
function NatureSystem:ResNatureUpLevel(msg)
if msg.natureType == NatureEnum.Mount then --坐骑数据
local _oldlevel = self.NatureMountData.super.Level
self.NatureMountData:UpDateUpLevel(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_MOUNT_UPLEVEL,_oldlevel)
elseif msg.natureType ==NatureEnum.Wing then --翅膀数据
local _oldlevel = self.NatureWingsData.super.Level
self.NatureWingsData:UpDateUpLevel(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WING_UPLEVEL,_oldlevel)
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
local _oldlevel = self.NatureWeaponData.super.Level
self.NatureWeaponData:UpDateUpLevel(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WEAPON_UPLEVEL,_oldlevel)
end
end
--战力改变
function NatureSystem:ResPowerChange(msg)
if msg.natureType == NatureEnum.Mount then --坐骑数据
self.NatureMountData.super.Fight = msg.fight
elseif msg.natureType ==NatureEnum.Wing then --翅膀数据
self.NatureWingsData.super.Fight = msg.fight
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
self.NatureWeaponData.super.Fight = msg.fight
elseif msg.natureType == NatureEnum.Pet then --神兵数据
self.NaturePetData.super.Fight = msg.fight
end
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WING_UPDATEFASHION)
end
--返回设置模型
function NatureSystem:ResNatureModelSet(msg)
if msg.natureType == NatureEnum.Mount then --坐骑数据
self.NatureMountData:UpDateModelId(msg.modelId)
elseif msg.natureType == NatureEnum.Wing then --翅膀数据
self.NatureWingsData:UpDateModelId(msg.modelId)
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
self.NatureWeaponData:UpDateModelId(msg.modelId)
elseif msg.natureType == NatureEnum.FaBao then --法宝数据
self.NatureFaBaoData:UpDateModelId(msg.modelId)
end
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_FASHION_CHANGEMODEL,msg.natureType)
end
--返回吃果子信息
function NatureSystem:ResNatureDrug(msg)
if msg.natureType == NatureEnum.Mount then --坐骑数据
self.NatureMountData:UpDateGrugInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_MOUNT_UPDATEDRUG, msg)
elseif msg.natureType == NatureEnum.Wing then --翅膀数据
self.NatureWingsData:UpDateGrugInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WING_UPDATEDRUG, msg)
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
self.NatureWeaponData:UpDateGrugInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WEAPON_UPDATEDRUG, msg)
elseif msg.natureType == NatureEnum.FaBao then --法宝
self.NatureFaBaoData:UpDateGrugInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_NATURE_EVENT_FABAO_UPDATEDRUG, msg.druginfo.fruitId)
elseif msg.natureType == NatureEnum.Pet then --法宝
self.NaturePetData:UpDateGrugInfo(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_REFRESH_PET_FORM, msg.druginfo.fruitId)
end
end
--返回化形升级结果
function NatureSystem:ResNatureFashionUpLevel(msg)
local _fashion = nil
local _config = nil
local showType = 0
local fashionBase = nil
local scale = 180
local posY = 0
local name = ""
if msg.natureType == NatureEnum.Mount then --坐骑数据
self.NatureMountData:UpDateFashionInfo(msg.info)
_fashion = self.NatureMountData.super.FishionList:Find(function(code)
return msg.info.id == code.ModelId
end)
_config = DataConfig.DataHuaxingHorse[msg.info.id]
showType = ShowModelType.Mount
fashionBase = self.NatureMountData.super
scale = self.NatureMountData:Get3DUICamerSize(msg.info.id)
posY = self.NatureMountData:GetShowModelYPosition(msg.info.id)
if _config then
name = _config.Name
end
elseif msg.natureType == NatureEnum.Wing then --翅膀数据
self.NatureWingsData:UpDateFashionInfo(msg.info)
_fashion = self.NatureWingsData.super.FishionList:Find(function(code)
return msg.info.id == code.ModelId
end)
_config = DataConfig.DataHuaxingWing[msg.info.id]
showType = ShowModelType.Wing
fashionBase = self.NatureWingsData.super
scale = self.NatureWingsData:Get3DUICamerSize(msg.info.id)
name = _config.Name
-- posY = self.NatureWingsData:GetShowModelYPosition(msg.info.id)
elseif msg.natureType == NatureEnum.Talisman then --法器数据
elseif msg.natureType == NatureEnum.Magic then --阵道数据
elseif msg.natureType == NatureEnum.Weapon then --神兵数据
self.NatureWeaponData:UpDateFashionInfo(msg.info)
_fashion = self.NatureWeaponData.super.FishionList:Find(function(code)
return msg.info.id == code.ModelId
end)
_config = DataConfig.DataHuaxingWeapon[msg.info.id]
elseif msg.natureType == NatureEnum.FaBao then --法宝数据
self.NatureFaBaoData:UpDateFashionInfo(msg.info)
_fashion = self.NatureFaBaoData.super.FishionList:Find(function(code)
return msg.info.id == code.ModelId
end)
_config = DataConfig.DataHuaxingfabao[msg.info.id]
showType = ShowModelType.FaBao
fashionBase = self.NatureFaBaoData.super
scale = self.NatureFaBaoData:Get3DUICamerSize(msg.info.id)
posY = self.NatureFaBaoData:GetShowModelYPosition(msg.info.id)
name = _config.Name
end
if _fashion and _fashion.IsActive and _fashion.Level > 0 then
Utils.ShowPromptByEnum("LevelUpSucced",_config.Name)
else
Utils.ShowPromptByEnum("ActivateSucced", _config.Name)
-- if msg.info.id ~= 6100001 then
--GameCenter.PushFixEvent(UIEventDefine.UIModelViewForm_OPEN, {msg.info.id, msg.natureType})
--local info = fashionBase:GetFashionInfo(msg.info.id)
--GameCenter.ModelViewSystem:ShowModel(showType,info.ModelId,scale,posY, name)
-- end
end
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_WING_UPDATEFASHION,msg.info.id)
end
--坐骑返回结果
function NatureSystem:ResNatureMountBaseLevel(msg)
local _oldlevel = self.NatureMountData.BaseCfg.Id
self.NatureMountData:UpDateBaseAttr(msg)
GameCenter.PushFixEvent(LogicLuaEventDefine.NATURE_EVENT_MOUNT_UPDATEEQUIP ,_oldlevel)
end
--发送升级消息
function NatureSystem:ReqNatureUpLevel(type,itemid,isonekey)
GameCenter.Network.Send("MSG_Nature.ReqNatureUpLevel",{
natureType = type,
itemid = itemid,
isOneKeyUp = isonekey
})
end
--发送消息设置模型
function NatureSystem:ReqNatureModelSet(type,model)
if type == NatureEnum.FlySword then
GameCenter.Network.Send("MSG_HuaxinFlySword.ReqUseHuxin",{
type = 3,
huaxinID = model
})
else
GameCenter.Network.Send("MSG_Nature.ReqNatureModelSet",{
natureType = type,
modelId = model
})
end
end
--发送消息请求基本数据
function NatureSystem:ReqNatureInfo(type)
GameCenter.Network.Send("MSG_Nature.ReqNatureInfo",{
natureType = type,
})
end
--发送吃果子信息
function NatureSystem:ReqNatureDrug(type,item)
GameCenter.Network.Send("MSG_Nature.ReqNatureDrug",{
natureType = type,
itemid = item
})
end
--请求化形升级激活
function NatureSystem:ReqNatureFashionUpLevel(type,modelid)
if type == NatureEnum.FlySword then
GameCenter.Network.Send("MSG_HuaxinFlySword.ReqUseHuxin",{
type = 2,
huaxinID = modelid
})
else
GameCenter.Network.Send("MSG_Nature.ReqNatureFashionUpLevel",{
natureType = type,
id = modelid
})
end
end
--吃装备
function NatureSystem:ReqNatureMountBaseLevel(onlyinfo,iteminfo)
GameCenter.Network.Send("MSG_Nature.ReqNatureMountBaseLevel",{
itemOnlyInfo = onlyinfo,
itemModelInfo = iteminfo
})
end
--判断是否有设置坐骑模型
function NatureSystem:HasMountId()
if self.NatureMountData.super.CurModel ~= 0 then
return true
end
return false
end
--获取当前穿戴的坐骑ID
function NatureSystem:GetMountId()
return self.NatureMountData.super.CurModel
end
--获得当前穿戴翅膀ID
function NatureSystem:GetCurModelId()
return self.NatureWingsData.super.CurModel
end
return NatureSystem