dev
This commit is contained in:
parent
b9ac801281
commit
f41a373e25
|
|
@ -0,0 +1,25 @@
|
|||
using GameModel;
|
||||
using GameModel.Contracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GameData.Dummy
|
||||
{
|
||||
public class DummyGameRepository : IGameRepository
|
||||
{
|
||||
List<GameState> gameStates = new List<GameState>();
|
||||
|
||||
public void Save(GameState gameState)
|
||||
{
|
||||
gameStates.Add(gameState);
|
||||
}
|
||||
|
||||
public GameState Load(Guid gameId)
|
||||
{
|
||||
return gameStates.Last();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -81,7 +81,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
failed = ((GameExenseEventArgs)arg).Triggers;
|
||||
failedCoffinPlayerId = ((GameExenseEventArgs)arg).PlayerId;
|
||||
};
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, false);
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, false, true);
|
||||
|
||||
Assert.That(failedCoffinPlayerId, Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
failed = ((GameExenseEventArgs)arg).Triggers;
|
||||
failedCoffinPlayerId = ((GameExenseEventArgs)arg).PlayerId;
|
||||
};
|
||||
var newGm = _gh.CalcNextModel(gm, 3, true, false);
|
||||
var newGm = _gh.CalcNextModel(gm, 3, true, false, true);
|
||||
|
||||
Assert.That(failed, Is.Empty);
|
||||
Assert.That(failedCoffinPlayerId, Is.Zero);
|
||||
|
|
@ -109,7 +109,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
{
|
||||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, false);
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, false, true);
|
||||
Assert.That(newGm.Coffins.Last().XCount, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
{
|
||||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, true);
|
||||
var newGm = _gh.CalcNextModel(gm, 2, true, true, true);
|
||||
Assert.That(newGm.Coffins.Last().XCount, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
{
|
||||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm, 0, false, false);
|
||||
var newGm = _gh.CalcNextModel(gm, 0, false, false, true);
|
||||
Assert.That(newGm.Coffins.Last().LineCount, Is.EqualTo(1));
|
||||
Assert.That(newGm.Coffins.Last().XCount, Is.EqualTo(0));
|
||||
}
|
||||
|
|
@ -142,7 +142,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
coffins.Insert(0, first);
|
||||
var gm2 = gm with { Coffins = coffins.ToArray(), Id = 2 };
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, true, true);
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, true, true, true);
|
||||
|
||||
Assert.That(newGm.Coffins.Last().XCount, Is.EqualTo(0));
|
||||
Assert.That(newGm.Coffins.Last().LineCount, Is.EqualTo(first.LineCount + 2)); // one for third x, one for failed throw
|
||||
|
|
@ -156,7 +156,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
var first = gm.Coffins.First();
|
||||
DeathGameModel? newGm = null;
|
||||
|
||||
Assert.That(() => { newGm = _gh.CalcNextModel(gm, 2, false, false); }, Throws.Nothing);
|
||||
Assert.That(() => { newGm = _gh.CalcNextModel(gm, 2, false, false, true); }, Throws.Nothing);
|
||||
|
||||
Assert.That(first.PlayerId,Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
||||
Assert.That(gm.Coffins.Count, Is.EqualTo(newGm.Coffins.Count()));
|
||||
|
|
@ -168,7 +168,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
|
||||
var prev = gm.Coffins.Last();
|
||||
var newGm = _gh.CalcNextModel(gm, 2, false, true);
|
||||
var newGm = _gh.CalcNextModel(gm, 2, false, true, true);
|
||||
var prevNew = newGm.Coffins.First(_ => _.PlayerId == prev.PlayerId);
|
||||
|
||||
Assert.That(prevNew.LineCount, Is.EqualTo(prev.LineCount + 1));
|
||||
|
|
@ -187,7 +187,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
coffins.Insert(0, first);
|
||||
var gm2 = gm with { Coffins = coffins.ToArray(), Id = 2 };
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm2, 0, false, false);
|
||||
var newGm = _gh.CalcNextModel(gm2, 0, false, false, true);
|
||||
|
||||
|
||||
|
||||
|
|
@ -208,7 +208,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
coffins.Insert(gm.Coffins.Length - 1, last);
|
||||
var gm2 = gm with { Coffins = coffins.ToArray(), Id = 2 };
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true);
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true, true);
|
||||
|
||||
Assert.That(deadCoffin.PlayerId, Is.EqualTo(last.PlayerId));
|
||||
Assert.That(newGm.Coffins.FirstOrDefault(_ => _.PlayerId == deadCoffin.PlayerId), Is.Null);
|
||||
|
|
@ -228,7 +228,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
|
||||
var gm2 = gm with { Coffins = coffins.ToArray(), Id = 2 };
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true);
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true, true);
|
||||
|
||||
Assert.That(deadCoffin.PlayerId, Is.EqualTo(next.PlayerId));
|
||||
Assert.That(newGm.Coffins.FirstOrDefault(_ => _.PlayerId == deadCoffin.PlayerId), Is.Null);
|
||||
|
|
@ -256,7 +256,7 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
|
||||
var gm2 = gm with { Coffins = coffins.ToArray(), Id = 2 };
|
||||
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true);
|
||||
var newGm = _gh.CalcNextModel(gm2, 2, false, true, true);
|
||||
|
||||
Assert.That(bodies.Count, Is.EqualTo(2));
|
||||
foreach (var body in bodies)
|
||||
|
|
|
|||
|
|
@ -32,13 +32,23 @@ namespace GameHandler.UnitTests.GameHandler
|
|||
[Test]
|
||||
public void Update_ThrowsExceptionWhenModelIsNull()
|
||||
{
|
||||
Assert.That(() => _gh.Update(PinThrow.Create(2, false, true), null, BoardState.Create()), Throws.TypeOf<ArgumentNullException>());
|
||||
Assert.That(() => _gh.Update(
|
||||
PinThrow.Create(2, false, true),
|
||||
null,
|
||||
BoardState.Create(),
|
||||
null)
|
||||
, Throws.TypeOf<ArgumentNullException>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_ThrowsExceptionWhenModelIsNotInitialized()
|
||||
{
|
||||
Assert.That(() => _gh.Update(PinThrow.Create(2, false, true), new FreeGameModel(null,0,Array.Empty<FreeGameThrow>()), BoardState.Create()), Throws.TypeOf<FreeGameThrowExcepetion>());
|
||||
Assert.That(() => _gh.Update(
|
||||
PinThrow.Create(2, false, true),
|
||||
new FreeGameModel(null,0,Array.Empty<FreeGameThrow>()),
|
||||
BoardState.Create(),
|
||||
null)
|
||||
, Throws.TypeOf<FreeGameThrowExcepetion>());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace GameHandler
|
|||
return Start(defaultPlayerIds, new DeathGameSettings(6), gameName);
|
||||
}
|
||||
|
||||
public GameState Start(int[] playerIds, IGameSettings gameSettings, string gameName = FreeGameHandler.GAMENAME_FREETRAINING)
|
||||
public GameState Start(int[] playerIds, IGameSettings gameSettings, string gameName = FreeGameHandler.GAMENAME_FREETRAINING)
|
||||
{
|
||||
if (_isStarted)
|
||||
{
|
||||
|
|
@ -64,19 +64,26 @@ namespace GameHandler
|
|||
}
|
||||
_isStarted = true;
|
||||
|
||||
InitGameServiceBehaviour(gameName);
|
||||
_lastState = InitGameState(playerIds, gameSettings, gameName);
|
||||
|
||||
return _lastState;
|
||||
}
|
||||
|
||||
private GameState InitGameState(int[] playerIds, IGameSettings gameSettings, string gameName)
|
||||
{
|
||||
var gm = _gh.InitGameModel(playerIds, gameSettings);
|
||||
var throwState = ThrowState.Create(_gh.ThrowMode(), _gh.ThrowsPerRount());
|
||||
return GameState.Create(gameName, throwState, _gh.GetCurrentPlayerId(gm), gm, ExpenseModel.Create());
|
||||
}
|
||||
|
||||
private void InitGameServiceBehaviour(string gameName)
|
||||
{
|
||||
_scope = _rootContainer?.BeginLifetimeScope();
|
||||
_gh = this.GetGameHandler(gameName);
|
||||
_gh.GameExpenseOccured += _gh_GameExpenseOccured;
|
||||
var gm = _gh.InitGameModel(playerIds, gameSettings);
|
||||
|
||||
_th = new ThrowHandler();
|
||||
_eh = new ExpenseHandler(_expenseRepository);
|
||||
|
||||
var throwState = ThrowState.Create(_gh.ThrowMode(), _gh.ThrowsPerRount());
|
||||
_lastState = GameState.Create(throwState, _gh.GetCurrentPlayerId(gm), gm, ExpenseModel.Create());
|
||||
|
||||
return _lastState;
|
||||
|
||||
}
|
||||
|
||||
private void _gh_GameExpenseOccured(object? sender, EventArgs e)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GameModel.Contracts
|
||||
{
|
||||
public interface IGameRepository
|
||||
{
|
||||
GameState Load(Guid gameId);
|
||||
void Save(GameState gameState);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,11 +7,11 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace GameModel
|
||||
{
|
||||
public record GameState(ThrowState ThrowState, int NextPlayerId, IGameModel GameModel, ExpenseModel ExpenseModel)
|
||||
public record GameState(Guid GameId, string GameName, ThrowState ThrowState, int NextPlayerId, IGameModel GameModel, ExpenseModel ExpenseModel)
|
||||
{
|
||||
public static GameState Create(ThrowState throwState, int nextPlayerId, IGameModel gameModel, ExpenseModel expenseModel)
|
||||
public static GameState Create(string gameName, ThrowState throwState, int nextPlayerId, IGameModel gameModel, ExpenseModel expenseModel)
|
||||
{
|
||||
return new GameState(throwState, nextPlayerId, gameModel, expenseModel);
|
||||
return new GameState(Guid.NewGuid(), gameName, throwState, nextPlayerId, gameModel, expenseModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue