summaryrefslogtreecommitdiff
path: root/lib/serializer.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/serializer.dart')
-rwxr-xr-xlib/serializer.dart93
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/serializer.dart b/lib/serializer.dart
new file mode 100755
index 0000000..d9d5dbe
--- /dev/null
+++ b/lib/serializer.dart
@@ -0,0 +1,93 @@
+import 'dart:convert';
+
+import 'package:alligator_editor/project.dart';
+
+const currentAlligatorVersion = "0.1";
+const currentRuntimeVersion = "0.1";
+
+class AlligatorProject {
+ String version;
+ ProjectConfig projectConfig;
+
+ AlligatorProject({
+ this.version = currentAlligatorVersion,
+ required this.projectConfig,
+ });
+
+ factory AlligatorProject.fromJson(String json) {
+ Map<String, dynamic> jsonMap = jsonDecode(json);
+ String version = jsonMap['version'];
+ ProjectConfig projectConfig = ProjectConfig(
+ gameName: jsonMap['project']['name'],
+ defaultWindowWidth: jsonMap['project']['defaultWidth'],
+ defaultWindowHeight: jsonMap['project']['defaultHeight'],
+ defaultWindowMode: WindowMode.fromPascalCase(jsonMap['project']['defaultWindowMode']),
+ defaultVsync: jsonMap['project']['vsync'],
+ );
+
+ return AlligatorProject(version: version, projectConfig: projectConfig);
+ }
+
+ String toJson() {
+ Map<String, dynamic> json = {
+ 'version': this.version,
+ 'project': {
+ 'name': this.projectConfig.gameName,
+ 'defaultWidth': this.projectConfig.defaultWindowWidth,
+ 'defaultHeight': this.projectConfig.defaultWindowHeight,
+ 'defaultWindowMode': this.projectConfig.defaultWindowMode,
+ 'vsync': this.projectConfig.defaultVsync,
+ }
+ };
+
+ return jsonEncode(json);
+ }
+}
+
+class AlligatorGame {
+ final String alligatorVersion;
+ final int? defaultWindowWidth;
+ final int? defaultWindowHeight;
+ final WindowMode defaultWindowMode;
+ final String windowTitle;
+ final bool vsync;
+
+ const AlligatorGame({
+ this.alligatorVersion = currentRuntimeVersion,
+ this.defaultWindowWidth = 1280,
+ this.defaultWindowHeight = 720,
+ this.defaultWindowMode = WindowMode.windowed,
+ this.windowTitle = "Alligator Game",
+ this.vsync = true,
+ });
+
+ AlligatorGame.fromConfig({
+ String alligatorVersion = currentRuntimeVersion,
+ required ProjectConfig projectConfig,
+ }) : this(
+ alligatorVersion: alligatorVersion,
+ defaultWindowWidth: projectConfig.defaultWindowWidth,
+ defaultWindowHeight: projectConfig.defaultWindowHeight,
+ defaultWindowMode: projectConfig.defaultWindowMode,
+ windowTitle: projectConfig.gameName,
+ vsync: projectConfig.defaultVsync,
+ );
+
+ String toJson() {
+ Map<String, dynamic> json = {
+ 'alligator_version': this.alligatorVersion,
+ 'scenes': {},
+ 'textures': {},
+ 'scripts': {},
+ 'default_scene': "",
+ 'sprite_manager_capacity': 0,
+ 'default_window_width': this.defaultWindowWidth,
+ 'default_window_height': this.defaultWindowHeight,
+ 'default_window_mode': this.defaultWindowMode.pascalCase,
+ 'window_title': this.windowTitle,
+ 'vsync': this.vsync
+ };
+
+ return jsonEncode(json);
+ }
+}