Polish styling, add row sum

This commit is contained in:
Amanda Graven 2025-03-22 22:58:15 +01:00
parent 560f88949f
commit 972d18afbe
Signed by: amanda
GPG key ID: F747582C5608F4CB
2 changed files with 50 additions and 13 deletions

View file

@ -1,22 +1,28 @@
/* App-wide styling */ /* App-wide styling */
html, body, #main {
margin: 0;
padding: 0;
height: 100%;
}
body { body {
background-color: #efeffc; background-color: #efeffc;
color: #000000; color: #000000;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 20px;
} }
main { main {
margin: auto; margin: auto;
max-width: 40rem; max-width: 40rem;
justify-content: center; justify-content: space-between;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%;
} }
table { table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
margin: 3rem 0;
} }
tr { tr {
@ -26,6 +32,16 @@ tr {
td { td {
border: 1px solid gray; border: 1px solid gray;
text-align: center; text-align: center;
padding: 2px;
}
#controls {
margin: 3rem 0;
display: flex;
}
#controls > * {
flex: 1 1 auto;
} }
.number { .number {

View file

@ -15,16 +15,20 @@ impl State {
if self.rows.is_empty() { if self.rows.is_empty() {
self.rows.push(Vec::new()); self.rows.push(Vec::new());
} }
let row = match self.rows.last_mut() { let row = self.rows.last_mut().unwrap();
Some(row) if row.len() > 1 && row.last().copied() == Some(5) => {
self.rows.push(Vec::new());
self.rows.last_mut().unwrap()
}
Some(row) => row,
None => unreachable!(),
};
row.push(rand::thread_rng().gen_range(1..=6)); row.push(rand::thread_rng().gen_range(1..=6));
} }
pub fn row_finished(&self) -> bool {
match self.rows.last() {
Some(row) => row.len() > 1 && row.last().copied() == Some(5),
None => true,
}
}
pub fn new_row(&mut self) {
self.rows.push(Vec::new());
}
} }
fn main() { fn main() {
@ -34,7 +38,7 @@ fn main() {
#[component] #[component]
fn App() -> Element { fn App() -> Element {
let mut rows = use_signal(State::default); let mut rows = use_signal(State::default);
let snow = true; let snow = false;
rsx! { rsx! {
document::Link { rel: "icon", href: FAVICON } document::Link { rel: "icon", href: FAVICON }
document::Link { rel: "stylesheet", href: MAIN_CSS } document::Link { rel: "stylesheet", href: MAIN_CSS }
@ -49,16 +53,33 @@ fn App() -> Element {
tr { tr {
th { colspan: 100, "Game 1" } th { colspan: 100, "Game 1" }
} }
for row in &rows().rows { for row in &rows.read().rows {
tr { tr {
for number in &row { for number in &row {
td { class: "number", "{number}" } td { class: "number", "{number}" }
} }
td {
class: "number",
colspan: (19 - row.len()).to_string()
}
td {
class: "number",
b {
{row.iter().copied().sum::<u8>().to_string()}
}
}
} }
} }
} }
} }
button { onclick: move |_| rows.write().roll(), "Roll" } div {
id: "controls",
if rows.read().row_finished() {
button { onclick: move |_| rows.write().new_row(), "Start new row" }
} else {
button { onclick: move |_| rows.write().roll(), "Roll" }
}
}
} }
if snow { if snow {
Snow {} Snow {}