From 22b8db13220bed7ef7cfa0dfc72ebc34e58bc563 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Tue, 22 Mar 2022 11:46:09 -0500 Subject: [PATCH] Create game logic --- remembers/src/main.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/remembers/src/main.rs b/remembers/src/main.rs index ddbf395..5146b16 100644 --- a/remembers/src/main.rs +++ b/remembers/src/main.rs @@ -26,6 +26,8 @@ macro_rules! wasm_import_with_ns { wasm_import!(toggle_cards()); wasm_import_with_ns!(console, log(s: &str)); +wasm_import!(setTimeout(closure: &Closure, time: u32)); + fn main() { sycamore::render(|ctx| { console_error_panic_hook::set_once(); @@ -41,6 +43,8 @@ fn main() { let v = ctx.create_signal(cards); + let first: &Signal> = ctx.create_signal(None); + let on_click = |event: Event| { let elem = event .current_target() @@ -48,7 +52,37 @@ fn main() { .dyn_ref::() .unwrap() .clone(); + + if elem.class_list().contains("disabled") { + return; + } + elem.class_list().toggle("flip").unwrap(); + + if let Some(ref felem) = *first.get() { + let attr1 = felem.get_attribute("data_value"); + let attr2 = elem.get_attribute("data_value"); + + if attr1 == attr2 { + // these are all ok to unwrap, because it should never ever fail + felem.class_list().toggle("disabled").unwrap(); + elem.class_list().toggle("disabled").unwrap(); + } else { + let felem = felem.clone(); + let cb = Closure::wrap(Box::new(move || { + felem.class_list().toggle("flip").unwrap(); + elem.class_list().toggle("flip").unwrap(); + }) as Box); + + setTimeout(&cb, 750); + + cb.forget(); + } + + first.set(None); + } else { + first.set(Some(elem)); + } }; view! {ctx,