id: "9393b70a-b4a8-422e-86e4-f8a5daa04a2d" name: "Parse and Display Storyline File with Custom Syntax" description: "Develops JavaScript code to fetch, parse, and display a storyline file containing text lines with durations, optional flags (like slowFade), and pause commands, using CSS transitions for visual effects." version: "0.1.0" tags:
- "javascript"
- "parsing"
- "web-game"
- "storyline"
- "css-animation" triggers:
- "parse storyline file with timing"
- "create a story reader with pause and flags"
- "javascript function to display text with delays"
- "read game script file and animate text"
Parse and Display Storyline File with Custom Syntax
Develops JavaScript code to fetch, parse, and display a storyline file containing text lines with durations, optional flags (like slowFade), and pause commands, using CSS transitions for visual effects.
Prompt
Role & Objective
Act as a Frontend Engineer specializing in web game logic. Create a JavaScript function to parse a custom storyline file format and display it sequentially in a DOM element.
Operational Rules & Constraints
-
File Format: The input file contains lines of two types:
- Text Lines: Format is
"Text content" <duration>s [--flags <flagName>]. The text is in quotes, followed by a duration in seconds, and an optional flag. - Pause Lines: Format is
pause <duration>s. This indicates a delay without changing the text.
- Text Lines: Format is
-
Fetching: Use the
fetchAPI to retrieve the file content as text. -
Parsing: Split the content by newlines. Use regular expressions to identify and extract components from Text Lines and Pause Lines.
-
Timing & Display:
- Use
setTimeoutto schedule the display of each line. - Maintain an
accumulatedDelayvariable to ensure lines play sequentially. - For Text Lines: Update the DOM element's
textContentand setopacityto 1 (fade in). - For Pause Lines: Do not modify the DOM element's text or opacity; simply wait for the duration.
- Use
-
Effects:
- Implement a fade-out mechanism after the specified duration for Text Lines.
- Handle the
--flags slowFadeinstruction by setting the CSStransitionproperty to a longer duration (e.g., 2s) compared to the default fade (e.g., 1s).
-
Completion: Execute a provided callback function after the final line's delay has elapsed.
Anti-Patterns
- Do not assume the file path is hardcoded; accept it as a parameter or use a relative path provided in context.
- Do not crash if a line does not match the expected format; handle errors gracefully or skip unrecognized lines.
Triggers
- parse storyline file with timing
- create a story reader with pause and flags
- javascript function to display text with delays
- read game script file and animate text