diff --git a/lib/service/configuration_service.dart b/lib/service/configuration_service.dart index e11a5e8..045e66c 100644 --- a/lib/service/configuration_service.dart +++ b/lib/service/configuration_service.dart @@ -2,15 +2,17 @@ import 'dart:html' as html; import 'dart:math'; import 'package:rules_of_living/service/engine_service.dart'; +import 'package:rules_of_living/service/simulation_service.dart'; class ConfigurationService { - final EngineService _es; + final EngineService _engine; + final SimulationService _sim; bool showGrid; int _simSpeed; - ConfigurationService(this._es) { + ConfigurationService(this._engine, this._sim) { showGrid = false; simSpeed = 5; } @@ -23,21 +25,20 @@ class ConfigurationService { int get simSpeed => _simSpeed; void set simSpeed(int val) { _simSpeed = val; - _es.engine.stepsPerSecond = simSpeed; + //TODO make method in EngineService to respect Demeter + _engine.engine.stepsPerSecond = simSpeed; } - void set canvas(html.CanvasElement canvas) => _es.engine.canvas = canvas; - html.CanvasElement get canvas => _es.engine.canvas; + void set canvas(html.CanvasElement canvas) => _engine.engine.canvas = canvas; + html.CanvasElement get canvas => _engine.engine.canvas; void toggleGrid() { showGrid = !showGrid; } void setGridSize({int x, int y}) { - x = x ?? _es.engine.gridSize.x; - y = y ?? _es.engine.gridSize.y; - _es.engine.gridSize = Point(x, y); + _sim.gridSize = Point(x ?? gridSize.x, y ?? gridSize.y); } - Point get gridSize => _es.engine.gridSize; + Point get gridSize => _sim.gridSize; } diff --git a/lib/service/simulation_service.dart b/lib/service/simulation_service.dart index 1081bf0..45a7b09 100644 --- a/lib/service/simulation_service.dart +++ b/lib/service/simulation_service.dart @@ -1,19 +1,27 @@ +import 'dart:math'; + import 'package:rules_of_living/service/engine_service.dart'; class SimulationService { - final EngineService engine; + final EngineService _engine; - SimulationService(this.engine); + SimulationService(this._engine); void reset() { - engine.reset(); + _engine.reset(); } void addRandomPattern() { - engine.addRandomPattern(); + _engine.addRandomPattern(); } void clear() { - engine.clear(); + _engine.clear(); } + + void set gridSize(Point size) { + _engine.engine.gridSize = size; + } + + Point get gridSize => _engine.engine.gridSize; } diff --git a/test/service/configuration_service_test.dart b/test/service/configuration_service_test.dart index 44e23b2..9aa4893 100644 --- a/test/service/configuration_service_test.dart +++ b/test/service/configuration_service_test.dart @@ -3,6 +3,7 @@ import 'dart:math'; import 'package:mockito/mockito.dart'; import 'package:rules_of_living/service/configuration_service.dart'; import 'package:rules_of_living/service/engine_service.dart'; +import 'package:rules_of_living/service/simulation_service.dart'; import 'package:rules_of_living/src/Engine.dart'; @TestOn('browser') import 'package:test/test.dart'; @@ -12,12 +13,13 @@ class MockEngine extends Mock implements Engine {} void main() { ConfigurationService sut; EngineService engineService; + SimulationService simService; MockEngine me; setUp(() { me = MockEngine(); engineService = EngineService(); engineService.engine = me; - sut = ConfigurationService(engineService); + sut = ConfigurationService(engineService, simService); }); group("simulation speed", () {