From 8b2a972202b9d0adee5d3cae8e6694e65c6251df Mon Sep 17 00:00:00 2001 From: Coeuvre Date: Tue, 27 May 2014 13:26:12 +0800 Subject: [PATCH] Rendering UI --- bin/assets/comment1.png | Bin 0 -> 20736 bytes bin/assets/comment2.png | Bin 0 -> 20577 bytes bin/assets/logo.png | Bin 0 -> 19001 bytes src/app.rs | 50 ++++++++++++++++++++++++++++++++++++++++ src/board.rs | 10 -------- src/settings.rs | 9 ++++++++ 6 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 bin/assets/comment1.png create mode 100644 bin/assets/comment2.png create mode 100644 bin/assets/logo.png diff --git a/bin/assets/comment1.png b/bin/assets/comment1.png new file mode 100644 index 0000000000000000000000000000000000000000..57218c71cd441a7776ca6dfaf57a7f31f3fbc604 GIT binary patch literal 20736 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 bRTL;oFB3MOHF2jLUjaQWBh7qun^XS*p?dc{ literal 0 HcmV?d00001 diff --git a/bin/assets/comment2.png b/bin/assets/comment2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc56c4c1933247655149a67812abbc35d21f18b9 GIT binary patch literal 20577 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 literal 0 HcmV?d00001 diff --git a/bin/assets/logo.png b/bin/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..00bdbab63d93028bc3e43c37c2cca092a1d89e24 GIT binary patch literal 19001 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 literal 0 HcmV?d00001 diff --git a/src/app.rs b/src/app.rs index 4d04f92..7abad63 100644 --- a/src/app.rs +++ b/src/app.rs @@ -10,6 +10,10 @@ pub struct App<'a> { board: Board<'a>, number_renderer: Option, settings: &'a Settings, + + logo: Option, + comment1: Option, + comment2: Option, } 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); } diff --git a/src/board.rs b/src/board.rs index 9ec25b1..98cd604 100644 --- a/src/board.rs +++ b/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, diff --git a/src/settings.rs b/src/settings.rs index 1c970a2..363e3c6 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -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, + 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,