save & load rulesets
This commit is contained in:
parent
37f8edb5c1
commit
738e22bd4a
6 changed files with 320 additions and 29 deletions
|
@ -7,3 +7,5 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
rand = "0.8.5"
|
||||
serde = "1.0.200"
|
||||
serde_json = "1.0.116"
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use rand::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub const CHUNK_SIZE: usize = 32;
|
||||
|
||||
#[derive(Default, Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Default, Debug, PartialEq, Clone, Copy, Serialize, Deserialize)]
|
||||
pub struct Cell(pub u16);
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -16,9 +17,10 @@ pub struct Chunk {
|
|||
pub contents: Box<[[Cell; CHUNK_SIZE]; CHUNK_SIZE]>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct Rule {
|
||||
base: SubRule,
|
||||
#[serde(skip)]
|
||||
variants: Vec<SubRule>,
|
||||
pub enabled: bool,
|
||||
// probability: u8
|
||||
|
@ -27,7 +29,7 @@ pub struct Rule {
|
|||
pub rotate: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
struct SubRule {
|
||||
width: usize,
|
||||
height: usize,
|
||||
|
@ -287,6 +289,12 @@ impl Dish {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn update_rules(&mut self) {
|
||||
for rule in &mut self.rules {
|
||||
rule.generate_variants();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn fire_blindly(&mut self) {
|
||||
if self.rules.is_empty() {
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue