removed nuke; restored quickjs due to mem leaks
This commit is contained in:
@@ -146,94 +146,6 @@ var Profile = {
|
||||
get fps() { return sys_cmd(8); },
|
||||
};
|
||||
|
||||
var Nuke = {
|
||||
newline(cols) { nuke(3, cols ? cols : 1); },
|
||||
newrow(height) { nuke(13,height); },
|
||||
|
||||
wins: {},
|
||||
curwin:"",
|
||||
|
||||
prop(str, v) {
|
||||
var ret = nuke(2, str, v);
|
||||
if (Number.isFinite(ret)) return ret;
|
||||
return 0;
|
||||
},
|
||||
|
||||
treeid: 0,
|
||||
|
||||
tree(str) { var on = nuke(11, str, this.treeid); this.treeid++; return on; },
|
||||
tree_pop() { nuke(12);},
|
||||
|
||||
prop_num(str, num) { return nuke(2, str, num, -1e10, 1e10, 0.01); },
|
||||
prop_bool(str, val) { return nuke(4, str, val); },
|
||||
checkbox(val) { return nuke(4,"",val); },
|
||||
label(str) { nuke(5, str); },
|
||||
textbox(str) { return nuke(7, str); },
|
||||
scrolltext(str) { nuke(14,str); },
|
||||
|
||||
defaultrect: { x:10, y:10, w:400, h:600 },
|
||||
window(name) {
|
||||
this.curwin = name;
|
||||
var rect;
|
||||
if (name in this.wins)
|
||||
rect = this.wins[name];
|
||||
else
|
||||
rect = { x:10, y:10, w:400, h:600 };
|
||||
|
||||
nuke(0, name, rect);
|
||||
},
|
||||
button(name) { return nuke(6, name); },
|
||||
radio(name, val, cmp) { return nuke(9, name, val, cmp); },
|
||||
img(path) { nuke(8, path); },
|
||||
end() {
|
||||
this.wins[this.curwin] = nuke(10);
|
||||
this.treeid = 0;
|
||||
nuke(1);
|
||||
},
|
||||
|
||||
pprop(str, p, nonew) {
|
||||
switch(typeof p) {
|
||||
case 'number':
|
||||
if (!nonew) Nuke.newline();
|
||||
return Nuke.prop_num(str, p);
|
||||
break;
|
||||
|
||||
case 'boolean':
|
||||
if (!nonew) Nuke.newline();
|
||||
return Nuke.prop_bool(str, p);
|
||||
|
||||
case 'object':
|
||||
if (Array.isArray(p)) {
|
||||
var arr = [];
|
||||
Nuke.newline(p.length+1);
|
||||
Nuke.label(str);
|
||||
arr[0] = Nuke.pprop("#x", p[0], true);
|
||||
arr[1] = Nuke.pprop("#y", p[1], true);
|
||||
return arr;
|
||||
|
||||
} else {
|
||||
if (!nonew)Nuke.newline(2);
|
||||
Nuke.label(str);
|
||||
Nuke.label(p);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'string':
|
||||
if (!nonew) Nuke.newline();
|
||||
Nuke.label(str);
|
||||
return Nuke.textbox(p);
|
||||
|
||||
default:
|
||||
if (!nonew) Nuke.newline(2);
|
||||
Nuke.label(str);
|
||||
Nuke.label(p);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
Object.defineProperty(Nuke, "curwin", {enumerable:false});
|
||||
Object.defineProperty(Nuke, "defaultrect", {enumerable:false});
|
||||
|
||||
/* These controls are available during editing, and during play of debug builds */
|
||||
var DebugControls = {};
|
||||
DebugControls.inputs = {};
|
||||
|
||||
@@ -19,8 +19,6 @@ var configs = {
|
||||
};
|
||||
|
||||
var editor = {
|
||||
dbgdraw: false,
|
||||
selected: undefined,
|
||||
selectlist: [],
|
||||
grablist: [],
|
||||
scalelist: [],
|
||||
@@ -379,6 +377,7 @@ var editor = {
|
||||
GUI.text("WORKING LAYER: " + this.working_layer, [0,520]);
|
||||
GUI.text("MODE: " + this.edit_mode, [0,500]);
|
||||
|
||||
|
||||
Debug.point(world2screen(this.cursor), 2, Color.green);
|
||||
|
||||
if (this.comp_info && this.sel_comp) {
|
||||
@@ -387,7 +386,7 @@ var editor = {
|
||||
|
||||
GUI.text("0,0", world2screen([0,0]));
|
||||
|
||||
var clvl = this.edit_level;
|
||||
var clvl = this.selectlist.length === 1 ? this.selectlist[0] : this.edit_level;
|
||||
var lvlchain = [];
|
||||
while (clvl !== Primum) {
|
||||
lvlchain.push(clvl);
|
||||
@@ -401,11 +400,12 @@ var editor = {
|
||||
var ypos = 200;
|
||||
|
||||
lvlchain.reverse();
|
||||
lvlchain.forEach(function(x) {
|
||||
lvlchain.forEach(function(x,i) {
|
||||
lvlcolor = colormap.sample(lvlcolorsample);
|
||||
var lvlstr = x.toString();
|
||||
if (x.dirty)
|
||||
lvlstr += "*";
|
||||
if (i === lvlchain.length-1) lvlstr += "[this]";
|
||||
GUI.text(lvlstr, [0, ypos], 1, lvlcolor);
|
||||
|
||||
lvlcolorsample -= 0.1;
|
||||
@@ -1260,15 +1260,7 @@ var inputpanel = {
|
||||
stolen: {},
|
||||
|
||||
gui() {
|
||||
Nuke.window(this.title);
|
||||
Nuke.newline();
|
||||
this.guibody();
|
||||
|
||||
if (Nuke.button("close"))
|
||||
this.close();
|
||||
|
||||
Nuke.end();
|
||||
return false;
|
||||
},
|
||||
|
||||
guibody() {
|
||||
@@ -1386,12 +1378,9 @@ var replpanel = Object.copy(inputpanel, {
|
||||
title: "REPL",
|
||||
closeonsubmit:false,
|
||||
guibody() {
|
||||
Nuke.newrow(400);
|
||||
var log = cmd(84);
|
||||
var f = log.prev('\n', 0,10);
|
||||
Nuke.scrolltext(log.slice(f));
|
||||
Nuke.newrow(30);
|
||||
this.value = Nuke.textbox(this.value);
|
||||
GUI.text(log, [400,60], 1, Color.white, 600, [0,0]);
|
||||
GUI.text(this.value, [400,50], 1, Color.green, 600);
|
||||
},
|
||||
|
||||
action() {
|
||||
@@ -1591,7 +1580,7 @@ var openlevelpanel = Object.copy(inputpanel, {
|
||||
keycb() { this.assets = this.allassets.filter(x => x.search(this.value) !== -1); },
|
||||
|
||||
guibody() {
|
||||
this.value = Nuke.textbox(this.value);
|
||||
GUI.text(this.value, [100,600], 1, Color.green, 600);
|
||||
|
||||
this.assets.forEach(function(x) {
|
||||
if (Nuke.button(x)) {
|
||||
|
||||
@@ -311,8 +311,10 @@ var gameobject = {
|
||||
var objects = {};
|
||||
this.ur.objects ??= {};
|
||||
if (!Object.keys(this.objects).equal(Object.keys(this.ur.objects))) {
|
||||
for (var o in this.objects)
|
||||
for (var o in this.objects) {
|
||||
objects[o] = this.objects[o].transform_obj();
|
||||
objects[o].ur = this.objects[o].ur.toString();
|
||||
}
|
||||
} else {
|
||||
for (var o in this.objects) {
|
||||
var obj = this.objects[o].json_obj();
|
||||
@@ -446,6 +448,7 @@ var gameobject = {
|
||||
for (var prop in ur.objects) {
|
||||
var o = ur.objects[prop];
|
||||
var newobj = obj.spawn(prototypes.get_ur(o.ur));
|
||||
if (!newobj) continue;
|
||||
obj.rename_obj(newobj.toString(), prop);
|
||||
}
|
||||
}
|
||||
@@ -642,6 +645,10 @@ prototypes.file2ur = function(file)
|
||||
*/
|
||||
prototypes.get_ur = function(name)
|
||||
{
|
||||
if (!name) {
|
||||
Log.warn(`Can't get ur from an undefined.`);
|
||||
return;
|
||||
}
|
||||
var urpath = name;
|
||||
if (urpath.includes('/'))
|
||||
urpath = prototypes.file2ur(name);
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
var GUI = {
|
||||
text(str, pos, size, color, wrap) {
|
||||
text(str, pos, size, color, wrap, anchor) {
|
||||
size ??= 1;
|
||||
color ??= Color.white;
|
||||
wrap ??= -1;
|
||||
anchor ??= [0,1];
|
||||
|
||||
var bb = cmd(118, str, size, wrap);
|
||||
var opos = [bb.r, bb.t];
|
||||
|
||||
var h = ui_text(str, pos, size, color, wrap);
|
||||
var w = bb.r*2;
|
||||
var h = bb.t*2;
|
||||
|
||||
//ui_text draws with an anchor on top left corner
|
||||
var p = pos.slice();
|
||||
p.x -= w * anchor.x;
|
||||
bb.r += (w*anchor.x);
|
||||
bb.l += (w*anchor.x);
|
||||
p.y += h * (1 - anchor.y);
|
||||
bb.t += h*(1-anchor.y);
|
||||
bb.b += h*(1-anchor.y);
|
||||
ui_text(str, p, size, color, wrap);
|
||||
|
||||
return bb;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user