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; package lime.tools;
typedef ApplicationData = @:forward
{ abstract ApplicationData({
@:optional var file:String; @:optional var file:String;
@:optional var init:String; @:optional var init:String;
@:optional var main:String; @:optional var main:String;
@@ -9,4 +9,15 @@ typedef ApplicationData =
@:optional var preloader:String; @:optional var preloader:String;
@:optional var swfVersion:Float; @:optional var swfVersion:Float;
@:optional var url:String; @: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; package lime.tools;
typedef MetaData = @:forward
{ abstract MetaData({
@:optional var buildNumber:String; @:optional var buildNumber:String;
@:optional var company:String; @:optional var company:String;
@:optional var companyId:String; @:optional var companyId:String;
@@ -10,4 +10,16 @@ typedef MetaData =
@:optional var packageName:String; @:optional var packageName:String;
@:optional var title:String; @:optional var title:String;
@:optional var version: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.AssetType;
import lime.tools.Dependency; import lime.tools.Dependency;
import lime.tools.HXProject; import lime.tools.HXProject;
import lime.tools._types.ApplicationDataType;
import lime.tools._types.MetaDataType;
import lime.tools._types.WindowDataType;
#if lime #if lime
import lime.utils.AssetManifest; import lime.utils.AssetManifest;
#end #end
@@ -442,11 +439,11 @@ class ProjectXMLParser extends HXProject
name = "packageName"; name = "packageName";
} }
if (Reflect.hasField(ApplicationDataType.fields, name)) if (Reflect.hasField(ApplicationData.defaults, name))
{ {
Reflect.setField(app, name, value); Reflect.setField(app, name, value);
} }
else if (Reflect.hasField(MetaDataType.fields, name)) else if (Reflect.hasField(MetaData.defaults, name))
{ {
Reflect.setField(meta, name, value); Reflect.setField(meta, name, value);
} }
@@ -859,7 +856,7 @@ class ProjectXMLParser extends HXProject
name = "packageName"; name = "packageName";
} }
if (Reflect.hasField(MetaDataType.fields, name)) if (Reflect.hasField(MetaData.defaults, name))
{ {
Reflect.setField(meta, name, value); Reflect.setField(meta, name, value);
} }
@@ -2009,11 +2006,11 @@ class ProjectXMLParser extends HXProject
Reflect.setField(windows[id], "colorDepth", Std.parseInt(value)); Reflect.setField(windows[id], "colorDepth", Std.parseInt(value));
default: default:
if (Reflect.hasField(WindowDataType.fields, name)) if (Reflect.hasField(WindowData.defaults, name))
{ {
Reflect.setField(windows[id], name, value == "true"); 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"); Reflect.setField(windows[id], formatAttributeName(name), value == "true");
} }

View File

@@ -1,7 +1,7 @@
package lime.tools; package lime.tools;
typedef WindowData = @:forward
{ abstract WindowData({
@:optional var width:Int; @:optional var width:Int;
@:optional var height:Int; @:optional var height:Int;
@:optional var x:Float; @:optional var x:Float;
@@ -31,4 +31,37 @@ typedef WindowData =
@:optional var minimized:Bool; @:optional var minimized:Bool;
@:optional var maximized:Bool; @:optional var maximized:Bool;
@:optional var hidden: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
}
}

View File

@@ -10,9 +10,6 @@ import hxp.*;
import lime.system.CFFI; import lime.system.CFFI;
import lime.tools.HXProject; import lime.tools.HXProject;
import lime.tools.*; import lime.tools.*;
import lime.tools._types.ApplicationDataType;
import lime.tools._types.MetaDataType;
import lime.tools._types.WindowDataType;
import sys.io.File; import sys.io.File;
import sys.io.Process; import sys.io.Process;
import sys.FileSystem; import sys.FileSystem;
@@ -1863,9 +1860,9 @@ class CommandLineTools
var fieldValue = Reflect.field(project, field); var fieldValue = Reflect.field(project, field);
var typeValue:Dynamic = switch (field) var typeValue:Dynamic = switch (field)
{ {
case "app": ApplicationDataType.fields; case "app": ApplicationData.defaults;
case "meta": MetaDataType.fields; case "meta": MetaData.defaults;
case "window": WindowDataType.fields; case "window": WindowData.defaults;
default: fieldValue; default: fieldValue;
}; };
@@ -2133,9 +2130,9 @@ class CommandLineTools
var fieldReference = Reflect.field(overrides, fieldName); var fieldReference = Reflect.field(overrides, fieldName);
var typeValue:Dynamic = switch (fieldName) var typeValue:Dynamic = switch (fieldName)
{ {
case "app": ApplicationDataType.fields; case "app": ApplicationData.defaults;
case "meta": MetaDataType.fields; case "meta": MetaData.defaults;
case "window": WindowDataType.fields; case "window": WindowData.defaults;
default: fieldReference; default: fieldReference;
}; };