~starkingdoms/starkingdoms

ref: 06f4e4a24e833f920faa0dfaaefea8f09e706eba starkingdoms/crates/unified/src/ecs.rs -rw-r--r-- 3.1 KiB
06f4e4a2ghostly_zsh feat: radiation area 18 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
pub mod thruster;

use crate::config::part::PartConfig;
use bevy::ecs::entity::MapEntities;
use bevy::math::{Quat, Vec2};
use bevy::camera::visibility::RenderLayers;
use crate::prelude::*;
use bevy_replicon::prelude::Replicated;
use serde::{Deserialize, Serialize};
use avian2d::prelude::*;
use std::sync::LazyLock;

#[derive(States, Debug, Clone, PartialEq, Eq, Hash)]
pub enum GameplayState {
    Main,
    Starguide,
}

pub const MAIN_LAYER: RenderLayers = RenderLayers::layer(0);
pub const STARGUIDE_LAYER: RenderLayers = RenderLayers::layer(1);
pub static MAIN_STAR_LAYERS: LazyLock<RenderLayers> = LazyLock::new(|| RenderLayers::from_layers(&[0, 1]));
pub const ORBIT_LAYER: RenderLayers = RenderLayers::layer(2);

#[derive(Component)]
pub struct MainCamera;
#[derive(Component)]
pub struct StarguideCamera;
#[derive(Component)]
pub struct OrbitCamera;

#[derive(Default, Reflect, GizmoConfigGroup)]
pub struct StarguideGizmos;

#[derive(Component)]
pub struct StarfieldFront;
#[derive(Component)]
pub struct StarfieldMid;
#[derive(Component)]
pub struct StarfieldBack;
#[derive(Component)]
pub struct FuelText;
#[derive(Component)]
pub struct PowerText;

#[derive(Component, Serialize, Deserialize, Debug)]
#[require(
    RigidBody::Dynamic,
    LinearVelocity,
    AngularVelocity,
    ConstantForce,
    Replicated,
)]
pub struct Part {
    pub strong_config: PartConfig,
}
#[derive(Component, Debug)]
#[require(Replicated)]
pub struct PartHandle(pub Handle<PartConfig>);

#[derive(Component, Serialize, Deserialize, Debug)]
#[require(Replicated)]
pub struct Player {
    #[entities]
    pub client: Entity,
}

#[derive(Component, Serialize, Deserialize, Debug)]
#[require(Replicated)]
pub struct Particles {
    pub effect: String,
    pub active: bool,
}

#[derive(Serialize, Deserialize, Message, Debug, MapEntities, Clone)]
pub struct DragRequestEvent {
    #[entities]
    pub drag_target: Entity,
    pub drag_to: Vec2,
    pub set_rotation: Quat,
    #[entities]
    pub snap_target: Option<Entity>,
    #[entities]
    pub peer_snap: Option<Entity>,
}

#[derive(Component, Serialize, Deserialize, Debug)]
#[require(Replicated)]
pub struct PlayerStorage {
    pub fuel_capacity: f32,
    pub fuel: f32,
    pub power_capacity: f32,
    pub power: f32,
}

#[derive(Component)]
pub struct Me;
#[derive(Component)]
pub struct StarguideMe;

#[derive(Resource)]
pub struct StarguideOrbitImage(pub Handle<Image>);

#[derive(Component)]
pub struct StarguideOrbit;

#[derive(Message, Serialize, Deserialize, Debug, MapEntities)]
pub struct Hi {
    #[entities]
    pub you_are: Entity
}

#[derive(Component, Serialize, Deserialize, Debug)]
pub struct CanCraft;
#[derive(Component, Serialize, Deserialize, Debug)]
pub struct CraftingUi;

#[derive(Component, Serialize, Deserialize, Debug)]
#[require(Replicated)]
pub struct Temperature(pub f32);
#[derive(Component, Serialize, Deserialize, Debug)]
pub struct TemperatureSprite;
#[derive(Component, Serialize, Deserialize, Debug)]
pub struct Cooler {
    pub cool_temperature: f32,
    pub heat_cooling_constant: f32,
}
#[derive(Component, Serialize, Deserialize, Debug)]
pub struct Radiator {
    pub emissivity: f32,
    pub surface_area: f32,
}