Skip to content

Commit

Permalink
Fixed empty parameters issue
Browse files Browse the repository at this point in the history
This changes the list implementation for params. Recommendation
is to update this for add-ons that make use of this.
  • Loading branch information
McTwist committed Feb 6, 2018
1 parent 180e624 commit 91b7f1f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 20 deletions.
17 changes: 11 additions & 6 deletions client.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// EventScript Client
// Author: McTwist (9845)
// Date: 2018-01-15
// Date: 2018-02-06
//
// Contains the client version of transforming an EventScript list object
// into either readable script or usable events.
Expand Down Expand Up @@ -73,7 +73,7 @@ function EventScriptClient_save()
// Output event
%outputEventName = %event.getObject(%n++).getValue();

%params = "";
%params = 0;

// Parameters
for (%n++; %n < %event.getCount(); %n++)
Expand All @@ -99,7 +99,8 @@ SPC atof(%param.getObject(1).getValue())
default:
%val = %param.getValue();
}
%params = (%params !$= "") ? %params TAB %val : %val;
%params[%params] = %val;
%params++;
}

// Store into list
Expand All @@ -110,6 +111,8 @@ SPC atof(%param.getObject(1).getValue())
%list.value[%i, "NTName"] = %NTName;
%list.value[%i, "outputEventName"] = %outputEventName;
%list.value[%i, "params"] = %params;
for (%m = 0; %m < %params; %m++)
%list.value[%i, "params", %m] = %params[%m];
%list.count++;
}

Expand Down Expand Up @@ -150,7 +153,9 @@ function EventScriptClient_load(%script)
%targetName = %list.value[%i, "targetName"];
%NTName = %list.value[%i, "NTName"];
%outputEventName = %list.value[%i, "outputEventName"];
%params = %list.value[%i, "params"];
%params = %list.value[%i, "params"] | 0;
for (%m = 0; %m < %params; %m++)
%params[%m] = %list.value[%i, "params", %m];

%event = WrenchEvents_Box.getObject(WrenchEvents_Box.getCount() - 1);
%n = -1;
Expand Down Expand Up @@ -236,7 +241,7 @@ function EventScriptClient_load(%script)
%event.getObject(%n).setSelected(%outputEventIdx);
%n++;

if (getFieldCount(%params) != (%event.getCount() - %n))
if (%params != (%event.getCount() - %n))
{
EventScriptClient_error("Error :: Invalid amount of parameters for output event \"" @ %outputEventName @ "\" on line " @ %line);
$WrenchEventLoading = 0;
Expand All @@ -248,7 +253,7 @@ function EventScriptClient_load(%script)
{
%param = %event.getObject(%n);

%par = getField(%params, %m++);
%par = %params[%m++];

switch$ (%param.getClassName())
{
Expand Down
22 changes: 14 additions & 8 deletions script.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ======================
// EventScript
// Author: McTwist (9845)
// Version: 1.4.20180115
// Version: 1.5.20180206
// ======================
// EventScript is a script language designed for an easier conversion
// between the in-game event system and a text version that can be used
Expand Down Expand Up @@ -550,8 +550,10 @@ function EventScript_fromScript(%script, %error)
%data = strReplace(%data, "\\\"", "\"");
%data = strReplace(%data, "\\\\", "\\");

// Append list (Dependency)
%list.value[%list.count, "params"] = pushBack(%list.value[%list.count, "params"], %data, "\t");
// Append list
%list.value[%list.count, "params"] |= 0;
%list.value[%list.count, "params", %list.value[%list.count, "params"]] = %data;
%list.value[%list.count, "params"]++;

%i = %n;

Expand Down Expand Up @@ -669,8 +671,10 @@ function EventScript_fromScript(%script, %error)

%data = trim(getSubStr(%script, %i, %n - %i));

// Append list (Dependency)
%list.value[%list.count, "params"] = pushBack(%list.value[%list.count, "params"], %data, "\t");
// Append list
%list.value[%list.count, "params"] |= 0;
%list.value[%list.count, "params", %list.value[%list.count, "params"]] = %data;
%list.value[%list.count, "params"]++;

%i = %n;

Expand Down Expand Up @@ -929,7 +933,7 @@ function EventScript_fromScript(%script, %error)
}
}

%list.value[%index, "params"] = setField(%list.value[%index, "params"], %param, %params);
%list.value[%index, "params", %param] = %params;
}

return %list;
Expand All @@ -955,6 +959,8 @@ function EventScript_toScript(%list)
%NTName = %list.value[%i, "NTName"];
%outputEventName = %list.value[%i, "outputEventName"];
%params = %list.value[%i, "params"];
for (%m = 0; %m < %params; %m++)
%params[%m] = %list.value[%i, "params", %m];

// Enabled
%script = %script @ "[" @ (%enabled ? "x" : " ") @ "]";
Expand All @@ -976,7 +982,7 @@ function EventScript_toScript(%list)
%script = %script @ " -> " @ %outputEventName;

// Parameters
%count = getFieldCount(%params);
%count = %params;
if (%count > 0)
%script = %script @ "(";

Expand All @@ -985,7 +991,7 @@ function EventScript_toScript(%list)
if (%n != 0)
%script = %script @ ", ";

%param = getField(%params, %n);
%param = %params[%n];

// Check if number
if ((%param + 0) $= %param)
Expand Down
17 changes: 11 additions & 6 deletions server.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// EventScript Server
// Author: McTwist (9845)
// Date: 2017-11-19
// Date: 2018-02-06
//
// Contains the server version of transforming an EventScript list object
// into either readable script or usable events.
Expand Down Expand Up @@ -44,7 +44,7 @@ function EventScriptServer_save(%brick)
%paramCount = outputEvent_GetNumParametersFromIdx(%targetClass, %brick.eventOutputIdx[%i]);
%paramList = $OutputEvent_parameterList[%targetClass, %brick.eventOutputIdx[%i]];

%params = "";
%params = 0;
for (%n = 0; %n < %paramCount; %n++)
{
%paramField = getField(%paramList, %n);
Expand Down Expand Up @@ -76,10 +76,13 @@ function EventScriptServer_save(%brick)
%param = getColorIDTable(%param);
}

%params = setField(%params, %n, %param);
%params[%n] = %param;
}
%params = %paramCount;

%list.value[%i, "params"] = %params;
for (%m = 0; %m < %params; %m++)
%list.value[%i, "params", %m] = %params[%m];

%list.count++;
}
Expand Down Expand Up @@ -118,7 +121,9 @@ function EventScriptServer_load(%brick, %script)
%targetName = %list.value[%i, "targetName"];
%NTName = %list.value[%i, "NTName"];
%outputEventName = %list.value[%i, "outputEventName"];
%params = %list.value[%i, "params"];
%params = %list.value[%i, "params"] | 0;
for (%m = 0; %m < %params; %m++)
%params[%m] = %list.value[%i, "params", %m];

// Enabled
%brick.eventEnabled[%brick.numEvents] = !!%enabled;
Expand Down Expand Up @@ -179,7 +184,7 @@ function EventScriptServer_load(%brick, %script)
// Parameters
%paramCount = outputEvent_GetNumParametersFromIdx(%targetClass, %outputEventIdx);
%paramList = $OutputEvent_parameterList[%targetClass, %outputEventIdx];
%count = getFieldCount(%params);
%count = %params;
if (%paramCount != %count)
{
error("EventScriptServer_load :: Invalid amount of parameters for \"" @ %outputEventName @ "\" on line " @ %line);
Expand All @@ -189,7 +194,7 @@ function EventScriptServer_load(%brick, %script)
for (%n = 0; %n <= %count; %n++)
{
%paramField = getField(%paramList, %n);
%param = getField(%params, %n);
%param = %params[%n];

// Translate parameter
switch$ (strlwr(getWord(%paramField, 0)))
Expand Down

0 comments on commit 91b7f1f

Please sign in to comment.