added comment about object rotation, changed lantern spawning command, changed /tell output when you /tell yourself

This commit is contained in:
Monty Marz 2019-07-28 09:21:17 +00:00 committed by Marcel
parent bacee7750f
commit 33565b9480
28 changed files with 178 additions and 74 deletions

BIN
assets/voxygen/voxel/object/bed_blue.vox (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/voxel/object/bed_human_blue.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/bedroll.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/campfire.vox (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/voxel/object/carpet_human_round.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/carpet_human_square.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/carpet_human_square_2.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/carpet_human_squircle.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/chair.vox (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/voxel/object/chair_2.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/chair_3.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/drawer.vox (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/voxel/object/table.vox (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/voxel/object/table_2.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/table_3.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -13,7 +13,7 @@ pub enum Body {
ChestLight, ChestLight,
ChestOpen, ChestOpen,
ChestSkull, ChestSkull,
Pumpkin1, Pumpkin,
Pumpkin2, Pumpkin2,
Pumpkin3, Pumpkin3,
Pumpkin4, Pumpkin4,
@ -31,14 +31,23 @@ pub enum Body {
WindowSpooky, WindowSpooky,
DoorSpooky, DoorSpooky,
Anvil, Anvil,
Gravestone1, Gravestone,
Gravestone2, Gravestone2,
Bench, Bench,
Chair, Chair,
Chair2,
Chair3,
Table, Table,
Table2,
Table3,
Drawer, Drawer,
BedBlue, BedBlue,
Carpet1, Carpet,
Bedroll,
CarpetHumanRound,
CarpetHumanSquare,
CarpetHumanSquare2,
CarpetHumanSquircle,
} }
impl Body { impl Body {
@ -48,7 +57,7 @@ impl Body {
} }
} }
const ALL_OBJECTS: [Body; 37] = [ const ALL_OBJECTS: [Body; 46] = [
Body::Bomb, Body::Bomb,
Body::Scarecrow, Body::Scarecrow,
Body::Cauldron, Body::Cauldron,
@ -60,7 +69,7 @@ const ALL_OBJECTS: [Body; 37] = [
Body::ChestLight, Body::ChestLight,
Body::ChestOpen, Body::ChestOpen,
Body::ChestSkull, Body::ChestSkull,
Body::Pumpkin1, Body::Pumpkin,
Body::Pumpkin2, Body::Pumpkin2,
Body::Pumpkin3, Body::Pumpkin3,
Body::Pumpkin4, Body::Pumpkin4,
@ -78,12 +87,21 @@ const ALL_OBJECTS: [Body; 37] = [
Body::WindowSpooky, Body::WindowSpooky,
Body::DoorSpooky, Body::DoorSpooky,
Body::Anvil, Body::Anvil,
Body::Gravestone1, Body::Gravestone,
Body::Gravestone2, Body::Gravestone2,
Body::Bench, Body::Bench,
Body::Chair, Body::Chair,
Body::Chair2,
Body::Chair3,
Body::Table, Body::Table,
Body::Table2,
Body::Table3,
Body::Drawer, Body::Drawer,
Body::BedBlue, Body::BedBlue,
Body::Carpet1, Body::Carpet,
Body::Bedroll,
Body::CarpetHumanRound,
Body::CarpetHumanSquare,
Body::CarpetHumanSquare2,
Body::CarpetHumanSquircle,
]; ];

View File

@ -484,57 +484,91 @@ fn handle_killnpcs(server: &mut Server, entity: EcsEntity, _args: String, _actio
fn handle_object(server: &mut Server, entity: EcsEntity, args: String, _action: &ChatCommand) { fn handle_object(server: &mut Server, entity: EcsEntity, args: String, _action: &ChatCommand) {
let obj_type = scan_fmt!(&args, _action.arg_fmt, String); let obj_type = scan_fmt!(&args, _action.arg_fmt, String);
let pos = server let pos = server
.state .state
.ecs() .ecs()
.read_storage::<comp::Pos>() .read_storage::<comp::Pos>()
.get(entity) .get(entity)
.copied(); .copied();
if let Some(pos) = pos { let ori = server
.state
.ecs()
.read_storage::<comp::Ori>()
.get(entity)
.copied();
/*let builder = server
.create_object(pos, ori, obj_type)
.with(ori);*/
if let (Some(pos), Some(ori)) = (pos, ori) {
let obj_type = match obj_type.as_ref().map(String::as_str) { let obj_type = match obj_type.as_ref().map(String::as_str) {
Some("Scarecrow") => comp::object::Body::Scarecrow, Some("scarecrow") => comp::object::Body::Scarecrow,
Some("Cauldron") => comp::object::Body::Cauldron, Some("cauldron") => comp::object::Body::Cauldron,
Some("Chest_Vines") => comp::object::Body::ChestVines, Some("chest_vines") => comp::object::Body::ChestVines,
Some("Chest") => comp::object::Body::Chest, Some("chest") => comp::object::Body::Chest,
Some("Chest_Dark") => comp::object::Body::ChestDark, Some("chest_dark") => comp::object::Body::ChestDark,
Some("Chest_Demon") => comp::object::Body::ChestDemon, Some("chest_demon") => comp::object::Body::ChestDemon,
Some("Chest_Gold") => comp::object::Body::ChestGold, Some("chest_gold") => comp::object::Body::ChestGold,
Some("Chest_Light") => comp::object::Body::ChestLight, Some("chest_light") => comp::object::Body::ChestLight,
Some("Chest_Open") => comp::object::Body::ChestOpen, Some("chest_open") => comp::object::Body::ChestOpen,
Some("Chest_Skull") => comp::object::Body::ChestSkull, Some("chest_skull") => comp::object::Body::ChestSkull,
Some("Pumpkin_1") => comp::object::Body::Pumpkin1, Some("pumpkin") => comp::object::Body::Pumpkin,
Some("Pumpkin_2") => comp::object::Body::Pumpkin2, Some("pumpkin_2") => comp::object::Body::Pumpkin2,
Some("Pumpkin_3") => comp::object::Body::Pumpkin3, Some("pumpkin_3") => comp::object::Body::Pumpkin3,
Some("Pumpkin_4") => comp::object::Body::Pumpkin4, Some("pumpkin_4") => comp::object::Body::Pumpkin4,
Some("Pumpkin_5") => comp::object::Body::Pumpkin5, Some("pumpkin_5") => comp::object::Body::Pumpkin5,
Some("Campfire") => comp::object::Body::Campfire, Some("campfire") => comp::object::Body::Campfire,
Some("Lantern_Ground") => comp::object::Body::LanternGround, Some("lantern_ground") => comp::object::Body::LanternGround,
Some("Lantern_Ground_Open") => comp::object::Body::LanternGroundOpen, Some("lantern_ground_open") => comp::object::Body::LanternGroundOpen,
Some("Lantern_Standing_2") => comp::object::Body::LanternStanding2, Some("lantern_2") => comp::object::Body::LanternStanding2,
Some("Lantern_Standing") => comp::object::Body::LanternStanding, Some("lantern") => comp::object::Body::LanternStanding,
Some("Potion_Blue") => comp::object::Body::PotionBlue, Some("potion_blue") => comp::object::Body::PotionBlue,
Some("Potion_Green") => comp::object::Body::PotionGreen, Some("potion_green") => comp::object::Body::PotionGreen,
Some("Potion_Red") => comp::object::Body::PotionRed, Some("potion_red") => comp::object::Body::PotionRed,
Some("Crate") => comp::object::Body::Crate, Some("crate") => comp::object::Body::Crate,
Some("Tent") => comp::object::Body::Tent, Some("tent") => comp::object::Body::Tent,
Some("Bomb") => comp::object::Body::Bomb, Some("bomb") => comp::object::Body::Bomb,
Some("Window_Spooky") => comp::object::Body::WindowSpooky, Some("window_spooky") => comp::object::Body::WindowSpooky,
Some("Carpet_1") => comp::object::Body::Carpet1, Some("door_spooky") => comp::object::Body::DoorSpooky,
Some("Table") => comp::object::Body::Table, Some("carpet") => comp::object::Body::Carpet,
Some("Drawer") => comp::object::Body::Drawer, Some("table_human") => comp::object::Body::Table,
Some("Bed_Blue") => comp::object::Body::BedBlue, Some("table_human_2") => comp::object::Body::Table2,
Some("Anvil") => comp::object::Body::Anvil, Some("table_human_3") => comp::object::Body::Table3,
Some("Gravestone_1") => comp::object::Body::Gravestone1, Some("drawer") => comp::object::Body::Drawer,
Some("Gravestone_2") => comp::object::Body::Gravestone2, Some("bed_human_blue") => comp::object::Body::BedBlue,
Some("Chair") => comp::object::Body::Chair, Some("anvil") => comp::object::Body::Anvil,
Some("Bench") => comp::object::Body::Bench, Some("gravestone") => comp::object::Body::Gravestone,
Some("gravestone_2") => comp::object::Body::Gravestone2,
Some("chair") => comp::object::Body::Chair,
Some("chair_2") => comp::object::Body::Chair2,
Some("chair_3") => comp::object::Body::Chair3,
Some("bench_human") => comp::object::Body::Bench,
Some("bedroll") => comp::object::Body::Bedroll,
Some("carpet_human_round") => comp::object::Body::CarpetHumanRound,
Some("carpet_human_square") => comp::object::Body::CarpetHumanSquare,
Some("carpet_human_square_2") => comp::object::Body::CarpetHumanSquare2,
Some("carpet_human_squircle") => comp::object::Body::CarpetHumanSquircle,
_ => { _ => {
return server return server
.clients .clients
.notify(entity, ServerMsg::chat(String::from("Object not found!"))); .notify(entity, ServerMsg::chat(String::from("Object not found!")));
} }
}; };
server.create_object(pos, obj_type).build(); server
.create_object(pos, ori, obj_type)
.with(comp::Ori(
// converts player orientation into a 90° rotation for the object by using the axis with the highest value
ori.0
.map(|e| {
if e.abs() == ori.0.map(|e| e.abs()).reduce_partial_max() {
e
} else {
0.0
}
})
.normalized(),
))
.build();
server server
.clients .clients
.notify(entity, ServerMsg::chat(format!("Spawned object."))); .notify(entity, ServerMsg::chat(format!("Spawned object.")));
@ -668,9 +702,10 @@ fn handle_tell(server: &mut Server, entity: EcsEntity, args: String, action: &Ch
); );
} }
} else { } else {
server server.clients.notify(
.clients entity,
.notify(entity, ServerMsg::private(format!("Don't be crazy!"))); ServerMsg::private(format!("You can't /tell yourself.")),
);
} }
} }
None => { None => {

View File

@ -163,12 +163,14 @@ impl Server {
pub fn create_object( pub fn create_object(
&mut self, &mut self,
pos: comp::Pos, pos: comp::Pos,
ori: comp::Ori,
object: comp::object::Body, object: comp::object::Body,
) -> EcsEntityBuilder { ) -> EcsEntityBuilder {
self.state self.state
.ecs_mut() .ecs_mut()
.create_entity_synced() .create_entity_synced()
.with(pos) .with(pos)
.with(ori)
.with(comp::Vel(Vec3::zero())) .with(comp::Vel(Vec3::zero()))
.with(comp::Ori(Vec3::unit_y())) .with(comp::Ori(Vec3::unit_y()))
.with(comp::Body::Object(object)) .with(comp::Body::Object(object))
@ -176,6 +178,7 @@ impl Server {
offset: Vec3::unit_z(), offset: Vec3::unit_z(),
..comp::LightEmitter::default() ..comp::LightEmitter::default()
}) })
//.with(comp::LightEmitter::default())
.with(comp::ActionState::default()) .with(comp::ActionState::default())
.with(comp::ForceUpdate) .with(comp::ForceUpdate)
} }

View File

@ -19,10 +19,10 @@ impl Default for ServerSettings {
Self { Self {
address: SocketAddr::from(([0; 4], 14004)), address: SocketAddr::from(([0; 4], 14004)),
world_seed: 1337, world_seed: 1337,
server_name: "Server name".to_owned(), server_name: "Veloren Alpha".to_owned(),
server_description: "This is the best Veloren server.".to_owned(), server_description: "This is the best Veloren server.".to_owned(),
max_players: 16, max_players: 100,
start_time: 0.0, start_time: 12.0 * 3600.0,
} }
} }
} }

View File

@ -526,11 +526,11 @@ impl FigureModelCache {
object::Body::ChestLight => ("object/chest_light.vox", Vec3::new(-7.5, -6.0, 0.0)), object::Body::ChestLight => ("object/chest_light.vox", Vec3::new(-7.5, -6.0, 0.0)),
object::Body::ChestOpen => ("object/chest_open.vox", Vec3::new(-7.5, -6.0, 0.0)), object::Body::ChestOpen => ("object/chest_open.vox", Vec3::new(-7.5, -6.0, 0.0)),
object::Body::ChestSkull => ("object/chest_skull.vox", Vec3::new(-7.5, -6.0, 0.0)), object::Body::ChestSkull => ("object/chest_skull.vox", Vec3::new(-7.5, -6.0, 0.0)),
object::Body::Pumpkin1 => ("object/pumpkin1.vox", Vec3::new(-5.5, -4.0, 0.0)), object::Body::Pumpkin => ("object/pumpkin.vox", Vec3::new(-5.5, -4.0, 0.0)),
object::Body::Pumpkin2 => ("object/pumpkin2.vox", Vec3::new(-5.0, -4.0, 0.0)), object::Body::Pumpkin2 => ("object/pumpkin_2.vox", Vec3::new(-5.0, -4.0, 0.0)),
object::Body::Pumpkin3 => ("object/pumpkin3.vox", Vec3::new(-5.0, -4.0, 0.0)), object::Body::Pumpkin3 => ("object/pumpkin_3.vox", Vec3::new(-5.0, -4.0, 0.0)),
object::Body::Pumpkin4 => ("object/pumpkin4.vox", Vec3::new(-5.0, -4.0, 0.0)), object::Body::Pumpkin4 => ("object/pumpkin_4.vox", Vec3::new(-5.0, -4.0, 0.0)),
object::Body::Pumpkin5 => ("object/pumpkin5.vox", Vec3::new(-4.0, -5.0, 0.0)), object::Body::Pumpkin5 => ("object/pumpkin_5.vox", Vec3::new(-4.0, -5.0, 0.0)),
object::Body::Campfire => ("object/campfire.vox", Vec3::new(-9.0, -10.0, 0.0)), object::Body::Campfire => ("object/campfire.vox", Vec3::new(-9.0, -10.0, 0.0)),
object::Body::LanternGround => { object::Body::LanternGround => {
("object/lantern_ground.vox", Vec3::new(-3.5, -3.5, 0.0)) ("object/lantern_ground.vox", Vec3::new(-3.5, -3.5, 0.0))
@ -553,15 +553,36 @@ impl FigureModelCache {
("object/window_spooky.vox", Vec3::new(-15.0, -1.5, -1.0)) ("object/window_spooky.vox", Vec3::new(-15.0, -1.5, -1.0))
} }
object::Body::DoorSpooky => ("object/door_spooky.vox", Vec3::new(-15.0, -4.5, 0.0)), object::Body::DoorSpooky => ("object/door_spooky.vox", Vec3::new(-15.0, -4.5, 0.0)),
object::Body::Table => ("object/table.vox", Vec3::new(-12.0, -6.0, 0.0)), object::Body::Table => ("object/table.vox", Vec3::new(-12.0, -8.0, 0.0)),
object::Body::Drawer => ("object/drawer.vox", Vec3::new(-6.5, -6.5, 0.0)), object::Body::Table2 => ("object/table_2.vox", Vec3::new(-8.0, -8.0, 0.0)),
object::Body::BedBlue => ("object/bed_blue.vox", Vec3::new(-8.5, -5.0, 0.0)), object::Body::Table3 => ("object/table_3.vox", Vec3::new(-10.0, -10.0, 0.0)),
object::Body::Drawer => ("object/drawer.vox", Vec3::new(-11.0, -7.5, 0.0)),
object::Body::BedBlue => ("object/bed_human_blue.vox", Vec3::new(-11.0, -15.0, 0.0)),
object::Body::Anvil => ("object/anvil.vox", Vec3::new(-3.0, -7.0, 0.0)), object::Body::Anvil => ("object/anvil.vox", Vec3::new(-3.0, -7.0, 0.0)),
object::Body::Gravestone1 => ("object/gravestone1.vox", Vec3::new(-5.0, -2.0, 0.0)), object::Body::Gravestone => ("object/gravestone.vox", Vec3::new(-5.0, -2.0, 0.0)),
object::Body::Gravestone2 => ("object/gravestone2.vox", Vec3::new(-8.5, -3.0, 0.0)), object::Body::Gravestone2 => ("object/gravestone_2.vox", Vec3::new(-8.5, -3.0, 0.0)),
object::Body::Chair => ("object/chair.vox", Vec3::new(-3.5, -4.0, 0.0)), object::Body::Chair => ("object/chair.vox", Vec3::new(-5.0, -4.5, 0.0)),
object::Body::Chair2 => ("object/chair_2.vox", Vec3::new(-5.0, -4.5, 0.0)),
object::Body::Chair3 => ("object/chair_3.vox", Vec3::new(-5.0, -4.5, 0.0)),
object::Body::Bench => ("object/bench.vox", Vec3::new(-8.8, -5.0, 0.0)), object::Body::Bench => ("object/bench.vox", Vec3::new(-8.8, -5.0, 0.0)),
object::Body::Carpet1 => ("object/carpet1.vox", Vec3::new(-14.0, -14.0, -0.5)), object::Body::Carpet => ("object/carpet.vox", Vec3::new(-14.0, -14.0, -0.5)),
object::Body::Bedroll => ("object/bedroll.vox", Vec3::new(-11.0, -19.5, -0.5)),
object::Body::CarpetHumanRound => (
"object/carpet_human_round.vox",
Vec3::new(-14.0, -14.0, -0.5),
),
object::Body::CarpetHumanSquare => (
"object/carpet_human_square.vox",
Vec3::new(-13.5, -14.0, -0.5),
),
object::Body::CarpetHumanSquare2 => (
"object/carpet_human_square_2.vox",
Vec3::new(-13.5, -14.0, -0.5),
),
object::Body::CarpetHumanSquircle => (
"object/carpet_human_squircle.vox",
Vec3::new(-21.0, -21.0, -0.5),
),
}; };
Self::load_mesh(name, offset) Self::load_mesh(name, offset)
} }