something that looks halfway ok
This commit is contained in:
parent
e0c020bbd3
commit
c2c9d9b3e3
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
export var xsize = 16
|
export var xsize = 256
|
||||||
export var ysize = 16
|
export var ysize = 256
|
||||||
export var zsize = 3
|
export var zsize = 3
|
||||||
export var cityname = "night city"
|
export var cityname = "night city"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use gdnative::prelude::*;
|
use gdnative::prelude::*;
|
||||||
use rand::prelude::StdRng;
|
use rand::prelude::StdRng;
|
||||||
use rand::prelude::*;
|
use rand::seq::SliceRandom;
|
||||||
use rand_seeder::Seeder;
|
use rand_seeder::Seeder;
|
||||||
|
|
||||||
mod tiles;
|
mod tiles;
|
||||||
|
@ -37,14 +37,30 @@ impl World {
|
||||||
|
|
||||||
// fill edges with water
|
// fill edges with water
|
||||||
for x in 0..self.ysize {
|
for x in 0..self.ysize {
|
||||||
self.tiles[x][0][0] = tiles::Tiletypes::WaterSlab;
|
self.tiles[x][0][0] = tiles::Tiletypes::WaterSlab;
|
||||||
self.tiles[x][self.ysize - 1][0] = tiles::Tiletypes::WaterSlab;
|
self.tiles[x][self.ysize - 1][0] = tiles::Tiletypes::WaterSlab;
|
||||||
}
|
}
|
||||||
for y in 0..self.xsize {
|
for y in 0..self.xsize {
|
||||||
self.tiles[0][y][0] = tiles::Tiletypes::WaterSlab;
|
self.tiles[0][y][0] = tiles::Tiletypes::WaterSlab;
|
||||||
self.tiles[self.xsize - 1][y][0] = tiles::Tiletypes::WaterSlab;
|
self.tiles[self.xsize - 1][y][0] = tiles::Tiletypes::WaterSlab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for x in 1..self.xsize - 1 {
|
||||||
|
for y in 1..self.ysize - 1 {
|
||||||
|
if self.tile_is_next_to(x, y, 0, tiles::Tiletypes::WaterSlab){
|
||||||
|
let available = vec![tiles::Tiletypes::WaterSlab, tiles::Tiletypes::Sand];
|
||||||
|
self.tiles[x][y][0] = available.choose(&mut rng).unwrap().to_owned();
|
||||||
|
}
|
||||||
|
else if self.tile_is_next_to(x, y, 0, tiles::Tiletypes::Sand) {
|
||||||
|
let available = vec![tiles::Tiletypes::Grass, tiles::Tiletypes::Sand];
|
||||||
|
self.tiles[x][y][0] = available.choose(&mut rng).unwrap().to_owned();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.tiles[x][y][0] = tiles::Tiletypes::Air;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut ret: Vector3Array = Vector3Array::new();
|
let mut ret: Vector3Array = Vector3Array::new();
|
||||||
for x in 0..self.xsize {
|
for x in 0..self.xsize {
|
||||||
for y in 0..self.ysize {
|
for y in 0..self.ysize {
|
||||||
|
@ -56,6 +72,17 @@ impl World {
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn tile_is_next_to(&self, x: usize, y: usize, z: usize, neighbor: tiles::Tiletypes) -> bool {
|
||||||
|
if self.tiles[x - 1][y - 1][z] == neighbor
|
||||||
|
|| self.tiles[x - 1][y][z] == neighbor
|
||||||
|
|| self.tiles[x][y + 1][z] == neighbor
|
||||||
|
|| self.tiles[x + 1][y + 1][z] == neighbor
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
pub fn new(xsize: usize, ysize: usize, zsize: usize, seed: String) -> World {
|
pub fn new(xsize: usize, ysize: usize, zsize: usize, seed: String) -> World {
|
||||||
World {
|
World {
|
||||||
xsize,
|
xsize,
|
||||||
|
|
Loading…
Reference in New Issue