[Add] Game Loop Playable
This commit is contained in:
@@ -53,7 +53,7 @@ namespace YachtDice.Tests
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StartNewRun_EntersShopWithConfigQuota()
|
||||
public void StartNewRun_StartsFirstStageWithoutShop()
|
||||
{
|
||||
var categories = CreateFixedCatalog(100, 100, 100);
|
||||
var service = CreateService(categories);
|
||||
@@ -62,8 +62,10 @@ namespace YachtDice.Tests
|
||||
|
||||
Assert.AreEqual(30, service.State.BaseQuota);
|
||||
Assert.AreEqual(1, service.State.BetIndex);
|
||||
Assert.AreEqual(RunPhase.Shop, service.State.Phase);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
Assert.AreEqual(0, service.State.StoredRolls);
|
||||
Assert.AreEqual(0, _currencyBank.Balance);
|
||||
Assert.IsFalse(service.State.IsShopAvailable);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -73,7 +75,6 @@ namespace YachtDice.Tests
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.CompleteShop();
|
||||
service.TryBeginRoll();
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
|
||||
@@ -84,6 +85,41 @@ namespace YachtDice.Tests
|
||||
Assert.AreEqual(2, service.State.StoredRolls);
|
||||
Assert.AreEqual(2, service.State.StageNumber);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
Assert.IsTrue(service.State.IsShopAvailable);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CategoryCanBeScored_WithZeroResultAfterFirstRoll()
|
||||
{
|
||||
var categories = CreateFixedCatalog(0, 100, 100);
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.TryBeginRoll();
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
|
||||
Assert.IsTrue(service.CanScoreCategory(_emptyDice, categories.All[0]));
|
||||
Assert.IsTrue(service.TryScoreCategoryAsync(_emptyDice, categories.All[0]).GetAwaiter().GetResult());
|
||||
Assert.AreEqual(30, service.State.CurrentStageTarget);
|
||||
Assert.AreEqual(1, service.State.StageNumber);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TargetDecreasesByRecordedScore_AndStageContinues()
|
||||
{
|
||||
var categories = CreateFixedCatalog(5, 100, 100);
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.TryBeginRoll();
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
|
||||
Assert.IsTrue(service.TryScoreCategoryAsync(_emptyDice, categories.All[0]).GetAwaiter().GetResult());
|
||||
|
||||
Assert.AreEqual(25, service.State.CurrentStageTarget);
|
||||
Assert.AreEqual(1, service.State.StageNumber);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -93,7 +129,6 @@ namespace YachtDice.Tests
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.CompleteShop();
|
||||
service.TryBeginRoll();
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
service.TryScoreCategoryAsync(_emptyDice, categories.All[0]).GetAwaiter().GetResult();
|
||||
@@ -117,8 +152,6 @@ namespace YachtDice.Tests
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.CompleteShop();
|
||||
|
||||
ClearStageInOneRoll(service, categories.All[0]);
|
||||
ClearStageInOneRoll(service, categories.All[1]);
|
||||
ClearStageInOneRoll(service, categories.All[2]);
|
||||
@@ -126,9 +159,10 @@ namespace YachtDice.Tests
|
||||
Assert.AreEqual(135, _currencyBank.Balance);
|
||||
Assert.AreEqual(60, service.State.BaseQuota);
|
||||
Assert.AreEqual(2, service.State.BetIndex);
|
||||
Assert.AreEqual(RunPhase.Shop, service.State.Phase);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
Assert.AreEqual(6, service.State.StoredRolls);
|
||||
Assert.AreEqual(0, _scoringSystem.CategoriesFilledCount);
|
||||
Assert.IsTrue(service.State.IsShopAvailable);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -138,37 +172,56 @@ namespace YachtDice.Tests
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
service.CompleteShop();
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
}
|
||||
|
||||
Assert.IsTrue(service.State.IsFailed);
|
||||
Assert.AreEqual(RunPhase.RunFailed, service.State.Phase);
|
||||
Assert.IsFalse(service.State.IsFailed);
|
||||
Assert.AreEqual(RunPhase.CategorySelection, service.State.Phase);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Shop_ReopensOnlyAtStartOfNextBet()
|
||||
public void ShopUnlocksAfterFirstClear_AndClosesAfterFirstRoll()
|
||||
{
|
||||
var categories = CreateFixedCatalog(100, 100, 100, 100);
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
Assert.AreEqual(RunPhase.Shop, service.State.Phase);
|
||||
Assert.IsFalse(service.State.IsShopAvailable);
|
||||
|
||||
service.CompleteShop();
|
||||
ClearStageInOneRoll(service, categories.All[0]);
|
||||
Assert.IsTrue(service.State.IsShopAvailable);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
|
||||
ClearStageInOneRoll(service, categories.All[1]);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
Assert.IsFalse(service.State.IsShopAvailable);
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
Assert.IsTrue(service.TryScoreCategoryAsync(_emptyDice, categories.All[1]).GetAwaiter().GetResult());
|
||||
|
||||
Assert.IsTrue(service.State.IsShopAvailable);
|
||||
|
||||
ClearStageInOneRoll(service, categories.All[2]);
|
||||
Assert.AreEqual(RunPhase.Shop, service.State.Phase);
|
||||
Assert.AreEqual(RunPhase.StageStart, service.State.Phase);
|
||||
Assert.AreEqual(2, service.State.BetIndex);
|
||||
Assert.IsTrue(service.State.IsShopAvailable);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanBeginRoll_BecomesFalse_WhenNoRollsOrStoredRollsRemain()
|
||||
{
|
||||
var categories = CreateFixedCatalog(100, 100, 100, 100);
|
||||
var service = CreateService(categories);
|
||||
|
||||
service.StartNewRun();
|
||||
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
Assert.IsTrue(service.TryBeginRoll());
|
||||
service.NotifyRollResolved(_emptyDice);
|
||||
|
||||
Assert.IsFalse(service.CanBeginRoll());
|
||||
Assert.AreEqual(RunPhase.CategorySelection, service.State.Phase);
|
||||
}
|
||||
|
||||
private RunLoopService CreateService(CategoryCatalog catalog)
|
||||
|
||||
Reference in New Issue
Block a user