dev
This commit is contained in:
parent
dd24bd4871
commit
a82d709abc
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace GameData.Model
|
||||
{
|
||||
public record GameStateDo(Guid Id, Guid GameId, string GameName, string GameState)
|
||||
public record GameStateDo(Guid Id, Guid GameId, string GameName, string GameState, int Counter)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace GameData.Repository
|
|||
{
|
||||
TypeNameHandling = TypeNameHandling.Auto
|
||||
});
|
||||
var gameStateDo = new GameStateDo(gameState.Id, gameState.GameId, gameState.GameName, str);
|
||||
var gameStateDo = new GameStateDo(gameState.Id, gameState.GameId, gameState.GameName, str, gameState.Counter);
|
||||
var res = await _client.Post<GameStateDo>(gameStateDo,UrlGameState);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,10 +14,9 @@ namespace GameHandler
|
|||
internal Guid GameStateId;
|
||||
internal bool Saved;
|
||||
internal T Data;
|
||||
public GameStateHandlerItem(Guid gameStateId, T data, bool saved)
|
||||
public GameStateHandlerItem(Guid gameStateId, T data)
|
||||
{
|
||||
GameStateId = gameStateId;
|
||||
Saved = saved;
|
||||
Data = data;
|
||||
}
|
||||
}
|
||||
|
|
@ -70,21 +69,28 @@ namespace GameHandler
|
|||
{
|
||||
if (!expenseModel.Equals(ExpenseModel))
|
||||
{
|
||||
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel, false));
|
||||
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel, false));
|
||||
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel));
|
||||
}
|
||||
|
||||
|
||||
foreach(var memberExpense in expenseModel.MemberExpenses.Where(_ => !memberExpenses.Any(me => me.Data.Id.Equals(_.Id))))
|
||||
{
|
||||
memberExpenses.Add(new GameStateHandlerItem<PlayerExpense>(_gameStateId,memberExpense with { GamestateId = _gameStateId },false));
|
||||
var item = new GameStateHandlerItem<PlayerExpense>(_gameStateId, memberExpense with { GamestateId = _gameStateId });
|
||||
memberExpenses.Add(item);
|
||||
await Save(item);
|
||||
}
|
||||
|
||||
await Save();
|
||||
|
||||
}
|
||||
|
||||
private async Task Save(GameStateHandlerItem<PlayerExpense> item)
|
||||
{
|
||||
await _expenseRepository.Save(item.Data);
|
||||
}
|
||||
|
||||
internal async Task Add(GameState newState, Game game)
|
||||
|
|
@ -92,24 +98,15 @@ namespace GameHandler
|
|||
if (!newState.Equals(GameState))
|
||||
{
|
||||
_gameStateId = Guid.NewGuid();
|
||||
gameStates.Add(new GameStateHandlerItem<GameState>(_gameStateId, newState with { Id = _gameStateId }, false));
|
||||
await Save();
|
||||
var item = new GameStateHandlerItem<GameState>(_gameStateId, newState with { Id = _gameStateId, Counter = gameStates.Count + 1 });
|
||||
gameStates.Add(item);
|
||||
await Save(item);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task Save()
|
||||
private async Task Save(GameStateHandlerItem<GameState> item)
|
||||
{
|
||||
await Task.WhenAll(gameStates.Where(_ => !_.Saved)
|
||||
.Select(_ => _gameRepository.Save(_.Data)))
|
||||
.ContinueWith(_ => {
|
||||
gameStates.ForEach(gs => { gs.Saved = true; });
|
||||
});
|
||||
|
||||
await Task.WhenAll(memberExpenses.Where(_ => !_.Saved)
|
||||
.Select(_ => _expenseRepository.Save(_.Data)))
|
||||
.ContinueWith(_ => {
|
||||
memberExpenses.ForEach(me => { me.Saved = true; });
|
||||
});
|
||||
await _gameRepository.Save(item.Data);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
|
|
|
|||
|
|
@ -7,11 +7,12 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace GameModel
|
||||
{
|
||||
public record GameState(Guid Id, Guid GameId, string GameName, ThrowState ThrowState, int NextPlayerId, IGameModel GameModel)
|
||||
public record GameState(Guid Id, Guid GameId, string GameName,
|
||||
ThrowState ThrowState, int NextPlayerId, IGameModel GameModel, int Counter)
|
||||
{
|
||||
public static GameState Create(Guid gameId, string gameName, ThrowState throwState, int nextPlayerId, IGameModel gameModel)
|
||||
{
|
||||
return new GameState(Guid.NewGuid(), gameId, gameName, throwState, nextPlayerId, gameModel);
|
||||
return new GameState(Guid.NewGuid(), gameId, gameName, throwState, nextPlayerId, gameModel, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue