Refactor classes into separate files
Moved AcceptedChallenge, ChatMessage, and ChatMessageResponse classes to individual files from Challenge.cs. This change enhances the organization and readability of the code, allowing each class definition to reside in its own dedicated file.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using Aiursoft.AiurObserver;
|
||||
|
||||
namespace Aiursoft.ChessServer.Models;
|
||||
|
||||
public class AcceptedChallenge : Challenge
|
||||
{
|
||||
private readonly bool _creatorIsWhite;
|
||||
public AcceptedChallenge(
|
||||
Player creator,
|
||||
Player accepter,
|
||||
string message,
|
||||
RoleRule roleRule,
|
||||
TimeSpan timeLimit,
|
||||
ChallengePermission permission,
|
||||
AsyncObservable<string> challengeChangedChannel)
|
||||
: base(creator, message, roleRule, timeLimit, permission)
|
||||
{
|
||||
Accepter = accepter;
|
||||
Game = new Game();
|
||||
ChallengeChangedChannel = challengeChangedChannel;
|
||||
_creatorIsWhite = RoleRule switch
|
||||
{
|
||||
RoleRule.Random => new Random().Next(0, 2) == 0,
|
||||
RoleRule.CreatorWhite => true,
|
||||
RoleRule.AccepterWhite => false,
|
||||
_ => _creatorIsWhite
|
||||
};
|
||||
}
|
||||
|
||||
public Player Accepter { get; set; }
|
||||
public Game Game { get; set; }
|
||||
|
||||
public AsyncObservable<ChatMessage> ChatChannel { get; init; } = new();
|
||||
|
||||
public Player GetWhitePlayer() => _creatorIsWhite ? Creator : Accepter;
|
||||
public Player GetBlackPlayer() => _creatorIsWhite ? Accepter : Creator;
|
||||
|
||||
public DateTime GameStartTime { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public Player GetTurnPlayer()
|
||||
{
|
||||
return Game.Board.Turn.AsChar.ToString().Equals("w", StringComparison.CurrentCultureIgnoreCase)
|
||||
? GetWhitePlayer() : GetBlackPlayer();
|
||||
}
|
||||
|
||||
public string GetPlayerColor(Guid playerId)
|
||||
{
|
||||
// returns : w,b, or m (monitor)
|
||||
if (GetWhitePlayer().Id == playerId)
|
||||
{
|
||||
return "w";
|
||||
}
|
||||
if (GetBlackPlayer().Id == playerId)
|
||||
{
|
||||
return "b";
|
||||
}
|
||||
return "m";
|
||||
}
|
||||
}
|
||||
@@ -26,73 +26,4 @@ public class Challenge(
|
||||
// Creator transferred: creator-transferred-{new-owner-player-nick-name}
|
||||
// Settings changed: settings-changed
|
||||
public AsyncObservable<string> ChallengeChangedChannel { get; protected init; } = new();
|
||||
}
|
||||
|
||||
public class AcceptedChallenge : Challenge
|
||||
{
|
||||
private readonly bool _creatorIsWhite;
|
||||
public AcceptedChallenge(
|
||||
Player creator,
|
||||
Player accepter,
|
||||
string message,
|
||||
RoleRule roleRule,
|
||||
TimeSpan timeLimit,
|
||||
ChallengePermission permission,
|
||||
AsyncObservable<string> challengeChangedChannel)
|
||||
: base(creator, message, roleRule, timeLimit, permission)
|
||||
{
|
||||
Accepter = accepter;
|
||||
Game = new Game();
|
||||
ChallengeChangedChannel = challengeChangedChannel;
|
||||
_creatorIsWhite = RoleRule switch
|
||||
{
|
||||
RoleRule.Random => new Random().Next(0, 2) == 0,
|
||||
RoleRule.CreatorWhite => true,
|
||||
RoleRule.AccepterWhite => false,
|
||||
_ => _creatorIsWhite
|
||||
};
|
||||
}
|
||||
|
||||
public Player Accepter { get; set; }
|
||||
public Game Game { get; set; }
|
||||
|
||||
public AsyncObservable<ChatMessage> ChatChannel { get; init; } = new();
|
||||
|
||||
public Player GetWhitePlayer() => _creatorIsWhite ? Creator : Accepter;
|
||||
public Player GetBlackPlayer() => _creatorIsWhite ? Accepter : Creator;
|
||||
|
||||
public DateTime GameStartTime { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public Player GetTurnPlayer()
|
||||
{
|
||||
return Game.Board.Turn.AsChar.ToString().Equals("w", StringComparison.CurrentCultureIgnoreCase)
|
||||
? GetWhitePlayer() : GetBlackPlayer();
|
||||
}
|
||||
|
||||
public string GetPlayerColor(Guid playerId)
|
||||
{
|
||||
// returns : w,b, or m (monitor)
|
||||
if (GetWhitePlayer().Id == playerId)
|
||||
{
|
||||
return "w";
|
||||
}
|
||||
if (GetBlackPlayer().Id == playerId)
|
||||
{
|
||||
return "b";
|
||||
}
|
||||
return "m";
|
||||
}
|
||||
}
|
||||
|
||||
public class ChatMessage(string content, Player sender)
|
||||
{
|
||||
public string Content { get; set; } = content;
|
||||
public Player Sender { get; set; } = sender;
|
||||
}
|
||||
|
||||
public class ChatMessageResponse(ChatMessage message, Guid currentUserId)
|
||||
{
|
||||
public string Content { get; set; } = message.Content;
|
||||
public string SenderNickName { get; set; } = message.Sender.NickName;
|
||||
public bool IsMe { get; set; } = message.Sender.Id == currentUserId;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Aiursoft.ChessServer.Models;
|
||||
|
||||
public class ChatMessage(string content, Player sender)
|
||||
{
|
||||
public string Content { get; set; } = content;
|
||||
public Player Sender { get; set; } = sender;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Aiursoft.ChessServer.Models;
|
||||
|
||||
public class ChatMessageResponse(ChatMessage message, Guid currentUserId)
|
||||
{
|
||||
public string Content { get; set; } = message.Content;
|
||||
public string SenderNickName { get; set; } = message.Sender.NickName;
|
||||
public bool IsMe { get; set; } = message.Sender.Id == currentUserId;
|
||||
}
|
||||
Reference in New Issue
Block a user