Skip to main content

vitium_api/game/components/
pos.rs

1use std::num::Wrapping;
2
3use bevy_ecs::component::Component;
4use serde::{Deserialize, Serialize};
5
6/// Defines coordinate for characters.
7#[derive(Clone, Copy, PartialEq, Serialize, Deserialize, Component)]
8#[cfg_attr(target_family = "wasm", derive(tsify_next::Tsify))]
9#[cfg_attr(
10    target_family = "wasm",
11    tsify(into_wasm_abi, from_wasm_abi, large_number_types_as_bigints)
12)]
13pub struct Pos {
14    /// The scene the character is in.
15    #[cfg_attr(target_family = "wasm", tsify(type = "bigint"))]
16    pub scene: u64,
17    /// Coordinate with respect to scene origin.
18    pub coord: (f32, f32),
19}
20
21/// Define a position on the tilemap.
22#[derive(Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Component)]
23#[cfg_attr(target_family = "wasm", derive(tsify_next::Tsify))]
24#[cfg_attr(
25    target_family = "wasm",
26    tsify(into_wasm_abi, from_wasm_abi, large_number_types_as_bigints)
27)]
28pub struct TilePos(
29    #[cfg_attr(target_family = "wasm", tsify(type = "number"))] pub Wrapping<i16>,
30    #[cfg_attr(target_family = "wasm", tsify(type = "number"))] pub Wrapping<i16>,
31);