From 3fad3812e117c6bc16b5007076803f498538e4c4 Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 8 Dec 2025 19:54:36 -0500 Subject: First commit --- lib/serializer.dart | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 lib/serializer.dart (limited to 'lib/serializer.dart') 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 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 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 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); + } +} -- cgit v1.2.3