feat(plip): audio gamebook on the phone (dial to choose) #40
Reference in New Issue
Block a user
Delete Branch "feat/plip-phone-gamebook"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phone-native audio CYOA: narrator reads passage + numbered choices, player dials a digit. New plip_gamebook module + STATE_GAMEBOOK; non-breaking fallback to normal phone. Builds clean.
Context: The Freenove plays a screen+buttons "livre dont vous etes le heros". The PLIP retro phone has no screen, so we want a phone-native version: an audio choose-your-own-adventure where the narrator reads the passage and its numbered choices, and the player dials a digit to choose. Approach: A self-contained plip_gamebook module reads a phone audio pack from the SD (narration WAVs already include the spoken "faites le N" prompts), plays passages through the earpiece, and maps each dialed digit to a choice. It hooks into the existing conversation state machine and the existing dialer (rotary/DTMF) — fully offline, no model, no network. Changes: - New plip_gamebook.c/.h: loads /sdcard/gamebook/{library.json, menu.wav, <id>.json, <id>_<passage>.wav}; pickup plays the story menu, digit picks a story, then each passage plays its WAV and a dialed digit jumps to that choice; an ending + any digit returns to the menu. Interrupts narration so a dial is instant. - conversation.c: new STATE_GAMEBOOK; off-hook from idle launches the gamebook when a pack is on the SD (else the normal dialtone/NPC flow, so the phone still works without a pack); each dialed digit is fed to the gamebook; go_idle() tears it down on hang-up. - CMakeLists: build plip_gamebook.c. Impact: With a phone pack staged on its SD, the PLIP becomes an audio gamebook: pick up, dial to choose your story and your path, hang up to stop. Non-breaking when no pack is present. Builds clean.