mangrove_script/
lib.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/swamp/mangrove
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5use 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}