-
d7f91c2e47
docs(readme): restructure around the two ways to run the game
develop
Jean-Luc Makiola
2026-07-14 12:55:19 +02:00
-
c205d1f49b
docs: correct stale documentation and drop planning artifacts
Jean-Luc Makiola
2026-07-14 12:40:09 +02:00
-
526e3d4ee7
docs(javadoc): document every class, method and instance variable
Jean-Luc Makiola
2026-07-14 12:39:25 +02:00
-
1b39eac90e
refactor: move MapLayout into the game package
Jean-Luc Makiola
2026-07-14 12:39:15 +02:00
-
4cf1b42254
fix(io,save): music thread leak, save-slot collision, unresponsive GUI
Jean-Luc Makiola
2026-07-14 12:38:56 +02:00
-
73fc6eab68
feat(command): accept German command and direction aliases
Jean-Luc Makiola
2026-07-14 12:38:45 +02:00
-
8f6ee80f30
fix(quests): tick the escort engine before the quest engine; guard the valve
Jean-Luc Makiola
2026-07-14 12:38:35 +02:00
-
cc2221121d
fix(game): apply the darkness rule to every command, not just three
Jean-Luc Makiola
2026-07-14 12:38:26 +02:00
-
285e68055e
fix(items): make scenery items fixed so they cannot be taken
Jean-Luc Makiola
2026-07-14 12:38:16 +02:00
-
65a8935e32
fix(loader): resolve every id reference at load time
Jean-Luc Makiola
2026-07-14 12:38:00 +02:00
-
e5c87015fa
build: target Java 21 (LTS) instead of Java 25
Jean-Luc Makiola
2026-07-14 12:37:45 +02:00
-
8e63f21c7d
build(io): split release into Console + GUI jars and slim the console jar
Jean-Luc Makiola
2026-06-02 10:31:36 +02:00
-
41c79c3b96
feat(world): add the Lost Twins optional escort side-quest
Jean-Luc Makiola
2026-06-02 10:31:25 +02:00
-
f8f7eb90f0
build: add Maven wrapper and prebuilt release jar; ignore docs/superpowers
Jean-Luc Makiola
2026-06-02 09:51:04 +02:00
-
675bf4c2ea
Merge feature/content-expansion into develop
Jean-Luc Makiola
2026-06-02 09:40:00 +02:00
-
-
d0966c3ce4
fix(menu): main-menu Quit now closes the GUI instead of revealing the game
Jean-Luc Makiola
2026-06-02 09:39:05 +02:00
-
1cbf606bd4
feat(io): widen GUI sidebar and drop its max-width cap
Jean-Luc Makiola
2026-06-02 09:32:45 +02:00
-
7ea11058a1
feat(io): bundle Cascadia Mono Nerd Font as the GUI font
Jean-Luc Makiola
2026-06-02 09:27:25 +02:00
-
aa802582ec
feat(io): bundle background music as classpath resources
Jean-Luc Makiola
2026-06-02 09:21:11 +02:00
-
d8e1a662bc
feat(world): Haunted Manor content expansion (14 rooms, one world)
Jean-Luc Makiola
2026-06-02 09:06:28 +02:00
-
-
88cad77c83
Merge GUI background music into develop
Jean-Luc Makiola
2026-06-01 23:29:11 +02:00
-
-
702f7ac0d4
docs: clarify music transition is a sequential fade, not cross-fade
Jean-Luc Makiola
2026-06-01 23:29:11 +02:00
-
830a95c9f0
docs: mark GUI background music implemented
Jean-Luc Makiola
2026-06-01 23:25:11 +02:00
-
f1aedebfcb
feat(io): OggMusicBackend + SwingIO wiring; music/ folder + docs
Jean-Luc Makiola
2026-06-01 23:20:14 +02:00
-
7380dcae41
refactor(settings): guard all Settings fields vs null; tidy import + test
Jean-Luc Makiola
2026-06-01 23:17:26 +02:00
-
c6ed199f7e
feat(settings): persisted Music level; SettingsMenu applies via GameIO
Jean-Luc Makiola
2026-06-01 23:08:27 +02:00
-
bf36730524
feat(io): GameIO music seams; push room track per turn, silence at menu
Jean-Luc Makiola
2026-06-01 23:02:44 +02:00
-
fa7851b6e0
feat(loader): per-room music field + demo rooms.yaml entries
Jean-Luc Makiola
2026-06-01 22:58:13 +02:00
-
66e43830be
fix(io): idempotent MusicController.level; assert gain forwarding + shutdown
Jean-Luc Makiola
2026-06-01 22:55:27 +02:00
-
977872e77a
feat(io): MusicController + MusicBackend (testable music logic)
Jean-Luc Makiola
2026-06-01 22:50:58 +02:00
-
3dd27a1b63
test(io): assert MEDIUM.isOn() too
Jean-Luc Makiola
2026-06-01 22:49:20 +02:00
-
e7db45f98d
feat(io): MusicLevel enum (Off/Low/Med/High)
Jean-Luc Makiola
2026-06-01 22:47:40 +02:00
-
-
705e515a8e
Merge: suppress endings during the tutorial
Jean-Luc Makiola
2026-06-01 22:09:06 +02:00
-
-
00d3f97c9b
fix(game): suppress endings while the tutorial is active
Jean-Luc Makiola
2026-06-01 22:09:06 +02:00
-
-
ebeda36b4a
Merge interactive start-of-game tutorial into develop
Jean-Luc Makiola
2026-06-01 22:03:59 +02:00
-
-
1ff475c085
docs: note interactive start-of-game tutorial
Jean-Luc Makiola
2026-06-01 21:59:44 +02:00
-
236ed0a180
refactor: consistent isActive() guard on tutorial onCommand; tidy App imports
Jean-Luc Makiola
2026-06-01 21:59:07 +02:00
-
c315d3f4b7
feat: wire TutorialGuide into the game loop; show on New Game only
Jean-Luc Makiola
2026-06-01 21:53:27 +02:00
-
e27a12e4fe
fix(game): null-safe moved() + idempotent begin(); cover multi-step + go_to_room hint
Jean-Luc Makiola
2026-06-01 21:49:47 +02:00
-
af319508f6
feat(game): TutorialGuide interactive walkthrough engine
Jean-Luc Makiola
2026-06-01 21:42:30 +02:00
-
dbfdf86810
test(tutorial): cover malformed tutorial.yaml -> WorldLoadException
Jean-Luc Makiola
2026-06-01 21:40:06 +02:00
-
91f79b1537
feat(tutorial): Tutorial model + TutorialLoader + tutorial.yaml content
Jean-Luc Makiola
2026-06-01 21:25:48 +02:00
-
-
0250eadd50
Merge go to <room> pathfinding into develop
Jean-Luc Makiola
2026-06-01 20:27:30 +02:00
-
-
0af172ff64
docs: mark go to <room> pathfinding implemented
Jean-Luc Makiola
2026-06-01 20:24:26 +02:00
-
d20f3fd7d6
fix(command): combined unknown-target message; cover both go-to summary forms
Jean-Luc Makiola
2026-06-01 20:23:41 +02:00
-
97e2809719
feat(command): go to <room> auto-walk (BFS path, animated map, summary)
Jean-Luc Makiola
2026-06-01 20:13:25 +02:00
-
f1b9695c5e
feat(game): Pathfinder BFS over visited rooms (locks + light aware)
Jean-Luc Makiola
2026-06-01 20:08:11 +02:00
-
62b7663e34
feat(io): travelStep hook for animated auto-walk (console no-op, Swing override)
Jean-Luc Makiola
2026-06-01 20:04:17 +02:00
-
-
86e138223a
Merge use X on Y item combinations into develop
Jean-Luc Makiola
2026-06-01 17:48:20 +02:00
-
-
e0e8612982
docs: mark use X on Y item combination implemented
Jean-Luc Makiola
2026-06-01 17:45:16 +02:00
-
3711ef5a67
test(loader): assert exact item set incl. demo items (restore completeness check)
Jean-Luc Makiola
2026-06-01 17:44:32 +02:00
-
4ab5ad9d42
feat(loader): load combinations.yaml; demo matches+torch -> lit_torch
Jean-Luc Makiola
2026-06-01 17:38:17 +02:00
-
8257eb0c02
docs(command): update UseCommand javadoc for the combination form
Jean-Luc Makiola
2026-06-01 17:32:58 +02:00
-
9152aded4b
feat(command): route use X on Y to the combination engine
Jean-Luc Makiola
2026-06-01 17:31:07 +02:00
-
6eabebff00
fix(combinations): guard null response; reject self-combination at load
Jean-Luc Makiola
2026-06-01 17:28:32 +02:00
-
ae7f9d6b05
feat(game): Combinations engine for use X on Y
Jean-Luc Makiola
2026-06-01 17:22:16 +02:00
-
2747659800
test(loader): cover unknown consume id rejection
Jean-Luc Makiola
2026-06-01 17:19:41 +02:00
-
100b54c4d1
feat(loader): CombinationDto + CombinationFactory with id validation
Jean-Luc Makiola
2026-06-01 17:17:25 +02:00
-
c91bc3afea
feat(model): World.combinations field + backward-compatible constructors
Jean-Luc Makiola
2026-06-01 17:13:05 +02:00
-
022973dc75
style(test): drop unused import in CombinationTest
Jean-Luc Makiola
2026-06-01 17:11:37 +02:00
-
cf592edc57
feat(model): Combination recipe record + order-independent key
Jean-Luc Makiola
2026-06-01 17:08:14 +02:00
-
-
b41ac80194
feat(io): themed full-window menu overlay in the GUI
Jean-Luc Makiola
2026-06-01 16:21:46 +02:00
-
1d0cbc25e4
Merge main menu + save/load into develop
Jean-Luc Makiola
2026-06-01 15:42:09 +02:00
-
-
182a6911a0
fix: EOF ends game loop (ConsoleIO returns null on EOF); settings.json excluded from save slots
Jean-Luc Makiola
2026-06-01 15:39:08 +02:00
-
88e959adee
docs: mark main menu + save/load implemented; note minimal settings scope
Jean-Luc Makiola
2026-06-01 15:30:51 +02:00
-
98b1561ef2
feat(io): SwingIO.choose renders the menu as buttons
Jean-Luc Makiola
2026-06-01 15:27:15 +02:00
-
361fd0939c
refactor(app): drop dead newSession param, unused import, restore main javadoc
Jean-Luc Makiola
2026-06-01 15:25:01 +02:00
-
4604952f63
feat(app): main-menu shell loop wiring; gitignore saves/
Jean-Luc Makiola
2026-06-01 15:17:46 +02:00
-
084b39e501
feat(game): autosave on quest completion
Jean-Luc Makiola
2026-06-01 15:12:18 +02:00
-
0f05680170
feat(command): save + menu commands (QuitCommand removal deferred to Task 11)
Jean-Luc Makiola
2026-06-01 15:05:27 +02:00
-
e4238e4553
test(menu): cover pickSlot selection and Back sentinel
Jean-Luc Makiola
2026-06-01 15:03:18 +02:00
-
687e88e20a
feat(menu): MainMenu, SettingsMenu, MenuAction (frontend-agnostic)
Jean-Luc Makiola
2026-06-01 14:58:41 +02:00
-
d847928587
test(settings): cover corrupt settings file falls back to defaults
Jean-Luc Makiola
2026-06-01 14:56:14 +02:00
-
206fc758a5
feat(settings): Settings + SettingsStore; runtime-togglable ConsoleIO
Jean-Luc Makiola
2026-06-01 14:52:28 +02:00
-
ed41418434
test(save): cover version mismatch + slug; clean up tmp on move failure
Jean-Luc Makiola
2026-06-01 14:50:10 +02:00
-
6a68d7e2f5
feat(save): SaveService disk persistence (atomic write, list, load)
Jean-Luc Makiola
2026-06-01 14:44:32 +02:00
-
3c7c9d2ad4
fix(save): restore visited set before setting current room; strengthen null-tolerance test
Jean-Luc Makiola
2026-06-01 14:42:15 +02:00
-
3be1036142
feat(save): SaveCodec capture/apply over a fresh world; tolerate null collections
Jean-Luc Makiola
2026-06-01 14:34:48 +02:00
-
c92c143058
feat(save): SaveData/SaveSlotInfo/SaveException model
Jean-Luc Makiola
2026-06-01 14:29:55 +02:00
-
310ee65285
feat(io): GameIO.choose numbered-menu primitive (console default)
Jean-Luc Makiola
2026-06-01 14:26:43 +02:00
-
c392f80ed0
feat: restore hooks for flags, quest progress, switch state
Jean-Luc Makiola
2026-06-01 14:21:56 +02:00
-
58352087c4
test(game): strengthen legacy-constructor delegation assertions
Jean-Luc Makiola
2026-06-01 14:19:54 +02:00
-
18336ecc44
feat(game): GameSession bundles savable state; turn + autosave hook
Jean-Luc Makiola
2026-06-01 14:15:44 +02:00
-
-
d34104f928
Merge light & darkness mechanic into develop
Jean-Luc Makiola
2026-05-31 23:09:15 +02:00
-
-
4ed1fa1010
feat(content): dark dungeon needs the lit lamp
Jean-Luc Makiola
2026-05-31 23:08:42 +02:00
-
569cef20fe
feat: darkness gating for go/look/take/examine + HUD light
Jean-Luc Makiola
2026-05-31 23:07:36 +02:00
-
c3d80f86d7
feat: Room.dark + Item.light flags and Light helper
Jean-Luc Makiola
2026-05-31 23:04:42 +02:00
-
-
d7edc78882
Merge win-condition & endings (sub-project 3.3) into develop
Jean-Luc Makiola
2026-05-31 22:51:15 +02:00
-
-
b23f706521
feat(content): victory & flee endings; front-door flee switch
Jean-Luc Makiola
2026-05-31 22:50:46 +02:00
-
2238aa6ff5
feat(game): EndingEngine + per-turn end check with summary
Jean-Luc Makiola
2026-05-31 22:49:00 +02:00
-
3ec540e41b
feat: Ending model + endings.yaml loading (ordered, optional)
Jean-Luc Makiola
2026-05-31 22:47:38 +02:00
-
-
c652c33a9a
Merge quests & quest-log (sub-project 3.2) into develop
Jean-Luc Makiola
2026-05-31 22:35:11 +02:00
-
-
1b22c996e1
feat(content): demo quest 'restore_power'; document quests command
Jean-Luc Makiola
2026-05-31 22:34:57 +02:00
-
e3fb0c9fa6
feat(io): GUI quest-box under the map
Jean-Luc Makiola
2026-05-31 22:33:57 +02:00
-
310d476264
feat(io,command): quests command, QuestText, per-turn quest tick
Jean-Luc Makiola
2026-05-31 22:31:33 +02:00
-
a3600eadd7
feat(loader): quests.yaml loading + startQuest effect mapping
Jean-Luc Makiola
2026-05-31 22:29:52 +02:00
-
513c7cb8d9
feat(game): QuestEngine (auto-advance + announcements) and QuestView
Jean-Luc Makiola
2026-05-31 22:27:18 +02:00
-
dd16d1326b
feat(game): Quest model, QuestLog, START_QUEST effect
Jean-Luc Makiola
2026-05-31 22:25:58 +02:00
-
-
eeee609c26
Merge quest foundation (world-state + conditions/effects) into develop
Jean-Luc Makiola
2026-05-31 22:02:34 +02:00
-
-
a0b80f2a4b
feat(content): demo the state engine (generator unlocks/lights the cellar)
Jean-Luc Makiola
2026-05-31 22:01:57 +02:00