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

113 lines
3.8 KiB
Lua

------------------------------------------------
--作者: 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