main.rs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. use ggez::{Context, GameError, event::EventHandler};
  2. struct State {
  3. board: carpet::Board,
  4. }
  5. impl EventHandler for State {
  6. fn draw(&mut self, ctx: &mut Context) -> Result<(), GameError> {
  7. ggez::graphics::clear(ctx, ggez::graphics::BLACK);
  8. self.board.draw(ctx)?;
  9. ggez::graphics::present(ctx)
  10. }
  11. fn update(&mut self, _ctx: &mut Context) -> Result<(), GameError> {
  12. Ok(())
  13. }
  14. }
  15. fn main() -> Result<(), GameError> {
  16. let (mut ctx, mut evloop) = ggez::ContextBuilder::new("game", "me")
  17. .add_resource_path({
  18. let base = std::env::var("CARGO_MANIFEST_DIR").unwrap();
  19. let mut path = std::path::PathBuf::from(base);
  20. path.push("resources");
  21. path
  22. })
  23. .window_mode(ggez::conf::WindowMode {
  24. width: 80.0 * 8.0,
  25. height: 50.0 * 8.0,
  26. ..ggez::conf::WindowMode::default()
  27. })
  28. .build()?;
  29. let tileset = carpet::Tileset::from_file(&mut ctx, [8,8], "/terminal8x8.jpg")?;
  30. let mut board = carpet::Board::new([80,50], tileset);
  31. board.print([1, 1], "Hello, world!");
  32. let mut state = State { board };
  33. ggez::event::run(&mut ctx, &mut evloop, &mut state)
  34. }