Files
Main/Assets/Code/Logic/_Required/GameSetting/SettingProcess/RoleSetting.cs
2025-01-25 04:38:09 +08:00

120 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thousandto.Cfg.Data;
using Thousandto.Code.Center;
namespace Thousandto.Code.Logic
{
/// <summary>
/// 角色设置
/// </summary>
public class RoleSetting : SettingProcessBase
{
#region//成员变量
//设置自动释放xp技能的等级
private int _autoXpLevel = -1;
public int AutoXPLevel
{
get
{
if (_autoXpLevel < 0)
{
var dg = DeclareGlobal.Get(1857);
if(dg != null) int.TryParse(dg.Params, out _autoXpLevel);
if (_autoXpLevel < 0) _autoXpLevel = 10;
}
return _autoXpLevel;
}
}
//角色设置
private GameRoleSetting _roleSetting = new GameRoleSetting();
#endregion
#region//属性
public ulong RoleID
{
get
{
return _roleSetting.RoleID;
}
set
{
if (_roleSetting.RoleID != value)
{
_roleSetting.SaveAll();
_roleSetting.RoleID = value;
_roleSetting.ReadAll();
RefreshRoleToGameSetting();
}
}
}
#endregion
#region//继承父类函数,设置默认配置
protected override void OnRegisterSettingChangedHandler()
{
base.OnRegisterSettingChangedHandler();
AddSettingChangedHandler(GameSettingKeyCode.MandateUseXPSkill, OnMandateUseXPSkillChanged);
AddSettingChangedHandler(GameSettingKeyCode.MandateUseXPSkill_LevelSet, OnMandateUseXPSkillLevelSetChanged);
}
protected override void OnUninitializeBefore()
{
_roleSetting.SaveAll();
base.OnUninitializeBefore();
}
#endregion
#region//公共函数
public void SaveData()
{
_roleSetting.SaveAll();
}
public void OnRoleLevelChanged(int level)
{
if (level >= AutoXPLevel)
{
if (GameCenter.GameSetting.GetSetting(GameSettingKeyCode.MandateUseXPSkill_LevelSet) <= 0)
{
GameCenter.PushFixEvent(Global.LogicEventDefine.EID_EVENT_SETAUTOUSE_FLYSWORD_SKILL, true);
GameCenter.GameSetting.SetSetting(GameSettingKeyCode.MandateUseXPSkill, 1);
GameCenter.GameSetting.SetSetting(GameSettingKeyCode.MandateUseXPSkill_LevelSet, 1);
GameCenter.LuaSystem.Adaptor.RestartMandate();
}
}
}
#endregion
#region //配置改变后的处理函数
//自动增加挂机时间
public void OnMandateUseXPSkillChanged(int value)
{
_roleSetting.Set((int)GameSettingKeyCode.MandateUseXPSkill, value, true, true);
GameCenter.LuaSystem.Adaptor.RestartMandate();
}
public void OnMandateUseXPSkillLevelSetChanged(int value)
{
_roleSetting.Set((int)GameSettingKeyCode.MandateUseXPSkill_LevelSet, value, true, true);
}
#endregion
#region//从角色刷新到Game Setting中
private void RefreshRoleToGameSetting()
{
GameSettingCore.Set(GameSettingKeyCode.MandateUseXPSkill, _roleSetting.Get((int)GameSettingKeyCode.MandateUseXPSkill), true, false);
GameSettingCore.Set(GameSettingKeyCode.MandateUseXPSkill_LevelSet, _roleSetting.Get((int)GameSettingKeyCode.MandateUseXPSkill_LevelSet), true, false);
}
#endregion
}
}