Galactica/content/ui/landed.rhai

127 lines
2.4 KiB
Plaintext

fn init(state) {
conf::show_starfield(true);
conf::show_phys(false);
sprite::add(
"button",
"ui::planet::button",
Rect(
99.0, 128.0, 73.898, 18.708,
Anchor::NorthWest,
Anchor::Center
)
);
sprite::add(
"landscape",
{
if state.player_ship().is_landed() {
state.player_ship().landed_on().image();
} else {
"";
}
},
Rect(
-180.0, 142.0, 274.0, 135.0,
Anchor::NorthWest,
Anchor::Center
)
);
sprite::set_mask("landscape", "ui::landscapemask");
sprite::add(
"frame",
"ui::planet",
Rect(
0.0, 0.0, 400.0, 297.866,
Anchor::Center,
Anchor::Center
)
);
// If this is not set, the button will
// not receive events
sprite::set_disable_events("frame", true);
textbox::add(
"title", 10.0, 10.0,
Rect(
-70.79, 138.0, 59.867, 10.0,
Anchor::NorthWest,
Anchor::Center
),
Color(1.0, 1.0, 1.0, 1.0)
);
textbox::align_center("title");
textbox::font_serif("title");
textbox::weight_bold("title");
if state.player_ship().is_landed() {
textbox::set_text("title", state.player_ship().landed_on().display_name());
}
textbox::add(
"desc", 7.5, 8.0,
Rect(
-178.92, -20.3, 343.0, 81.467,
Anchor::NorthWest,
Anchor::Center
),
Color(1.0, 1.0, 1.0, 1.0)
);
textbox::font_sans("desc");
if state.player_ship().is_landed() {
textbox::set_text("desc", state.player_ship().landed_on().desc());
}
}
fn event(state, event) {
if type_of(event) == "MouseHoverEvent" {
let element = event.element();
if element == "button" {
if event.is_enter() {
sprite::jump_to("button", "on:top", 0.1);
} else {
sprite::jump_to("button", "off:top", 0.1);
}
}
return PlayerDirective::None;
}
if type_of(event) == "MouseClickEvent" {
if !event.is_down() {
return PlayerDirective::None;
}
let element = event.element();
if element == "button" {
ui::go_to_scene("outfitter");
return PlayerDirective::None;
}
return;
}
if type_of(event) == "KeyboardEvent" {
if !event.is_down() {
return PlayerDirective::None;
}
if event.key() == "L" {
return PlayerDirective::UnLand;
}
if event.key() == "O" {
ui::go_to_scene("outfitter");
return PlayerDirective::None;
}
}
if type_of(event) == "PlayerShipStateEvent" {
if !state.player_ship().is_landed() {
ui::go_to_scene("flying");
return PlayerDirective::None;
}
return PlayerDirective::None;
}
}