2024-02-03 11:24:17 -08:00
|
|
|
fn config() {
|
|
|
|
let config = SceneConfig();
|
|
|
|
config.show_starfield(true);
|
|
|
|
config.show_phys(true);
|
|
|
|
return config
|
|
|
|
}
|
2024-02-03 07:33:10 -08:00
|
|
|
|
2024-02-03 11:24:17 -08:00
|
|
|
fn init(state) {
|
2024-02-03 07:33:10 -08:00
|
|
|
let ring = SpriteBuilder(
|
|
|
|
"ring",
|
|
|
|
"ui::status",
|
|
|
|
Rect(
|
|
|
|
-5.0, -5.0, 100.0, 100.0,
|
|
|
|
SpriteAnchor::NorthEast,
|
|
|
|
SpriteAnchor::NorthEast
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
let shield = RadialBuilder(
|
|
|
|
"shield", 2.5,
|
|
|
|
Color(0.3, 0.6, 0.8, 1.0),
|
|
|
|
Rect(
|
|
|
|
-9.5, -9.5, 91.0, 91.0,
|
|
|
|
SpriteAnchor::NorthEast,
|
|
|
|
SpriteAnchor::NorthEast
|
|
|
|
)
|
|
|
|
);
|
2024-02-03 18:35:32 -08:00
|
|
|
shield.set_progress(1.0);
|
2024-02-03 07:33:10 -08:00
|
|
|
|
|
|
|
let hull = RadialBuilder(
|
|
|
|
"hull", 2.5,
|
|
|
|
Color(0.8, 0.7, 0.5, 1.0),
|
|
|
|
Rect(
|
|
|
|
-13.5, -13.5, 83.0, 83.0,
|
|
|
|
SpriteAnchor::NorthEast,
|
|
|
|
SpriteAnchor::NorthEast
|
|
|
|
)
|
|
|
|
);
|
2024-02-03 18:35:32 -08:00
|
|
|
hull.set_progress(1.0);
|
2024-02-03 07:33:10 -08:00
|
|
|
|
|
|
|
return [
|
|
|
|
ring,
|
|
|
|
shield,
|
|
|
|
hull
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
2024-02-03 11:24:17 -08:00
|
|
|
fn event(state, event) {
|
|
|
|
if type_of(event) == "PlayerShipStateEvent" {
|
|
|
|
if state.player_ship().is_landed() {
|
|
|
|
return SceneAction::GoTo("landed");
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
2024-02-03 18:35:32 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
fn step(state, elements) {
|
|
|
|
elements["shield"].set_val(
|
|
|
|
state.player_ship().get_shields()
|
|
|
|
/ state.player_ship().get_total_shields()
|
|
|
|
);
|
|
|
|
elements["hull"].set_val(
|
|
|
|
state.player_ship().get_hull()
|
|
|
|
/ state.player_ship().get_total_hull()
|
|
|
|
);
|
2024-02-03 11:24:17 -08:00
|
|
|
}
|