Add a start screen

This commit is contained in:
Yash Karandikar 2021-12-11 11:48:42 -06:00
parent ea89630b2a
commit b3e2d8f5fa
Signed by: karx
GPG key ID: A794DA2529474BA5

View file

@ -15,6 +15,7 @@ struct Question {
#[derive(Clone, Debug)]
enum AppMode {
Startscreen,
Quiz,
Endgame,
}
@ -255,6 +256,7 @@ fn end_game_component(props: Props) -> View<G> {
let restart = cloned!((mode, errors) => move |_| {
errors.set(0);
time_elapsed.set(0);
mode.set(AppMode::Quiz);
});
@ -288,6 +290,21 @@ fn end_game_component(props: Props) -> View<G> {
}
}
#[component(StartScreen<G>)]
fn start_screen_component(props: Props) -> View<G> {
let mode = props.mode;
let start_quiz = cloned!(mode => move |_| {
mode.set(AppMode::Quiz);
});
view! {
div(class="text-align-center") {
button(on:click=start_quiz) { "Start Quiz" }
}
}
}
fn add_leading_zeroes(num: usize) -> String {
if num < 10 {
return format!("0{}", num);
@ -297,7 +314,7 @@ fn add_leading_zeroes(num: usize) -> String {
fn main() {
panic::set_hook(Box::new(console_error_panic_hook::hook));
let mode = Signal::new(AppMode::Endgame);
let mode = Signal::new(AppMode::Startscreen);
let errors = Signal::new(0usize);
let time_elapsed = Signal::new(0usize);
@ -311,7 +328,8 @@ fn main() {
h1(class="text-align-center") { "RiddlRS" }
(match *mode.get() {
AppMode::Quiz => view! { QuizComponent(Props { mode: cloned!(mode => mode), errors: cloned!(errors => errors), time_elapsed: cloned!(time_elapsed => time_elapsed) }) },
_ => view! { EndGameComponent(Props { mode: cloned!(mode => mode), errors: cloned!(errors => errors), time_elapsed: cloned!(time_elapsed => time_elapsed) }) }
AppMode::Endgame => view! { EndGameComponent(Props { mode: cloned!(mode => mode), errors: cloned!(errors => errors), time_elapsed: cloned!(time_elapsed => time_elapsed) }) },
AppMode::Startscreen => view! { StartScreen(Props { mode: cloned!(mode => mode), errors: cloned!(errors => errors), time_elapsed: cloned!(time_elapsed => time_elapsed) }) }
})
}
}