mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Address MR 2306 review comments.
This commit is contained in:
parent
bf6a3cc7f7
commit
55c3e994ec
@ -1,65 +1,4 @@
|
|||||||
SpriteBehaviorManifest(
|
SpriteBehaviorManifest(
|
||||||
solid_height: {
|
|
||||||
// Beware: the height *must* be <= `MAX_HEIGHT` or the collision system will not
|
|
||||||
// properly detect it!
|
|
||||||
Tomato: 1.65,
|
|
||||||
LargeCactus: 2.5,
|
|
||||||
Scarecrow: 3.0,
|
|
||||||
Turnip: 0.36,
|
|
||||||
Pumpkin: 0.81,
|
|
||||||
Cabbage: 0.45,
|
|
||||||
Chest: 1.09,
|
|
||||||
StreetLamp: 2.65,
|
|
||||||
Carrot: 0.18,
|
|
||||||
Radish: 0.18,
|
|
||||||
FireBowlGround: 0.55,
|
|
||||||
// TODO: Uncomment this when we have a way to open doors
|
|
||||||
// Door: 3.0,
|
|
||||||
Bed: 1.54,
|
|
||||||
Bench: 0.5,
|
|
||||||
ChairSingle: 0.5,
|
|
||||||
ChairDouble: 0.5,
|
|
||||||
CoatRack: 2.36,
|
|
||||||
Crate: 0.90,
|
|
||||||
DrawerSmall: 1.0,
|
|
||||||
DrawerMedium: 2.0,
|
|
||||||
DrawerLarge: 2.0,
|
|
||||||
DungeonWallDecor: 1.0,
|
|
||||||
Planter: 1.09,
|
|
||||||
TableSide: 1.27,
|
|
||||||
TableDining: 1.45,
|
|
||||||
TableDouble: 1.45,
|
|
||||||
WardrobeSingle: 3.0,
|
|
||||||
WardrobeDouble: 3.0,
|
|
||||||
Pot: 0.90,
|
|
||||||
Mud: 0.36,
|
|
||||||
ChestBuried: 0.91,
|
|
||||||
StonyCoral: 1.4,
|
|
||||||
// TODO: Find suitable heights.
|
|
||||||
BarrelCactus: 1.0,
|
|
||||||
RoundCactus: 1.0,
|
|
||||||
ShortCactus: 1.0,
|
|
||||||
MedFlatCactus: 1.0,
|
|
||||||
ShortFlatCactus: 1.0,
|
|
||||||
Apple: 1.0,
|
|
||||||
Velorite: 1.0,
|
|
||||||
VeloriteFrag: 1.0,
|
|
||||||
Coconut: 1.0,
|
|
||||||
StreetLampTall: 1.0,
|
|
||||||
Window1: 1.0,
|
|
||||||
Window2: 1.0,
|
|
||||||
Window3: 1.0,
|
|
||||||
Window4: 1.0,
|
|
||||||
DropGate: 1.0,
|
|
||||||
// TODO: Figure out if this should be solid or not.
|
|
||||||
Shelf: 1.0,
|
|
||||||
Lantern: 0.9,
|
|
||||||
CraftingBench: 1.18,
|
|
||||||
Forge: 2.7,
|
|
||||||
Cauldron: 1.27,
|
|
||||||
Anvil: 1.1,
|
|
||||||
CookingPot: 1.36,
|
|
||||||
},
|
|
||||||
collectible_id: {
|
collectible_id: {
|
||||||
Apple: Item("common.items.food.apple"),
|
Apple: Item("common.items.food.apple"),
|
||||||
Mushroom: Item("common.items.food.mushroom"),
|
Mushroom: Item("common.items.food.mushroom"),
|
||||||
|
@ -93,6 +93,11 @@ impl<'a> TryFrom<&'a str> for BlockKind {
|
|||||||
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
|
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct Block {
|
pub struct Block {
|
||||||
kind: BlockKind,
|
kind: BlockKind,
|
||||||
|
/// If `kind.is_filled()` is true, attr is to be interpreted as 8 bit rgb
|
||||||
|
/// data. Otherwise:
|
||||||
|
/// - `attr[0]` contains the `SpriteKind` of the sprite in this block
|
||||||
|
/// - `attr[1]` contains the bit pattern `xxxxxyyy`, where x is a plant
|
||||||
|
/// growth stage from 0-31, and y is an orientation from 0-7.
|
||||||
attr: [u8; 3],
|
attr: [u8; 3],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,11 +188,68 @@ pub struct GrowthSpec {
|
|||||||
|
|
||||||
impl SpriteKind {
|
impl SpriteKind {
|
||||||
pub fn solid_height(&self) -> Option<f32> {
|
pub fn solid_height(&self) -> Option<f32> {
|
||||||
SPRITE_BEHAVIOR_MANIFEST
|
// Beware: the height *must* be <= `MAX_HEIGHT` or the collision system will not
|
||||||
.read()
|
// properly detect it!
|
||||||
.solid_height
|
Some(match self {
|
||||||
.get(self)
|
SpriteKind::Tomato => 1.65,
|
||||||
.copied()
|
SpriteKind::LargeCactus => 2.5,
|
||||||
|
SpriteKind::Scarecrow => 3.0,
|
||||||
|
SpriteKind::Turnip => 0.36,
|
||||||
|
SpriteKind::Pumpkin => 0.81,
|
||||||
|
SpriteKind::Cabbage => 0.45,
|
||||||
|
SpriteKind::Chest => 1.09,
|
||||||
|
SpriteKind::StreetLamp => 2.65,
|
||||||
|
SpriteKind::Carrot => 0.18,
|
||||||
|
SpriteKind::Radish => 0.18,
|
||||||
|
SpriteKind::FireBowlGround => 0.55,
|
||||||
|
// TODO: Uncomment this when we have a way to open doors
|
||||||
|
// SpriteKind::Door => 3.0,
|
||||||
|
SpriteKind::Bed => 1.54,
|
||||||
|
SpriteKind::Bench => 0.5,
|
||||||
|
SpriteKind::ChairSingle => 0.5,
|
||||||
|
SpriteKind::ChairDouble => 0.5,
|
||||||
|
SpriteKind::CoatRack => 2.36,
|
||||||
|
SpriteKind::Crate => 0.90,
|
||||||
|
SpriteKind::DrawerSmall => 1.0,
|
||||||
|
SpriteKind::DrawerMedium => 2.0,
|
||||||
|
SpriteKind::DrawerLarge => 2.0,
|
||||||
|
SpriteKind::DungeonWallDecor => 1.0,
|
||||||
|
SpriteKind::Planter => 1.09,
|
||||||
|
SpriteKind::TableSide => 1.27,
|
||||||
|
SpriteKind::TableDining => 1.45,
|
||||||
|
SpriteKind::TableDouble => 1.45,
|
||||||
|
SpriteKind::WardrobeSingle => 3.0,
|
||||||
|
SpriteKind::WardrobeDouble => 3.0,
|
||||||
|
SpriteKind::Pot => 0.90,
|
||||||
|
SpriteKind::Mud => 0.36,
|
||||||
|
SpriteKind::ChestBuried => 0.91,
|
||||||
|
SpriteKind::StonyCoral => 1.4,
|
||||||
|
// TODO => Find suitable heights.
|
||||||
|
SpriteKind::BarrelCactus => 1.0,
|
||||||
|
SpriteKind::RoundCactus => 1.0,
|
||||||
|
SpriteKind::ShortCactus => 1.0,
|
||||||
|
SpriteKind::MedFlatCactus => 1.0,
|
||||||
|
SpriteKind::ShortFlatCactus => 1.0,
|
||||||
|
SpriteKind::Apple => 1.0,
|
||||||
|
SpriteKind::Velorite => 1.0,
|
||||||
|
SpriteKind::VeloriteFrag => 1.0,
|
||||||
|
SpriteKind::Coconut => 1.0,
|
||||||
|
SpriteKind::StreetLampTall => 1.0,
|
||||||
|
SpriteKind::Window1 => 1.0,
|
||||||
|
SpriteKind::Window2 => 1.0,
|
||||||
|
SpriteKind::Window3 => 1.0,
|
||||||
|
SpriteKind::Window4 => 1.0,
|
||||||
|
SpriteKind::DropGate => 1.0,
|
||||||
|
// TODO: Figure out if this should be solid or not.
|
||||||
|
SpriteKind::Shelf => 1.0,
|
||||||
|
SpriteKind::Lantern => 0.9,
|
||||||
|
SpriteKind::CraftingBench => 1.18,
|
||||||
|
SpriteKind::Forge => 2.7,
|
||||||
|
SpriteKind::Cauldron => 1.27,
|
||||||
|
SpriteKind::Anvil => 1.1,
|
||||||
|
SpriteKind::CookingPot => 1.36,
|
||||||
|
_ => return None,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_collectible(&self) -> bool {
|
pub fn is_collectible(&self) -> bool {
|
||||||
@ -315,6 +372,8 @@ pub struct PlantGrowthData {
|
|||||||
struct PlantGrowthPerKind {
|
struct PlantGrowthPerKind {
|
||||||
// TODO: if we made use of the assumption that chunks are 32x32xk voxels, we could pack
|
// TODO: if we made use of the assumption that chunks are 32x32xk voxels, we could pack
|
||||||
// positions into 10+log_2(k) bits instead of using the whole 12 bytes that a Vec3<i32> uses
|
// positions into 10+log_2(k) bits instead of using the whole 12 bytes that a Vec3<i32> uses
|
||||||
|
// (don't make this optimization unless needed, and not without double-checking with zesterer
|
||||||
|
// about the best place to document what needs to be changed for handling larger chunk sizes).
|
||||||
positions: Vec<Vec3<i32>>,
|
positions: Vec<Vec3<i32>>,
|
||||||
growth_amounts: Vec<u8>,
|
growth_amounts: Vec<u8>,
|
||||||
last_growth_tick: f32,
|
last_growth_tick: f32,
|
||||||
|
@ -81,9 +81,9 @@ impl TerrainChanges {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn insert_terrain_chunk<'a>(
|
pub fn insert_terrain_chunk(
|
||||||
terrain_grid: &mut specs::WriteExpect<'a, TerrainGrid>,
|
terrain_grid: &mut TerrainGrid,
|
||||||
terrain_changes: &mut specs::Write<'a, TerrainChanges>,
|
terrain_changes: &mut TerrainChanges,
|
||||||
key: Vec2<i32>,
|
key: Vec2<i32>,
|
||||||
chunk: Arc<TerrainChunk>,
|
chunk: Arc<TerrainChunk>,
|
||||||
new_hook: impl FnOnce(),
|
new_hook: impl FnOnce(),
|
||||||
@ -407,8 +407,8 @@ impl State {
|
|||||||
/// Insert the provided chunk into this state's terrain.
|
/// Insert the provided chunk into this state's terrain.
|
||||||
pub fn insert_chunk(&mut self, key: Vec2<i32>, chunk: Arc<TerrainChunk>) {
|
pub fn insert_chunk(&mut self, key: Vec2<i32>, chunk: Arc<TerrainChunk>) {
|
||||||
insert_terrain_chunk(
|
insert_terrain_chunk(
|
||||||
&mut self.ecs.write_resource::<TerrainGrid>().into(),
|
&mut self.ecs.write_resource::<TerrainGrid>(),
|
||||||
&mut self.ecs.write_resource::<TerrainChanges>().into(),
|
&mut self.ecs.write_resource::<TerrainChanges>(),
|
||||||
key,
|
key,
|
||||||
chunk,
|
chunk,
|
||||||
|| (),
|
|| (),
|
||||||
|
Loading…
Reference in New Issue
Block a user