mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-02 18:17:09 +02:00
* Save work. * three billion tweaks * Rune-aware parser. * a * all shedded out for the night * a * oogh * Publicizes a lot of common generic commands, so custom toolshed envs can include them. * Implement parsing for all number types. * i think i might implode * a * Tests. * a * Enum parser test. * do u like parsers * oopls * ug fixes * Toolshed is approaching a non-insignificant part of the engine's size. * Pool toolshed's tests, also type tests. * bwa * tests pass :yay: * Update Robust.Shared/CVars.cs Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com> * how did this not fail tests * awa * many levels of silly --------- Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com> Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
202 lines
5.6 KiB
C#
202 lines
5.6 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Numerics;
|
|
|
|
namespace Robust.Shared.Toolshed.Commands.Math;
|
|
|
|
#region Sine
|
|
[ToolshedCommand]
|
|
public sealed class SinCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Sin(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class SinPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.SinPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ASinCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Asin(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ASinPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.AsinPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
#endregion
|
|
#region Cosine
|
|
[ToolshedCommand]
|
|
public sealed class CosCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Cos(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class CosPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.CosPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ACosCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Acos(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ACosPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.AcosPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
#endregion
|
|
#region Tangent
|
|
[ToolshedCommand]
|
|
public sealed class TanCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Tan(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class TanPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.TanPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ATanCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.Atan(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
|
|
[ToolshedCommand]
|
|
public sealed class ATanPiCommand : ToolshedCommand
|
|
{
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public T Operation<T>([PipedArgument] T x)
|
|
where T : ITrigonometricFunctions<T>
|
|
{
|
|
return T.AtanPi(x);
|
|
}
|
|
|
|
[CommandImplementation, TakesPipedTypeAsGeneric]
|
|
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
|
|
where T : ITrigonometricFunctions<T>
|
|
=> x.Select(Operation);
|
|
}
|
|
#endregion
|