dev
This commit is contained in:
parent
527975e977
commit
2bc78fc7b1
|
|
@ -74,22 +74,33 @@ namespace GameHandler.UnitTests.DeathGame
|
||||||
public void InvalidFirstThrow_RaisesExpense()
|
public void InvalidFirstThrow_RaisesExpense()
|
||||||
{
|
{
|
||||||
var gm = _gh.InitGameModel(_players, _settings);
|
var gm = _gh.InitGameModel(_players, _settings);
|
||||||
Coffin? failedCoffin = null;
|
int failedCoffinPlayerId = 0;
|
||||||
_gh.FirstThrowFailed += (trigger) => failedCoffin = trigger;
|
ExpenseTrigger[] failed = Array.Empty<ExpenseTrigger>();
|
||||||
|
_gh.GameExpenseOccured += (sender, arg) =>
|
||||||
|
{
|
||||||
|
failed = ((GameExenseEventArgs)arg).Triggers;
|
||||||
|
failedCoffinPlayerId = ((GameExenseEventArgs)arg).PlayerId;
|
||||||
|
};
|
||||||
var newGm = _gh.CalcNextModel(gm, 2, true, false);
|
var newGm = _gh.CalcNextModel(gm, 2, true, false);
|
||||||
|
|
||||||
Assert.That(failedCoffin.PlayerId, Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
Assert.That(failedCoffinPlayerId, Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ValidFirstThrow_DoesNotRaisesExpense()
|
public void ValidFirstThrow_DoesNotRaisesExpense()
|
||||||
{
|
{
|
||||||
var gm = _gh.InitGameModel(_players, _settings);
|
var gm = _gh.InitGameModel(_players, _settings);
|
||||||
Coffin? failedCoffin = null;
|
int failedCoffinPlayerId = 0;
|
||||||
_gh.FirstThrowFailed += (trigger) => failedCoffin = trigger;
|
ExpenseTrigger[] failed = Array.Empty<ExpenseTrigger>();
|
||||||
|
_gh.GameExpenseOccured += (sender, arg) =>
|
||||||
|
{
|
||||||
|
failed = ((GameExenseEventArgs)arg).Triggers;
|
||||||
|
failedCoffinPlayerId = ((GameExenseEventArgs)arg).PlayerId;
|
||||||
|
};
|
||||||
var newGm = _gh.CalcNextModel(gm, 3, true, false);
|
var newGm = _gh.CalcNextModel(gm, 3, true, false);
|
||||||
|
|
||||||
Assert.That(failedCoffin, Is.Null);
|
Assert.That(failed, Is.Empty);
|
||||||
|
Assert.That(failedCoffinPlayerId, Is.Zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,18 @@ namespace GameHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MemberExpense> memberExpenses = PrepareResult(ref expenseModelToAppend);
|
List<MemberExpense> memberExpenses = PrepareResult(ref expenseModelToAppend);
|
||||||
|
var triggers = gameExenseEventArgs.Triggers;
|
||||||
|
|
||||||
var destExpenses = _expenseRepository.GetAll().Where(_ => _.ExpenseTriggers.Any(et => gameExenseEventArgs.Triggers.Any(et2 => et2 == et)));
|
AssignExpenses(gameExenseEventArgs.PlayerId, gameExenseEventArgs.PlayerIds, memberExpenses, triggers);
|
||||||
|
|
||||||
var inversePlayers = gameExenseEventArgs.PlayerIds.Where(_ => _ != gameExenseEventArgs.PlayerId);
|
return expenseModelToAppend with { MemberExpenses = memberExpenses.ToArray() };
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AssignExpenses(int playerId, int[] playerIds, List<MemberExpense> memberExpenses, ExpenseTrigger[] triggers)
|
||||||
|
{
|
||||||
|
var destExpenses = _expenseRepository.GetAll().Where(_ => _.ExpenseTriggers.Any(et => triggers.Any(et2 => et2 == et)));
|
||||||
|
|
||||||
|
var inversePlayers = playerIds.Where(_ => _ != playerId);
|
||||||
foreach (var expense in destExpenses)
|
foreach (var expense in destExpenses)
|
||||||
{
|
{
|
||||||
if (expense.IsInverse)
|
if (expense.IsInverse)
|
||||||
|
|
@ -46,11 +54,9 @@ namespace GameHandler
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memberExpenses.Add(MemberExpense.Create(gameExenseEventArgs.PlayerId, expense));
|
memberExpenses.Add(MemberExpense.Create(playerId, expense));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return expenseModelToAppend with { MemberExpenses = memberExpenses.ToArray() };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExpenseModel CheckThrow(BoardState currentState, PinThrow pinThrow, int[] PlayerIds, ExpenseModel expenseModelToAppend = null)
|
public ExpenseModel CheckThrow(BoardState currentState, PinThrow pinThrow, int[] PlayerIds, ExpenseModel expenseModelToAppend = null)
|
||||||
|
|
@ -63,23 +69,7 @@ namespace GameHandler
|
||||||
List<MemberExpense> memberExpenses = PrepareResult(ref expenseModelToAppend);
|
List<MemberExpense> memberExpenses = PrepareResult(ref expenseModelToAppend);
|
||||||
|
|
||||||
var triggers = pinThrow.GetExpenseTriggers(currentState);
|
var triggers = pinThrow.GetExpenseTriggers(currentState);
|
||||||
var destExpenses = _expenseRepository.GetAll().Where(_ => _.ExpenseTriggers.Any(et => triggers.Any(et2 => et2 == et)));
|
AssignExpenses(pinThrow.PlayerId, PlayerIds, memberExpenses, triggers);
|
||||||
|
|
||||||
var inversePlayers = PlayerIds.Where(_ => _ != pinThrow.PlayerId);
|
|
||||||
foreach (var expense in destExpenses)
|
|
||||||
{
|
|
||||||
if (expense.IsInverse)
|
|
||||||
{
|
|
||||||
foreach (var player in inversePlayers)
|
|
||||||
{
|
|
||||||
memberExpenses.Add(MemberExpense.Create(player, expense));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memberExpenses.Add(MemberExpense.Create(pinThrow.PlayerId, expense));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return expenseModelToAppend with { MemberExpenses = memberExpenses.ToArray() };
|
return expenseModelToAppend with { MemberExpenses = memberExpenses.ToArray() };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ namespace GameHandler.DeathGame
|
||||||
return CalcNextModel(gameModel as DeathGameModel, pinThrow.PinCount, isTrowIntoAllPins, boardCleared);
|
return CalcNextModel(gameModel as DeathGameModel, pinThrow.PinCount, isTrowIntoAllPins, boardCleared);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeathGameModel CalcNextModel(DeathGameModel gm, int pinCount, bool isTrowIntoAllPins, bool boardCleared)
|
public DeathGameModel CalcNextModel(DeathGameModel gm, int pinCount, bool isTrowIntoAllPins, bool boardCleared)
|
||||||
{
|
{
|
||||||
var current = gm.Coffins.First();
|
var current = gm.Coffins.First();
|
||||||
var next = gm.Coffins.Skip(1).First();
|
var next = gm.Coffins.Skip(1).First();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue