--作者: xc --日期: 2019-04-28 --文件: NatureWeaponData.lua --模块: NatureWeaponData --描述: 神器数据系统子类继承NatureBaseData ------------------------------------------------ local NatureBase = require "Logic.Nature.NatureBaseData" local SkillSetDate = require "Logic.Nature.NatureSkillSetData" local ModelData= require "Logic.Nature.NatureBaseModelData" local FashionData = require "Logic.Nature.NatureFashionData" local BaseItemData = require "Logic.Nature.NatureBaseItemData" local RedPointCustomCondition = CS.Thousandto.Code.Logic.RedPointCustomCondition local NatureWeaponData = { Cfg = nil , --阵法配置表数据 IsMax = 0, --阵法最大等级 super = nil, --父类对象 } function NatureWeaponData:New() local _obj = NatureBase:New(NatureEnum.Weapon) local _M = Utils.DeepCopy(self) _M.super = _obj return _M end --解析突破道具 function NatureWeaponData:AnalysisBreakItem(str) self.BreakItem:Clear() if str then local _cs = {';','_'} local _attr = Utils.SplitStrByTableS(str,_cs) for i=1,#_attr do local _data = BaseItemData:New(_attr[i][1],_attr[i][2]) self.BreakItem:Add(_data) end end end --初始化技能 function NatureWeaponData:Initialize() DataConfig.DataNatureWeapon:Foreach(function(k, v) if v.Skill ~= "" then local _cs = {'_'} local _skill = Utils.SplitStrByTable(v.Skill,_cs) local skilllevel = tonumber(_skill[2]) if _skill and #_skill >= 2 and skilllevel == 1 then local _data = SkillSetDate:New(v) self.super.SkillList:Add(_data) elseif _skill and #_skill >= 2 then self.super.AllSkillList:Add(v) end end if v.ModelID ~= 0 and v.ModelID ~= "" then local _data = ModelData:New(v,self.super.NatureType) self.super.ModelList:Add(_data) end if self.IsMax < v.Id then self.IsMax = v.Id end end) self.super.AllSkillList:Sort( function(a,b) return tonumber(a.Id) < tonumber(b.Id) end ) self.super.SkillList:Sort( function(a,b) if a.SkillInfo and b.SkillInfo then return tonumber(a.SkillInfo.Id) < tonumber(b.SkillInfo.Id) end return true end ) self.super.ModelList:Sort( function(a,b) return tonumber(a.Stage) < tonumber(b.Stage) end ) --初始化化形数据 DataConfig.DataHuaxingWeapon:Foreach(function(k, v) if v.IsIgnore == 1 and v.IfFashion == 1 then local _data = FashionData:New(v) self.super.FishionList:Add(_data) end end) self.super.FishionList:Sort( function(a,b) return tonumber(a.ModelId) < tonumber(b.ModelId) end ) GameCenter.RegFixEventHandle(LogicEventDefine.EID_EVENT_ONLINE_ITEMINFO, self.ItemsChange, self) GameCenter.RegFixEventHandle(LogicEventDefine.EVENT_WEAPONLV_ITEM_CHANGE, self.ItemsChange, self) end --反初始化 function NatureWeaponData:UnInitialize() self.Cfg = nil self.super = nil self.IsMax = 0 GameCenter.UnRegFixEventHandle(LogicEventDefine.EID_EVENT_ONLINE_ITEMINFO, self.ItemsChange, self) GameCenter.UnRegFixEventHandle(LogicEventDefine.EVENT_WEAPONLV_ITEM_CHANGE, self.ItemsChange, self) end function NatureWeaponData:ItemsChange() if self.super then self.super:UpdateLvRed(FunctionStartIdCode.NatureWeaponLevel) end end --初始化服务器数据 function NatureWeaponData:InitWingInfo(msg) if msg and msg.natureInfo then self.Cfg = DataConfig.DataNatureWeapon[msg.natureInfo.curLevel] self.super:UpDateSkill(msg.natureInfo.haveActiveSkill) --设置技能 self.super:UpDateModel(msg.natureInfo.haveActiveModel) --设置模型 self.super:UpDataFashionInfos(msg.natureInfo.outlineInfo) --设置化形 if self.Cfg then self.super:AnalysisAttr(self.Cfg.Attribute) self.super:AnalysisItem(self.Cfg.UpItem) self.super:Parase(msg.natureType,msg.natureInfo) local _num = self.Cfg.Progress - self.super.CurExp self.super:UpDateLevelHit(FunctionStartIdCode.NatureWeaponLevel, self.IsMax, _num, LogicEventDefine.EVENT_WEAPONLV_ITEM_CHANGE) end self.super:UpDateDrugHit(FunctionStartIdCode.NatureWeaponDrag) self.super:UpDateFashionHit(FunctionStartIdCode.NatureWeaponFashion) if msg.natureInfo.modelId > 0 then self:UpDateModelId(msg.natureInfo.modelId) end end end --更新技能升级 function NatureWeaponData:UpDateUpLevel(msg) if msg.activeSkill then self.super:UpDateSkill(msg.activeSkill) end self.super.Level = msg.level self.Cfg = DataConfig.DataNatureWing[msg.level] if self.Cfg then self.super:AnalysisAttr(self.Cfg.Attribute) end if msg.activeModel then self.super:UpDateModel(msg.activeModel) end self.super.CurExp = msg.curexp self.super.Fight = msg.fight self.super:UpDateLevelHit(FunctionStartIdCode.NatureWeaponLevel,self.IsMax, self.Cfg.Progress - msg.curexp, LogicEventDefine.EVENT_WEAPONLV_ITEM_CHANGE) end --更新吃果子信息 function NatureWeaponData:UpDateGrugInfo(msg) self.super.Fight = msg.fight self.super:UpDateDrug(msg.druginfo) self.super:UpDateDrugHit(FunctionStartIdCode.NatureWeaponDrag) end --更新设置模型ID function NatureWeaponData:UpDateModelId(model) self.super.CurModel = model end --更新化形升级结果 function NatureWeaponData:UpDateFashionInfo(msg) local _info = DataConfig.DataHuaxingWeapon[msg.id] self.super:UpDataFashion(msg,_info) self.super:UpDateFashionHit(FunctionStartIdCode.NatureWeaponFashion) end --功能函数!!!!!!!!!!!!!!! --是否满级了 function NatureWeaponData:IsMaxLevel() return self.IsMax <= self.super.Level end --获取模型相机大小 function NatureWeaponData:Get3DUICamerSize(modelid) local _info = DataConfig.DataHuaxingWeapon[modelid] if _info then return _info.CameraSize end _info = DataConfig.DataNatureWeapon[modelid] if _info then return _info.CameraSize end return self.super:GetCameraSize(modelid) end function NatureWeaponData:GetModelYPosition(modelid) local _info = DataConfig.DataHuaxingWeapon[modelid] if _info and _info.ModelYPos then return _info.ModelYPos end return 0 end function NatureWeaponData:GetModelXPosition(modelid) local _info = DataConfig.DataHuaxingWeapon[modelid] if _info and _info.ModelXPos then return _info.ModelXPos end return 0 end --获取旋转参数 function NatureWeaponData:GetModelRotation(modelid) local _info = DataConfig.DataHuaxingWeapon[modelid] if _info and _info.CameraRotation then local _attr = Utils.SplitNumber(_info.CameraRotation, '_') return _attr[1], _attr[2], _attr[3] end return 0, 0, 0 end --获取旋转参数 function NatureWeaponData:GetShowModelPosition(modelid) local _info = DataConfig.DataHuaxingWeapon[modelid] local x = 0 local y = 0 if _info and _info.ShowModelXPos then x = _info.ShowModelXPos end y = _info.ShowModelYPos return x, y, 0 end return NatureWeaponData