Add some world defs

This commit is contained in:
crumblingstatue 2023-04-01 20:12:09 +02:00
parent 608f8f9f9f
commit d78726eb5b
6 changed files with 61 additions and 0 deletions

16
src/game.rs Normal file
View file

@ -0,0 +1,16 @@
use crate::{math::WorldPos, world::World};
pub struct GameState {
transient: TransientGameState,
persistent: PersistentGameState,
}
/// Transient game state, not saved to disk
pub struct TransientGameState {
camera_offset: WorldPos,
}
/// Persistent game state, saved to disk
pub struct PersistentGameState {
world: World,
}

View file

@ -1,5 +1,8 @@
mod app;
mod game;
mod graphics;
mod math;
mod world;
use app::App;

6
src/math.rs Normal file
View file

@ -0,0 +1,6 @@
pub type WorldPosScalar = i32;
pub struct WorldPos {
x: WorldPosScalar,
y: WorldPosScalar,
}

28
src/world.rs Normal file
View file

@ -0,0 +1,28 @@
use fnv::FnvHashMap;
type ChunkPosScalar = i16;
#[derive(Hash)]
struct ChunkPos {
x: ChunkPosScalar,
y: ChunkPosScalar,
}
pub struct World {
chunks: FnvHashMap<ChunkPos, Chunk>,
}
const CHUNK_EXTENT: u16 = 256;
const CHUNK_N_BLOCKS: usize = CHUNK_EXTENT as usize * CHUNK_EXTENT as usize;
type ChunkBlocks = [Block; CHUNK_N_BLOCKS];
pub struct Chunk {
blocks: ChunkBlocks,
}
type BlockId = u16;
pub struct Block {
id: BlockId,
}