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