Added an end screen

This commit is contained in:
p11 2025-04-21 22:27:07 +02:00
parent fd3a923668
commit 5378ee9837

View File

@ -76,6 +76,19 @@ fn render_dialog_block(block: &DialogBlock<Parameter>) -> Markup {
}
}
fn render_ending() -> Markup {
html! {
section .end-screen {
h1 { "End of scene" }
form method="POST" {
button type="submit" .restart-button {
"Play Again"
}
}
}
}
}
fn generate_html(sections: Vec<Markup>) -> Markup {
let total_sections = sections.len();
@ -289,10 +302,34 @@ fn global_styles() -> Markup {
font-family: inherit;
}";
const END_STYLES: &str = r"
.end-screen {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
background: rgba(0, 0, 0, 0.9);
color: white;
padding: 2rem;
border-radius: 1rem;
max-width: 600px;
}
.restart-button {
background: var(--character-bg);
color: white;
padding: 1rem 2rem;
border: none;
border-radius: 0.5rem;
font-size: 1.2rem;
cursor: pointer;
transition: transform 0.2s;
}";
html! {
style {
(maud::PreEscaped(
[BASE_STYLES, NAVIGATION, SCENE_STYLES, TEXTBOX_STYLES, CHARACTER_STYLES, CHOICE_STYLES]
[BASE_STYLES, NAVIGATION, SCENE_STYLES, TEXTBOX_STYLES, CHARACTER_STYLES, CHOICE_STYLES, END_STYLES]
.join("")
))
}
@ -466,17 +503,19 @@ pub fn render_novel(
}
}
if !choices.is_empty() {
let choices_html = html! {
let choices_html = if choices.is_empty() {
render_ending()
} else {
html! {
div .choices-section {
@for choice in choices {
(render_choice(choice.1, choice.0, &progress))
}
}
};
sections.push(choices_html);
}
}
};
sections.push(choices_html);
break;
}
}