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