45 lines
1.3 KiB
Rust
45 lines
1.3 KiB
Rust
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<usize>
|
|
}
|
|
impl CellData {
|
|
pub fn new(kind: CellKind, cell: usize, z: u8, moisture: u8, resource: u8, vertices: Vec<usize>) -> 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.]
|
|
}
|
|
}
|
|
} |