|
- using System;
- using RobocraftX.GUI.CommandLine;
- using RobocraftX.Multiplayer;
- using RobocraftX.StateSync;
- using RobocraftX.Character;
- using Svelto.ECS;
- using Unity.Entities;
- using UnityEngine;
- using uREPL;
- using Svelto.Context;
- using RobocraftX;
-
- namespace ExtraCommands.Basics
- {
- [CustomCommand]
- class ChainCommandEngine : CustomCommandEngine
- {
- public ChainCommandEngine(UnityContext<FullGameCompositionRoot> ctxHolder, EnginesRoot enginesRoot, World physW, Action reloadGame, MultiplayerInitParameters mpParams) : base(ctxHolder, enginesRoot, physW, reloadGame, mpParams)
- {
- }
-
- public override void Ready()
- {
- CustomCommandUtility.Register<string, string>("Chain", ChainCommand, "Run two commands, one after the other");
- CustomCommandUtility.Register<string, string>("ChainNoFail", ChainNoFailCommand, "Run two commands, one after the other even if the first one is invalid");
- CustomCommandUtility.Register<string, string>("ChainQuiet", ChainQuietCommand, "Run two commands, one after the other quietly");
- }
-
- private void ChainCommand(string command1, string command2)
- {
- string command1a = decomma(command1);
- string command2a = decomma(command2);
- bool success1 = uREPL.Evaluator.Evaluate(command1a).type == CompileResult.Type.Success;
- if (!success1) {
- uREPL.Log.Error("First command was not executed successfully");
- return;
- }
- bool success2 = uREPL.Evaluator.Evaluate(command2a).type == CompileResult.Type.Success;
- if (!success2) {
- uREPL.Log.Error("Second command was not executed successfully");
- }
- }
-
- private void ChainNoFailCommand(string command1, string command2)
- {
- string command1a = decomma(command1);
- string command2a = decomma(command2);
- bool success1 = uREPL.Evaluator.Evaluate(command1a).type == CompileResult.Type.Success;
- if (!success1) {
- uREPL.Log.Error("First command was not executed successfully");
- }
- bool success2 = uREPL.Evaluator.Evaluate(command2a).type == CompileResult.Type.Success;
- if (!success2) {
- uREPL.Log.Error("Second command was not executed successfully");
- }
- }
-
- private void ChainQuietCommand(string command1, string command2)
- {
- string command1a = decomma(command1);
- string command2a = decomma(command2);
- uREPL.Evaluator.Evaluate(command1a);
- uREPL.Evaluator.Evaluate(command2a);
- }
-
- private string decomma(string strIn)
- {
- string strOut = "";
- bool wasCommaLast = false;
- foreach (char c in strIn)
- {
- if (wasCommaLast)
- {
- wasCommaLast = false;
- if (c == ' ')
- {
- strOut = strOut.Substring(0, strOut.Length - 1);
- }
- }
- if (c == ',')
- {
- wasCommaLast = true;
- }
- strOut += c;
- }
- return strOut;
- }
-
- public override void Dispose()
- {
- CustomCommandUtility.Unregister("Chain");
- CustomCommandUtility.Unregister("ChainNoFail");
- CustomCommandUtility.Unregister("ChainQuiet");
- }
- }
- }
|