dev
This commit is contained in:
parent
dd24bd4871
commit
a82d709abc
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GameData.Model
|
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
|
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);
|
var res = await _client.Post<GameStateDo>(gameStateDo,UrlGameState);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,9 @@ namespace GameHandler
|
||||||
internal Guid GameStateId;
|
internal Guid GameStateId;
|
||||||
internal bool Saved;
|
internal bool Saved;
|
||||||
internal T Data;
|
internal T Data;
|
||||||
public GameStateHandlerItem(Guid gameStateId, T data, bool saved)
|
public GameStateHandlerItem(Guid gameStateId, T data)
|
||||||
{
|
{
|
||||||
GameStateId = gameStateId;
|
GameStateId = gameStateId;
|
||||||
Saved = saved;
|
|
||||||
Data = data;
|
Data = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -70,21 +69,28 @@ namespace GameHandler
|
||||||
{
|
{
|
||||||
if (!expenseModel.Equals(ExpenseModel))
|
if (!expenseModel.Equals(ExpenseModel))
|
||||||
{
|
{
|
||||||
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel, false));
|
expenseModels.Add(new GameStateHandlerItem<ExpenseModel>(_gameStateId, expenseModel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
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))))
|
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)
|
internal async Task Add(GameState newState, Game game)
|
||||||
|
|
@ -92,24 +98,15 @@ namespace GameHandler
|
||||||
if (!newState.Equals(GameState))
|
if (!newState.Equals(GameState))
|
||||||
{
|
{
|
||||||
_gameStateId = Guid.NewGuid();
|
_gameStateId = Guid.NewGuid();
|
||||||
gameStates.Add(new GameStateHandlerItem<GameState>(_gameStateId, newState with { Id = _gameStateId }, false));
|
var item = new GameStateHandlerItem<GameState>(_gameStateId, newState with { Id = _gameStateId, Counter = gameStates.Count + 1 });
|
||||||
await Save();
|
gameStates.Add(item);
|
||||||
|
await Save(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Save()
|
private async Task Save(GameStateHandlerItem<GameState> item)
|
||||||
{
|
{
|
||||||
await Task.WhenAll(gameStates.Where(_ => !_.Saved)
|
await _gameRepository.Save(item.Data);
|
||||||
.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; });
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Undo()
|
public void Undo()
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,12 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GameModel
|
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)
|
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