aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/rst-client/src/graphics/entities/mod.rs
blob: 168f40d2aeee2565e4b6cf39d9435e5cf9ff1d0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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(())
    }
}