Pues no me he puesto con el scripting, me he puesto a hacer una manera mas sencilla de crear los ejemplos (a lo json), y asi poder incluso cambiar los tests para que incluyan esos recursos. Esto lo hare mas adelante (si es que lo hago), pero por ahora todo es top.
Me he decidido por la libreria ron para estos ficheros en vez de Json ya que eso deja hacer unas cosas que Json no te deja, ademas de que parece mucho mas claro.
He creado un nuevo bevy plugin que sustituye al SimpleMapPlugin
que se llama RonMapLoaderPlugin
que carga un fichero (por ahora estatico) que se llama resources/simple.ron
y el contenido es el siguiente:
Game(
lives: 10,
starting_coins: {
"Gold": 10,
"Silver": 20,
},
towers: [],
waves: [
Wave(
timer: 0.5,
mobs: [
Mob(
hp: 1000,
ms: Speed(100),
attack: None,
),
],
),
],
)
Y el loader:
impl Plugin for RonMapLoaderPlugin {
fn build(&self, app: &mut AppBuilder) {
let str = include_str!("../../resources/simple.ron");
let game: Game = from_str(str).expect("Unable to load the game file.");
let state = GameState::from(&game);
app.add_resource(state);
app.add_resource(game);
app.add_startup_system(add_tower.system());
}
}
Todo lo demas es exactamente lo mismo. Ahora tengo un ficherito que puedo actualizar y que mas adelante servira para cargar los mapas (el editor los serializara y el juego los deserializara a este mismo formato).