Moved explsion struct from within comp to common.

This commit is contained in:
Sam 2020-10-14 19:43:53 -05:00
parent 14e4af7ab6
commit d869f7e430
9 changed files with 28 additions and 25 deletions

View File

@ -2,11 +2,9 @@
// version in voxygen\src\meta.rs in order to reset save files to being empty
use crate::{
comp::{
body::object, projectile, Body, CharacterAbility, Explosion, Gravity, LightEmitter,
Projectile,
},
comp::{body::object, projectile, Body, CharacterAbility, Gravity, LightEmitter, Projectile},
states::{combo_melee, utils::AbilityKey},
Explosion,
};
use serde::{Deserialize, Serialize};
use std::time::Duration;

View File

@ -53,7 +53,7 @@ pub use location::{Waypoint, WaypointArea};
pub use misc::Object;
pub use phys::{Collider, ForceUpdate, Gravity, Mass, Ori, PhysicsState, Pos, Scale, Sticky, Vel};
pub use player::{Player, MAX_MOUNT_RANGE_SQR};
pub use projectile::{Explosion, Projectile};
pub use projectile::Projectile;
pub use shockwave::{Shockwave, ShockwaveHitEntities};
pub use skills::{Skill, SkillGroup, SkillGroupType, SkillSet};
pub use stats::{Exp, HealthChange, HealthSource, Level, Stats};

View File

@ -1,4 +1,4 @@
use crate::sync::Uid;
use crate::{sync::Uid, Explosion};
use serde::{Deserialize, Serialize};
use specs::{Component, FlaggedStorage};
use specs_idvs::IdvStorage;
@ -15,17 +15,6 @@ pub enum Effect {
Possess,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Explosion {
pub radius: f32,
pub max_damage: u32,
pub min_damage: u32,
pub max_heal: u32,
pub min_heal: u32,
pub terrain_destruction_power: f32,
pub energy_regen: u32,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Projectile {
// TODO: use SmallVec for these effects

View File

@ -1,4 +1,4 @@
use crate::{character::CharacterId, comp, sync::Uid, util::Dir};
use crate::{character::CharacterId, comp, sync::Uid, util::Dir, Explosion};
use comp::{
item::{Item, Reagent},
Ori, Pos,
@ -29,7 +29,7 @@ pub enum LocalEvent {
pub enum ServerEvent {
Explosion {
pos: Vec3<f32>,
explosion: comp::Explosion,
explosion: Explosion,
owner: Option<Uid>,
friendly_damage: bool,
reagent: Option<Reagent>,

12
common/src/explosion.rs Normal file
View File

@ -0,0 +1,12 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Explosion {
pub radius: f32,
pub max_damage: u32,
pub min_damage: u32,
pub max_heal: u32,
pub min_heal: u32,
pub terrain_destruction_power: f32,
pub energy_regen: u32,
}

View File

@ -25,6 +25,7 @@ pub mod cmd;
pub mod comp;
pub mod effect;
pub mod event;
pub mod explosion;
pub mod figure;
pub mod generation;
pub mod loadout_builder;
@ -50,4 +51,5 @@ pub mod util;
pub mod vol;
pub mod volumes;
pub use explosion::Explosion;
pub use loadout_builder::LoadoutBuilder;

View File

@ -19,7 +19,7 @@ use common::{
terrain::{Block, BlockKind, SpriteKind, TerrainChunkSize},
util::Dir,
vol::RectVolSize,
LoadoutBuilder,
Explosion, LoadoutBuilder,
};
use rand::Rng;
use specs::{Builder, Entity as EcsEntity, Join, WorldExt};
@ -1129,7 +1129,7 @@ fn handle_explosion(
ecs.read_resource::<EventBus<ServerEvent>>()
.emit_now(ServerEvent::Explosion {
pos: pos.0,
explosion: comp::Explosion {
explosion: Explosion {
radius: 3.0 * power,
max_damage: (100.0 * power) as u32,
min_damage: 0,

View File

@ -19,6 +19,7 @@ use common::{
sys::combat::BLOCK_ANGLE,
terrain::{Block, TerrainGrid},
vol::ReadVol,
Explosion,
};
use comp::item::Reagent;
use rand::prelude::*;
@ -487,7 +488,7 @@ pub fn handle_respawn(server: &Server, entity: EcsEntity) {
pub fn handle_explosion(
server: &Server,
pos: Vec3<f32>,
explosion: comp::Explosion,
explosion: Explosion,
owner: Option<Uid>,
friendly_damage: bool,
reagent: Option<Reagent>,

View File

@ -1,8 +1,9 @@
use common::{
comp::{self, HealthSource, Object, PhysicsState, Pos, Vel},
comp::{HealthSource, Object, PhysicsState, Pos, Vel},
event::{EventBus, ServerEvent},
span,
state::DeltaTime,
Explosion,
};
use specs::{Entities, Join, Read, ReadStorage, System, WriteStorage};
@ -46,7 +47,7 @@ impl<'a> System<'a> for Sys {
});
server_emitter.emit(ServerEvent::Explosion {
pos: pos.0,
explosion: comp::Explosion {
explosion: Explosion {
radius: 12.0,
max_damage: 500,
min_damage: 100,
@ -69,7 +70,7 @@ impl<'a> System<'a> for Sys {
});
server_emitter.emit(ServerEvent::Explosion {
pos: pos.0,
explosion: comp::Explosion {
explosion: Explosion {
radius: 12.0,
max_damage: 50,
min_damage: 10,