Rendering UI
This commit is contained in:
parent
5bf12185a8
commit
8b2a972202
6 changed files with 59 additions and 10 deletions
BIN
bin/assets/comment1.png
Normal file
BIN
bin/assets/comment1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
bin/assets/comment2.png
Normal file
BIN
bin/assets/comment2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
bin/assets/logo.png
Normal file
BIN
bin/assets/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
50
src/app.rs
50
src/app.rs
|
|
@ -10,6 +10,10 @@ pub struct App<'a> {
|
|||
board: Board<'a>,
|
||||
number_renderer: Option<NumberRenderer>,
|
||||
settings: &'a Settings,
|
||||
|
||||
logo: Option<Image>,
|
||||
comment1: Option<Image>,
|
||||
comment2: Option<Image>,
|
||||
}
|
||||
|
||||
impl<'a> App<'a> {
|
||||
|
|
@ -18,16 +22,62 @@ impl<'a> App<'a> {
|
|||
board: Board::new(settings),
|
||||
number_renderer: None,
|
||||
settings: settings,
|
||||
|
||||
logo: None,
|
||||
comment1: None,
|
||||
comment2: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> App<'a> {
|
||||
fn render_ui(&self, c: &Context, gl: &mut Gl) {
|
||||
// logo
|
||||
c.trans(self.settings.board_padding, self.settings.board_padding)
|
||||
.image(self.logo.unwrap())
|
||||
.rgb(self.settings.text_dark_color[0],
|
||||
self.settings.text_dark_color[1],
|
||||
self.settings.text_dark_color[2])
|
||||
.draw(gl);
|
||||
|
||||
c.view()
|
||||
.rect(self.settings.best_rect[0],
|
||||
self.settings.best_rect[1],
|
||||
self.settings.best_rect[2],
|
||||
self.settings.best_rect[3])
|
||||
.rgba(self.settings.label_color[0],
|
||||
self.settings.label_color[1],
|
||||
self.settings.label_color[2],
|
||||
1.0)
|
||||
.fill(gl);
|
||||
|
||||
self.render_comment(self.comment1.get_ref(), self.settings.comment1_offset_y, c, gl);
|
||||
self.render_comment(self.comment2.get_ref(), self.settings.comment2_offset_y, c, gl);
|
||||
}
|
||||
|
||||
fn render_comment(&self, comment: &Image, y: f64, c: &Context, gl: &mut Gl) {
|
||||
let w = self.settings.window_size[0] as f64 - 2.0 * self.settings.board_padding;
|
||||
let h = comment.texture_height as f64 * w / comment.texture_width as f64;
|
||||
c.rect(self.settings.board_padding, y, w, h)
|
||||
.image(*comment)
|
||||
.rgb(self.settings.text_dark_color[0],
|
||||
self.settings.text_dark_color[1],
|
||||
self.settings.text_dark_color[2])
|
||||
.draw(gl);
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Game for App<'a> {
|
||||
fn load(&mut self, asset_store: &mut AssetStore) {
|
||||
self.number_renderer = Some(NumberRenderer::new(asset_store));
|
||||
|
||||
self.logo = Some(asset_store.load_image("logo.png").unwrap());
|
||||
self.comment1 = Some(asset_store.load_image("comment1.png").unwrap());
|
||||
self.comment2 = Some(asset_store.load_image("comment2.png").unwrap());
|
||||
}
|
||||
|
||||
fn render(&self, _ext_dt: f64, c: &Context, gl: &mut Gl) {
|
||||
self.render_ui(c, gl);
|
||||
self.board.render(self.number_renderer.get_ref(), c, gl);
|
||||
}
|
||||
|
||||
|
|
|
|||
10
src/board.rs
10
src/board.rs
|
|
@ -92,16 +92,6 @@ impl<'a> Board<'a> {
|
|||
}
|
||||
|
||||
pub fn render(&self, number_renderer: &NumberRenderer, c: &Context, gl: &mut Gl) {
|
||||
c.view()
|
||||
.rect(self.settings.best_rect[0],
|
||||
self.settings.best_rect[1],
|
||||
self.settings.best_rect[2],
|
||||
self.settings.best_rect[3])
|
||||
.rgba(self.settings.label_color[0],
|
||||
self.settings.label_color[1],
|
||||
self.settings.label_color[2],
|
||||
1.0)
|
||||
.fill(gl);
|
||||
number_renderer.render(
|
||||
self.score as u32,
|
||||
self.settings.best_rect[0] + self.settings.best_rect[2] / 2.0,
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ pub struct Settings {
|
|||
pub asset_folder: String,
|
||||
pub window_size: [u32, ..2],
|
||||
pub window_background_color: [f32, ..3],
|
||||
pub comment1_offset_y: f64,
|
||||
pub comment2_offset_y: f64,
|
||||
pub board_padding: f64,
|
||||
pub board_size: [f64, ..2],
|
||||
pub board_offset_y: f64,
|
||||
|
|
@ -57,6 +59,8 @@ impl Settings {
|
|||
}
|
||||
Settings {
|
||||
asset_folder: s.asset_folder.clone(),
|
||||
comment1_offset_y: s.comment1_offset_y,
|
||||
comment2_offset_y: s.comment2_offset_y,
|
||||
window_size: [
|
||||
(s.board_padding * 2.0 + board_size[0]) as u32,
|
||||
(s.board_padding * 2.0 + board_size[1] + s.board_offset_y) as u32,
|
||||
|
|
@ -130,6 +134,9 @@ struct SettingsInJson {
|
|||
// r g b (0 - 255)
|
||||
window_background_color: Vec<f32>,
|
||||
|
||||
comment1_offset_y: f64,
|
||||
comment2_offset_y: f64,
|
||||
|
||||
board_padding: f64,
|
||||
board_offset_y: f64,
|
||||
|
||||
|
|
@ -180,6 +187,8 @@ impl SettingsInJson {
|
|||
SettingsInJson {
|
||||
asset_folder: "assets".to_strbuf(),
|
||||
window_background_color: vec![255.0, 248.0, 239.0],
|
||||
comment1_offset_y: 72.0,
|
||||
comment2_offset_y: 100.0,
|
||||
board_padding: 12.0,
|
||||
board_offset_y: 128.0,
|
||||
tile_width: 4,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue