181 lines
3.7 KiB
Haxe
181 lines
3.7 KiB
Haxe
package;
|
|
|
|
import ::APP_MAIN::;
|
|
|
|
@:access(lime.app.Application)
|
|
@:access(lime.system.System)
|
|
|
|
@:dox(hide) class ApplicationMain
|
|
{
|
|
public static function main()
|
|
{
|
|
lime.system.System.__registerEntryPoint("::APP_FILE::", create);
|
|
|
|
#if (!html5 || munit)
|
|
create(null);
|
|
#end
|
|
}
|
|
|
|
public static function create(config:Dynamic):Void
|
|
{
|
|
#if !disable_preloader_assets
|
|
ManifestResources.init(config);
|
|
#end
|
|
|
|
#if !munit
|
|
var app = new ::APP_MAIN::();
|
|
app.meta.set("build", "::meta.buildNumber::");
|
|
app.meta.set("company", "::meta.company::");
|
|
app.meta.set("file", "::APP_FILE::");
|
|
app.meta.set("name", "::meta.title::");
|
|
app.meta.set("packageName", "::meta.packageName::");
|
|
app.meta.set("version", "::meta.version::");
|
|
|
|
#if !flash
|
|
::foreach windows::
|
|
var attributes:lime.ui.WindowAttributes =
|
|
{
|
|
allowHighDPI: ::allowHighDPI::,
|
|
alwaysOnTop: ::alwaysOnTop::,
|
|
borderless: ::borderless::,
|
|
// display: ::display::,
|
|
element: null,
|
|
frameRate: ::fps::,
|
|
#if !web fullscreen: ::fullscreen::, #end
|
|
height: ::height::,
|
|
hidden: #if munit true #else ::hidden:: #end,
|
|
maximized: ::maximized::,
|
|
minimized: ::minimized::,
|
|
parameters: ::parameters::,
|
|
resizable: ::resizable::,
|
|
title: "::title::",
|
|
width: ::width::,
|
|
x: ::x::,
|
|
y: ::y::,
|
|
};
|
|
|
|
attributes.context =
|
|
{
|
|
antialiasing: ::antialiasing::,
|
|
background: ::background::,
|
|
colorDepth: ::colorDepth::,
|
|
depth: ::depthBuffer::,
|
|
hardware: ::hardware::,
|
|
stencil: ::stencilBuffer::,
|
|
type: null,
|
|
vsync: ::vsync::
|
|
};
|
|
|
|
if (app.window == null)
|
|
{
|
|
if (config != null)
|
|
{
|
|
for (field in Reflect.fields(config))
|
|
{
|
|
if (Reflect.hasField(attributes, field))
|
|
{
|
|
Reflect.setField(attributes, field, Reflect.field(config, field));
|
|
}
|
|
else if (Reflect.hasField(attributes.context, field))
|
|
{
|
|
Reflect.setField(attributes.context, field, Reflect.field(config, field));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if sys
|
|
lime.system.System.__parseArguments(attributes);
|
|
#end
|
|
}
|
|
|
|
app.createWindow(attributes);
|
|
::end::
|
|
#elseif air
|
|
app.window.title = "::meta.title::";
|
|
#else
|
|
app.window.context.attributes.background = ::WIN_BACKGROUND::;
|
|
app.window.frameRate = ::WIN_FPS::;
|
|
#end
|
|
#end
|
|
|
|
// preloader.create ();
|
|
|
|
#if !disable_preloader_assets
|
|
for (library in ManifestResources.preloadLibraries)
|
|
{
|
|
app.preloader.addLibrary(library);
|
|
}
|
|
|
|
for (name in ManifestResources.preloadLibraryNames)
|
|
{
|
|
app.preloader.addLibraryName(name);
|
|
}
|
|
#end
|
|
|
|
app.preloader.load();
|
|
|
|
#if !munit
|
|
start(app);
|
|
#end
|
|
}
|
|
|
|
public static function start(app:lime.app.Application = null):Void
|
|
{
|
|
#if !munit
|
|
|
|
var result = app.exec();
|
|
|
|
#if (sys && !ios && !nodejs && !webassembly)
|
|
lime.system.System.exit(result);
|
|
#end
|
|
|
|
#else
|
|
|
|
new ::APP_MAIN::();
|
|
|
|
#end
|
|
}
|
|
|
|
@:noCompletion @:dox(hide) public static function __init__()
|
|
{
|
|
var init = lime.app.Application;
|
|
|
|
#if neko
|
|
// Copy from https://github.com/HaxeFoundation/haxe/blob/development/std/neko/_std/Sys.hx#L164
|
|
// since Sys.programPath () isn't available in __init__
|
|
var sys_program_path =
|
|
{
|
|
var m = neko.vm.Module.local().name;
|
|
try
|
|
{
|
|
sys.FileSystem.fullPath(m);
|
|
}
|
|
catch (e:Dynamic)
|
|
{
|
|
// maybe the neko module name was supplied without .n extension...
|
|
if (!StringTools.endsWith(m, ".n"))
|
|
{
|
|
try
|
|
{
|
|
sys.FileSystem.fullPath(m + ".n");
|
|
}
|
|
catch (e:Dynamic)
|
|
{
|
|
m;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m;
|
|
}
|
|
}
|
|
};
|
|
|
|
var loader = new neko.vm.Loader(untyped $loader);
|
|
loader.addPath(haxe.io.Path.directory(#if (haxe_ver >= 3.3) sys_program_path #else Sys.executablePath() #end));
|
|
loader.addPath("./");
|
|
loader.addPath("@executable_path/");
|
|
#end
|
|
}
|
|
}
|