Changed how subscripts work

This commit is contained in:
dginovker
2019-10-07 01:36:56 -04:00
parent ef24f43104
commit 521a4f8a8b
67 changed files with 73 additions and 37 deletions
@@ -1,30 +0,0 @@
package scriptfactory.Actions;
import scriptfactory.Strategies.ActionExecutor;
import scriptfactory.VarsMethods;
import java.io.File;
import java.util.ArrayList;
import static scriptfactory.VarsMethods.*;
public class SubscriptHandler {
public static void runSubscript(String path)
{
ArrayList<Action> actions = new ArrayList<>();
File subscriptFile = new File(DEFAULT_DIR + FSEP + path);
if (subscriptFile.exists())
loadscript(actions, subscriptFile);
else
loadscript(actions, new File(DEFAULT_DIR + FSEP + "dependencies" + FSEP + path));
ActionExecutor executor = new ActionExecutor(actions);
VarsMethods.currentSubscript = path;
for (int i = 0; i < actions.size(); i++) {
executor.execute();
}
VarsMethods.currentSubscript = "";
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ import static scriptfactory.VarsMethods.log;
* Welcome to AIO AIO - ScriptFactory. Make your own scripts!
*/
@ScriptManifest(author = "Before", name = "Script Factory 1.7", category = Category.OTHER, version = 1.7, description = "Create your own scripts!", servers = "All")
@ScriptManifest(author = "Before", name = "Script Factory 1.8", category = Category.OTHER, version = 1.8, description = "Create your own scripts!", servers = "All")
public class Core extends Script implements Paintable {
private ArrayList<Action> actions = new ArrayList<>();
@@ -6,14 +6,14 @@ import scriptfactory.Actions.Logic.Endif;
import scriptfactory.Actions.Logic.If;
import scriptfactory.Actions.Logic.IfNot;
import scriptfactory.Actions.Logic.LogicHandler;
import scriptfactory.Actions.SubscriptHandler;
import scriptfactory.VarsMethods;
import org.parabot.environment.api.utils.Time;
import java.io.File;
import java.util.ArrayList;
import java.util.Stack;
import static scriptfactory.VarsMethods.log;
import static scriptfactory.VarsMethods.*;
public class ActionExecutor {
private ArrayList<Action> actions;
@@ -109,7 +109,8 @@ public class ActionExecutor {
actionHandler.walkTo(action);
break;
case "Run subscript":
SubscriptHandler.runSubscript(action.getParamAsString(0));
insertSubscript(action, actions, action.getParamAsString(0));
lineIndex = --lineIndex == -1 ? actions.size()-1 : lineIndex; //Rerun the last line, which now contains start of subscript
break;
case "Bank all except IDs":
actionHandler.bankAllExcept(action);
@@ -122,4 +123,26 @@ public class ActionExecutor {
}
}
}
private void insertSubscript(Action action, ArrayList<Action> actions, String path) {
int actionIndex = -1;
//Find where to insert the subscript
for (int i = 0; i < actions.size(); i++)
if (actions.get(i).equals(action))
actionIndex = i;
//Load subscript into array
ArrayList<Action> subscriptActions = new ArrayList<>();
File subscriptFile = new File(DEFAULT_DIR + FSEP + path);
if (subscriptFile.exists())
loadscript(subscriptActions, subscriptFile);
else
loadscript(subscriptActions, new File(DEFAULT_DIR + FSEP + "dependencies" + FSEP + path));
//Insert subscript array into original script array
actions.remove(actionIndex);
for (int i = 0; i < subscriptActions.size(); i++) {
actions.add(actionIndex + i, subscriptActions.get(i));
}
}
}