mirror of
https://github.com/kristoferssolo/hexlab.git
synced 2025-10-21 19:40:34 +00:00
90 lines
2.1 KiB
Markdown
90 lines
2.1 KiB
Markdown
# Hexlab
|
|
|
|
<!-- toc -->
|
|
|
|
- [Features](#features)
|
|
- [Installation](#installation)
|
|
- [Getting Started](#getting-started)
|
|
- [Usage](#usage)
|
|
- [Documentation](#documentation)
|
|
- [Contributing](#contributing)
|
|
- [Acknowledgements](#acknowledgements)
|
|
- [License](#license)
|
|
|
|
<!-- tocstop -->
|
|
|
|
Hexlab is a Rust library for generating and manipulating hexagonal mazes.
|
|
|
|
## Features
|
|
|
|
- Create hexagonal mazes of configurable size
|
|
- Customizable maze properties (radius, start position, seed)
|
|
- Efficient bit-flag representation of walls for optimized memory usage
|
|
- Multiple maze generation algorithms (WIP)
|
|
- Maze builder pattern for easy and flexible maze creation
|
|
|
|
## Installation
|
|
|
|
Add `hexlab` as a dependency:
|
|
|
|
```sh
|
|
cargo add hexlab
|
|
```
|
|
|
|
## Getting Started
|
|
|
|
```rust
|
|
use hexlab::prelude::*;
|
|
|
|
fn main() {
|
|
// Create a new maze with radius 5
|
|
let maze = MazeBuilder::new()
|
|
.with_radius(5)
|
|
.build()
|
|
.expect("Failed to create maze");
|
|
println!("Maze size: {}", maze.len());
|
|
}
|
|
```
|
|
|
|
## Usage
|
|
|
|
```rust
|
|
use hexlab::prelude::*;
|
|
|
|
// Create a new maze
|
|
let maze = MazeBuilder::new()
|
|
.with_radius(5)
|
|
.build()
|
|
.expect("Failed to create maze");
|
|
|
|
// Get a specific tile
|
|
let tile = maze.get_tile(&Hex::new(1, -1)).unwrap();
|
|
|
|
// Check if a wall exists
|
|
let has_wall = tile.walls().contains(EdgeDirection::FLAT_NORTH);
|
|
```
|
|
|
|
## Documentation
|
|
|
|
Full documentation is available at [docs.rs](https://docs.rs/hexlab).
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
## Acknowledgements
|
|
|
|
Hexlab relies on the excellent [hexx](https://github.com/ManevilleF/hexx)
|
|
library for handling hexagonal grid mathematics, coordinates, and related
|
|
operations. We're grateful for the robust foundation it provides for working
|
|
with hexagonal grids.
|
|
|
|
## License
|
|
|
|
This project is dual-licensed under either:
|
|
|
|
- MIT License ([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
|
|
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0))
|
|
|
|
at your option.
|