Better move error visibility

This commit is contained in:
2024-11-03 14:36:37 -06:00
parent 7258ac29a0
commit 8a415a6c9d
7 changed files with 148 additions and 29 deletions

View File

@@ -87,28 +87,21 @@ public class ShogiApplication(
return new ForbidResult();
}
try
var moveResult = command.PieceFromHand.HasValue
? session.Board.Move(command.PieceFromHand.Value.ToDomain(), command.To)
: session.Board.Move(command.From!, command.To, command.IsPromotion ?? false);
if (moveResult.IsSuccess)
{
if (command.PieceFromHand.HasValue)
{
session.Board.Move(command.PieceFromHand.Value.ToDomain(), command.To);
}
else
{
var isPromotion = command.IsPromotion ?? false;
session.Board.Move(command.From!, command.To, isPromotion);
}
await sessionRepository.CreateMove(sessionId, command);
await gameHubContext.Emit_PieceMoved(sessionId);
return new NoContentResult();
}
catch (InvalidOperationException e)
else
{
return new ConflictObjectResult(e.Message);
return new ConflictObjectResult(moveResult.Reason);
}
await sessionRepository.CreateMove(sessionId, command);
await gameHubContext.Emit_PieceMoved(sessionId);
return new NoContentResult();
}
public async Task<IActionResult> JoinSession(string sessionId, string player2Id)