]> git.seodisparate.com - EN605.607.81.SP22_ASDM_Project/commitdiff
Refactorings/Fixes related to emoting sprint_06_day_5
authorStephen Seo <seo.disparate@gmail.com>
Fri, 29 Apr 2022 10:21:59 +0000 (19:21 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 29 Apr 2022 10:21:59 +0000 (19:21 +0900)
front_end/index.html
front_end/src/state.rs
front_end/src/yew_components.rs

index 7dee15636be77772e297d6feb6fee394571836a3..e7d15a696646a4d095e6a0682a76a0a1527c7ea8 100644 (file)
@@ -49,7 +49,7 @@
         display: grid;
       }
       div.emote_wrapper {
-        grid-row: 3;
+        grid-row: 4;
         grid-column: 8;
         display: grid;
       }
index 85663bb75b3e7cfad15983226ca6271a1e1b25a4..39d553861962f52025de6ba7d2317c123ef6638e 100644 (file)
@@ -123,6 +123,14 @@ impl GameState {
             None
         }
     }
+
+    pub fn get_singleplayer_current_side(&self) -> Option<Turn> {
+        if let GameState::SinglePlayer(turn, _) = *self {
+            Some(turn)
+        } else {
+            None
+        }
+    }
 }
 
 impl Default for GameState {
index e50b2bb924489719dad30219b24ed9bd2e97fb4b..28f23adb840586f0cfe31f1686390c8192453284 100644 (file)
@@ -256,13 +256,43 @@ impl Component for EmoteButton {
         }
     }
 
-    fn update(&mut self, ctx: &Context<Self>, msg: Self::Message) -> bool {
-        ctx.link()
-            .get_parent()
-            .expect("Wrapper should be parent of EmoteButton")
-            .clone()
-            .downcast::<Wrapper>()
-            .send_message(WrapperMsg::SendEmote(ctx.props().emote));
+    fn update(&mut self, ctx: &Context<Self>, _msg: Self::Message) -> bool {
+        let (shared, _) = ctx
+            .link()
+            .context::<SharedState>(Callback::noop())
+            .expect("state to be set");
+        let (_window, document) =
+            get_window_document().expect("Should be able to get Window and Document");
+
+        if shared.game_state.borrow().is_networked_multiplayer() {
+            ctx.link()
+                .get_parent()
+                .expect("Wrapper should be parent of EmoteButton")
+                .clone()
+                .downcast::<Wrapper>()
+                .send_message(WrapperMsg::SendEmote(ctx.props().emote));
+        } else if let Some(side) = shared.game_state.borrow().get_singleplayer_current_side() {
+            append_to_info_text(
+                &document,
+                "info_text0",
+                &format!(
+                    "<b class=\"{}\">{} emoted with <b class=\"emote\">{}</b></b>",
+                    side.get_color(),
+                    side,
+                    ctx.props().emote.get_unicode()
+                ),
+                INFO_TEXT_MAX_ITEMS,
+            )
+            .ok();
+        } else {
+            append_to_info_text(
+                &document,
+                "info_text0",
+                "<b>Cannot use emotes at this time</b>",
+                INFO_TEXT_MAX_ITEMS,
+            )
+            .ok();
+        }
         true
     }
 }
@@ -1508,7 +1538,7 @@ impl Component for Wrapper {
                                     &document,
                                     "info_text0",
                                     &format!(
-                                        "<b class=\"{}\">{} sent <b class=\"emote\">{}</p></b>",
+                                        "<b class=\"{}\">{} sent <b class=\"emote\">{}</b></b>",
                                         current_side.get_opposite().get_color(),
                                         current_side.get_opposite(),
                                         emote_enum.get_unicode()
@@ -1854,7 +1884,7 @@ impl Component for Wrapper {
                         &document,
                         "info_text0",
                         &format!(
-                            "<b class=\"{}\">{} sent <b class=\"emote\">{}</p></b>",
+                            "<b class=\"{}\">{} sent <b class=\"emote\">{}</b></b>",
                             current_side.get_color(),
                             current_side,
                             emote.get_unicode()