Example #1
0
 public static void RegisterCommand(IInfiniCommand commandToRegister)
 {
     registeredCommands.Add(commandToRegister);
 }
Example #2
0
        public static bool RunCommand(string cmdString)
        {
            string[] cmdParts = cmdString.Split(' ');
            string   cmdName  = cmdParts[0];

            string[] cmdArgsPre = new string[cmdParts.Length - 1];
            Array.Copy(cmdParts, 1, cmdArgsPre, 0, cmdParts.Length - 1);
            string[] cmdArgs;

            //Fix strings
            bool          found      = false;
            int           foundIndex = 0;
            List <string> strings    = new List <string>();

            for (int p = 0; p < cmdArgsPre.Length; p++)
            {
                if (cmdArgsPre[p][0] == '"')
                {
                    found      = true;
                    foundIndex = p;
                }

                if (!found)
                {
                    strings.Add(cmdArgsPre[p]);
                }

                if (found && cmdArgsPre[p][cmdArgsPre[p].Length - 1] == '"')
                {
                    string allParts = "";
                    for (int a = foundIndex; a <= p; a++)
                    {
                        allParts = allParts + cmdArgsPre[a];
                        if (a < p)
                        {
                            allParts = allParts + " ";
                        }
                    }

                    allParts = allParts.Remove(0, 1);
                    allParts = allParts.Remove(allParts.Length - 1, 1);
                    strings.Add(allParts);
                    found = false;
                }
            }

            if (found)
            {
                Logger.Put("[ERROR] Unterminated string in command!\n");
                return(false);
            }

            cmdArgs = strings.ToArray();

            for (int i = 0; i < registeredCommands.Count; i++)
            {
                IInfiniCommand com = registeredCommands[i];

                if (com.commandName == cmdName)
                {
                    //It's a match! Move on to run the command and return the results...

                    for (int I = 0; I < cmdArgs.Length; I++)
                    {
                        if (cmdArgs[I][0] == '$')
                        {
                            string varName = cmdArgs[I].TrimStart('$');
                            if (registeredVars.ContainsKey(varName))
                            {
                                cmdArgs[I] = registeredVars[varName].value;
                            }
                            else
                            {
                                Logger.Put("[ERROR] Invalid var in command!\n");
                                return(false);
                            }
                        }
                    }

                    if (com.Execute(cmdArgs))
                    {
                        return(true);
                    }
                    else
                    {
                        Logger.Put("[ERROR] Command execution failed!\n");
                        return(false);
                    }
                }
            }

            //Command not found
            Logger.Put("[ERROR] Command not found!\n");
            return(false);
        }