1use crate::source_map::SourceMapWrapper;
6use limnus_message::prelude::Message;
7use std::path::Path;
8use swamp::prelude::{App, Plugin, Resource};
9
10mod audio;
11pub mod err;
12pub mod logic;
13mod modules;
14pub mod render;
15mod script;
16pub mod source_map;
17mod util;
18
19#[derive(Message, Debug)]
20pub enum ScriptMessage {
21 Reload,
22}
23
24#[derive(Resource, Debug)]
25pub struct SourceMapResource {
26 pub wrapper: SourceMapWrapper,
27}
28
29impl SourceMapResource {
30 #[must_use]
31 pub fn base_path(&self) -> &Path {
32 self.wrapper.source_map.base_path()
33 }
34}
35
36#[derive(Resource, Debug)]
37pub struct ErrorResource {
38 pub has_errors: bool,
39}
40
41pub struct ScriptPlugin;
42
43impl Plugin for ScriptPlugin {
44 fn build(&self, app: &mut App) {
45 app.create_message_type::<ScriptMessage>();
46
47 let script_messages = app
48 .messages_mut()
49 .get_mut::<ScriptMessage>()
50 .expect("missing ScriptMessage");
51 script_messages.send(ScriptMessage::Reload);
52 }
53}