use bevy::prelude::*; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum CellKind { Void, Sea, Beach, Forest, Dirt, Stone, Grass } #[derive(Debug, Component)] pub struct CellData { pub kind: CellKind, pub cid: usize, z: u8, pub moisture: u8, pub resource: u8, // How much resource there is (between 0 and 4) pub vertices: Vec } impl CellData { pub fn new(kind: CellKind, cell: usize, z: u8, moisture: u8, resource: u8, vertices: Vec) -> Self { Self { kind, cid: cell, z, moisture, resource, vertices } } pub fn color(&self) -> [f32; 4] { match self.kind { CellKind::Void => [0.; 4], CellKind::Sea => [0., 0., 1., 1.], CellKind::Beach => [0.82, 0.84, 0.51, 1.], CellKind::Forest => [0., 0.5 - (self.resource as f32/4.*0.4), 0., 1.], CellKind::Dirt => [0.53 - (self.resource as f32/4.*0.4), 0.38-(self.resource as f32/4.*0.4), 0.29-(self.resource as f32/4.*0.4), 1.], CellKind::Stone => [0.5, 0.5, 0.5, 1.], CellKind::Grass => [(136./255.) - (self.resource as f32/4.*0.4), (204./255.) - (self.resource as f32/4.*0.4), (59./255.) - (self.resource as f32/4.*0.4), 1.] } } }