veloren_common/comp/
misc.rs1use super::item::Reagent;
2use crate::{
3 resources::{Secs, Time},
4 uid::Uid,
5};
6use serde::{Deserialize, Serialize};
7use specs::{Component, DerefFlaggedStorage};
8use std::time::Duration;
9use vek::Vec3;
10
11#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
12pub enum Object {
13 Bomb {
14 owner: Option<Uid>,
15 },
16 Firework {
17 owner: Option<Uid>,
18 reagent: Reagent,
19 },
20 DeleteAfter {
21 spawned_at: Time,
22 timeout: Duration,
23 },
24 Portal {
25 target: Vec3<f32>,
26 requires_no_aggro: bool,
27 buildup_time: Secs,
28 },
29 SurpriseEgg {
30 owner: Option<Uid>,
31 },
32}
33
34impl Component for Object {
35 type Storage = DerefFlaggedStorage<Self, specs::VecStorage<Self>>;
36}
37
38#[derive(Clone, Debug)]
39pub struct PortalData {
40 pub target: Vec3<f32>,
41 pub requires_no_aggro: bool,
42 pub buildup_time: Secs,
43}
44
45impl From<PortalData> for Object {
46 fn from(
47 PortalData {
48 target,
49 requires_no_aggro,
50 buildup_time,
51 }: PortalData,
52 ) -> Self {
53 Self::Portal {
54 target,
55 requires_no_aggro,
56 buildup_time,
57 }
58 }
59}