amethyst-editor-sync 0.4.0

Allows an Amethyst game to connect to an editor.
extern crate amethyst;
extern crate amethyst_editor_sync;
extern crate serde;
extern crate tap;

use amethyst::prelude::*;
use amethyst_editor_sync::*;
use serde::*;
use tap::*;

#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
struct SimpleResource {
    value: usize,
}

#[test]
fn serialize_resource() -> amethyst::Result<()> {
    #[derive(Debug, Clone, Copy, Default)]
    struct TestState {
        frames: usize,
    };

    impl SimpleState for TestState {
        fn on_start(&mut self, data: StateData<GameData>) {
            data.world.add_resource(SimpleResource { value: 123 });
        }

        fn update(&mut self, data: &mut StateData<GameData>) -> SimpleTrans {
            data.data.update(&data.world);

            self.frames += 1;
            if self.frames > 10 {
                Trans::Quit
            } else {
                Trans::None
            }
        }
    }

    let editor_sync_bundle =
        SyncEditorBundle::new().tap(|bundle| sync_resources!(bundle, SimpleResource));

    let game_data = GameDataBuilder::default().with_bundle(editor_sync_bundle)?;
    let mut game = Application::build(".", TestState::default())?.build(game_data)?;

    game.run();

    Ok(())
}

#[test]
fn missing_resource() -> amethyst::Result<()> {
    #[derive(Debug, Clone, Copy, Default)]
    struct TestState {
        frames: usize,
    };

    impl SimpleState for TestState {
        fn update(&mut self, data: &mut StateData<GameData>) -> SimpleTrans {
            data.data.update(&data.world);

            self.frames += 1;
            if self.frames > 10 {
                Trans::Quit
            } else {
                Trans::None
            }
        }
    }

    let editor_sync_bundle =
        SyncEditorBundle::new().tap(|bundle| sync_resources!(bundle, SimpleResource));

    let game_data = GameDataBuilder::default().with_bundle(editor_sync_bundle)?;
    let mut game = Application::build(".", TestState::default())?.build(game_data)?;

    game.run();

    Ok(())
}