From de3b20b1bec237c50c566f4f4374decbdb472b87 Mon Sep 17 00:00:00 2001 From: Thorsten Lorenz Date: Thu, 23 Jul 2020 23:16:54 -0600 Subject: [PATCH] chore: minor changes + conf --- Cargo.toml | 5 ++++ bin/generate_conf.rs | 11 +++++++++ resources/conf.toml | 27 +++++++++++++++++++++ resources/icons/app-icon.png | Bin 0 -> 37843 bytes src/main.rs | 44 +++++++++++++---------------------- 5 files changed, 59 insertions(+), 28 deletions(-) create mode 100644 bin/generate_conf.rs create mode 100644 resources/conf.toml create mode 100644 resources/icons/app-icon.png diff --git a/Cargo.toml b/Cargo.toml index d92b4d7..925c340 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,8 @@ edition = "2018" [dependencies] ggez = "0.5.1" cgmath = { version = "0.17", features = ["mint"]} + + +[[bin]] +name="generate_conf" +path="./bin/generate_conf.rs" diff --git a/bin/generate_conf.rs b/bin/generate_conf.rs new file mode 100644 index 0000000..475b76c --- /dev/null +++ b/bin/generate_conf.rs @@ -0,0 +1,11 @@ +use std::fs::File; + +use ggez; + +pub fn main() -> ggez::GameResult { + let conf = ggez::conf::Conf::new(); + let mut config_file = File::create("conf.toml")?; + conf.to_toml_file(&mut config_file); + println!("Generated conf.toml"); + Ok(()) +} diff --git a/resources/conf.toml b/resources/conf.toml new file mode 100644 index 0000000..8ac6a4c --- /dev/null +++ b/resources/conf.toml @@ -0,0 +1,27 @@ +[window_mode] +width = 800.0 +height = 600.0 +maximized = false +fullscreen_type = "Windowed" +borderless = false +min_width = 0.0 +min_height = 0.0 +max_width = 0.0 +max_height = 0.0 +resizable = true + +[window_setup] +title = "batufo" +samples = "Zero" +vsync = true +icon = "/icons/app-icon.png" +srgb = true + +[backend] +type = "OpenGL" +major = 3 +minor = 2 + +[modules] +gamepad = false +audio = true diff --git a/resources/icons/app-icon.png b/resources/icons/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0f1b1e06149f0a469e83641ff0be16ad737a67 GIT binary patch literal 37843 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 literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index 02ed917..3979cb9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,37 +1,28 @@ //! Basic hello world example. +use std::env; +use std::path; + use cgmath; use ggez; - use ggez::event; use ggez::graphics; use ggez::{Context, GameResult}; -use std::env; -use std::path; -// First we make a structure to contain the game's state struct MainState { frames: usize, - text: graphics::Text, + font: graphics::Font, } impl MainState { fn new(ctx: &mut Context) -> GameResult { - // The ttf file will be in your resources directory. Later, we - // will mount that directory so we can omit it in the path here. let font = graphics::Font::new(ctx, "/fonts/RobotoMono.ttf")?; - let text = graphics::Text::new(("Hello world!", font, 48.0)); - let s = MainState { frames: 0, text }; + let s = MainState { frames: 0, font }; Ok(s) } } -// Then we implement the `ggez:event::EventHandler` trait on it, which -// requires callbacks for updating and drawing the game state each frame. -// -// The `EventHandler` trait also contains callbacks for event handling -// that you can override if you wish, but the defaults are fine. impl event::EventHandler for MainState { fn update(&mut self, _ctx: &mut Context) -> GameResult { Ok(()) @@ -40,10 +31,15 @@ impl event::EventHandler for MainState { fn draw(&mut self, ctx: &mut Context) -> GameResult { graphics::clear(ctx, [0.1, 0.2, 0.3, 1.0].into()); - // Drawables are drawn from their top-left corner. let offset = self.frames as f32 / 10.0; let dest_point = cgmath::Point2::new(offset, offset); - graphics::draw(ctx, &self.text, (dest_point,))?; + let text = graphics::Text::new(( + format!("Frame: {}, Hello world! at {}", self.frames, offset), + self.font, + 48.0, + )); + + graphics::draw(ctx, &text, (dest_point,))?; graphics::present(ctx)?; self.frames += 1; @@ -55,17 +51,7 @@ impl event::EventHandler for MainState { } } -// Now our main function, which does three things: -// -// * First, create a new `ggez::ContextBuilder` -// object which contains configuration info on things such -// as screen resolution and window title. -// * Second, create a `ggez::game::Game` object which will -// do the work of creating our MainState and running our game. -// * Then, just call `game.run()` which runs the `Game` mainloop. pub fn main() -> GameResult { - // We add the CARGO_MANIFEST_DIR/resources to the resource paths - // so that ggez will look in our cargo project directory for files. let resource_dir = if let Ok(manifest_dir) = env::var("CARGO_MANIFEST_DIR") { let mut path = path::PathBuf::from(manifest_dir); path.push("resources"); @@ -74,8 +60,10 @@ pub fn main() -> GameResult { path::PathBuf::from("./resources") }; - let cb = ggez::ContextBuilder::new("helloworld", "ggez").add_resource_path(resource_dir); - let (ctx, event_loop) = &mut cb.build()?; + let context_builder = ggez::ContextBuilder::new("batufo", "Thorsten Lorenz") + .with_conf_file(true) + .add_resource_path(resource_dir); + let (ctx, event_loop) = &mut context_builder.build()?; let state = &mut MainState::new(ctx)?; event::run(ctx, event_loop, state)