clean up generation

This commit is contained in:
zoe 2022-05-19 19:12:10 +02:00
parent 8a98462f69
commit cf27ccca4b
3 changed files with 11 additions and 9 deletions

Binary file not shown.

View File

@ -1,5 +1,7 @@
use gdnative::prelude::*; use gdnative::prelude::*;
use self::gen::GameRng;
mod saves; mod saves;
mod world; mod world;
mod gen; mod gen;
@ -8,6 +10,7 @@ mod gen;
#[inherit(Node)] #[inherit(Node)]
#[register_with(Self::register)] #[register_with(Self::register)]
pub struct StateServer { pub struct StateServer {
rng: GameRng,
world: world::World, world: world::World,
} }
@ -15,7 +18,8 @@ pub struct StateServer {
impl StateServer { impl StateServer {
fn new(_owner: &Node) -> Self { fn new(_owner: &Node) -> Self {
StateServer { StateServer {
world: world::World::new(0, 0, 0, gen::get_rng("seed".to_string())), world: world::World::new(0, 0, 0),
rng: gen::get_rng("seed".to_string())
} }
} }
@ -34,8 +38,9 @@ impl StateServer {
#[export] #[export]
fn generate_world(&mut self, _owner: &Node, xsize: usize, ysize: usize, zsize: usize, seed: String) { fn generate_world(&mut self, _owner: &Node, xsize: usize, ysize: usize, zsize: usize, seed: String) {
self.world = world::World::new(xsize, ysize, zsize, gen::get_rng(seed)); self.rng = gen::get_rng(seed);
let w = self.world.generate(); self.world = world::World::new(xsize, ysize, zsize);
let w = self.world.generate(&mut self.rng);
_owner.emit_signal("request_init", &[]); _owner.emit_signal("request_init", &[]);
_owner.emit_signal("changed_tiletypes", &[Variant::new(&w)]); _owner.emit_signal("changed_tiletypes", &[Variant::new(&w)]);
} }

View File

@ -2,7 +2,6 @@ use gdnative::prelude::*;
use self::gen::GameRng; use self::gen::GameRng;
mod gen; mod gen;
mod tiles; mod tiles;
@ -11,7 +10,6 @@ pub struct World {
pub ysize: usize, pub ysize: usize,
pub zsize: usize, pub zsize: usize,
tiles: Vec<Vec<Vec<tiles::Tiletypes>>>, tiles: Vec<Vec<Vec<tiles::Tiletypes>>>,
rng: GameRng,
attributes: tiles::Attributelists, attributes: tiles::Attributelists,
} }
@ -32,9 +30,9 @@ impl World {
true true
} }
pub fn generate(&mut self) -> Vector3Array { pub fn generate(&mut self, rng: &mut GameRng) -> Vector3Array {
self.tiles = get_vec3(self.xsize, self.ysize, self.zsize); self.tiles = get_vec3(self.xsize, self.ysize, self.zsize);
let noisemap = gen::get_noise(&mut self.rng, (self.xsize, self.ysize)); let noisemap = gen::get_noise(rng, (self.xsize, self.ysize));
let mut ret: Vector3Array = Vector3Array::new(); let mut ret: Vector3Array = Vector3Array::new();
for x in 0..self.xsize { for x in 0..self.xsize {
@ -92,13 +90,12 @@ impl World {
positions positions
} }
pub fn new(xsize: usize, ysize: usize, zsize: usize, rng: GameRng) -> World { pub fn new(xsize: usize, ysize: usize, zsize: usize) -> World {
World { World {
xsize, xsize,
ysize, ysize,
zsize, zsize,
tiles: get_vec3(xsize, ysize, zsize), tiles: get_vec3(xsize, ysize, zsize),
rng,
attributes: tiles::Attributelists::new(), attributes: tiles::Attributelists::new(),
} }
} }