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()