Added more ui scenes
parent
5f5e153da5
commit
e3fd358e80
|
@ -40,3 +40,5 @@ zoom_max = 2000.0
|
||||||
# TODO: move to user config file
|
# TODO: move to user config file
|
||||||
ui_scale = 2
|
ui_scale = 2
|
||||||
ui_landed_scene = "landed.rhai"
|
ui_landed_scene = "landed.rhai"
|
||||||
|
ui_flying_scene = "flying.rhai"
|
||||||
|
ui_outfitter_scene = "outfitter.rhai"
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn init(state) { return []; }
|
||||||
|
fn hover(element, hover_state) {}
|
||||||
|
fn click(element, click_state) {}
|
|
@ -60,8 +60,12 @@ fn hover(element, hover_state) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//fn click(scene, name) {
|
fn click(element, click_state) {
|
||||||
// if name = "button" {
|
if !click_state {
|
||||||
// return SceneAction::Outfitter();
|
return SceneAction::None;
|
||||||
// }
|
}
|
||||||
//}
|
|
||||||
|
if element.has_name("button") {
|
||||||
|
return SceneAction::SceneOutfitter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,187 @@
|
||||||
|
|
||||||
|
fn init(state) {
|
||||||
|
let se_box = SpriteBuilder(
|
||||||
|
"se_box",
|
||||||
|
"ui::outfitterbox",
|
||||||
|
Rect(
|
||||||
|
-1.0, -1.0, 202.345, 133.409,
|
||||||
|
SpriteAnchor::SouthWest,
|
||||||
|
SpriteAnchor::SouthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
let exit_text = TextBoxBuilder(
|
||||||
|
"exit_text",
|
||||||
|
10.0, 10.0, TextBoxFont::Serif, TextBoxJustify::Center,
|
||||||
|
Rect(
|
||||||
|
122.71, 48.0, 51.0, 12.0,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::SouthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
exit_text.set_text(state.planet_name);
|
||||||
|
|
||||||
|
let exit_button = SpriteBuilder(
|
||||||
|
"exit_button",
|
||||||
|
"ui::button",
|
||||||
|
Rect(
|
||||||
|
113.35, 52.0, 69.8, 18.924,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::SouthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let ship_bg = SpriteBuilder(
|
||||||
|
"ship_bg",
|
||||||
|
"ui::outfitter-ship-bg",
|
||||||
|
Rect(
|
||||||
|
16.0, -16.0, 190.0, 353.0,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::NorthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
let ship_thumb = SpriteBuilder(
|
||||||
|
"ship_thumb",
|
||||||
|
"icon::gypsum",
|
||||||
|
Rect(
|
||||||
|
111.0, -95.45, 90.0, 90.0,
|
||||||
|
SpriteAnchor::Center,
|
||||||
|
SpriteAnchor::NorthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
let ship_name = TextBoxBuilder(
|
||||||
|
"ship_name",
|
||||||
|
10.0, 10.0, TextBoxFont::Serif, TextBoxJustify::Center,
|
||||||
|
Rect(
|
||||||
|
111.0, -167.27, 145.0, 10.0,
|
||||||
|
SpriteAnchor::Center,
|
||||||
|
SpriteAnchor::NorthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
ship_name.set_text(state.planet_name);
|
||||||
|
|
||||||
|
let ship_type = TextBoxBuilder(
|
||||||
|
"ship_type",
|
||||||
|
7.0, 8.5, TextBoxFont::SansSerif, TextBoxJustify::Center,
|
||||||
|
Rect(
|
||||||
|
111.0, -178.0, 145.0, 8.5,
|
||||||
|
SpriteAnchor::Center,
|
||||||
|
SpriteAnchor::NorthWest
|
||||||
|
)
|
||||||
|
);
|
||||||
|
ship_type.set_text(state.planet_name);
|
||||||
|
|
||||||
|
let ship_stats = TextBoxBuilder(
|
||||||
|
"ship_stats",
|
||||||
|
7.0, 8.5, TextBoxFont::Monospace, TextBoxJustify::Left,
|
||||||
|
Rect(
|
||||||
|
38.526, -192.332, 144.948, 154.5,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
ship_stats.set_text(state.planet_name);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let outfit_bg = SpriteBuilder(
|
||||||
|
"outfit_bg",
|
||||||
|
"ui::outfitter-outfit-bg",
|
||||||
|
Rect(
|
||||||
|
-16.0, -16.0, 300.0, 480.0,
|
||||||
|
SpriteAnchor::NorthEast,
|
||||||
|
SpriteAnchor::NorthEast
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
let outfit_thumb = SpriteBuilder(
|
||||||
|
"outfit_thumb",
|
||||||
|
"icon::engine",
|
||||||
|
Rect(
|
||||||
|
-166.0, -109.0, 90.0, 90.0,
|
||||||
|
SpriteAnchor::Center,
|
||||||
|
SpriteAnchor::NorthEast
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
let outfit_name = TextBoxBuilder(
|
||||||
|
"outfit_name",
|
||||||
|
16.0, 16.0, TextBoxFont::Serif, TextBoxJustify::Left,
|
||||||
|
Rect(
|
||||||
|
-312.0, -20.0, 200.0, 16.0,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::NorthEast,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
outfit_name.set_text(state.planet_name);
|
||||||
|
|
||||||
|
let outfit_desc = TextBoxBuilder(
|
||||||
|
"outfit_desc",
|
||||||
|
7.0, 8.5, TextBoxFont::SansSerif, TextBoxJustify::Left,
|
||||||
|
Rect(
|
||||||
|
-166.0, -219.0, 260.0, 78.0,
|
||||||
|
SpriteAnchor::Center,
|
||||||
|
SpriteAnchor::NorthEast,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
outfit_desc.set_text(state.planet_name);
|
||||||
|
|
||||||
|
let outfit_stats = TextBoxBuilder(
|
||||||
|
"outfit_stats",
|
||||||
|
7.0, 8.5, TextBoxFont::Monospace, TextBoxJustify::Left,
|
||||||
|
Rect(
|
||||||
|
-295.0, -271.0, 164.0, 216.0,
|
||||||
|
SpriteAnchor::NorthWest,
|
||||||
|
SpriteAnchor::NorthEast,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
outfit_stats.set_text(state.planet_name);
|
||||||
|
|
||||||
|
return [
|
||||||
|
ship_bg,
|
||||||
|
ship_thumb,
|
||||||
|
ship_name,
|
||||||
|
ship_type,
|
||||||
|
ship_stats,
|
||||||
|
|
||||||
|
outfit_bg,
|
||||||
|
outfit_thumb,
|
||||||
|
outfit_name,
|
||||||
|
outfit_desc,
|
||||||
|
outfit_stats,
|
||||||
|
|
||||||
|
se_box,
|
||||||
|
exit_button,
|
||||||
|
exit_text
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hover(element, hover_state) {
|
||||||
|
if element.has_name("exit_button") {
|
||||||
|
if hover_state {
|
||||||
|
element.take_edge("on:top", 0.1);
|
||||||
|
} else {
|
||||||
|
element.take_edge("off:top", 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn click(element, click_state) {
|
||||||
|
if !click_state {
|
||||||
|
return SceneAction::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
if element.has_name("exit_button") {
|
||||||
|
return SceneAction::SceneLanded;
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,7 +20,9 @@ pub(crate) mod syntax {
|
||||||
pub zoom_min: f32,
|
pub zoom_min: f32,
|
||||||
pub zoom_max: f32,
|
pub zoom_max: f32,
|
||||||
pub ui_scale: f32,
|
pub ui_scale: f32,
|
||||||
|
pub ui_flying_scene: PathBuf,
|
||||||
pub ui_landed_scene: PathBuf,
|
pub ui_landed_scene: PathBuf,
|
||||||
|
pub ui_outfitter_scene: PathBuf,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
@ -61,6 +63,14 @@ pub(crate) mod syntax {
|
||||||
.compile_file(content_root.join(self.ui_landed_scene))
|
.compile_file(content_root.join(self.ui_landed_scene))
|
||||||
.with_context(|| format!("while loading `landed` scene"))
|
.with_context(|| format!("while loading `landed` scene"))
|
||||||
.with_context(|| format!("while loading config"))?;
|
.with_context(|| format!("while loading config"))?;
|
||||||
|
let ui_outfitter_scene = engine
|
||||||
|
.compile_file(content_root.join(self.ui_outfitter_scene))
|
||||||
|
.with_context(|| format!("while loading `outfitter` scene"))
|
||||||
|
.with_context(|| format!("while loading config"))?;
|
||||||
|
let ui_flying_scene = engine
|
||||||
|
.compile_file(content_root.join(self.ui_flying_scene))
|
||||||
|
.with_context(|| format!("while loading `flying` scene"))
|
||||||
|
.with_context(|| format!("while loading config"))?;
|
||||||
|
|
||||||
return Ok(super::Config {
|
return Ok(super::Config {
|
||||||
sprite_root: asset_root.join(self.sprite_root),
|
sprite_root: asset_root.join(self.sprite_root),
|
||||||
|
@ -89,6 +99,8 @@ pub(crate) mod syntax {
|
||||||
zoom_min: self.zoom_min,
|
zoom_min: self.zoom_min,
|
||||||
ui_scale: self.ui_scale,
|
ui_scale: self.ui_scale,
|
||||||
ui_landed_scene,
|
ui_landed_scene,
|
||||||
|
ui_flying_scene,
|
||||||
|
ui_outfitter_scene,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,6 +187,12 @@ pub struct Config {
|
||||||
/// Ui scale factor
|
/// Ui scale factor
|
||||||
pub ui_scale: f32,
|
pub ui_scale: f32,
|
||||||
|
|
||||||
/// Ui landed scene
|
/// Ui landed scene script
|
||||||
pub ui_landed_scene: AST,
|
pub ui_landed_scene: AST,
|
||||||
|
|
||||||
|
/// Ui flying scene script
|
||||||
|
pub ui_flying_scene: AST,
|
||||||
|
|
||||||
|
/// Ui outfitter scene script
|
||||||
|
pub ui_outfitter_scene: AST,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue