Compare commits

...

2 Commits

Author SHA1 Message Date
5e6d57ab71 Use all features in CI.
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-22 10:43:53 -06:00
f02e263749 feat: Add optional map serialization. 2023-02-22 10:41:49 -06:00
4 changed files with 15 additions and 3 deletions

View File

@ -9,8 +9,8 @@ steps:
commands: commands:
- rustup component add clippy rustfmt - rustup component add clippy rustfmt
- cargo fmt --check - cargo fmt --check
- cargo test - cargo test --all-features
- cargo clippy - cargo clippy --all-features
- name: release - name: release
image: rust image: rust
pull: always pull: always

View File

@ -11,6 +11,7 @@ edition = "2021"
[dependencies] [dependencies]
rand = "0.8" rand = "0.8"
serde = { version = "1", optional = true, features = ["derive"]}
[package.metadata.release] [package.metadata.release]
publish = false publish = false

View File

@ -1,8 +1,12 @@
//! Support function for 2D geometry //! Support function for 2D geometry
//! //!
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
/// Position on the map /// Position on the map
#[derive(Default, PartialEq, Copy, Clone, Debug, Eq, Hash)] #[derive(Default, PartialEq, Copy, Clone, Debug, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct Point { pub struct Point {
pub x: usize, pub x: usize,
pub y: usize, pub y: usize,
@ -29,6 +33,7 @@ impl Point {
/// Rectangle region on the map /// Rectangle region on the map
#[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)] #[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct Rect { pub struct Rect {
pub x1: usize, pub x1: usize,
pub x2: usize, pub x2: usize,

View File

@ -7,10 +7,15 @@
//! specific game. //! specific game.
//! //!
use super::geometry::{usize_abs, Point, Rect};
use std::fmt; use std::fmt;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use crate::geometry::{usize_abs, Point, Rect};
#[derive(PartialEq, Copy, Clone, Debug, Eq, Hash)] #[derive(PartialEq, Copy, Clone, Debug, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct Tile { pub struct Tile {
is_blocked: bool, is_blocked: bool,
index: usize, index: usize,
@ -30,6 +35,7 @@ pub struct NoData;
/// Map data /// Map data
#[derive(Default, Clone)] #[derive(Default, Clone)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct Map<D: Clone + Default> { pub struct Map<D: Clone + Default> {
pub tiles: Vec<Tile>, pub tiles: Vec<Tile>,
pub width: usize, pub width: usize,