New tiles
This commit is contained in:
parent
86b9134156
commit
dea1b8599a
5 changed files with 144 additions and 38 deletions
|
|
@ -1,5 +1,5 @@
|
|||
use bevy::prelude::*;
|
||||
use crate::grid::Grid;
|
||||
use crate::grid::{Grid,GridElement};
|
||||
use crate::MAX_FLUID_AMOUNT;
|
||||
|
||||
const FLUID_FULLNES_STAGES: usize = 7;
|
||||
|
|
@ -26,6 +26,8 @@ pub struct TileWatch(pub usize);
|
|||
pub struct TileMaterials {
|
||||
pub solid: Handle<StandardMaterial>,
|
||||
pub water: Handle<StandardMaterial>,
|
||||
pub drain: Handle<StandardMaterial>,
|
||||
pub source: Handle<StandardMaterial>,
|
||||
}
|
||||
|
||||
pub fn debug_setup_grid(mut grid: ResMut<Grid>) {
|
||||
|
|
@ -33,6 +35,8 @@ pub fn debug_setup_grid(mut grid: ResMut<Grid>) {
|
|||
let mut tool = grid.manipulate();
|
||||
tool.fill_xyz(5, 0, 1, 5, 0, 14, GridElement::Solid);
|
||||
tool.fill_xyz(0, 0, 0, 4, 0, 15, GridElement::Water { amount: MAX_FLUID_AMOUNT });
|
||||
//tool.set_xyz(0, 0, 6, GridElement::Source { source_amount: MAX_FLUID_AMOUNT });
|
||||
tool.set_xyz(15,0, 6, GridElement::Drain);
|
||||
}
|
||||
|
||||
pub fn setup_view_cubes(
|
||||
|
|
@ -47,17 +51,26 @@ pub fn setup_view_cubes(
|
|||
let mesh = meshes.add(Cuboid::new(1., tile_height, 1.));
|
||||
stages.0.push(mesh);
|
||||
}
|
||||
|
||||
tile_materials.water = materials.add(StandardMaterial {
|
||||
base_color: Color::hsl(172.,0.502,0.571),
|
||||
..default()
|
||||
});
|
||||
|
||||
tile_materials.solid = materials.add(StandardMaterial {
|
||||
|
||||
*tile_materials = TileMaterials {
|
||||
solid: materials.add(StandardMaterial {
|
||||
base_color: Color::hsl(268., 0.778, 0.499),
|
||||
..default()
|
||||
});
|
||||
|
||||
}),
|
||||
water: materials.add(StandardMaterial {
|
||||
base_color: Color::hsl(172.,0.502,0.571),
|
||||
..default()
|
||||
}),
|
||||
drain: materials.add(StandardMaterial {
|
||||
base_color: Color::hsl(342., 0.628, 0.685),
|
||||
..default()
|
||||
}),
|
||||
source: materials.add(StandardMaterial {
|
||||
base_color: Color::hsl(172., 0.502, 0.371),
|
||||
..default()
|
||||
})
|
||||
};
|
||||
|
||||
let mesh = stages.0[FLUID_FULLNES_STAGES-1].clone();
|
||||
|
||||
for i in 0..grid.cell_amount() {
|
||||
|
|
@ -123,10 +136,10 @@ pub fn update_cubes(query: Query<(&mut Mesh3d,&mut Visibility,&mut MeshMaterial3
|
|||
let state = grid.data[index.0];
|
||||
|
||||
match state {
|
||||
crate::grid::GridElement::Air => {
|
||||
GridElement::Air => {
|
||||
*visibility = Visibility::Hidden;
|
||||
},
|
||||
crate::grid::GridElement::Water { amount } => {
|
||||
GridElement::Water { amount } => {
|
||||
*visibility = Visibility::Visible;
|
||||
material.0 = materials.water.clone();
|
||||
let stage = ((amount as f32)/(MAX_FLUID_AMOUNT as f32) * (FLUID_FULLNES_STAGES-1) as f32).ceil() as usize;
|
||||
|
|
@ -135,11 +148,26 @@ pub fn update_cubes(query: Query<(&mut Mesh3d,&mut Visibility,&mut MeshMaterial3
|
|||
|
||||
mesh.0 = stages.0[stage].clone();
|
||||
},
|
||||
crate::grid::GridElement::Solid => {
|
||||
GridElement::Solid => {
|
||||
*visibility = Visibility::Visible;
|
||||
material.0 = materials.solid.clone();
|
||||
mesh.0 = stages.0[FLUID_FULLNES_STAGES-1].clone();
|
||||
},
|
||||
GridElement::Drain => {
|
||||
*visibility = Visibility::Visible;
|
||||
material.0 = materials.drain.clone();
|
||||
mesh.0 = stages.0[FLUID_FULLNES_STAGES-1].clone();
|
||||
},
|
||||
GridElement::Source { source_amount } => {
|
||||
*visibility = Visibility::Visible;
|
||||
material.0 = materials.source.clone();
|
||||
let stage = ((source_amount as f32)/(MAX_FLUID_AMOUNT as f32) * (FLUID_FULLNES_STAGES-1) as f32).ceil() as usize;
|
||||
|
||||
transform.translation = grid.deindexify(index.0 as u32).as_vec3() - vec3(0.,((FLUID_FULLNES_STAGES-1-stage) as f32 / (FLUID_FULLNES_STAGES as f32))/2.,0.);
|
||||
|
||||
mesh.0 = stages.0[stage].clone();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue