This repository was archived by the owner on Feb 17, 2026. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathmain.rs
More file actions
119 lines (108 loc) · 3.85 KB
/
main.rs
File metadata and controls
119 lines (108 loc) · 3.85 KB
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
use std::time::Duration;
use bevy::log::LogPlugin;
#[cfg(not(target_os = "macos"))]
use bevy::window::{CursorGrabMode, PrimaryWindow};
use bevy::{
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
prelude::*,
window::WindowMode,
};
use bevy_kira_audio::AudioPlugin;
use de_audio::AudioPluginGroup;
use de_behaviour::BehaviourPluginGroup;
use de_camera::CameraPluginGroup;
use de_combat::CombatPluginGroup;
use de_conf::ConfigPluginGroup;
use de_construction::ConstructionPluginGroup;
use de_controller::ControllerPluginGroup;
use de_core::{state::AppState, transition::DeStateTransition, CorePluginGroup};
use de_energy::EnergyPluginGroup;
use de_gui::GuiPluginGroup;
use de_index::IndexPluginGroup;
use de_loader::LoaderPluginGroup;
use de_lobby_client::LobbyClientPluginGroup;
use de_log::LogPluginGroup;
use de_menu::MenuPluginGroup;
use de_movement::MovementPluginGroup;
use de_multiplayer::MultiplayerPluginGroup;
use de_objects::ObjectsPluginGroup;
use de_pathing::PathingPluginGroup;
use de_signs::SignsPluginGroup;
use de_spawner::SpawnerPluginGroup;
use de_terrain::TerrainPluginGroup;
use tracing::{span, Level};
const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
const GIT_SHA: &str = env!("GIT_SHA");
fn main() {
let mut app = App::new();
// we want logging as early as possible
app.add_plugins(LogPluginGroup);
info!(
"Starting Digital Extinction {{ \"Version\": \"{}\", \"GitSha\": \"{}\" }}",
CARGO_PKG_VERSION, GIT_SHA
);
{
let span = span!(Level::TRACE, "Startup");
let _enter = span.enter();
app.insert_resource(Msaa::Sample4)
.add_plugins(
DefaultPlugins
.set(WindowPlugin {
primary_window: Some(Window {
title: "Digital Extinction".to_string(),
mode: WindowMode::BorderlessFullscreen,
..Default::default()
}),
..default()
})
.disable::<LogPlugin>(),
)
.add_plugins(AudioPlugin)
.add_plugins((
LogDiagnosticsPlugin {
debug: false,
wait_duration: Duration::from_secs(10),
filter: None,
},
FrameTimeDiagnosticsPlugin,
GamePlugin,
))
.add_plugins(ConfigPluginGroup)
.add_plugins(GuiPluginGroup)
.add_plugins(LobbyClientPluginGroup)
.add_plugins(MenuPluginGroup)
.add_plugins(CorePluginGroup)
.add_plugins(EnergyPluginGroup)
.add_plugins(ObjectsPluginGroup)
.add_plugins(TerrainPluginGroup)
.add_plugins(LoaderPluginGroup)
.add_plugins(IndexPluginGroup)
.add_plugins(PathingPluginGroup)
.add_plugins(SignsPluginGroup)
.add_plugins(SpawnerPluginGroup)
.add_plugins(MovementPluginGroup)
.add_plugins(ControllerPluginGroup)
.add_plugins(CameraPluginGroup)
.add_plugins(BehaviourPluginGroup)
.add_plugins(CombatPluginGroup)
.add_plugins(ConstructionPluginGroup)
.add_plugins(AudioPluginGroup)
.add_plugins(MultiplayerPluginGroup);
}
app.run();
}
struct GamePlugin;
impl Plugin for GamePlugin {
fn build(&self, app: &mut App) {
app.add_state_with_set::<AppState>();
#[cfg(not(target_os = "macos"))]
{
app.add_systems(OnEnter(AppState::AppLoading), cursor_grab_system);
}
}
}
#[cfg(not(target_os = "macos"))]
fn cursor_grab_system(mut window_query: Query<&mut Window, With<PrimaryWindow>>) {
let mut window = window_query.single_mut();
window.cursor.grab_mode = CursorGrabMode::Confined;
}