dev
This commit is contained in:
parent
527975e977
commit
2bc78fc7b1
|
|
@ -74,22 +74,33 @@ namespace GameHandler.UnitTests.DeathGame
|
|||
public void InvalidFirstThrow_RaisesExpense()
|
||||
{
|
||||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
Coffin? failedCoffin = null;
|
||||
_gh.FirstThrowFailed += (trigger) => failedCoffin = trigger;
|
||||
int failedCoffinPlayerId = 0;
|
||||
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);
|
||||
|
||||
Assert.That(failedCoffin.PlayerId, Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
||||
Assert.That(failedCoffinPlayerId, Is.EqualTo(newGm.Coffins.Last().PlayerId));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ValidFirstThrow_DoesNotRaisesExpense()
|
||||
{
|
||||
var gm = _gh.InitGameModel(_players, _settings);
|
||||
Coffin? failedCoffin = null;
|
||||
_gh.FirstThrowFailed += (trigger) => failedCoffin = trigger;
|
||||
int failedCoffinPlayerId = 0;
|
||||
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);
|
||||
|
||||
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);
|
||||
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)
|
||||
{
|
||||
if (expense.IsInverse)
|
||||
|
|
@ -46,11 +54,9 @@ namespace GameHandler
|
|||
}
|
||||
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)
|
||||
|
|
@ -63,23 +69,7 @@ namespace GameHandler
|
|||
List<MemberExpense> memberExpenses = PrepareResult(ref expenseModelToAppend);
|
||||
|
||||
var triggers = pinThrow.GetExpenseTriggers(currentState);
|
||||
var destExpenses = _expenseRepository.GetAll().Where(_ => _.ExpenseTriggers.Any(et => triggers.Any(et2 => et2 == et)));
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
AssignExpenses(pinThrow.PlayerId, PlayerIds, memberExpenses, triggers);
|
||||
|
||||
return expenseModelToAppend with { MemberExpenses = memberExpenses.ToArray() };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace GameHandler.DeathGame
|
|||
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 next = gm.Coffins.Skip(1).First();
|
||||
|
|
|
|||
Loading…
Reference in New Issue