コード例 #1
0
ファイル: AbstractCommand.cs プロジェクト: truency/Frenetic
 /// <summary>
 /// Displays the usage information on a command to the console.
 /// </summary>
 /// <param name="entry">The CommandEntry data to get usage help from..</param>
 public static void ShowUsage(CommandEntry entry)
 {
     entry.Bad("<{color.emphasis}>" + TagParser.Escape(entry.Command.Name) + "<{color.base}>: " + TagParser.Escape(entry.Command.Description));
     entry.Bad("<{color.cmdhelp}>Usage: /" + TagParser.Escape(entry.Name) + " " + TagParser.Escape(entry.Command.Arguments));
     if (entry.Command.IsDebug)
     {
         entry.Bad("Note: This command is intended for debugging purposes.");
     }
 }
コード例 #2
0
ファイル: ToggleCommand.cs プロジェクト: truency/Frenetic
 /// <summary>
 /// Executes the command.
 /// </summary>
 /// <param name="entry">Entry to be executed.</param>
 public override void Execute(CommandEntry entry)
 {
     if (entry.Arguments.Count < 1)
     {
         ShowUsage(entry);
     }
     else
     {
         string target = entry.GetArgument(0);
         CVar cvar = entry.Output.CVarSys.Get(target);
         if (cvar == null)
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' does not exist!");
             return;
         }
         if (cvar.Flags.HasFlag(CVarFlag.ServerControl))
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified, it is server controlled!");
         }
         if (cvar.Flags.HasFlag(CVarFlag.ReadOnly))
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified, it is a read-only system variable!");
         }
         else if (cvar.Flags.HasFlag(CVarFlag.InitOnly) && !entry.Output.Initializing)
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified after game initialization.");
         }
         else if (cvar.Flags.HasFlag(CVarFlag.Delayed) && !entry.Output.Initializing)
         {
             cvar.Set(cvar.ValueB ? "false" : "true");
             entry.Good("<{color.info}>CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name) +
                 "<{color.info}>' is delayed, and its value will be calculated after the game is reloaded.");
         }
         else
         {
             cvar.Set(cvar.ValueB ? "false" : "true");
             entry.Good("<{color.info}>CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name) +
                 "<{color.info}>' set to '<{color.emphasis}>" + TagParser.Escape(cvar.Value) + "<{color.info}>'.");
         }
     }
 }
コード例 #3
0
ファイル: UndefineCommand.cs プロジェクト: truency/Frenetic
 public override void Execute(CommandEntry entry)
 {
     if (entry.Arguments.Count < 1)
     {
         ShowUsage(entry);
     }
     else
     {
         string target = entry.GetArgument(0);
         if (entry.Queue.Variables.ContainsKey(target.ToLower()))
         {
             entry.Queue.Variables.Remove(target.ToLower());
             entry.Good("Queue variable '<{color.emphasis}>" + TagParser.Escape(target.ToLower()) + "<{color.base}>' removed'.");
         }
         else
         {
             entry.Bad("Unknown queue variable '<{color.emphasis}>" + TagParser.Escape(target.ToLower()) + "<{color.base}>'.");
         }
     }
 }
コード例 #4
0
ファイル: GotoCommand.cs プロジェクト: truency/Frenetic
 /// <summary>
 /// Executes the command.
 /// </summary>
 /// <param name="entry">Entry to be executed.</param>
 public override void Execute(CommandEntry entry)
 {
     if (entry.Arguments.Count < 1)
     {
         ShowUsage(entry);
         return;
     }
     string targ = entry.GetArgument(0);
     bool hasnext = false;
     for (int i = 0; i < entry.Queue.CommandList.Length; i++)
     {
         if (entry.Queue.GetCommand(i).Command is MarkCommand
             && entry.Queue.GetCommand(i).Arguments[0] == targ)
         {
             hasnext = true;
             break;
         }
     }
     if (hasnext)
     {
         entry.Good("Going to mark.");
         while (entry.Queue.CommandList.Length > 0)
         {
             if (entry.Queue.GetCommand(0).Command is MarkCommand
                 && entry.Queue.GetCommand(0).Arguments[0] == targ)
             {
                 entry.Queue.RemoveCommand(0);
                 break;
             }
             entry.Queue.RemoveCommand(0);
         }
     }
     else
     {
         entry.Bad("Cannot goto marked location: unknown marker!");
     }
 }
コード例 #5
0
ファイル: CvarinfoCommand.cs プロジェクト: truency/Frenetic
 /// <summary>
 /// Executes the command.
 /// </summary>
 /// <param name="entry">Entry to be executed.</param>
 public override void Execute(CommandEntry entry)
 {
     if (entry.Arguments.Count < 1)
     {
         entry.Info("Listing <{color.emphasis}>" + entry.Output.CVarSys.CVars.Count + "<{color.base}> CVars...");
         for (int i = 0; i < entry.Output.CVarSys.CVars.Count; i++)
         {
             CVar cvar = entry.Output.CVarSys.CVarList[i];
             entry.Info("<{color.emphasis}>" + (i + 1).ToString() + "<{color.simple}>)<{color.emphasis}> " + TagParser.Escape(cvar.Info()));
         }
     }
     else
     {
         string target = entry.GetArgument(0).ToLower();
         List<CVar> cvars = new List<CVar>();
         for (int i = 0; i < entry.Output.CVarSys.CVars.Count; i++)
         {
             if (entry.Output.CVarSys.CVarList[i].Name.StartsWith(target))
             {
                 cvars.Add(entry.Output.CVarSys.CVarList[i]);
             }
         }
         if (cvars.Count == 0)
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(target) + "<{color.base}>' does not exist!");
         }
         else
         {
             entry.Info("Listing <{color.emphasis}>" + cvars.Count + "<{color.base}> CVars...");
             for (int i = 0; i < cvars.Count; i++)
             {
                 CVar cvar = cvars[i];
                 entry.Info("<{color.emphasis}>" + (i + 1).ToString() + "<{color.simple}>)<{color.emphasis}> " + TagParser.Escape(cvar.Info()));
             }
         }
     }
 }
コード例 #6
0
ファイル: SetCommand.cs プロジェクト: truency/Frenetic
 /// <summary>
 /// Executes the command.
 /// </summary>
 /// <param name="entry">Entry to be executed.</param>
 public override void Execute(CommandEntry entry)
 {
     if (entry.Arguments.Count < 2)
     {
         ShowUsage(entry);
     }
     else
     {
         string target = entry.GetArgument(0);
         string newvalue = entry.GetArgument(1);
         string a2 = entry.Arguments.Count > 2 ? entry.GetArgument(2).ToLower(): "";
         bool force = a2 == "force";
         bool remove = a2 == "remove";
         bool do_not_save = a2 == "do_not_save";
         if (remove)
         {
             CVar Cvar = entry.Output.CVarSys.Get(target);
             if (Cvar == null)
             {
                 entry.Good("CVar '<{color.emphasis}>" + TagParser.Escape(target)
                     + "<{color.base}>' cannot be removed, it doesn't exist!");
             }
             else if (!Cvar.Flags.HasFlag(CVarFlag.UserMade))
             {
                 entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(Cvar.Name)
                     + "<{color.base}>' cannot be removed, it wasn't user made!");
             }
             else
             {
                 Cvar.Set("");
                 entry.Output.CVarSys.CVars.Remove(Cvar.Name);
                 entry.Output.CVarSys.CVarList.Remove(Cvar);
                 entry.Good("<{color.info}>CVar '<{color.emphasis}>" + TagParser.Escape(Cvar.Name) +
                     "<{color.info}>' removed.");
             }
             return;
         }
         CVar cvar = entry.Output.CVarSys.AbsoluteSet(target, newvalue, force, do_not_save ? CVarFlag.DoNotSave: CVarFlag.None);
         if (cvar.Flags.HasFlag(CVarFlag.ServerControl) && !force)
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified, it is server controlled!");
             return;
         }
         if (cvar.Flags.HasFlag(CVarFlag.ReadOnly))
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified, it is a read-only system variable!");
         }
         else if (cvar.Flags.HasFlag(CVarFlag.InitOnly) && !entry.Output.Initializing)
         {
             entry.Bad("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name)
                 + "<{color.base}>' cannot be modified after game initialization.");
         }
         else if (cvar.Flags.HasFlag(CVarFlag.Delayed) && !entry.Output.Initializing)
         {
             entry.Good("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name) +
                 "<{color.base}>' is delayed, and its value will be calculated after the game is reloaded.");
         }
         else
         {
             entry.Good("CVar '<{color.emphasis}>" + TagParser.Escape(cvar.Name) +
                 "<{color.base}>' set to '<{color.emphasis}>" + TagParser.Escape(cvar.Value) + "<{color.base}>'.");
         }
     }
 }