cellular-automata/lib/src/Cell.dart

33 lines
783 B
Dart
Raw Normal View History

import 'package:rules_of_living/src/Rule.dart';
2018-07-05 15:59:11 +00:00
class Cell {
bool state;
bool nextState = false;
2018-07-05 15:59:11 +00:00
List<Rule> surviveRules = new List<Rule>();
List<Rule> birthRules = new List<Rule>();
/// For determining if render updates are necessary in [Grid].render() function
bool dirty = false;
2018-07-05 15:59:11 +00:00
Cell([bool state = false]) : this.state = state;
void advanceState() {
this.state = this.nextState;
this.nextState = false;
this.dirty = true;
}
2018-07-05 15:59:11 +00:00
void update(int neighbors) {
if (state == true) {
2018-07-07 18:49:02 +00:00
surviveRules.forEach((Rule rule) {
if (rule.evaluate(neighbors) == true) this.nextState = true;
2018-07-05 15:59:11 +00:00
});
} else {
birthRules.forEach((Rule rule) {
if (rule.evaluate(neighbors) == true) this.nextState = true;
2018-07-05 15:59:11 +00:00
});
}
}
}