Skip to content

Tutorial Victory Screen

Joel Zhan edited this page Oct 21, 2026 · 1 revision

Tutorial Victory Screen

Owner: Joel Zhan (@Joel9368), Team 2
Sprint: 4
Task: #448, under #439
Implementation: #460; final narration correction 4af84db9; main delivery #531.
Reviewed: 21 October 2026 against main 80a33a33.

Current player flow

flowchart LR
    A[Enter Tutorial] --> B[Opening narration]
    B --> C[Guided battle]
    C -->|Real victory| D[Complete enemy release animations]
    D --> E[Tutorial completion screen]
    E -->|Continue once| F[Dispose and reset run]
    F --> G[Fresh Map with introduction]
Loading

Completing the prompts alone does not count as victory. BattleActions waits for all available enemy release animations before opening TutorialVictoryScreen. The completion page generates no normal reward and does not complete or autosave a normal Map encounter.

Continue requests one transition, disables repeated input and navigates after UI update/render dispatch. It calls GdxGame.startRunAfterTutorial(): dispose the outgoing screen, reset the run, then open Map directly. Opening narration already played before the teaching battle, so it is not repeated.

Voluntary Exit Tutorial also resets and opens Map through startRunAfterTutorial(), but bypasses the victory/release screen. Skip Tutorial remains startNewRun(), which resets, plays opening narration and opens Map. Normal battle victory retains its existing release, reward and encounter/autosave behaviour.

Main components

Component Responsibility
components/battle/BattleActions.java Detects the actual tutorial outcome and waits for release animations before result navigation.
screens/TutorialVictoryScreen.java Renders completion, resizes the panel, processes Continue once outside input dispatch and cleans up assets.
GdxGame.startRunAfterTutorial() Uses the shared reset operation and enters Map without another narration screen.
GdxGame.startNewRun() Retains reset plus narration for ordinary new-run/Skip entry.

Sources are in the reviewed main build. The page reuses existing dungeon/victory artwork and the supplied Continue frame; composition and button integration are Joel's work, while reused artwork retains its original ownership. Caption scaling follows the frame on hover/press without changing the click area.

Verification and visual evidence

  • #460 records 268 focused/regression checks covering battle outcomes/animations, tutorial guidance, screen lifecycle, fresh-run state, narration, menu, audio and save restoration. Formatting, Desktop compilation and diff checks passed. Layout and button states were checked at 1280 x 800 and 1600 x 900.
  • That 14 October desktop record used the earlier post-victory narration route. It establishes the completion/release presentation, not the final narration order.
  • 4af84db9 updated the Continue regression to require a fresh Map, no constructed narration screen, cleared player/reward state and once-only input. #531 records the regression failing against the old behaviour and passing after the correction, with 2,618 Core tests at that snapshot. This is a project total, not a personal test count.
  • The final #531 review reports a playthrough and passing suite before merge. This is reviewer-reported evidence, not a new personal manual execution for this Wiki update.

The following retained images show the component's 14 October presentation. The release capture predates Team 1's later Votive Attendant integration; it is not a screenshot of the current tutorial enemy.

Historical release-animation check before the completion page

Tutorial completion screen with its supplied Continue frame

Continue hover feedback

Changes from plan and reflection

#460 originally reused startNewRun() after victory. Later integration moved opening narration before the tutorial, so reusing that route replayed the same story after Continue. 4af84db9 changed Continue to startRunAfterTutorial(), retaining disposal-before-reset while entering Map directly. The regression checks both the absent second narration and clean new-run state. This change was necessary because a valid component transition became wrong in the combined player journey. Future integration checks should follow entry through completion and interruption, not stop at an isolated victory screen.

Related documentation

Codex assisted with drafting and checking this documentation against source and PR records. Historical screenshots and test results retain their original build scope.

Table of Contents

Home

Game Engine

Getting Started

Entities and Components

Service Locator

Loading Resources

Logging

Unit Testing

Debug Terminal

Input Handling

UI

Animations

Audio

AI

Physics

Game Screens and Areas

Terrain

Concurrency & Threading

Settings

Encounters
Tutorials and Contextual Help (Team 2)
Cards (Team 6)
Story (Team 6)
Level design, battle system, turn order, spawn (Team 3)
Cards, Save/Load & Bestiary (Team 5)
Rewards and Battle Settlement (Team 7)

Troubleshooting

MacOS Setup Guide

Clone this wiki locally