Files
RobustToolbox/Robust.Shared/Configuration/ConfigurationCommands.cs
T

53 lines
1.5 KiB
C#

using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using Robust.Shared.Console;
namespace Robust.Shared.Configuration
{
[SuppressMessage("ReSharper", "StringLiteralTypo")]
internal abstract class SharedCVarCommand : ICommand
{
public string Command => "cvar";
public string Description => "Gets or sets a CVar.";
public string Help => @"cvar <name> [value]
If a value is passed, the value is parsed and stored as the new value of the CVar.
If not, the current value of the CVar is displayed.";
protected static object ParseObject(Type type, string input)
{
if (type == typeof(bool))
{
if(bool.TryParse(input, out var val))
return val;
if (int.TryParse(input, out var intVal))
{
if (intVal == 0) return false;
if (intVal == 1) return true;
}
throw new FormatException($"Could not parse bool value: {input}");
}
if (type == typeof(string))
{
return input;
}
if (type == typeof(int))
{
return int.Parse(input, CultureInfo.InvariantCulture);
}
if (type == typeof(float))
{
return float.Parse(input, CultureInfo.InvariantCulture);
}
throw new NotImplementedException();
}
}
}