diff --git a/Api/Factory/InventoryFactory.cs b/Api/Factory/InventoryFactory.cs
index a88c1cc..2138633 100644
--- a/Api/Factory/InventoryFactory.cs
+++ b/Api/Factory/InventoryFactory.cs
@@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Interface.Base;
+using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Api.Factory
{
@@ -9,7 +10,12 @@ namespace Milimoe.FunGame.Core.Api.Factory
public Inventory Create()
{
- return new Inventory();
+ return new Inventory(General.UnknownUserInstance);
+ }
+
+ public static Inventory Create(User user)
+ {
+ return new Inventory(user);
}
}
}
diff --git a/Entity/Statistics/UserStatistics.cs b/Entity/Statistics/UserStatistics.cs
index a806a57..306aa74 100644
--- a/Entity/Statistics/UserStatistics.cs
+++ b/Entity/Statistics/UserStatistics.cs
@@ -1,25 +1,22 @@
-using System.Collections.Generic;
-using System.Linq;
-
namespace Milimoe.FunGame.Core.Entity
{
+ ///
+ /// 记录 的生涯、赛季统计数据
+ /// Key为赛季(long),每个key代表第key赛季,key = 0时为生涯数据。
+ ///
public class UserStatistics
{
- /**
- * Key为赛季(long),每个key代表第key赛季,key = 0时为生涯数据。
- */
-
- public long Id => User?.Id ?? 0L;
+ public long Id => User.Id;
public User User { get; }
- public Dictionary DamageStats { get; set; } = new Dictionary();
- public Dictionary PhysicalDamageStats { get; set; } = new Dictionary();
- public Dictionary MagicDamageStats { get; set; } = new Dictionary();
- public Dictionary RealDamageStats { get; set; } = new Dictionary();
+ public Dictionary DamageStats { get; set; } = new();
+ public Dictionary PhysicalDamageStats { get; set; } = new();
+ public Dictionary MagicDamageStats { get; set; } = new();
+ public Dictionary RealDamageStats { get; set; } = new();
public Dictionary AvgDamageStats
{
get
{
- Dictionary avgdamage = new Dictionary();
+ Dictionary avgdamage = new();
foreach (long key in Plays.Keys)
{
long plays = Plays[key];
@@ -28,7 +25,7 @@ namespace Milimoe.FunGame.Core.Entity
{
total = DamageStats.Values.Sum();
}
- avgdamage.Add(key, total / plays);
+ avgdamage.Add(key, Math.Round(total / plays, 2));
}
return avgdamage;
}
@@ -37,7 +34,7 @@ namespace Milimoe.FunGame.Core.Entity
{
get
{
- Dictionary avgdamage = new Dictionary();
+ Dictionary avgdamage = new();
foreach (long key in Plays.Keys)
{
long plays = Plays[key];
@@ -46,7 +43,7 @@ namespace Milimoe.FunGame.Core.Entity
{
total = PhysicalDamageStats.Values.Sum();
}
- avgdamage.Add(key, total / plays);
+ avgdamage.Add(key, Math.Round(total / plays, 2));
}
return avgdamage;
}
@@ -55,7 +52,7 @@ namespace Milimoe.FunGame.Core.Entity
{
get
{
- Dictionary avgdamage = new Dictionary();
+ Dictionary avgdamage = new();
foreach (long key in Plays.Keys)
{
long plays = Plays[key];
@@ -64,7 +61,7 @@ namespace Milimoe.FunGame.Core.Entity
{
total = MagicDamageStats.Values.Sum();
}
- avgdamage.Add(key, total / plays);
+ avgdamage.Add(key, Math.Round(total / plays, 2));
}
return avgdamage;
}
@@ -73,7 +70,7 @@ namespace Milimoe.FunGame.Core.Entity
{
get
{
- Dictionary avgdamage = new Dictionary();
+ Dictionary avgdamage = new();
foreach (long key in Plays.Keys)
{
long plays = Plays[key];
@@ -82,22 +79,22 @@ namespace Milimoe.FunGame.Core.Entity
{
total = RealDamageStats.Values.Sum();
}
- avgdamage.Add(key, total / plays);
+ avgdamage.Add(key, Math.Round(total / plays, 2));
}
return avgdamage;
}
}
- public Dictionary Kills { get; set; } = new Dictionary();
- public Dictionary Deaths { get; set; } = new Dictionary();
- public Dictionary Assists { get; set; } = new Dictionary();
- public Dictionary Plays { get; set; } = new Dictionary();
- public Dictionary Wins { get; set; } = new Dictionary();
- public Dictionary Loses { get; set; } = new Dictionary();
+ public Dictionary Kills { get; set; } = new();
+ public Dictionary Deaths { get; set; } = new();
+ public Dictionary Assists { get; set; } = new();
+ public Dictionary Plays { get; set; } = new();
+ public Dictionary Wins { get; set; } = new();
+ public Dictionary Loses { get; set; } = new();
public Dictionary Winrates
{
get
{
- Dictionary winrates = new Dictionary();
+ Dictionary winrates = new();
foreach (long key in Plays.Keys)
{
long plays = Plays[key];
@@ -106,14 +103,23 @@ namespace Milimoe.FunGame.Core.Entity
{
wins = Wins[key];
}
- winrates.Add(key, wins / plays * 0.01M);
+ winrates.Add(key, Math.Round(wins * 1.0000M / plays * 1.0000M, 4));
}
return winrates;
}
}
- public Dictionary RatingStats { get; set; } = new Dictionary();
- public Dictionary EloStats { get; set; } = new Dictionary();
- public Dictionary RankStats { get; set; } = new Dictionary();
+ public Dictionary RatingStats { get; set; } = new();
+ public Dictionary EloStats { get; set; } = new();
+ public Dictionary RankStats { get; set; } = new();
+
+ public string GetWinrate(long season)
+ {
+ if (Winrates.ContainsKey(season))
+ {
+ return Winrates[season].ToString("0.##%");
+ }
+ return "0%";
+ }
internal UserStatistics(User user)
{
diff --git a/Entity/System/Inventory.cs b/Entity/System/Inventory.cs
index 24be9f5..0e2bff9 100644
--- a/Entity/System/Inventory.cs
+++ b/Entity/System/Inventory.cs
@@ -2,10 +2,15 @@
{
public class Inventory
{
- public int Id { get; set; }
+ public long Id => User.Id;
public string Name { get; set; } = "";
- public User? User { get; set; } = null;
+ public User User { get; }
public Dictionary Characters { get; set; } = new();
public Dictionary Items { get; set; } = new();
+
+ internal Inventory(User user)
+ {
+ User = user;
+ }
}
}
diff --git a/Entity/User/User.cs b/Entity/User/User.cs
index b232e19..f71bbc0 100644
--- a/Entity/User/User.cs
+++ b/Entity/User/User.cs
@@ -1,7 +1,5 @@
-using System.Data;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant;
-using Milimoe.FunGame.Core.Library.SQLScript.Entity;
namespace Milimoe.FunGame.Core.Entity
{
@@ -23,11 +21,12 @@ namespace Milimoe.FunGame.Core.Entity
public decimal GameTime { get; set; } = 0;
public string AutoKey { get; set; } = "";
public UserStatistics Statistics { get; }
- public Inventory? Inventory { get; set; } = null;
+ public Inventory Inventory { get; }
internal User()
{
- this.Statistics = new(this);
+ Statistics = new(this);
+ Inventory = new(this);
}
internal User(long Id = 0, string Username = "", DateTime? RegTime = null, DateTime? LastTime = null, string Email = "", string NickName = "", bool IsAdmin = false, bool IsOperator = false, bool IsEnable = true, decimal Credits = 0, decimal Materials = 0, decimal GameTime = 0, string AutoKey = "")
@@ -45,7 +44,8 @@ namespace Milimoe.FunGame.Core.Entity
this.Materials = Materials;
this.GameTime = GameTime;
this.AutoKey = AutoKey;
- this.Statistics = new(this);
+ Statistics = new(this);
+ Inventory = new(this);
}
public override bool Equals(IBaseEntity? other)