Initial commit
This commit is contained in:
commit
560f88949f
10 changed files with 5623 additions and 0 deletions
84
src/main.rs
Normal file
84
src/main.rs
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
use dioxus::prelude::*;
|
||||
use rand::Rng;
|
||||
|
||||
const FAVICON: Asset = asset!("/assets/icon.svg");
|
||||
const MAIN_CSS: Asset = asset!("/assets/main.css");
|
||||
const SNOW_CSS: Asset = asset!("/assets/snow.css");
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
struct State {
|
||||
pub rows: Vec<Vec<u8>>,
|
||||
}
|
||||
|
||||
impl State {
|
||||
pub fn roll(&mut self) {
|
||||
if self.rows.is_empty() {
|
||||
self.rows.push(Vec::new());
|
||||
}
|
||||
let row = match self.rows.last_mut() {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
dioxus::launch(App);
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn App() -> Element {
|
||||
let mut rows = use_signal(State::default);
|
||||
let snow = true;
|
||||
rsx! {
|
||||
document::Link { rel: "icon", href: FAVICON }
|
||||
document::Link { rel: "stylesheet", href: MAIN_CSS }
|
||||
main {
|
||||
table {
|
||||
thead {
|
||||
for _ in 0..20 {
|
||||
th {}
|
||||
}
|
||||
}
|
||||
tbody {
|
||||
tr {
|
||||
th { colspan: 100, "Game 1" }
|
||||
}
|
||||
for row in &rows().rows {
|
||||
tr {
|
||||
for number in &row {
|
||||
td { class: "number", "{number}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
button { onclick: move |_| rows.write().roll(), "Roll" }
|
||||
}
|
||||
if snow {
|
||||
Snow {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn Snow() -> Element {
|
||||
rsx! {
|
||||
div {
|
||||
"aria-hidden": "true",
|
||||
class: "snowflakes",
|
||||
document::Stylesheet { href: SNOW_CSS }
|
||||
for _ in 0..12 {
|
||||
div {
|
||||
class: "snowflake",
|
||||
div { class: "inner", "❅" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue