2017-05-26 16:05:14 +02:00
|
|
|
package armory.trait.internal;
|
|
|
|
|
|
|
|
import iron.Trait;
|
2017-05-26 16:42:48 +02:00
|
|
|
#if arm_ui
|
2017-05-26 16:05:14 +02:00
|
|
|
import zui.Zui;
|
|
|
|
import zui.Canvas;
|
2017-05-26 16:42:48 +02:00
|
|
|
#end
|
2017-05-26 16:05:14 +02:00
|
|
|
|
|
|
|
class CanvasScript extends Trait {
|
|
|
|
|
2017-05-26 16:42:48 +02:00
|
|
|
#if arm_ui
|
|
|
|
|
2017-05-26 16:05:14 +02:00
|
|
|
var cui: Zui;
|
|
|
|
var canvas:TCanvas = null;
|
|
|
|
|
2018-01-31 00:03:28 +01:00
|
|
|
public var ready(get, null):Bool;
|
|
|
|
function get_ready():Bool { return canvas != null; }
|
|
|
|
|
2017-05-26 16:05:14 +02:00
|
|
|
public function new(canvasName:String) {
|
|
|
|
super();
|
|
|
|
|
2018-05-26 22:54:42 +02:00
|
|
|
iron.data.Data.getBlob(canvasName + '.json', function(blob:kha.Blob) {
|
|
|
|
|
|
|
|
kha.Assets.loadFont("droid_sans", function(f:kha.Font) {
|
|
|
|
|
|
|
|
cui = new Zui({font: f});
|
|
|
|
var c:TCanvas = haxe.Json.parse(blob.toString());
|
|
|
|
|
|
|
|
if (c.assets == null || c.assets.length == 0) canvas = c;
|
|
|
|
// Load canvas assets
|
|
|
|
else {
|
|
|
|
var loaded = 0;
|
|
|
|
for (asset in c.assets) {
|
|
|
|
var file = asset.name;
|
|
|
|
iron.data.Data.getImage(file, function(image:kha.Image) {
|
|
|
|
Canvas.assetMap.set(asset.id, image);
|
|
|
|
if (++loaded >= c.assets.length) canvas = c;
|
|
|
|
});
|
2017-07-27 11:43:37 +02:00
|
|
|
}
|
2018-05-26 22:54:42 +02:00
|
|
|
}
|
2017-05-26 16:05:14 +02:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
notifyOnRender2D(function(g:kha.graphics2.Graphics) {
|
|
|
|
if (canvas == null) return;
|
|
|
|
|
|
|
|
var events = Canvas.draw(cui, canvas, g);
|
|
|
|
|
|
|
|
for (e in events) {
|
|
|
|
var all = armory.system.Event.get(e);
|
2017-08-07 10:47:29 +02:00
|
|
|
if (all != null) for (entry in all) entry.onEvent();
|
2017-05-26 16:05:14 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2017-05-26 16:42:48 +02:00
|
|
|
|
2017-09-18 17:02:25 +02:00
|
|
|
public function getElement(name:String):TElement {
|
|
|
|
for (e in canvas.elements) if (e.name == name) return e;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2017-05-26 16:42:48 +02:00
|
|
|
#else
|
|
|
|
|
|
|
|
public function new(canvasName:String) { super(); }
|
|
|
|
|
|
|
|
#end
|
2017-05-26 16:05:14 +02:00
|
|
|
}
|