diff --git a/Entity/System/Club.cs b/Entity/System/Club.cs index ca13c61..71af0ba 100644 --- a/Entity/System/Club.cs +++ b/Entity/System/Club.cs @@ -1,4 +1,5 @@ using Milimoe.FunGame.Core.Interface.Entity; +using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Entity { @@ -10,12 +11,19 @@ namespace Milimoe.FunGame.Core.Entity public bool IsNeedApproval { get; set; } = false; public bool IsPublic { get; set; } = false; public double ClubPoins { get; set; } = 0; - public User? Master { get; set; } + public User Master { get; set; } = General.UnknownUserInstance; public Dictionary Admins { get; set; } = []; public Dictionary Members { get; set; } = []; public Dictionary Applicants { get; set; } = []; + public Dictionary Invitees { get; set; } = []; public Dictionary MemberJoinTime { get; set; } = []; public Dictionary ApplicationTime { get; set; } = []; + public Dictionary InvitedTime { get; set; } = []; + + public override string ToString() + { + return $"{Name} [{Prefix}]"; + } public override bool Equals(IBaseEntity? other) { diff --git a/Library/Common/JsonConverter/ClubConverter.cs b/Library/Common/JsonConverter/ClubConverter.cs index c37e7eb..eb3980d 100644 --- a/Library/Common/JsonConverter/ClubConverter.cs +++ b/Library/Common/JsonConverter/ClubConverter.cs @@ -73,6 +73,13 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter result.Applicants[id] = new(id); } break; + case nameof(Club.Invitees): + List invitees = NetworkUtility.JsonDeserialize>(ref reader, options) ?? []; + foreach (long id in invitees) + { + result.Invitees[id] = new(id); + } + break; case nameof(Club.MemberJoinTime): Dictionary memberJoinTime = NetworkUtility.JsonDeserialize>(ref reader, options) ?? []; foreach (long id in memberJoinTime.Keys) @@ -87,6 +94,13 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter result.ApplicationTime[id] = applicationTime[id]; } break; + case nameof(Club.InvitedTime): + Dictionary invitedTime = NetworkUtility.JsonDeserialize>(ref reader, options) ?? []; + foreach (long id in invitedTime.Keys) + { + result.InvitedTime[id] = invitedTime[id]; + } + break; } } @@ -111,10 +125,14 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter JsonSerializer.Serialize(writer, value.Members.Keys, options); writer.WritePropertyName(nameof(Club.Applicants)); JsonSerializer.Serialize(writer, value.Applicants.Keys, options); + writer.WritePropertyName(nameof(Club.Invitees)); + JsonSerializer.Serialize(writer, value.Invitees.Keys, options); writer.WritePropertyName(nameof(Club.MemberJoinTime)); JsonSerializer.Serialize(writer, value.MemberJoinTime, options); writer.WritePropertyName(nameof(Club.ApplicationTime)); JsonSerializer.Serialize(writer, value.ApplicationTime, options); + writer.WritePropertyName(nameof(Club.InvitedTime)); + JsonSerializer.Serialize(writer, value.InvitedTime, options); writer.WriteEndObject(); } diff --git a/Model/TeamGamingQueue.cs b/Model/TeamGamingQueue.cs index ef4d197..1ee7079 100644 --- a/Model/TeamGamingQueue.cs +++ b/Model/TeamGamingQueue.cs @@ -35,7 +35,7 @@ namespace Milimoe.FunGame.Core.Model /// public void AddTeam(string teamName, IEnumerable characters) { - if (teamName != "" && characters.Any()) + if (teamName != "" && characters.Any(c => c.HP > 0)) { _teams.Add(teamName, new(teamName, characters)); } @@ -176,7 +176,6 @@ namespace Milimoe.FunGame.Core.Model if (killTeam != null) { List actives = killTeam.GetActiveCharacters(this); - actives.Add(killer); int remainCount = actives.Count; if (remainCount > 0 && MaxRespawnTimes == 0) {