mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-25 14:36:13 +01:00
- [PCX] Fix string evaluation bug when a string contains operation.
This commit is contained in:
parent
5232a0579e
commit
64abc57d29
3 changed files with 55 additions and 11 deletions
|
@ -58,7 +58,13 @@ function Node_Pixel_Sampler(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
|||
if(_inps == 0) return _outSurf;
|
||||
|
||||
var _dim = surface_get_dimension(_base);
|
||||
var _tdim = surface_get_dimension(_surf[0]);
|
||||
var _tdim = [ 1, 1 ];
|
||||
|
||||
for (var i = 0, n = array_length(_surf); i < n; i++) {
|
||||
var _d = surface_get_dimension(_surf[i]);
|
||||
_tdim[0] = max(_tdim[0], _d[0]);
|
||||
_tdim[1] = max(_tdim[1], _d[1]);
|
||||
}
|
||||
|
||||
temp_surface[0] = surface_verify(temp_surface[0], 8192, 8192);
|
||||
|
||||
|
|
|
@ -39,8 +39,11 @@
|
|||
function functionStringClean(fx) { #region
|
||||
static __BRACKETS = [ "(", "[", "," ];
|
||||
|
||||
var ch = "", ind = 0, len = string_length(fx);
|
||||
var _fx = "", str = false;
|
||||
var ch = "";
|
||||
var ind = 0;
|
||||
var len = string_length(fx);
|
||||
var _fx = "";
|
||||
var str = false;
|
||||
var _prevSym = true;
|
||||
|
||||
while(ind++ <= len) {
|
||||
|
@ -243,11 +246,17 @@
|
|||
}
|
||||
|
||||
l++;
|
||||
} else if (ch == "(") {
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
else if (ch == "(") {
|
||||
if(last_push == "fn") ds_stack_push(op, [ "〚", ds_stack_size(vl) ]);
|
||||
else ds_stack_push(op, ch);
|
||||
last_push = "op";
|
||||
l++;
|
||||
|
||||
} else if (ch == ")") {
|
||||
while(!ds_stack_empty(op)) {
|
||||
var _top = ds_stack_pop(op);
|
||||
|
@ -266,7 +275,12 @@
|
|||
|
||||
last_push = "vl";
|
||||
l++;
|
||||
} else if (ch == "[") {
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
else if (ch == "[") {
|
||||
if(last_push == "vl") { // Get array member | a[1]
|
||||
ds_stack_push(op, "@");
|
||||
ds_stack_push(op, ch);
|
||||
|
@ -275,6 +289,7 @@
|
|||
|
||||
last_push = "op";
|
||||
l++;
|
||||
|
||||
} else if (ch == "]") {
|
||||
while(!ds_stack_empty(op)) {
|
||||
var _top = ds_stack_pop(op);
|
||||
|
@ -293,7 +308,12 @@
|
|||
|
||||
last_push = "vl";
|
||||
l++;
|
||||
} else if (ch == ",") {
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
else if (ch == ",") {
|
||||
while(!ds_stack_empty(op)) {
|
||||
var _top = ds_stack_top(op);
|
||||
if(_top == "[" || _top == "(") break;
|
||||
|
@ -305,14 +325,32 @@
|
|||
|
||||
last_push = "op";
|
||||
l++;
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
else {
|
||||
var vsl = "";
|
||||
var str = false;
|
||||
|
||||
while(l <= len) {
|
||||
cch = string_char_at(fx, l);
|
||||
if(ds_map_exists(pres, cch) || array_exists(__BRACKETS, cch)) break;
|
||||
if(cch == ",")
|
||||
break;
|
||||
|
||||
if(cch == "\"") {
|
||||
if(str) {
|
||||
vsl += cch;
|
||||
l++;
|
||||
break;
|
||||
}
|
||||
|
||||
str = true;
|
||||
}
|
||||
|
||||
if(!str) {
|
||||
if(ds_map_exists(pres, cch) || array_exists(__BRACKETS, cch)) break;
|
||||
if(cch == ",") break;
|
||||
}
|
||||
|
||||
vsl += cch;
|
||||
l++;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"$GMScript":"v1",
|
||||
"$GMScript":"",
|
||||
"%Name":"pcx_parse",
|
||||
"isCompatibility":false,
|
||||
"isDnD":false,
|
||||
|
|
Loading…
Reference in a new issue