Plan out tutorial
parent
7566ca1ca2
commit
7a72257633
@ -0,0 +1,60 @@
|
||||
use crate::prelude::*;
|
||||
|
||||
pub(crate) struct TutorialPlugin;
|
||||
|
||||
impl Plugin for TutorialPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_state::<TutorialState>();
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, States, Hash, Default, PartialEq, Eq, Clone)]
|
||||
enum TutorialState {
|
||||
#[default]
|
||||
None,
|
||||
Intro,
|
||||
Objective,
|
||||
PieceIntro,
|
||||
PieceQueen,
|
||||
PieceDrone,
|
||||
PiecePawn,
|
||||
PieceJump,
|
||||
PieceEnd,
|
||||
Ownership,
|
||||
Promotions,
|
||||
Outro,
|
||||
}
|
||||
|
||||
// Assertion: "Tutorial" just starts a regular game with TutorialState set to Intro
|
||||
// This plays out a usual game, but with tutorial text overlayed
|
||||
// Once tutorial is done, the game can continue as usual
|
||||
|
||||
// Intro animations, initialize all text windows but make invisible
|
||||
// This should be run when TutorialState::Intro
|
||||
|
||||
// Start by loading the same game as display3d does
|
||||
|
||||
// Show the intro text when entering Intro TutorialState
|
||||
// Continue
|
||||
|
||||
// Show objective when entering Objective TutorialState
|
||||
// Continue
|
||||
|
||||
// Prompt user to click some pieces
|
||||
// When each piece type is clicked, show relevant text
|
||||
// Once all pieces are described say jumping text
|
||||
// Finally end with final text
|
||||
// Continue
|
||||
|
||||
// When a piece crosses the canal, show ownership text
|
||||
// Continue
|
||||
|
||||
// A few moves in, show field promotions text
|
||||
// Continue
|
||||
|
||||
// End with outro text
|
||||
// Continue
|
||||
|
||||
// Play game out as usual
|
||||
|
||||
// If player early exits, set TutorialState to None
|
||||
Loading…
Reference in New Issue