Reduce clutter by merging related files.

There's no need to have three separate files containing a single static
variable each. Ideally, the `Data` types should include the variable,
which can be accomplished using abstracts.

`from Dynamic` is required in Haxe 3 and simplifies things in Haxe 4.
This commit is contained in:
Joseph Cloutier
2022-04-27 01:28:56 -04:00
parent 1f954d268f
commit 3bbbb189c2
8 changed files with 73 additions and 97 deletions

View File

@@ -1,7 +1,7 @@
package lime.tools;
typedef ApplicationData =
{
@:forward
abstract ApplicationData({
@:optional var file:String;
@:optional var init:String;
@:optional var main:String;
@@ -9,4 +9,15 @@ typedef ApplicationData =
@:optional var preloader:String;
@:optional var swfVersion:Float;
@:optional var url:String;
}) from Dynamic
{
public static var defaults = {
file: "",
init: "",
main: "",
path: "",
preloader: "",
swfVersion: 0.0,
url: ""
};
}

View File

@@ -1,7 +1,7 @@
package lime.tools;
typedef MetaData =
{
@:forward
abstract MetaData({
@:optional var buildNumber:String;
@:optional var company:String;
@:optional var companyId:String;
@@ -10,4 +10,16 @@ typedef MetaData =
@:optional var packageName:String;
@:optional var title:String;
@:optional var version:String;
}) from Dynamic
{
public static var defaults = {
buildNumber: "",
company: "",
companyId: "",
companyUrl: "",
description: "",
packageName: "",
title: "",
version: ""
};
}

View File

@@ -7,9 +7,6 @@ import lime.tools.Asset;
import lime.tools.AssetType;
import lime.tools.Dependency;
import lime.tools.HXProject;
import lime.tools._types.ApplicationDataType;
import lime.tools._types.MetaDataType;
import lime.tools._types.WindowDataType;
#if lime
import lime.utils.AssetManifest;
#end
@@ -442,11 +439,11 @@ class ProjectXMLParser extends HXProject
name = "packageName";
}
if (Reflect.hasField(ApplicationDataType.fields, name))
if (Reflect.hasField(ApplicationData.defaults, name))
{
Reflect.setField(app, name, value);
}
else if (Reflect.hasField(MetaDataType.fields, name))
else if (Reflect.hasField(MetaData.defaults, name))
{
Reflect.setField(meta, name, value);
}
@@ -859,7 +856,7 @@ class ProjectXMLParser extends HXProject
name = "packageName";
}
if (Reflect.hasField(MetaDataType.fields, name))
if (Reflect.hasField(MetaData.defaults, name))
{
Reflect.setField(meta, name, value);
}
@@ -2009,11 +2006,11 @@ class ProjectXMLParser extends HXProject
Reflect.setField(windows[id], "colorDepth", Std.parseInt(value));
default:
if (Reflect.hasField(WindowDataType.fields, name))
if (Reflect.hasField(WindowData.defaults, name))
{
Reflect.setField(windows[id], name, value == "true");
}
else if (Reflect.hasField(WindowDataType.fields, formatAttributeName(name)))
else if (Reflect.hasField(WindowData.defaults, formatAttributeName(name)))
{
Reflect.setField(windows[id], formatAttributeName(name), value == "true");
}

View File

@@ -1,7 +1,7 @@
package lime.tools;
typedef WindowData =
{
@:forward
abstract WindowData({
@:optional var width:Int;
@:optional var height:Int;
@:optional var x:Float;
@@ -31,4 +31,37 @@ typedef WindowData =
@:optional var minimized:Bool;
@:optional var maximized:Bool;
@:optional var hidden:Bool;
}) from Dynamic
{
public static var defaults = {
width: 0,
height: 0,
x: 0.0,
y: 0.0,
background: 0,
parameters: "",
fps: 0,
hardware: false,
display: 0,
resizable: false,
borderless: false,
vsync: false,
fullscreen: false,
allowHighDPI: false,
alwaysOnTop: false,
antialiasing: 0,
orientation: Orientation.AUTO,
allowShaders: false,
requireShaders: false,
depthBuffer: false,
stencilBuffer: false,
title: "",
#if (js && html5)
element: null,
#end
colorDepth: 0,
minimized: false,
maximized: false,
hidden: false
};
}

View File

@@ -1,17 +0,0 @@
package lime.tools._types;
import lime.tools.ApplicationData;
class ApplicationDataType
{
public static var fields:ApplicationData =
{
file: "",
init: "",
main: "",
path: "",
preloader: "",
swfVersion: 0.0,
url: ""
}
}

View File

@@ -1,18 +0,0 @@
package lime.tools._types;
import lime.tools.MetaData;
class MetaDataType
{
public static var fields:MetaData =
{
buildNumber: "",
company: "",
companyId: "",
companyUrl: "",
description: "",
packageName: "",
title: "",
version: ""
}
}

View File

@@ -1,39 +0,0 @@
package lime.tools._types;
import lime.tools.WindowData;
class WindowDataType
{
public static var fields:WindowData =
{
width: 0,
height: 0,
x: 0.0,
y: 0.0,
background: 0,
parameters: "",
fps: 0,
hardware: false,
display: 0,
resizable: false,
borderless: false,
vsync: false,
fullscreen: false,
allowHighDPI: false,
alwaysOnTop: false,
antialiasing: 0,
orientation: Orientation.AUTO,
allowShaders: false,
requireShaders: false,
depthBuffer: false,
stencilBuffer: false,
title: "",
#if (js && html5)
element: null,
#end
colorDepth: 0,
minimized: false,
maximized: false,
hidden: false
}
}