Add player profile system
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace XGame
|
||||
{
|
||||
public enum PlayerRoleType
|
||||
{
|
||||
Adventurer = 0,
|
||||
Warrior = 1,
|
||||
Mage = 2,
|
||||
Archer = 3
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class PlayerProfileData
|
||||
{
|
||||
public string Nickname = "Player";
|
||||
public string Uid = "0";
|
||||
public int AvatarId;
|
||||
public PlayerRoleType RoleType = PlayerRoleType.Adventurer;
|
||||
public int Gold;
|
||||
public int Diamond;
|
||||
public int Lv = 1;
|
||||
public int Exp;
|
||||
public int Hp = 100;
|
||||
public int HpMax = 100;
|
||||
public int Mp = 50;
|
||||
public int MpMax = 50;
|
||||
public int Ad = 10;
|
||||
public int Ap = 5;
|
||||
public float AtkSpeed = 1f;
|
||||
public float MoveSpeed = 4f;
|
||||
|
||||
public int RequiredExp => Mathf.Max(100, Lv * 100);
|
||||
public float Experience01 => Mathf.Clamp01((float)Mathf.Max(0, Exp) / RequiredExp);
|
||||
|
||||
public static PlayerProfileData CreateDefault()
|
||||
{
|
||||
PlayerProfileData data = new PlayerProfileData();
|
||||
data.Normalize();
|
||||
return data;
|
||||
}
|
||||
|
||||
public PlayerProfileData Clone()
|
||||
{
|
||||
return (PlayerProfileData)MemberwiseClone();
|
||||
}
|
||||
|
||||
public void Normalize()
|
||||
{
|
||||
Nickname = string.IsNullOrWhiteSpace(Nickname) ? "Player" : Nickname.Trim();
|
||||
Uid = string.IsNullOrWhiteSpace(Uid) ? "0" : Uid.Trim();
|
||||
AvatarId = Mathf.Max(0, AvatarId);
|
||||
Gold = Mathf.Max(0, Gold);
|
||||
Diamond = Mathf.Max(0, Diamond);
|
||||
Lv = Mathf.Max(1, Lv);
|
||||
Exp = Mathf.Max(0, Exp);
|
||||
HpMax = Mathf.Max(1, HpMax);
|
||||
MpMax = Mathf.Max(1, MpMax);
|
||||
Hp = Mathf.Clamp(Hp, 0, HpMax);
|
||||
Mp = Mathf.Clamp(Mp, 0, MpMax);
|
||||
Ad = Mathf.Max(0, Ad);
|
||||
Ap = Mathf.Max(0, Ap);
|
||||
AtkSpeed = Mathf.Max(0.01f, AtkSpeed);
|
||||
MoveSpeed = Mathf.Max(0.01f, MoveSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user