aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/rst-client/src/graphics/entities/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'games/rstnode/rst-client/src/graphics/entities/mod.rs')
-rw-r--r--games/rstnode/rst-client/src/graphics/entities/mod.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/games/rstnode/rst-client/src/graphics/entities/mod.rs b/games/rstnode/rst-client/src/graphics/entities/mod.rs
new file mode 100644
index 000000000000..168f40d2aeee
--- /dev/null
+++ b/games/rstnode/rst-client/src/graphics/entities/mod.rs
@@ -0,0 +1,43 @@
+//! Game entity rendering
+//!
+//! Generally the naming convention should be: `{type}Rndr`
+//! (`Renderer`, but shorter).
+
+use super::prelude::*;
+
+use rst_core::data::Node;
+use std::sync::Arc;
+
+/// A set of universal X/Y coordinates
+pub struct Coordinates(pub f32, pub f32);
+
+impl<'a> From<&'a Coordinates> for Point2<f32> {
+ fn from(c: &'a Coordinates) -> Self {
+ Point2 { x: c.0, y: c.1 }
+ }
+}
+
+pub struct NodeRndr {
+ pub loc: Coordinates,
+ pub inner: Arc<Node>,
+}
+
+impl EventHandler for NodeRndr {
+ fn update(&mut self, _: &mut Context) -> GameResult<()> {
+ Ok(())
+ }
+
+ fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
+ let circ = Mesh::new_circle(
+ ctx,
+ DrawMode::fill(),
+ Point2::from(&self.loc),
+ 35.0,
+ 0.1,
+ graphics::WHITE,
+ ).unwrap();
+
+ circ.draw(ctx, DrawParam::new()).unwrap();
+ Ok(())
+ }
+}