Добавить первую волну мира Foundations

This commit is contained in:
2026-08-19 10:51:25 +03:00
parent 4869649b47
commit b31c2ea720
18 changed files with 592 additions and 19 deletions
@@ -0,0 +1,56 @@
package com.projectsacrifice.game;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import java.util.List;
public final class FoundationsContentTest {
@Test
public void firstFoundationsWaveMatchesTheApprovedMatrixAndTeachesOneIdeaAtATime() {
List<LevelDefinition> levels = LevelCatalog.all();
assertEquals(22, levels.size());
LevelDefinition firstReturn = levels.get(18);
assertIdentity(firstReturn, 19, "foundations.first-return", "First Return", 0, 28);
assertTrue(firstReturn.hazards.isEmpty());
assertTrue(firstReturn.switches.isEmpty());
assertTrue(firstReturn.doors.isEmpty());
LevelDefinition coveredPath = levels.get(19);
assertIdentity(coveredPath, 20, "foundations.covered-path", "Covered Path", 2, 42);
assertTrue(coveredPath.containsMechanic(LevelDefinition.HazardType.SPIKES));
assertTrue(coveredPath.switches.isEmpty());
LevelDefinition heldOpen = levels.get(20);
assertIdentity(heldOpen, 21, "foundations.held-open", "Held Open", 1, 45);
assertTrue(heldOpen.containsMechanic(LevelDefinition.HazardType.SAW));
assertTrue(heldOpen.containsMechanic(LevelDefinition.SwitchType.PRESSURE));
assertFalse(heldOpen.doors.isEmpty());
assertEquals(heldOpen.switches.get(0).signalId,
heldOpen.doors.get(0).requiredSignals.get(0));
LevelDefinition clockwork = levels.get(21);
assertIdentity(clockwork, 22, "foundations.clockwork-step", "Clockwork Step", 0, 48);
assertTrue(clockwork.containsMechanic(LevelDefinition.SwitchType.TOGGLE));
assertTrue(clockwork.containsMechanic(LevelDefinition.HazardType.PIT));
assertTrue(clockwork.hasMovingPlatform());
assertFalse(clockwork.platforms.get(2).controlId.isEmpty());
assertEquals(clockwork.switches.get(0).signalId, clockwork.platforms.get(2).controlId);
}
private static void assertIdentity(LevelDefinition level, int number, String id, String title,
int targetDeaths, int targetSeconds) {
assertEquals(number, level.number);
assertEquals(id, level.levelId);
assertEquals("foundations", level.worldId);
assertEquals(title, level.title);
assertEquals(targetDeaths, level.targetDeaths);
assertEquals(targetSeconds, level.targetSeconds);
assertNotNull(level.collectible);
}
}
@@ -15,7 +15,7 @@ public final class LevelCatalogTest {
@Test
public void productionCatalogContainsMechanicsAndChallengeTeachingLevels() {
List<LevelDefinition> levels = LevelCatalog.all();
assertEquals(18, levels.size());
assertEquals(22, levels.size());
Set<String> titles = new HashSet<>();
for (int i = 0; i < levels.size(); i++) {
LevelDefinition level = levels.get(i);