pub struct WorldGrid {
pub grid: HexGrid,
pub world_size_type: WorldSizeType,
}Expand description
Represents a game world composed of grids.
Combines physical grid representation with logical world size classification for map generation and game scaling purposes.
§Instantiation
WorldGrid instances can only be created through two supported methods:
WorldGrid::from_gridconstructor - Creates from a custom-sized grid, automatically determining theWorldSizeTypebased on grid dimensions:
use civ_map_generator::grid::*;
use civ_map_generator::map_parameters::*;
let grid = HexGrid::new(
Size { width: 80, height: 40 }, // Custom grid size
HexLayout {
orientation: HexOrientation::Flat,
size: [8., 8.],
origin: [0., 0.],
}, // Hex layout
Offset::Odd, // Odd offset for hexagonal grid
WrapFlags::WrapX, // Wrap horizontally
);
let world_grid = WorldGrid::from_grid(grid);- Explicit
WorldSizeTypespecification - Creates with default grid dimensions for a standardized world size:
use civ_map_generator::grid::*;
use civ_map_generator::map_parameters::*;
let world_size_type = WorldSizeType::Standard;
let grid = HexGrid::new(
HexGrid::default_size(world_size_type), // Default dimensions based on world size classification
HexLayout {
orientation: HexOrientation::Flat,
size: [8., 8.],
origin: [0., 0.],
}, // Hex layout
Offset::Odd, // Odd offset for hexagonal grid
WrapFlags::WrapX, // Wrap horizontally
);
let world_grid = WorldGrid::new(grid, world_size_type);Fields§
§grid: HexGrid§world_size_type: WorldSizeTypeImplementations§
Source§impl WorldGrid
impl WorldGrid
Sourcepub fn new(grid: HexGrid, world_size: WorldSizeType) -> Self
pub fn new(grid: HexGrid, world_size: WorldSizeType) -> Self
Creates a new WorldGrid with the specified grid and world size.
§Notes
Before calling this function, ensure that the grid’s size matches the specified world size.
This check is performed at runtime through debug_assert!, which only activates in debug mode.
§Usage
This function should be used exclusively with the initialization syntax shown below.
Direct initialization with the new function outside of this pattern is not supported:
use civ_map_generator::grid::*;
use civ_map_generator::map_parameters::*;
let world_size_type = WorldSizeType::Standard;
let grid = HexGrid::new(
HexGrid::default_size(world_size_type), // Default dimensions based on world size classification
HexLayout {
orientation: HexOrientation::Flat,
size: [8., 8.],
origin: [0., 0.],
}, // Hex layout
Offset::Odd, // Odd offset for hexagonal grid
WrapFlags::WrapX, // Wrap horizontally
);
let world_grid = WorldGrid::new(grid, world_size_type);pub fn from_grid(grid: HexGrid) -> Self
Sourcepub fn world_size(&self) -> WorldSizeType
pub fn world_size(&self) -> WorldSizeType
Get the world size of the grid.
Trait Implementations§
impl Copy for WorldGrid
impl StructuralPartialEq for WorldGrid
Auto Trait Implementations§
impl Freeze for WorldGrid
impl RefUnwindSafe for WorldGrid
impl Send for WorldGrid
impl Sync for WorldGrid
impl Unpin for WorldGrid
impl UnsafeUnpin for WorldGrid
impl UnwindSafe for WorldGrid
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().