------------------------------------------------ --作者: gzg --日期: 2020-11-12 --文件: PlayerRoleInfo.lua --模块: PlayerRoleInfo --描述: 玩家角色信息 ------------------------------------------------ local SlotUtils = CS.Thousandto.Core.Asset.SlotUtils local SlotNameDefine = CS.Thousandto.Core.Asset.SlotNameDefine local FSkinModelWrap = require("Logic.FGameObject.FSkinModelWrap") local PlayerRoleInfo = { --角色ID RoleId = 0, --名字 Name = nil, --职业 Career = 0, --等级 Level = 0, --境界等级 StateLevel = 0, --Vip等级 VipLevel = 0, --删除时间 DeleteTime = 0, --创建时间 CreateTime = 0, --战斗力 PowerValue= 0, --外观信息 VisualInfo = nil, --外光的Skin,临时保存 Skin = nil, --Skin不为改变的回调 OnSkinPartChangedHandler = nil, } --New function PlayerRoleInfo:New() local _m = Utils.DeepCopy(self) _m.OnSkinPartChangedHandler = Utils.Handler(_m.OnSkinPartChanged, _m, nil, true); return _m end function PlayerRoleInfo:FillFromServerMsg(msg) self.RoleId = msg.roleId; self.Name = msg.name; self.Career = msg.career; self.Level = msg.lv; self.StateLevel = msg.stateLv; self.DeleteTime = msg.deleteTime; self.CreateTime = msg.createTime; self.PowerValue = (msg.fight); self.VisualInfo = PlayerVisualInfo:New(); self.VisualInfo:Parse(msg.facade, self.StateLevel); end function PlayerRoleInfo:FillFromLocalPlayer(lp) self.RoleId = lp.ID; self.Name = lp.Name; self.Career = lp.IntOcc; self.Level = lp.Level; self.VisualInfo = PlayerVisualInfo:New(); self.VisualInfo:Copy(lp.VisualInfo); self.StateLevel = lp.CurStateLevel; self.DeleteTime =-1; self.CreateTime = 0; self.PowerValue =lp.FightPower; end --刷新皮肤模型 function PlayerRoleInfo:RefreshSkinModel(skin) if skin == nil then self.Skin = FSkinModelWrap:New(FSkinTypeCode.Player); self.Skin:SetOnSkinPartChangedHandler(self.OnSkinPartChangedHandler); if self.VisualInfo ~= nil then RoleVEquipTool.RefreshPlayerSkinModel(self.Skin, self.Career, self.VisualInfo); else Debug.LogError("==== self.VisualInfo==nil 打印PlayerRoleInfo ====") Debug.LogTable(self); end else self.Skin = skin; end return self.Skin; end --皮肤的部位改变 function PlayerRoleInfo:OnSkinPartChanged(x, y) if (y == FSkinPartCode.GodWeaponHead or y == FSkinPartCode.Body) and self.Skin ~= nil then local body = self.Skin:GetSkinPart(FSkinPartCode.Body); if (body) then body.BrightWeapon = true; local weaponModelID = self.Skin:GetSkinPartCfgID(FSkinPartCode.GodWeaponHead); local scaleCfg = DataConfig.DataWeaponScale[weaponModelID]; if (scaleCfg) then local reScale = Vector3(scaleCfg.ReceiveScale / 100, scaleCfg.ReceiveScale / 100, scaleCfg.ReceiveScale / 100); local brScale = Vector3(scaleCfg.BrightScale / 100, scaleCfg.BrightScale / 100, scaleCfg.BrightScale / 100); SlotUtils.SetSlotLocalScale(body.RealTransform, SlotNameDefine.RightWeapon, brScale); SlotUtils.SetSlotLocalScale(body.RealTransform, SlotNameDefine.RightWeaponReceive, reScale); else SlotUtils.SetSlotLocalScale(body.RealTransform, SlotNameDefine.RightWeapon, Vector3.one); SlotUtils.SetSlotLocalScale(body.RealTransform, SlotNameDefine.RightWeaponReceive, Vector3.one); end end end end return PlayerRoleInfo