添加社团邀请列表

This commit is contained in:
milimoe 2025-08-02 05:29:34 +08:00
parent f55fda4c86
commit 9c792ed781
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
3 changed files with 28 additions and 3 deletions

View File

@ -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<long, User> Admins { get; set; } = [];
public Dictionary<long, User> Members { get; set; } = [];
public Dictionary<long, User> Applicants { get; set; } = [];
public Dictionary<long, User> Invitees { get; set; } = [];
public Dictionary<long, DateTime> MemberJoinTime { get; set; } = [];
public Dictionary<long, DateTime> ApplicationTime { get; set; } = [];
public Dictionary<long, DateTime> InvitedTime { get; set; } = [];
public override string ToString()
{
return $"{Name} [{Prefix}]";
}
public override bool Equals(IBaseEntity? other)
{

View File

@ -73,6 +73,13 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
result.Applicants[id] = new(id);
}
break;
case nameof(Club.Invitees):
List<long> invitees = NetworkUtility.JsonDeserialize<List<long>>(ref reader, options) ?? [];
foreach (long id in invitees)
{
result.Invitees[id] = new(id);
}
break;
case nameof(Club.MemberJoinTime):
Dictionary<long, DateTime> memberJoinTime = NetworkUtility.JsonDeserialize<Dictionary<long, DateTime>>(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<long, DateTime> invitedTime = NetworkUtility.JsonDeserialize<Dictionary<long, DateTime>>(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();
}

View File

@ -35,7 +35,7 @@ namespace Milimoe.FunGame.Core.Model
/// <param name="characters"></param>
public void AddTeam(string teamName, IEnumerable<Character> 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<Character> actives = killTeam.GetActiveCharacters(this);
actives.Add(killer);
int remainCount = actives.Count;
if (remainCount > 0 && MaxRespawnTimes == 0)
{