From 5b7a331c7fd6a359bdfe333eda4491e574beaf9c Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Mon, 12 Jul 2021 17:35:57 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + Cargo.lock | 55 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 9 +++++++ arial10x10.png | Bin 0 -> 14870 bytes src/main.rs | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 arial10x10.png create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..395ec46 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,55 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bitflags" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a6577517ecd0ee0934f48a7295a89aaef3e6dfafeac404f94c0b3448518ddfe" + +[[package]] +name = "cc" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" + +[[package]] +name = "lazy_static" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf186d1a8aa5f5bee5fd662bc9c1b949e0259e1bcc379d1f006847b0080c7417" + +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "roguelike" +version = "0.1.0" +dependencies = [ + "tcod", +] + +[[package]] +name = "tcod" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44e518b0661949712e8dbc6d6d9d7c00a405dd88bc539102c1edfc2d22e5e144" +dependencies = [ + "bitflags", + "lazy_static", + "tcod-sys", +] + +[[package]] +name = "tcod-sys" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730fb27d2261f7c860ae7a61c3ae70277f0836173ceeccb594193abb4fa5f4aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..0d440b6 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "roguelike" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tcod = "*" diff --git a/arial10x10.png b/arial10x10.png new file mode 100644 index 0000000000000000000000000000000000000000..64691f1bbd47ca4f7346f8d502efccfb8a325ece GIT binary patch literal 14870 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 xcMxV@m& bool { + use tcod::input::Key; + use tcod::input::KeyCode::*; + + // todo: handle keys + let key = tcod.root.wait_for_keypress(true); + match key { + Key { + code: Enter, + alt: true, + .. + } => { + // Alt+Enter: toggle fullscreen + let fullscreen = tcod.root.is_fullscreen(); + tcod.root.set_fullscreen(!fullscreen); + } + Key { code: Escape, .. } => return true, // exit game + + Key { code: Up, .. } => *player_y -= 1, + Key { code: Down, .. } => *player_y += 1, + Key { code: Left, .. } => *player_x -= 1, + Key { code: Right, .. } => *player_x += 1, + + _ => {} + } + false +} + +fn main() { + tcod::system::set_fps(FPS); + + let root = Root::initializer() + .font("arial10x10.png", FontLayout::Tcod) + .font_type(FontType::Greyscale) + .size(SCREEN_WIDTH, SCREEN_HEIGHT) + .title("Rust/libtcod tutorial") + .init(); + + let mut tcod = Tcod { root }; + + let mut player_x = SCREEN_WIDTH / 2; + let mut player_y = SCREEN_HEIGHT / 2; + + while !tcod.root.window_closed() { + tcod.root.set_default_foreground(WHITE); + tcod.root.clear(); + tcod.root + .put_char(player_x, player_y, '@', BackgroundFlag::None); + tcod.root.flush(); + tcod.root.wait_for_keypress(true); + let exit = handle_keys(&mut tcod, &mut player_x, &mut player_y); + if exit { + break; + } + } +}