From b4eaba09c58d354f2b49aae5b5108e050f532866 Mon Sep 17 00:00:00 2001
From: Stephen Seo
Date: Fri, 29 Apr 2022 19:21:59 +0900
Subject: [PATCH] Refactorings/Fixes related to emoting
---
front_end/index.html | 2 +-
front_end/src/state.rs | 8 ++++++
front_end/src/yew_components.rs | 48 ++++++++++++++++++++++++++-------
3 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/front_end/index.html b/front_end/index.html
index 7dee156..e7d15a6 100644
--- a/front_end/index.html
+++ b/front_end/index.html
@@ -49,7 +49,7 @@
display: grid;
}
div.emote_wrapper {
- grid-row: 3;
+ grid-row: 4;
grid-column: 8;
display: grid;
}
diff --git a/front_end/src/state.rs b/front_end/src/state.rs
index 85663bb..39d5538 100644
--- a/front_end/src/state.rs
+++ b/front_end/src/state.rs
@@ -123,6 +123,14 @@ impl GameState {
None
}
}
+
+ pub fn get_singleplayer_current_side(&self) -> Option {
+ if let GameState::SinglePlayer(turn, _) = *self {
+ Some(turn)
+ } else {
+ None
+ }
+ }
}
impl Default for GameState {
diff --git a/front_end/src/yew_components.rs b/front_end/src/yew_components.rs
index e50b2bb..28f23ad 100644
--- a/front_end/src/yew_components.rs
+++ b/front_end/src/yew_components.rs
@@ -256,13 +256,43 @@ impl Component for EmoteButton {
}
}
- fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool {
- ctx.link()
- .get_parent()
- .expect("Wrapper should be parent of EmoteButton")
- .clone()
- .downcast::()
- .send_message(WrapperMsg::SendEmote(ctx.props().emote));
+ fn update(&mut self, ctx: &Context, _msg: Self::Message) -> bool {
+ let (shared, _) = ctx
+ .link()
+ .context::(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::()
+ .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!(
+ "{} emoted with {}",
+ side.get_color(),
+ side,
+ ctx.props().emote.get_unicode()
+ ),
+ INFO_TEXT_MAX_ITEMS,
+ )
+ .ok();
+ } else {
+ append_to_info_text(
+ &document,
+ "info_text0",
+ "Cannot use emotes at this time",
+ INFO_TEXT_MAX_ITEMS,
+ )
+ .ok();
+ }
true
}
}
@@ -1508,7 +1538,7 @@ impl Component for Wrapper {
&document,
"info_text0",
&format!(
- "{} sent {}
",
+ "{} sent {}",
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!(
- "{} sent {}",
+ "{} sent {}",
current_side.get_color(),
current_side,
emote.get_unicode()
--
2.49.0