mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Moved explsion struct from within comp to common.
This commit is contained in:
parent
14e4af7ab6
commit
d869f7e430
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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
|
||||
|
@ -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
12
common/src/explosion.rs
Normal 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,
|
||||
}
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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>,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user