Added bomb sprites

This commit is contained in:
Joshua Barretto 2021-11-03 11:15:20 +00:00
parent dbfbdcdacd
commit edf9c59e7d
5 changed files with 56 additions and 34 deletions

View File

@ -3411,7 +3411,7 @@ WitchWindow: Some((
(
model: "voxygen.voxel.sprite.window.witch_purple",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.5),
),
],
wind_sway: 0.0,
@ -3453,27 +3453,27 @@ CavernGrassBlueShort: Some((
(
model: "voxygen.voxel.sprite.cavern.grass_short-0",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_short-1",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_short-2",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_short-3",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_short-4",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
],
wind_sway: 0.0,
@ -3484,22 +3484,22 @@ CavernGrassBlueMedium: Some((
(
model: "voxygen.voxel.sprite.cavern.grass_med-0",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_med-1",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_med-2",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_med-3",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
],
wind_sway: 0.0,
@ -3510,42 +3510,42 @@ CavernGrassBlueLong: Some((
(
model: "voxygen.voxel.sprite.cavern.grass_long-0",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-1",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-2",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-3",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-4",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-5",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-6",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.grass_long-7",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
],
wind_sway: 0.0,
@ -3556,27 +3556,27 @@ CavernLillypadBlue: Some((
(
model: "voxygen.voxel.sprite.cavern.lillypad-0",
offset: (-5.5, -5.5, -1.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.0),
),
(
model: "voxygen.voxel.sprite.cavern.lillypad-1",
offset: (-5.5, -5.5, -1.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.0),
),
(
model: "voxygen.voxel.sprite.cavern.lillypad-2",
offset: (-5.5, -5.5, -1.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.0),
),
(
model: "voxygen.voxel.sprite.cavern.lillypad-3",
offset: (-5.5, -5.5, -1.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.0),
),
(
model: "voxygen.voxel.sprite.cavern.lillypad-4",
offset: (-5.5, -5.5, -1.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.5, 0.5, 0.0),
),
],
wind_sway: 0.0,
@ -3587,22 +3587,22 @@ CavernMycelBlue: Some((
(
model: "voxygen.voxel.sprite.cavern.mycel-0",
offset: (-0.5, -0.5, -21.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.mycel-1",
offset: (-0.5, -0.5, -31.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.mycel-2",
offset: (-0.5, -0.5, -14.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
(
model: "voxygen.voxel.sprite.cavern.mycel-3",
offset: (-0.5, -0.5, -40.0),
lod_axes: (0.0, 0.0, 0.0),
lod_axes: (0.0, 0.0, 1.0),
),
],
wind_sway: 0.1,
@ -3657,5 +3657,14 @@ LillyPads: Some((
),
],
wind_sway: 0.6,
Bomb: Some((
variations: [
(
model: "voxygen.voxel.object.bomb",
offset: (-5.5, -5.5, 0.0),
lod_axes: (0.5, 0.5, 0.5),
),
],
wind_sway: 0.0,
)),
)

View File

@ -156,7 +156,8 @@ impl From<SpriteKind> for Option<SpriteInteractKind> {
| SpriteKind::VialEmpty
| SpriteKind::Bowl
| SpriteKind::PotionMinor
| SpriteKind::Seashells => Some(SpriteInteractKind::Collectible),
| SpriteKind::Seashells
| SpriteKind::Bomb => Some(SpriteInteractKind::Collectible),
// Collectible checked in addition to container for case that sprite requires a tool to
// collect and cannot be collected by hand, yet still meets the container check
_ if sprite_kind.is_container() && sprite_kind.is_collectible() => {

View File

@ -279,7 +279,9 @@ impl Block {
#[inline]
pub fn is_bonkable(&self) -> bool {
match self.get_sprite() {
Some(SpriteKind::Apple | SpriteKind::Beehive | SpriteKind::Coconut) => self.is_solid(),
Some(
SpriteKind::Apple | SpriteKind::Beehive | SpriteKind::Coconut | SpriteKind::Bomb,
) => self.is_solid(),
_ => false,
}
}

View File

@ -187,6 +187,7 @@ make_case_elim!(
LillyPads = 0xA0,
JungleLeafyPlant = 0xA1,
JungleRedGrass = 0xA2,
Bomb = 0xA3,
}
);
@ -261,7 +262,8 @@ impl SpriteKind {
| SpriteKind::Window3
| SpriteKind::Window4
| SpriteKind::DropGate
| SpriteKind::WitchWindow => 1.0,
| SpriteKind::WitchWindow
| SpriteKind::Bomb => 1.0,
// TODO: Figure out if this should be solid or not.
SpriteKind::Shelf => 1.0,
SpriteKind::Lantern => 0.9,
@ -335,6 +337,7 @@ impl SpriteKind {
SpriteKind::RoundCactus => item("common.items.crafting_ing.cactus"),
SpriteKind::ShortFlatCactus => item("common.items.crafting_ing.cactus"),
SpriteKind::MedFlatCactus => item("common.items.crafting_ing.cactus"),
SpriteKind::Bomb => item("common.items.utility.bomb"),
SpriteKind::DungeonChest0 => table("common.loot_tables.dungeon.tier-0.chest"),
SpriteKind::DungeonChest1 => table("common.loot_tables.dungeon.tier-1.chest"),
SpriteKind::DungeonChest2 => table("common.loot_tables.dungeon.tier-2.chest"),

View File

@ -866,7 +866,7 @@ pub fn handle_explosion(server: &Server, pos: Vec3<f32>, explosion: Explosion, o
}
}
pub fn handle_bonk(server: &mut Server, pos: Vec3<f32>, _owner: Option<Uid>, target: Option<Uid>) {
pub fn handle_bonk(server: &mut Server, pos: Vec3<f32>, owner: Option<Uid>, target: Option<Uid>) {
let ecs = &server.state.ecs();
let terrain = ecs.read_resource::<TerrainGrid>();
let mut block_change = ecs.write_resource::<BlockChange>();
@ -884,18 +884,25 @@ pub fn handle_bonk(server: &mut Server, pos: Vec3<f32>, _owner: Option<Uid>, tar
{
drop(terrain);
drop(block_change);
server
let mut entity = server
.state
.create_object(Default::default(), match block.get_sprite() {
// Create different containers depending on the original sprite
Some(SpriteKind::Apple) => comp::object::Body::Apple,
Some(SpriteKind::Beehive) => comp::object::Body::Hive,
Some(SpriteKind::Coconut) => comp::object::Body::Coconut,
Some(SpriteKind::Bomb) => comp::object::Body::Bomb,
_ => comp::object::Body::Pouch,
})
.with(comp::Pos(pos.map(|e| e as f32) + Vec3::new(0.5, 0.5, 0.0)))
.with(item)
.build();
.with(item);
entity = match block.get_sprite() {
Some(SpriteKind::Bomb) => entity.with(comp::Object::Bomb { owner }),
_ => entity,
};
entity.build();
}
};
}