Fix IDE0090
This commit is contained in:
committed by
Pavel Penev
parent
164abfdae1
commit
8a285f9b19
@@ -169,7 +169,7 @@ dotnet_diagnostic.IDE0082.severity = warning
|
||||
|
||||
# IDE0090 Simplify 'new' expression
|
||||
#csharp_style_implicit_object_creation_when_type_is_apparent = true
|
||||
dotnet_diagnostic.IDE0090.severity = silent # Requires C# 9 - TODO Consider enabling
|
||||
dotnet_diagnostic.IDE0090.severity = warning
|
||||
|
||||
# IDE0180 Use tuple to swap values
|
||||
#csharp_style_prefer_tuple_swap = true
|
||||
|
||||
@@ -84,21 +84,21 @@ namespace OpenRA
|
||||
class ConditionState
|
||||
{
|
||||
/// <summary>Delegates that have registered to be notified when this condition changes.</summary>
|
||||
public readonly List<VariableObserverNotifier> Notifiers = new List<VariableObserverNotifier>();
|
||||
public readonly List<VariableObserverNotifier> Notifiers = new();
|
||||
|
||||
/// <summary>Unique integers identifying granted instances of the condition.</summary>
|
||||
public readonly HashSet<int> Tokens = new HashSet<int>();
|
||||
public readonly HashSet<int> Tokens = new();
|
||||
}
|
||||
|
||||
readonly Dictionary<string, ConditionState> conditionStates = new Dictionary<string, ConditionState>();
|
||||
readonly Dictionary<string, ConditionState> conditionStates = new();
|
||||
|
||||
/// <summary>Each granted condition receives a unique token that is used when revoking.</summary>
|
||||
readonly Dictionary<int, string> conditionTokens = new Dictionary<int, string>();
|
||||
readonly Dictionary<int, string> conditionTokens = new();
|
||||
|
||||
int nextConditionToken = 1;
|
||||
|
||||
/// <summary>Cache of condition -> enabled state for quick evaluation of token counter conditions.</summary>
|
||||
readonly Dictionary<string, int> conditionCache = new Dictionary<string, int>();
|
||||
readonly Dictionary<string, int> conditionCache = new();
|
||||
|
||||
/// <summary>Read-only version of conditionCache that is passed to IConditionConsumers.</summary>
|
||||
readonly IReadOnlyDictionary<string, int> readOnlyConditionCache;
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace OpenRA
|
||||
Bits = (x & 0xFFF) << 20 | (y & 0xFFF) << 8 | layer;
|
||||
}
|
||||
|
||||
public static readonly CPos Zero = new CPos(0, 0, 0);
|
||||
public static readonly CPos Zero = new(0, 0, 0);
|
||||
|
||||
public static explicit operator CPos(int2 a) { return new CPos(a.X, a.Y); }
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA
|
||||
public readonly int X, Y;
|
||||
|
||||
public CVec(int x, int y) { X = x; Y = y; }
|
||||
public static readonly CVec Zero = new CVec(0, 0);
|
||||
public static readonly CVec Zero = new(0, 0);
|
||||
|
||||
public static CVec operator +(CVec a, CVec b) { return new CVec(a.X + b.X, a.Y + b.Y); }
|
||||
public static CVec operator -(CVec a, CVec b) { return new CVec(a.X - b.X, a.Y - b.Y); }
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace OpenRA
|
||||
|
||||
public class ExternalMods : IReadOnlyDictionary<string, ExternalMod>
|
||||
{
|
||||
readonly Dictionary<string, ExternalMod> mods = new Dictionary<string, ExternalMod>();
|
||||
readonly Dictionary<string, ExternalMod> mods = new();
|
||||
readonly SheetBuilder sheetBuilder;
|
||||
|
||||
Sheet CreateSheet()
|
||||
|
||||
@@ -62,14 +62,14 @@ namespace OpenRA
|
||||
throw new NotImplementedException($"FieldLoader: Missing field `{s}` on `{f.Name}`");
|
||||
|
||||
static readonly ConcurrentCache<Type, FieldLoadInfo[]> TypeLoadInfo =
|
||||
new ConcurrentCache<Type, FieldLoadInfo[]>(BuildTypeLoadInfo);
|
||||
new(BuildTypeLoadInfo);
|
||||
static readonly ConcurrentCache<string, BooleanExpression> BooleanExpressionCache =
|
||||
new ConcurrentCache<string, BooleanExpression>(expression => new BooleanExpression(expression));
|
||||
new(expression => new BooleanExpression(expression));
|
||||
static readonly ConcurrentCache<string, IntegerExpression> IntegerExpressionCache =
|
||||
new ConcurrentCache<string, IntegerExpression>(expression => new IntegerExpression(expression));
|
||||
new(expression => new IntegerExpression(expression));
|
||||
|
||||
static readonly Dictionary<Type, Func<string, Type, string, MemberInfo, object>> TypeParsers =
|
||||
new Dictionary<Type, Func<string, Type, string, MemberInfo, object>>()
|
||||
new()
|
||||
{
|
||||
{ typeof(int), ParseInt },
|
||||
{ typeof(ushort), ParseUShort },
|
||||
@@ -103,7 +103,7 @@ namespace OpenRA
|
||||
};
|
||||
|
||||
static readonly Dictionary<Type, Func<string, Type, string, MiniYaml, MemberInfo, object>> GenericTypeParsers =
|
||||
new Dictionary<Type, Func<string, Type, string, MiniYaml, MemberInfo, object>>()
|
||||
new()
|
||||
{
|
||||
{ typeof(HashSet<>), ParseHashSetOrList },
|
||||
{ typeof(List<>), ParseHashSetOrList },
|
||||
@@ -749,7 +749,7 @@ namespace OpenRA
|
||||
[AttributeUsage(AttributeTargets.Field)]
|
||||
public class SerializeAttribute : Attribute
|
||||
{
|
||||
public static readonly SerializeAttribute Default = new SerializeAttribute(true);
|
||||
public static readonly SerializeAttribute Default = new(true);
|
||||
|
||||
public bool IsDefault => this == Default;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRA.FileFormats
|
||||
public Color[] Palette { get; }
|
||||
public byte[] Data { get; }
|
||||
public SpriteFrameType Type { get; }
|
||||
public Dictionary<string, string> EmbeddedData = new Dictionary<string, string>();
|
||||
public Dictionary<string, string> EmbeddedData = new();
|
||||
|
||||
public int PixelStride => Type == SpriteFrameType.Indexed8 ? 1 : Type == SpriteFrameType.Rgb24 ? 3 : 4;
|
||||
|
||||
|
||||
@@ -29,16 +29,16 @@ namespace OpenRA.FileSystem
|
||||
public class FileSystem : IReadOnlyFileSystem
|
||||
{
|
||||
public IEnumerable<IReadOnlyPackage> MountedPackages => mountedPackages.Keys;
|
||||
readonly Dictionary<IReadOnlyPackage, int> mountedPackages = new Dictionary<IReadOnlyPackage, int>();
|
||||
readonly Dictionary<string, IReadOnlyPackage> explicitMounts = new Dictionary<string, IReadOnlyPackage>();
|
||||
readonly Dictionary<IReadOnlyPackage, int> mountedPackages = new();
|
||||
readonly Dictionary<string, IReadOnlyPackage> explicitMounts = new();
|
||||
readonly string modID;
|
||||
|
||||
// Mod packages that should not be disposed
|
||||
readonly List<IReadOnlyPackage> modPackages = new List<IReadOnlyPackage>();
|
||||
readonly List<IReadOnlyPackage> modPackages = new();
|
||||
readonly IReadOnlyDictionary<string, Manifest> installedMods;
|
||||
readonly IPackageLoader[] packageLoaders;
|
||||
|
||||
Cache<string, List<IReadOnlyPackage>> fileIndex = new Cache<string, List<IReadOnlyPackage>>(_ => new List<IReadOnlyPackage>());
|
||||
Cache<string, List<IReadOnlyPackage>> fileIndex = new(_ => new List<IReadOnlyPackage>());
|
||||
|
||||
public FileSystem(string modID, IReadOnlyDictionary<string, Manifest> installedMods, IPackageLoader[] packageLoaders)
|
||||
{
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace OpenRA.FileSystem
|
||||
|
||||
sealed class ReadWriteZipFile : ReadOnlyZipFile, IReadWritePackage
|
||||
{
|
||||
readonly MemoryStream pkgStream = new MemoryStream();
|
||||
readonly MemoryStream pkgStream = new();
|
||||
|
||||
public ReadWriteZipFile(string filename, bool create = false)
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace OpenRA
|
||||
internal static OrderManager OrderManager;
|
||||
static Server.Server server;
|
||||
|
||||
public static MersenneTwister CosmeticRandom = new MersenneTwister(); // not synced
|
||||
public static MersenneTwister CosmeticRandom = new(); // not synced
|
||||
|
||||
public static Renderer Renderer;
|
||||
public static Sound Sound;
|
||||
@@ -563,7 +563,7 @@ namespace OpenRA
|
||||
|
||||
// Note: These delayed actions should only be used by widgets or disposing objects
|
||||
// - things that depend on a particular world should be queuing them on the world actor.
|
||||
static volatile ActionQueue delayedActions = new ActionQueue();
|
||||
static volatile ActionQueue delayedActions = new();
|
||||
|
||||
public static void RunAfterTick(Action a) { delayedActions.Add(a, RunTime); }
|
||||
public static void RunAfterDelay(int delayMilliseconds, Action a) { delayedActions.Add(a, RunTime + delayMilliseconds); }
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA
|
||||
public TimeSpan Duration => EndTimeUtc > StartTimeUtc ? EndTimeUtc - StartTimeUtc : TimeSpan.Zero;
|
||||
|
||||
public IList<Player> Players { get; }
|
||||
public HashSet<int> DisabledSpawnPoints = new HashSet<int>();
|
||||
public HashSet<int> DisabledSpawnPoints = new();
|
||||
public MapPreview MapPreview => Game.ModData.MapCache[MapUid];
|
||||
public IEnumerable<Player> HumanPlayers { get { return Players.Where(p => p.IsHuman); } }
|
||||
public bool IsSinglePlayer => HumanPlayers.Count() == 1;
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRA
|
||||
/// You can remove inherited traits by adding a - in front of them as in -TraitName: to inherit everything, but this trait.
|
||||
/// </summary>
|
||||
public readonly string Name;
|
||||
readonly TypeDictionary traits = new TypeDictionary();
|
||||
readonly TypeDictionary traits = new();
|
||||
List<TraitInfo> constructOrderCache = null;
|
||||
|
||||
public ActorInfo(ObjectCreator creator, string name, MiniYaml node)
|
||||
|
||||
@@ -17,14 +17,14 @@ namespace OpenRA.GameRules
|
||||
{
|
||||
public class SoundInfo
|
||||
{
|
||||
public readonly Dictionary<string, string[]> Variants = new Dictionary<string, string[]>();
|
||||
public readonly Dictionary<string, string[]> Prefixes = new Dictionary<string, string[]>();
|
||||
public readonly Dictionary<string, string[]> Voices = new Dictionary<string, string[]>();
|
||||
public readonly Dictionary<string, string[]> Notifications = new Dictionary<string, string[]>();
|
||||
public readonly Dictionary<string, string[]> Variants = new();
|
||||
public readonly Dictionary<string, string[]> Prefixes = new();
|
||||
public readonly Dictionary<string, string[]> Voices = new();
|
||||
public readonly Dictionary<string, string[]> Notifications = new();
|
||||
public readonly string DefaultVariant = ".aud";
|
||||
public readonly string DefaultPrefix = "";
|
||||
public readonly HashSet<string> DisableVariants = new HashSet<string>();
|
||||
public readonly HashSet<string> DisablePrefixes = new HashSet<string>();
|
||||
public readonly HashSet<string> DisableVariants = new();
|
||||
public readonly HashSet<string> DisablePrefixes = new();
|
||||
|
||||
public readonly Lazy<Dictionary<string, SoundPool>> VoicePools;
|
||||
public readonly Lazy<Dictionary<string, SoundPool>> NotificationsPools;
|
||||
@@ -69,7 +69,7 @@ namespace OpenRA.GameRules
|
||||
public readonly float VolumeModifier;
|
||||
public readonly InterruptType Type;
|
||||
readonly string[] clips;
|
||||
readonly List<string> liveclips = new List<string>();
|
||||
readonly List<string> liveclips = new();
|
||||
|
||||
public SoundPool(float volumeModifier, InterruptType interruptType, params string[] clips)
|
||||
{
|
||||
|
||||
@@ -103,16 +103,16 @@ namespace OpenRA.GameRules
|
||||
public readonly bool CanTargetSelf = false;
|
||||
|
||||
[Desc("What types of targets are affected.")]
|
||||
public readonly BitSet<TargetableType> ValidTargets = new BitSet<TargetableType>("Ground", "Water");
|
||||
public readonly BitSet<TargetableType> ValidTargets = new("Ground", "Water");
|
||||
|
||||
[Desc("What types of targets are unaffected.", "Overrules ValidTargets.")]
|
||||
public readonly BitSet<TargetableType> InvalidTargets;
|
||||
|
||||
static readonly BitSet<TargetableType> TargetTypeAir = new BitSet<TargetableType>("Air");
|
||||
static readonly BitSet<TargetableType> TargetTypeAir = new("Air");
|
||||
|
||||
[Desc("If weapon is not directly targeting an actor and targeted position is above this altitude,",
|
||||
"the weapon will ignore terrain target types and only check TargetTypeAir for validity.")]
|
||||
public readonly WDist AirThreshold = new WDist(128);
|
||||
public readonly WDist AirThreshold = new(128);
|
||||
|
||||
[Desc("Delay in ticks between firing shots from the same ammo magazine. If one entry, it will be used for all bursts.",
|
||||
"If multiple entries, their number needs to match Burst - 1.")]
|
||||
@@ -128,7 +128,7 @@ namespace OpenRA.GameRules
|
||||
public readonly IProjectileInfo Projectile;
|
||||
|
||||
[FieldLoader.LoadUsing(nameof(LoadWarheads))]
|
||||
public readonly List<IWarhead> Warheads = new List<IWarhead>();
|
||||
public readonly List<IWarhead> Warheads = new();
|
||||
|
||||
/// <summary>
|
||||
/// This constructor is used solely for documentation generation.
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public readonly int[] PanelRegion = null;
|
||||
public readonly PanelSides PanelSides = PanelSides.All;
|
||||
public readonly Dictionary<string, Rectangle> Regions = new Dictionary<string, Rectangle>();
|
||||
public readonly Dictionary<string, Rectangle> Regions = new();
|
||||
}
|
||||
|
||||
public static IReadOnlyDictionary<string, Collection> Collections => collections;
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRA.Graphics
|
||||
public IHardwareCursor[] Cursors;
|
||||
}
|
||||
|
||||
readonly Dictionary<string, Cursor> cursors = new Dictionary<string, Cursor>();
|
||||
readonly Dictionary<string, Cursor> cursors = new();
|
||||
readonly SheetBuilder sheetBuilder;
|
||||
readonly GraphicSettings graphicSettings;
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@ namespace OpenRA.Graphics
|
||||
public ITexture ColorShifts { get; }
|
||||
|
||||
public int Height { get; private set; }
|
||||
readonly Dictionary<string, ImmutablePalette> palettes = new Dictionary<string, ImmutablePalette>();
|
||||
readonly Dictionary<string, MutablePalette> mutablePalettes = new Dictionary<string, MutablePalette>();
|
||||
readonly Dictionary<string, int> indices = new Dictionary<string, int>();
|
||||
readonly Dictionary<string, ImmutablePalette> palettes = new();
|
||||
readonly Dictionary<string, MutablePalette> mutablePalettes = new();
|
||||
readonly Dictionary<string, int> indices = new();
|
||||
byte[] buffer = Array.Empty<byte>();
|
||||
float[] colorShiftBuffer = Array.Empty<float>();
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace OpenRA.Graphics
|
||||
// Static constants
|
||||
static readonly float[] ShadowDiffuse = new float[] { 0, 0, 0 };
|
||||
static readonly float[] ShadowAmbient = new float[] { 1, 1, 1 };
|
||||
static readonly float2 SpritePadding = new float2(2, 2);
|
||||
static readonly float2 SpritePadding = new(2, 2);
|
||||
static readonly float[] ZeroVector = new float[] { 0, 0, 0, 1 };
|
||||
static readonly float[] ZVector = new float[] { 0, 0, 1, 1 };
|
||||
static readonly float[] FlipMtx = Util.ScaleMatrix(1, -1, 1);
|
||||
@@ -47,9 +47,9 @@ namespace OpenRA.Graphics
|
||||
readonly Renderer renderer;
|
||||
readonly IShader shader;
|
||||
|
||||
readonly Dictionary<Sheet, IFrameBuffer> mappedBuffers = new Dictionary<Sheet, IFrameBuffer>();
|
||||
readonly Stack<KeyValuePair<Sheet, IFrameBuffer>> unmappedBuffers = new Stack<KeyValuePair<Sheet, IFrameBuffer>>();
|
||||
readonly List<(Sheet Sheet, Action Func)> doRender = new List<(Sheet, Action)>();
|
||||
readonly Dictionary<Sheet, IFrameBuffer> mappedBuffers = new();
|
||||
readonly Stack<KeyValuePair<Sheet, IFrameBuffer>> unmappedBuffers = new();
|
||||
readonly List<(Sheet Sheet, Action Func)> doRender = new();
|
||||
|
||||
SheetBuilder sheetBuilderForFrame;
|
||||
bool isInFrame;
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
public class RgbaColorRenderer
|
||||
{
|
||||
static readonly float3 Offset = new float3(0.5f, 0.5f, 0f);
|
||||
static readonly float3 Offset = new(0.5f, 0.5f, 0f);
|
||||
|
||||
readonly SpriteRenderer parent;
|
||||
readonly Vertex[] vertices = new Vertex[6];
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Graphics
|
||||
public sealed class SheetBuilder : IDisposable
|
||||
{
|
||||
public readonly SheetType Type;
|
||||
readonly List<Sheet> sheets = new List<Sheet>();
|
||||
readonly List<Sheet> sheets = new();
|
||||
readonly Func<Sheet> allocateSheet;
|
||||
readonly int margin;
|
||||
int rowHeight = 0;
|
||||
|
||||
@@ -24,14 +24,14 @@ namespace OpenRA.Graphics
|
||||
readonly ISpriteLoader[] loaders;
|
||||
readonly IReadOnlyFileSystem fileSystem;
|
||||
|
||||
readonly Dictionary<int, (int[] Frames, MiniYamlNode.SourceLocation Location)> spriteReservations = new Dictionary<int, (int[], MiniYamlNode.SourceLocation)>();
|
||||
readonly Dictionary<int, (int[] Frames, MiniYamlNode.SourceLocation Location)> frameReservations = new Dictionary<int, (int[], MiniYamlNode.SourceLocation)>();
|
||||
readonly Dictionary<string, List<int>> reservationsByFilename = new Dictionary<string, List<int>>();
|
||||
readonly Dictionary<int, (int[] Frames, MiniYamlNode.SourceLocation Location)> spriteReservations = new();
|
||||
readonly Dictionary<int, (int[] Frames, MiniYamlNode.SourceLocation Location)> frameReservations = new();
|
||||
readonly Dictionary<string, List<int>> reservationsByFilename = new();
|
||||
|
||||
readonly Dictionary<int, ISpriteFrame[]> resolvedFrames = new Dictionary<int, ISpriteFrame[]>();
|
||||
readonly Dictionary<int, Sprite[]> resolvedSprites = new Dictionary<int, Sprite[]>();
|
||||
readonly Dictionary<int, ISpriteFrame[]> resolvedFrames = new();
|
||||
readonly Dictionary<int, Sprite[]> resolvedSprites = new();
|
||||
|
||||
readonly Dictionary<int, (string Filename, MiniYamlNode.SourceLocation Location)> missingFiles = new Dictionary<int, (string, MiniYamlNode.SourceLocation)>();
|
||||
readonly Dictionary<int, (string Filename, MiniYamlNode.SourceLocation Location)> missingFiles = new();
|
||||
|
||||
int nextReservationToken = 1;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Graphics
|
||||
readonly IVertexBuffer<Vertex> vertexBuffer;
|
||||
readonly Vertex[] vertices;
|
||||
readonly bool[] ignoreTint;
|
||||
readonly HashSet<int> dirtyRows = new HashSet<int>();
|
||||
readonly HashSet<int> dirtyRows = new();
|
||||
readonly int rowStride;
|
||||
readonly bool restrictToBounds;
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public WPos CenterPosition => worldRenderer.ProjectedPosition(CenterLocation);
|
||||
|
||||
public Rectangle Rectangle => new Rectangle(TopLeft, new Size(viewportSize.X, viewportSize.Y));
|
||||
public Rectangle Rectangle => new(TopLeft, new Size(viewportSize.X, viewportSize.Y));
|
||||
public int2 TopLeft => CenterLocation - viewportSize / 2;
|
||||
public int2 BottomRight => CenterLocation + viewportSize / 2;
|
||||
int2 viewportSize;
|
||||
|
||||
@@ -31,19 +31,19 @@ namespace OpenRA.Graphics
|
||||
|
||||
public event Action PaletteInvalidated = null;
|
||||
|
||||
readonly HashSet<Actor> onScreenActors = new HashSet<Actor>();
|
||||
readonly HardwarePalette palette = new HardwarePalette();
|
||||
readonly Dictionary<string, PaletteReference> palettes = new Dictionary<string, PaletteReference>();
|
||||
readonly HashSet<Actor> onScreenActors = new();
|
||||
readonly HardwarePalette palette = new();
|
||||
readonly Dictionary<string, PaletteReference> palettes = new();
|
||||
readonly IRenderTerrain terrainRenderer;
|
||||
readonly Lazy<DebugVisualizations> debugVis;
|
||||
readonly Func<string, PaletteReference> createPaletteReference;
|
||||
readonly bool enableDepthBuffer;
|
||||
|
||||
readonly List<IFinalizedRenderable> preparedRenderables = new List<IFinalizedRenderable>();
|
||||
readonly List<IFinalizedRenderable> preparedOverlayRenderables = new List<IFinalizedRenderable>();
|
||||
readonly List<IFinalizedRenderable> preparedAnnotationRenderables = new List<IFinalizedRenderable>();
|
||||
readonly List<IFinalizedRenderable> preparedRenderables = new();
|
||||
readonly List<IFinalizedRenderable> preparedOverlayRenderables = new();
|
||||
readonly List<IFinalizedRenderable> preparedAnnotationRenderables = new();
|
||||
|
||||
readonly List<IRenderable> renderablesBuffer = new List<IRenderable>();
|
||||
readonly List<IRenderable> renderablesBuffer = new();
|
||||
|
||||
internal WorldRenderer(ModData modData, World world)
|
||||
{
|
||||
|
||||
@@ -19,8 +19,8 @@ namespace OpenRA
|
||||
public readonly string Name;
|
||||
public readonly Hotkey Default = Hotkey.Invalid;
|
||||
public readonly string Description = "";
|
||||
public readonly HashSet<string> Types = new HashSet<string>();
|
||||
public readonly HashSet<string> Contexts = new HashSet<string>();
|
||||
public readonly HashSet<string> Types = new();
|
||||
public readonly HashSet<string> Contexts = new();
|
||||
public readonly bool Readonly = false;
|
||||
public bool HasDuplicates { get; internal set; }
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace OpenRA
|
||||
public sealed class HotkeyManager
|
||||
{
|
||||
readonly Dictionary<string, Hotkey> settings;
|
||||
readonly Dictionary<string, HotkeyDefinition> definitions = new Dictionary<string, HotkeyDefinition>();
|
||||
readonly Dictionary<string, Hotkey> keys = new Dictionary<string, Hotkey>();
|
||||
readonly Dictionary<string, HotkeyDefinition> definitions = new();
|
||||
readonly Dictionary<string, Hotkey> keys = new();
|
||||
|
||||
public HotkeyManager(IReadOnlyFileSystem fileSystem, Dictionary<string, Hotkey> settings, Manifest manifest)
|
||||
{
|
||||
@@ -102,7 +102,7 @@ namespace OpenRA
|
||||
return null;
|
||||
}
|
||||
|
||||
public HotkeyReference this[string name] => new HotkeyReference(GetHotkeyReference(name));
|
||||
public HotkeyReference this[string name] => new(GetHotkeyReference(name));
|
||||
|
||||
public IEnumerable<HotkeyDefinition> Definitions => definitions.Values;
|
||||
}
|
||||
|
||||
@@ -19,15 +19,13 @@ namespace OpenRA
|
||||
public class Utility
|
||||
{
|
||||
static readonly ConcurrentCache<Type, FieldInfo[]> TypeFields =
|
||||
new ConcurrentCache<Type, FieldInfo[]>(type => type.GetFields());
|
||||
new(type => type.GetFields());
|
||||
|
||||
static readonly ConcurrentCache<(MemberInfo Member, Type AttributeType), bool> MemberHasAttribute =
|
||||
new ConcurrentCache<(MemberInfo Member, Type AttributeType), bool>(
|
||||
x => Attribute.IsDefined(x.Member, x.AttributeType));
|
||||
new(x => Attribute.IsDefined(x.Member, x.AttributeType));
|
||||
|
||||
static readonly ConcurrentCache<(MemberInfo Member, Type AttributeType, bool Inherit), object[]> MemberCustomAttributes =
|
||||
new ConcurrentCache<(MemberInfo Member, Type AttributeType, bool Inherit), object[]>(
|
||||
x => x.Member.GetCustomAttributes(x.AttributeType, x.Inherit));
|
||||
new(x => x.Member.GetCustomAttributes(x.AttributeType, x.Inherit));
|
||||
|
||||
public static FieldInfo[] GetFields(Type type)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace OpenRA
|
||||
{
|
||||
public readonly struct Hotkey : IEquatable<Hotkey>
|
||||
{
|
||||
public static Hotkey Invalid = new Hotkey(Keycode.UNKNOWN, Modifiers.None);
|
||||
public static Hotkey Invalid = new(Keycode.UNKNOWN, Modifiers.None);
|
||||
public bool IsValid()
|
||||
{
|
||||
return Key != Keycode.UNKNOWN;
|
||||
|
||||
@@ -256,7 +256,7 @@ namespace OpenRA
|
||||
|
||||
public static class KeycodeExts
|
||||
{
|
||||
static readonly Dictionary<Keycode, string> KeyNames = new Dictionary<Keycode, string>
|
||||
static readonly Dictionary<Keycode, string> KeyNames = new()
|
||||
{
|
||||
{ Keycode.UNKNOWN, "Undefined" },
|
||||
{ Keycode.RETURN, "Return" },
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA
|
||||
public readonly int U, V;
|
||||
|
||||
public MPos(int u, int v) { U = u; V = v; }
|
||||
public static readonly MPos Zero = new MPos(0, 0);
|
||||
public static readonly MPos Zero = new(0, 0);
|
||||
|
||||
public static bool operator ==(MPos me, MPos other) { return me.U == other.U && me.V == other.V; }
|
||||
public static bool operator !=(MPos me, MPos other) { return !(me == other); }
|
||||
@@ -71,7 +71,7 @@ namespace OpenRA
|
||||
public readonly int U, V;
|
||||
|
||||
public PPos(int u, int v) { U = u; V = v; }
|
||||
public static readonly PPos Zero = new PPos(0, 0);
|
||||
public static readonly PPos Zero = new(0, 0);
|
||||
|
||||
public static bool operator ==(PPos me, PPos other) { return me.U == other.U && me.V == other.V; }
|
||||
public static bool operator !=(PPos me, PPos other) { return !(me == other); }
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace OpenRA
|
||||
"RequiresMods", "PackageFormats"
|
||||
};
|
||||
|
||||
readonly TypeDictionary modules = new TypeDictionary();
|
||||
readonly TypeDictionary modules = new();
|
||||
readonly Dictionary<string, MiniYaml> yaml;
|
||||
|
||||
bool customDataLoaded;
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace OpenRA
|
||||
return uv.U >= mapTopLeft.U && uv.U <= mapBottomRight.U && uv.V >= mapTopLeft.V && uv.V <= mapBottomRight.V;
|
||||
}
|
||||
|
||||
public MapCoordsRegion MapCoords => new MapCoordsRegion(mapTopLeft, mapBottomRight);
|
||||
public MapCoordsRegion MapCoords => new(mapTopLeft, mapBottomRight);
|
||||
|
||||
public CellRegionEnumerator GetEnumerator()
|
||||
{
|
||||
|
||||
@@ -198,8 +198,8 @@ namespace OpenRA
|
||||
public int2 MapSize { get; private set; }
|
||||
|
||||
// Player and actor yaml. Public for access by the map importers and lint checks.
|
||||
public List<MiniYamlNode> PlayerDefinitions = new List<MiniYamlNode>();
|
||||
public List<MiniYamlNode> ActorDefinitions = new List<MiniYamlNode>();
|
||||
public List<MiniYamlNode> PlayerDefinitions = new();
|
||||
public List<MiniYamlNode> ActorDefinitions = new();
|
||||
|
||||
// Custom map yaml. Public for access by the map importers and lint checks
|
||||
public readonly MiniYaml RuleDefinitions;
|
||||
@@ -210,7 +210,7 @@ namespace OpenRA
|
||||
public readonly MiniYaml MusicDefinitions;
|
||||
public readonly MiniYaml NotificationDefinitions;
|
||||
|
||||
public readonly Dictionary<CPos, TerrainTile> ReplacedInvalidTerrainTiles = new Dictionary<CPos, TerrainTile>();
|
||||
public readonly Dictionary<CPos, TerrainTile> ReplacedInvalidTerrainTiles = new();
|
||||
|
||||
// Generated data
|
||||
public readonly MapGrid Grid;
|
||||
@@ -997,7 +997,7 @@ namespace OpenRA
|
||||
/// </summary>
|
||||
/// RectangularIsometric defines 1024 units along the diagonal axis,
|
||||
/// giving a half-tile height step of sqrt(2) * 512
|
||||
public WDist CellHeightStep => new WDist(Grid.Type == MapGridType.RectangularIsometric ? 724 : 512);
|
||||
public WDist CellHeightStep => new(Grid.Type == MapGridType.RectangularIsometric ? 724 : 512);
|
||||
|
||||
public CPos CellContaining(WPos pos)
|
||||
{
|
||||
|
||||
@@ -25,9 +25,9 @@ namespace OpenRA
|
||||
{
|
||||
public sealed class MapCache : IEnumerable<MapPreview>, IDisposable
|
||||
{
|
||||
public static readonly MapPreview UnknownMap = new MapPreview(null, null, MapGridType.Rectangular, null);
|
||||
public static readonly MapPreview UnknownMap = new(null, null, MapGridType.Rectangular, null);
|
||||
public IReadOnlyDictionary<IReadOnlyPackage, MapClassification> MapLocations => mapLocations;
|
||||
readonly Dictionary<IReadOnlyPackage, MapClassification> mapLocations = new Dictionary<IReadOnlyPackage, MapClassification>();
|
||||
readonly Dictionary<IReadOnlyPackage, MapClassification> mapLocations = new();
|
||||
public bool LoadPreviewImages = true;
|
||||
|
||||
readonly Cache<string, MapPreview> previews;
|
||||
@@ -35,18 +35,18 @@ namespace OpenRA
|
||||
readonly SheetBuilder sheetBuilder;
|
||||
Thread previewLoaderThread;
|
||||
bool previewLoaderThreadShutDown = true;
|
||||
readonly object syncRoot = new object();
|
||||
readonly Queue<MapPreview> generateMinimap = new Queue<MapPreview>();
|
||||
readonly object syncRoot = new();
|
||||
readonly Queue<MapPreview> generateMinimap = new();
|
||||
|
||||
public Dictionary<string, string> StringPool { get; } = new Dictionary<string, string>();
|
||||
|
||||
readonly List<MapDirectoryTracker> mapDirectoryTrackers = new List<MapDirectoryTracker>();
|
||||
readonly List<MapDirectoryTracker> mapDirectoryTrackers = new();
|
||||
|
||||
/// <summary>
|
||||
/// The most recently modified or loaded map at runtime.
|
||||
/// </summary>
|
||||
public string LastModifiedMap { get; private set; } = null;
|
||||
readonly Dictionary<string, string> mapUpdates = new Dictionary<string, string>();
|
||||
readonly Dictionary<string, string> mapUpdates = new();
|
||||
|
||||
string lastLoadedLastModifiedMap;
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA
|
||||
readonly MapClassification classification;
|
||||
|
||||
enum MapAction { Add, Delete, Update }
|
||||
readonly Dictionary<string, MapAction> mapActionQueue = new Dictionary<string, MapAction>();
|
||||
readonly Dictionary<string, MapAction> mapActionQueue = new();
|
||||
|
||||
bool dirty = false;
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace OpenRA
|
||||
public class MapGrid : IGlobalModData
|
||||
{
|
||||
public readonly MapGridType Type = MapGridType.Rectangular;
|
||||
public readonly Size TileSize = new Size(24, 24);
|
||||
public readonly Size TileSize = new(24, 24);
|
||||
public readonly byte MaximumTerrainHeight = 0;
|
||||
public readonly SubCell DefaultSubCell = (SubCell)byte.MaxValue;
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace OpenRA
|
||||
/// this does not validate whether individual map cells are actually
|
||||
/// projected inside the region.
|
||||
/// </summary>
|
||||
public MapCoordsRegion CandidateMapCoords => new MapCoordsRegion(mapTopLeft, mapBottomRight);
|
||||
public MapCoordsRegion CandidateMapCoords => new(mapTopLeft, mapBottomRight);
|
||||
|
||||
public ProjectedCellRegionEnumerator GetEnumerator()
|
||||
{
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace OpenRA
|
||||
{
|
||||
public readonly string Type;
|
||||
public readonly BitSet<TargetableType> TargetTypes;
|
||||
public readonly HashSet<string> AcceptsSmudgeType = new HashSet<string>();
|
||||
public readonly HashSet<string> AcceptsSmudgeType = new();
|
||||
public readonly Color Color;
|
||||
public readonly bool RestrictPlayerColor = false;
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ namespace OpenRA.Network
|
||||
public sealed class EchoConnection : IConnection
|
||||
{
|
||||
const int LocalClientId = 1;
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sync = new Queue<(int, int, ulong)>();
|
||||
readonly Queue<(int Frame, OrderPacket Orders)> orders = new Queue<(int, OrderPacket)>();
|
||||
readonly Queue<OrderPacket> immediateOrders = new Queue<OrderPacket>();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sync = new();
|
||||
readonly Queue<(int Frame, OrderPacket Orders)> orders = new();
|
||||
readonly Queue<OrderPacket> immediateOrders = new();
|
||||
bool disposed;
|
||||
|
||||
int IConnection.LocalClientId => LocalClientId;
|
||||
@@ -100,12 +100,12 @@ namespace OpenRA.Network
|
||||
{
|
||||
public readonly ConnectionTarget Target;
|
||||
internal ReplayRecorder Recorder { get; private set; }
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sentSync = new Queue<(int, int, ulong)>();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> queuedSyncPackets = new Queue<(int, int, ulong)>();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sentSync = new();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> queuedSyncPackets = new();
|
||||
|
||||
readonly Queue<(int Frame, OrderPacket Orders)> sentOrders = new Queue<(int, OrderPacket)>();
|
||||
readonly Queue<OrderPacket> sentImmediateOrders = new Queue<OrderPacket>();
|
||||
readonly ConcurrentQueue<(int FromClient, byte[] Data)> receivedPackets = new ConcurrentQueue<(int, byte[])>();
|
||||
readonly Queue<(int Frame, OrderPacket Orders)> sentOrders = new();
|
||||
readonly Queue<OrderPacket> sentImmediateOrders = new();
|
||||
readonly ConcurrentQueue<(int FromClient, byte[] Data)> receivedPackets = new();
|
||||
TcpClient tcp;
|
||||
volatile ConnectionState connectionState = ConnectionState.Connecting;
|
||||
volatile int clientId;
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace OpenRA.Network
|
||||
public const int MetadataMarker = -1;
|
||||
public const int TraitDataMarker = -3;
|
||||
|
||||
readonly MemoryStream ordersStream = new MemoryStream();
|
||||
readonly MemoryStream ordersStream = new();
|
||||
|
||||
// Loaded from file and updated during gameplay
|
||||
public int LastOrdersFrame { get; private set; }
|
||||
@@ -92,7 +92,7 @@ namespace OpenRA.Network
|
||||
public Session.Global GlobalSettings { get; private set; }
|
||||
public Dictionary<string, Session.Slot> Slots { get; private set; }
|
||||
public Dictionary<string, SlotClient> SlotClients { get; private set; }
|
||||
public Dictionary<int, MiniYaml> TraitData = new Dictionary<int, MiniYaml>();
|
||||
public Dictionary<int, MiniYaml> TraitData = new();
|
||||
|
||||
// Set on game start
|
||||
int[] clientsBySlotIndex = Array.Empty<int>();
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Network
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
static readonly SemaphoreSlim Locker = new SemaphoreSlim(1, 1);
|
||||
static readonly SemaphoreSlim Locker = new(1, 1);
|
||||
|
||||
static async void DeviceFound(object sender, DeviceEventArgs args)
|
||||
{
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace OpenRA.Network
|
||||
|
||||
public static class OrderIO
|
||||
{
|
||||
static readonly OrderPacket NoOrders = new OrderPacket(Array.Empty<Order>());
|
||||
static readonly OrderPacket NoOrders = new(Array.Empty<Order>());
|
||||
|
||||
public static byte[] SerializeSync((int Frame, int SyncHash, ulong DefeatState) data)
|
||||
{
|
||||
|
||||
@@ -23,10 +23,10 @@ namespace OpenRA.Network
|
||||
const OrderPacket ClientDisconnected = null;
|
||||
|
||||
readonly SyncReport syncReport;
|
||||
readonly Dictionary<int, Queue<(int Frame, OrderPacket Orders)>> pendingOrders = new Dictionary<int, Queue<(int, OrderPacket)>>();
|
||||
readonly Dictionary<int, (int SyncHash, ulong DefeatState)> syncForFrame = new Dictionary<int, (int, ulong)>();
|
||||
readonly Dictionary<int, Queue<(int Frame, OrderPacket Orders)>> pendingOrders = new();
|
||||
readonly Dictionary<int, (int SyncHash, ulong DefeatState)> syncForFrame = new();
|
||||
|
||||
public Session LobbyInfo = new Session();
|
||||
public Session LobbyInfo = new();
|
||||
|
||||
/// <summary>Null when watching a replay.</summary>
|
||||
public Session.Client LocalClient => LobbyInfo.ClientWithIndex(Connection.LocalClientId);
|
||||
@@ -47,11 +47,11 @@ namespace OpenRA.Network
|
||||
internal int GameSaveLastFrame = -1;
|
||||
internal int GameSaveLastSyncFrame = -1;
|
||||
|
||||
readonly List<Order> localOrders = new List<Order>();
|
||||
readonly List<Order> localImmediateOrders = new List<Order>();
|
||||
readonly List<Order> localOrders = new();
|
||||
readonly List<Order> localImmediateOrders = new();
|
||||
|
||||
readonly List<ClientOrder> processClientOrders = new List<ClientOrder>();
|
||||
readonly List<int> processClientsToRemove = new List<int>();
|
||||
readonly List<ClientOrder> processClientOrders = new();
|
||||
readonly List<int> processClientsToRemove = new();
|
||||
|
||||
bool disposed;
|
||||
bool generateSyncReport = false;
|
||||
|
||||
@@ -24,8 +24,8 @@ namespace OpenRA.Network
|
||||
public (int ClientId, byte[] Packet)[] Packets;
|
||||
}
|
||||
|
||||
readonly Queue<Chunk> chunks = new Queue<Chunk>();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sync = new Queue<(int, int, ulong)>();
|
||||
readonly Queue<Chunk> chunks = new();
|
||||
readonly Queue<(int Frame, int SyncHash, ulong DefeatState)> sync = new();
|
||||
readonly int orderLatency;
|
||||
|
||||
public readonly int TickCount;
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA.Network
|
||||
public ReplayMetadata Metadata;
|
||||
BinaryWriter writer;
|
||||
readonly Func<string> chooseFilename;
|
||||
MemoryStream preStartBuffer = new MemoryStream();
|
||||
MemoryStream preStartBuffer = new();
|
||||
|
||||
static bool IsGameStart(byte[] data)
|
||||
{
|
||||
|
||||
@@ -20,14 +20,14 @@ namespace OpenRA.Network
|
||||
{
|
||||
public class Session
|
||||
{
|
||||
public List<Client> Clients = new List<Client>();
|
||||
public List<Client> Clients = new();
|
||||
|
||||
// Keyed by the PlayerReference id that the slot corresponds to
|
||||
public Dictionary<string, Slot> Slots = new Dictionary<string, Slot>();
|
||||
public Dictionary<string, Slot> Slots = new();
|
||||
|
||||
public HashSet<int> DisabledSpawnPoints = new HashSet<int>();
|
||||
public HashSet<int> DisabledSpawnPoints = new();
|
||||
|
||||
public Global GlobalSettings = new Global();
|
||||
public Global GlobalSettings = new();
|
||||
|
||||
public static string AnonymizeIP(IPAddress ip)
|
||||
{
|
||||
@@ -221,7 +221,7 @@ namespace OpenRA.Network
|
||||
public int NetFrameInterval = 3;
|
||||
|
||||
[FieldLoader.Ignore]
|
||||
public Dictionary<string, LobbyOptionState> LobbyOptions = new Dictionary<string, LobbyOptionState>();
|
||||
public Dictionary<string, LobbyOptionState> LobbyOptions = new();
|
||||
|
||||
public static Global Deserialize(MiniYaml data)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Network
|
||||
class SyncReport
|
||||
{
|
||||
const int NumSyncReports = 7;
|
||||
static readonly Cache<Type, TypeInfo> TypeInfoCache = new Cache<Type, TypeInfo>(t => new TypeInfo(t));
|
||||
static readonly Cache<Type, TypeInfo> TypeInfoCache = new(t => new TypeInfo(t));
|
||||
|
||||
readonly OrderManager orderManager;
|
||||
|
||||
@@ -166,9 +166,9 @@ namespace OpenRA.Network
|
||||
public int Frame;
|
||||
public int SyncedRandom;
|
||||
public int TotalCount;
|
||||
public readonly List<TraitReport> Traits = new List<TraitReport>();
|
||||
public readonly List<EffectReport> Effects = new List<EffectReport>();
|
||||
public readonly List<OrderManager.ClientOrder> Orders = new List<OrderManager.ClientOrder>();
|
||||
public readonly List<TraitReport> Traits = new();
|
||||
public readonly List<EffectReport> Effects = new();
|
||||
public readonly List<OrderManager.ClientOrder> Orders = new();
|
||||
}
|
||||
|
||||
struct TraitReport
|
||||
@@ -278,7 +278,7 @@ namespace OpenRA.Network
|
||||
/// </summary>
|
||||
struct Values
|
||||
{
|
||||
static readonly object Sentinel = new object();
|
||||
static readonly object Sentinel = new();
|
||||
|
||||
object item1OrArray;
|
||||
object item2OrSentinel;
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA
|
||||
{
|
||||
// .NET does not support unloading assemblies, so mod libraries will leak across mod changes.
|
||||
// This tracks the assemblies that have been loaded since game start so that we don't load multiple copies
|
||||
static readonly Dictionary<string, Assembly> ResolvedAssemblies = new Dictionary<string, Assembly>();
|
||||
static readonly Dictionary<string, Assembly> ResolvedAssemblies = new();
|
||||
|
||||
readonly Cache<string, Type> typeCache;
|
||||
readonly Cache<Type, ConstructorInfo> ctorCache;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Primitives
|
||||
/// </summary>
|
||||
public class ActionQueue
|
||||
{
|
||||
readonly List<DelayedAction> actions = new List<DelayedAction>();
|
||||
readonly List<DelayedAction> actions = new();
|
||||
|
||||
public void Add(Action a, long desiredTime)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA.Primitives
|
||||
{
|
||||
static class BitSetAllocator<T> where T : class
|
||||
{
|
||||
static readonly Cache<string, BitSetIndex> Bits = new Cache<string, BitSetIndex>(Allocate);
|
||||
static readonly Cache<string, BitSetIndex> Bits = new(Allocate);
|
||||
static BitSetIndex nextBits = 1;
|
||||
|
||||
static BitSetIndex Allocate(string value)
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace OpenRA.Primitives
|
||||
{
|
||||
static class LongBitSetAllocator<T> where T : class
|
||||
{
|
||||
static readonly Cache<string, long> Bits = new Cache<string, long>(Allocate);
|
||||
static readonly Cache<string, long> Bits = new(Allocate);
|
||||
static long nextBits = 1;
|
||||
|
||||
static long Allocate(string value)
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace OpenRA.Primitives
|
||||
{
|
||||
public readonly struct Polygon
|
||||
{
|
||||
public static readonly Polygon Empty = new Polygon(Rectangle.Empty);
|
||||
public static readonly Polygon Empty = new(Rectangle.Empty);
|
||||
|
||||
public readonly Rectangle BoundingRect;
|
||||
public readonly int2[] Vertices;
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRA.Primitives
|
||||
/// </summary>
|
||||
public abstract class ReadOnlyAdapterStream : Stream
|
||||
{
|
||||
readonly Queue<byte> data = new Queue<byte>(1024);
|
||||
readonly Queue<byte> data = new(1024);
|
||||
readonly Stream baseStream;
|
||||
bool baseStreamEmpty;
|
||||
|
||||
|
||||
@@ -63,13 +63,13 @@ namespace OpenRA.Primitives
|
||||
public int Top => Y;
|
||||
public int Bottom => Y + Height;
|
||||
public bool IsEmpty => X == 0 && Y == 0 && Width == 0 && Height == 0;
|
||||
public int2 Location => new int2(X, Y);
|
||||
public Size Size => new Size(Width, Height);
|
||||
public int2 Location => new(X, Y);
|
||||
public Size Size => new(Width, Height);
|
||||
|
||||
public int2 TopLeft => Location;
|
||||
public int2 TopRight => new int2(X + Width, Y);
|
||||
public int2 BottomLeft => new int2(X, Y + Height);
|
||||
public int2 BottomRight => new int2(X + Width, Y + Height);
|
||||
public int2 TopRight => new(X + Width, Y);
|
||||
public int2 BottomLeft => new(X, Y + Height);
|
||||
public int2 BottomRight => new(X + Width, Y + Height);
|
||||
|
||||
public bool Contains(int x, int y)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA.Primitives
|
||||
{
|
||||
readonly int rows, cols, binSize;
|
||||
readonly Dictionary<T, Rectangle>[] itemBoundsBins;
|
||||
readonly Dictionary<T, Rectangle> itemBounds = new Dictionary<T, Rectangle>();
|
||||
readonly Dictionary<T, Rectangle> itemBounds = new();
|
||||
readonly Action<Dictionary<T, Rectangle>, T, Rectangle> addItem = (bin, actor, bounds) => bin.Add(actor, bounds);
|
||||
readonly Action<Dictionary<T, Rectangle>, T, Rectangle> removeItem = (bin, actor, bounds) => bin.Remove(actor);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Primitives
|
||||
public class TypeDictionary : IEnumerable
|
||||
{
|
||||
static readonly Func<Type, List<object>> CreateList = type => new List<object>();
|
||||
readonly Dictionary<Type, List<object>> data = new Dictionary<Type, List<object>>();
|
||||
readonly Dictionary<Type, List<object>> data = new();
|
||||
|
||||
public void Add(object val)
|
||||
{
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA
|
||||
|
||||
public override string ToString() { return X + "," + Y; }
|
||||
|
||||
public static readonly float2 Zero = new float2(0, 0);
|
||||
public static readonly float2 Zero = new(0, 0);
|
||||
|
||||
public static bool WithinEpsilon(float2 a, float2 b, float e)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA
|
||||
public readonly struct float3 : IEquatable<float3>
|
||||
{
|
||||
public readonly float X, Y, Z;
|
||||
public float2 XY => new float2(X, Y);
|
||||
public float2 XY => new(X, Y);
|
||||
|
||||
public float3(float x, float y, float z) { X = x; Y = y; Z = z; }
|
||||
public float3(float2 xy, float z) { X = xy.X; Y = xy.Y; Z = z; }
|
||||
@@ -60,7 +60,7 @@ namespace OpenRA
|
||||
|
||||
public override string ToString() { return $"{X},{Y},{Z}"; }
|
||||
|
||||
public static readonly float3 Zero = new float3(0, 0, 0);
|
||||
public static readonly float3 Ones = new float3(1, 1, 1);
|
||||
public static readonly float3 Zero = new(0, 0, 0);
|
||||
public static readonly float3 Ones = new(1, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace OpenRA
|
||||
public static int2 Max(int2 a, int2 b) { return new int2(Math.Max(a.X, b.X), Math.Max(a.Y, b.Y)); }
|
||||
public static int2 Min(int2 a, int2 b) { return new int2(Math.Min(a.X, b.X), Math.Min(a.Y, b.Y)); }
|
||||
|
||||
public static readonly int2 Zero = new int2(0, 0);
|
||||
public static readonly int2 Zero = new(0, 0);
|
||||
public float2 ToFloat2() { return new float2(X, Y); }
|
||||
|
||||
// Change endianness of a uint32
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace OpenRA
|
||||
internal int TempBufferSize { get; }
|
||||
|
||||
readonly IVertexBuffer<Vertex> tempBuffer;
|
||||
readonly Stack<Rectangle> scissorState = new Stack<Rectangle>();
|
||||
readonly Stack<Rectangle> scissorState = new();
|
||||
|
||||
IFrameBuffer screenBuffer;
|
||||
Sprite screenSprite;
|
||||
@@ -63,7 +63,7 @@ namespace OpenRA
|
||||
|
||||
float depthMargin;
|
||||
|
||||
Size lastBufferSize = new Size(-1, -1);
|
||||
Size lastBufferSize = new(-1, -1);
|
||||
|
||||
Rectangle lastWorldViewport = Rectangle.Empty;
|
||||
ITexture currentPaletteTexture;
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA.Scripting
|
||||
{
|
||||
public static class ScriptMemberExts
|
||||
{
|
||||
static readonly Dictionary<string, string> LuaTypeNameReplacements = new Dictionary<string, string>()
|
||||
static readonly Dictionary<string, string> LuaTypeNameReplacements = new()
|
||||
{
|
||||
{ "Void", "void" },
|
||||
{ "Int32", "int" },
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Scripting
|
||||
protected abstract string MemberNotFoundError(string memberName);
|
||||
|
||||
protected readonly ScriptContext Context;
|
||||
readonly Dictionary<string, ScriptMemberWrapper> members = new Dictionary<string, ScriptMemberWrapper>();
|
||||
readonly Dictionary<string, ScriptMemberWrapper> members = new();
|
||||
|
||||
#if !NET5_0_OR_GREATER
|
||||
readonly List<string> membersToRemove = new List<string>();
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace OpenRA.Server
|
||||
|
||||
long lastReceivedTime = 0;
|
||||
|
||||
readonly BlockingCollection<byte[]> sendQueue = new BlockingCollection<byte[]>();
|
||||
readonly Queue<int> pingHistory = new Queue<int>();
|
||||
readonly BlockingCollection<byte[]> sendQueue = new();
|
||||
readonly Queue<int> pingHistory = new();
|
||||
|
||||
public Connection(Server server, Socket socket, string authToken)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Server
|
||||
|
||||
public class MapStatusCache
|
||||
{
|
||||
readonly Dictionary<MapPreview, Session.MapStatus> cache = new Dictionary<MapPreview, Session.MapStatus>();
|
||||
readonly Dictionary<MapPreview, Session.MapStatus> cache = new();
|
||||
readonly Action<string, Session.MapStatus> onStatusChanged;
|
||||
readonly bool enableRemoteLinting;
|
||||
readonly ModData modData;
|
||||
|
||||
@@ -31,8 +31,8 @@ namespace OpenRA.Server
|
||||
Stopwatch gameTimer;
|
||||
long nextUpdate = 0;
|
||||
|
||||
readonly ConcurrentDictionary<int, long> timestamps = new ConcurrentDictionary<int, long>();
|
||||
readonly ConcurrentDictionary<int, Queue<long>> deltas = new ConcurrentDictionary<int, Queue<long>>();
|
||||
readonly ConcurrentDictionary<int, long> timestamps = new();
|
||||
readonly ConcurrentDictionary<int, Queue<long>> deltas = new();
|
||||
|
||||
int timestep;
|
||||
int ticksPerInterval;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Server
|
||||
[TranslationReference("remaining")]
|
||||
const string ChatTemporaryDisabled = "notification-chat-temp-disabled";
|
||||
|
||||
readonly Dictionary<int, List<long>> messageTracker = new Dictionary<int, List<long>>();
|
||||
readonly Dictionary<int, List<long>> messageTracker = new();
|
||||
readonly Server server;
|
||||
readonly Action<Connection, int, int, byte[]> dispatchOrdersToClient;
|
||||
readonly Action<Connection, string, Dictionary<string, object>> sendLocalizedMessageTo;
|
||||
|
||||
@@ -115,15 +115,15 @@ namespace OpenRA.Server
|
||||
[TranslationReference]
|
||||
const string GameStarted = "notification-game-started";
|
||||
|
||||
public readonly MersenneTwister Random = new MersenneTwister();
|
||||
public readonly MersenneTwister Random = new();
|
||||
public readonly ServerType Type;
|
||||
|
||||
public readonly List<Connection> Conns = new List<Connection>();
|
||||
public readonly List<Connection> Conns = new();
|
||||
|
||||
public Session LobbyInfo;
|
||||
public ServerSettings Settings;
|
||||
public ModData ModData;
|
||||
public List<string> TempBans = new List<string>();
|
||||
public List<string> TempBans = new();
|
||||
|
||||
// Managed by LobbyCommands
|
||||
public MapPreview Map;
|
||||
@@ -134,19 +134,19 @@ namespace OpenRA.Server
|
||||
public int OrderLatency = 1;
|
||||
|
||||
readonly int randomSeed;
|
||||
readonly List<TcpListener> listeners = new List<TcpListener>();
|
||||
readonly TypeDictionary serverTraits = new TypeDictionary();
|
||||
readonly List<TcpListener> listeners = new();
|
||||
readonly TypeDictionary serverTraits = new();
|
||||
readonly PlayerDatabase playerDatabase;
|
||||
|
||||
OrderBuffer orderBuffer;
|
||||
|
||||
volatile ServerState internalState = ServerState.WaitingPlayers;
|
||||
|
||||
readonly BlockingCollection<IServerEvent> events = new BlockingCollection<IServerEvent>();
|
||||
readonly BlockingCollection<IServerEvent> events = new();
|
||||
|
||||
ReplayRecorder recorder;
|
||||
GameInformation gameInfo;
|
||||
readonly List<GameInformation.Player> worldPlayers = new List<GameInformation.Player>();
|
||||
readonly List<GameInformation.Player> worldPlayers = new();
|
||||
readonly Stopwatch pingUpdated = Stopwatch.StartNew();
|
||||
readonly PlayerMessageTracker playerMessageTracker;
|
||||
|
||||
@@ -802,7 +802,7 @@ namespace OpenRA.Server
|
||||
recorder = null;
|
||||
}
|
||||
|
||||
readonly Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
||||
readonly Dictionary<int, byte[]> syncForFrame = new();
|
||||
int lastDefeatStateFrame;
|
||||
ulong lastDefeatState;
|
||||
|
||||
|
||||
@@ -177,10 +177,10 @@ namespace OpenRA
|
||||
public bool VSync = true;
|
||||
|
||||
[Desc("Screen resolution in fullscreen mode.")]
|
||||
public int2 FullscreenSize = new int2(0, 0);
|
||||
public int2 FullscreenSize = new(0, 0);
|
||||
|
||||
[Desc("Screen resolution in windowed mode.")]
|
||||
public int2 WindowedSize = new int2(1024, 768);
|
||||
public int2 WindowedSize = new(1024, 768);
|
||||
|
||||
public bool CursorDouble = false;
|
||||
public WorldViewport ViewportDistance = WorldViewport.Medium;
|
||||
@@ -253,7 +253,7 @@ namespace OpenRA
|
||||
|
||||
public bool LockMouseWindow = false;
|
||||
public MouseScrollType MouseScroll = MouseScrollType.Joystick;
|
||||
public MouseButtonPreference MouseButtonPreference = new MouseButtonPreference();
|
||||
public MouseButtonPreference MouseButtonPreference = new();
|
||||
public float ViewportEdgeScrollStep = 30f;
|
||||
public float UIScrollSpeed = 50f;
|
||||
public float ZoomSpeed = 0.04f;
|
||||
@@ -295,20 +295,20 @@ namespace OpenRA
|
||||
{
|
||||
readonly string settingsFile;
|
||||
|
||||
public readonly PlayerSettings Player = new PlayerSettings();
|
||||
public readonly GameSettings Game = new GameSettings();
|
||||
public readonly SoundSettings Sound = new SoundSettings();
|
||||
public readonly GraphicSettings Graphics = new GraphicSettings();
|
||||
public readonly ServerSettings Server = new ServerSettings();
|
||||
public readonly DebugSettings Debug = new DebugSettings();
|
||||
internal Dictionary<string, Hotkey> Keys = new Dictionary<string, Hotkey>();
|
||||
public readonly PlayerSettings Player = new();
|
||||
public readonly GameSettings Game = new();
|
||||
public readonly SoundSettings Sound = new();
|
||||
public readonly GraphicSettings Graphics = new();
|
||||
public readonly ServerSettings Server = new();
|
||||
public readonly DebugSettings Debug = new();
|
||||
internal Dictionary<string, Hotkey> Keys = new();
|
||||
|
||||
public readonly Dictionary<string, object> Sections;
|
||||
|
||||
// A direct clone of the file loaded from disk.
|
||||
// Any changed settings will be merged over this on save,
|
||||
// allowing us to persist any unknown configuration keys
|
||||
readonly List<MiniYamlNode> yamlCache = new List<MiniYamlNode>();
|
||||
readonly List<MiniYamlNode> yamlCache = new();
|
||||
|
||||
public Settings(string file, Arguments args)
|
||||
{
|
||||
|
||||
@@ -43,8 +43,8 @@ namespace OpenRA
|
||||
ISoundSource videoSource;
|
||||
ISound music;
|
||||
ISound video;
|
||||
readonly Dictionary<uint, ISound> currentSounds = new Dictionary<uint, ISound>();
|
||||
readonly Dictionary<string, ISound> currentNotifications = new Dictionary<string, ISound>();
|
||||
readonly Dictionary<uint, ISound> currentSounds = new();
|
||||
readonly Dictionary<string, ISound> currentNotifications = new();
|
||||
public bool DummyEngine { get; }
|
||||
|
||||
public Sound(IPlatform platform, SoundSettings soundSettings)
|
||||
|
||||
@@ -16,9 +16,9 @@ namespace OpenRA
|
||||
{
|
||||
public class Arguments
|
||||
{
|
||||
readonly Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
readonly Dictionary<string, string> args = new();
|
||||
|
||||
public static Arguments Empty => new Arguments();
|
||||
public static Arguments Empty => new();
|
||||
|
||||
public Arguments(params string[] src)
|
||||
{
|
||||
|
||||
@@ -53,8 +53,8 @@ namespace OpenRA.Support
|
||||
|
||||
public class AssemblyLoadContextBuilder
|
||||
{
|
||||
readonly Dictionary<string, ManagedLibrary> managedLibraries = new Dictionary<string, ManagedLibrary>(StringComparer.Ordinal);
|
||||
readonly Dictionary<string, NativeLibrary> nativeLibraries = new Dictionary<string, NativeLibrary>(StringComparer.Ordinal);
|
||||
readonly Dictionary<string, ManagedLibrary> managedLibraries = new(StringComparer.Ordinal);
|
||||
readonly Dictionary<string, NativeLibrary> nativeLibraries = new(StringComparer.Ordinal);
|
||||
string basePath;
|
||||
|
||||
public AssemblyLoadContext Build()
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace OpenRA.Support
|
||||
class Benchmark
|
||||
{
|
||||
readonly string prefix;
|
||||
readonly Dictionary<string, List<BenchmarkPoint>> samples = new Dictionary<string, List<BenchmarkPoint>>();
|
||||
readonly Dictionary<string, List<BenchmarkPoint>> samples = new();
|
||||
|
||||
public Benchmark(string prefix)
|
||||
{
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace OpenRA.Support
|
||||
}
|
||||
|
||||
static readonly Dictionary<string, int> Prec
|
||||
= new Dictionary<string, int> { { "+", 0 }, { "-", 0 }, { "*", 1 }, { "/", 1 }, { "(", -1 } };
|
||||
= new() { { "+", 0 }, { "-", 0 }, { "*", 1 }, { "/", 1 }, { "(", -1 } };
|
||||
|
||||
static IEnumerable<string> Tokens(string expr, string ops)
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRA.Support
|
||||
static readonly TimeSpan ConnectionLifeTime = TimeSpan.FromMinutes(1);
|
||||
#endif
|
||||
|
||||
static readonly Lazy<HttpMessageHandler> Handler = new Lazy<HttpMessageHandler>(GetHandler);
|
||||
static readonly Lazy<HttpMessageHandler> Handler = new(GetHandler);
|
||||
|
||||
public static HttpClient Create()
|
||||
{
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Support
|
||||
public class HttpQueryBuilder : IEnumerable
|
||||
{
|
||||
readonly string url;
|
||||
readonly List<Parameter> parameters = new List<Parameter>();
|
||||
readonly List<Parameter> parameters = new();
|
||||
|
||||
public HttpQueryBuilder(string url)
|
||||
{
|
||||
|
||||
@@ -41,10 +41,10 @@ namespace OpenRA
|
||||
{
|
||||
const int CreateLogFileMaxRetryCount = 128;
|
||||
|
||||
static readonly ConcurrentDictionary<string, ChannelInfo> Channels = new ConcurrentDictionary<string, ChannelInfo>();
|
||||
static readonly ConcurrentDictionary<string, ChannelInfo> Channels = new();
|
||||
static readonly Channel<ChannelData> Channel;
|
||||
static readonly ChannelWriter<ChannelData> ChannelWriter;
|
||||
static readonly CancellationTokenSource CancellationToken = new CancellationTokenSource();
|
||||
static readonly CancellationTokenSource CancellationToken = new();
|
||||
|
||||
static readonly TimeSpan FlushInterval = TimeSpan.FromSeconds(5);
|
||||
static readonly Timer Timer;
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRA.Support
|
||||
|
||||
static int nextColor;
|
||||
|
||||
public static Cache<string, PerfItem> Items = new Cache<string, PerfItem>(
|
||||
public static Cache<string, PerfItem> Items = new(
|
||||
s =>
|
||||
{
|
||||
var x = new PerfItem(s, Colors[nextColor++]);
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRA.Support
|
||||
List<PerfTimer> children;
|
||||
long ticks;
|
||||
|
||||
static readonly ThreadLocal<PerfTimer> ParentThreadLocal = new ThreadLocal<PerfTimer>();
|
||||
static readonly ThreadLocal<PerfTimer> ParentThreadLocal = new();
|
||||
|
||||
public PerfTimer(string name, float thresholdMs = 0)
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA.Support
|
||||
public static readonly IReadOnlyDictionary<string, int> NoVariables = new ReadOnlyDictionary<string, int>(new Dictionary<string, int>());
|
||||
|
||||
public readonly string Expression;
|
||||
readonly HashSet<string> variables = new HashSet<string>();
|
||||
readonly HashSet<string> variables = new();
|
||||
public IEnumerable<string> Variables => variables;
|
||||
|
||||
enum CharClass { Whitespace, Operator, Mixed, Id, Digit }
|
||||
@@ -716,8 +716,8 @@ namespace OpenRA.Support
|
||||
|
||||
class AstStack
|
||||
{
|
||||
readonly List<Expression> expressions = new List<Expression>();
|
||||
readonly List<ExpressionType> types = new List<ExpressionType>();
|
||||
readonly List<Expression> expressions = new();
|
||||
readonly List<ExpressionType> types = new();
|
||||
|
||||
public ExpressionType PeekType() { return types[^1]; }
|
||||
|
||||
@@ -774,7 +774,7 @@ namespace OpenRA.Support
|
||||
|
||||
class Compiler
|
||||
{
|
||||
readonly AstStack ast = new AstStack();
|
||||
readonly AstStack ast = new();
|
||||
|
||||
public Expression Build(Token[] postfix, ExpressionType resultType)
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRA
|
||||
public static class Sync
|
||||
{
|
||||
static readonly ConcurrentCache<Type, Func<object, int>> HashFunctions =
|
||||
new ConcurrentCache<Type, Func<object, int>>(GenerateHashFunc);
|
||||
new(GenerateHashFunc);
|
||||
|
||||
internal static Func<object, int> GetHashFunction(ISync sync)
|
||||
{
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA
|
||||
return GetHashFunction(sync)(sync);
|
||||
}
|
||||
|
||||
static readonly Dictionary<Type, MethodInfo> CustomHashFunctions = new Dictionary<Type, MethodInfo>()
|
||||
static readonly Dictionary<Type, MethodInfo> CustomHashFunctions = new()
|
||||
{
|
||||
{ typeof(int2), ((Func<int2, int>)HashInt2).Method },
|
||||
{ typeof(CPos), ((Func<CPos, int>)HashCPos).Method },
|
||||
|
||||
@@ -21,9 +21,9 @@ namespace OpenRA
|
||||
static readonly string SystemMessageLabel;
|
||||
|
||||
public static long ChatDisabledUntil { get; internal set; }
|
||||
public static readonly Dictionary<int, bool> MutedPlayers = new Dictionary<int, bool>();
|
||||
public static readonly Dictionary<int, bool> MutedPlayers = new();
|
||||
|
||||
static readonly List<TextNotification> NotificationsCache = new List<TextNotification>();
|
||||
static readonly List<TextNotification> NotificationsCache = new();
|
||||
public static IReadOnlyList<TextNotification> Notifications => NotificationsCache;
|
||||
|
||||
static TextNotificationsManager()
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace OpenRA
|
||||
static readonly Func<Type, ITraitContainer> CreateTraitContainer = t =>
|
||||
(ITraitContainer)typeof(TraitContainer<>).MakeGenericType(t).GetConstructor(Type.EmptyTypes).Invoke(null);
|
||||
|
||||
readonly Dictionary<Type, ITraitContainer> traits = new Dictionary<Type, ITraitContainer>();
|
||||
readonly Dictionary<Type, ITraitContainer> traits = new();
|
||||
|
||||
ITraitContainer InnerGet(Type t)
|
||||
{
|
||||
@@ -143,9 +143,9 @@ namespace OpenRA
|
||||
|
||||
class TraitContainer<T> : ITraitContainer
|
||||
{
|
||||
readonly List<Actor> actors = new List<Actor>();
|
||||
readonly List<T> traits = new List<T>();
|
||||
readonly PerfTickLogger perfLogger = new PerfTickLogger();
|
||||
readonly List<Actor> actors = new();
|
||||
readonly List<T> traits = new();
|
||||
readonly PerfTickLogger perfLogger = new();
|
||||
|
||||
public int Queries { get; private set; }
|
||||
|
||||
@@ -277,7 +277,7 @@ namespace OpenRA
|
||||
|
||||
public void Reset() { index = -1; }
|
||||
public bool MoveNext() { return ++index < actors.Count; }
|
||||
public TraitPair<T> Current => new TraitPair<T>(actors[index], traits[index]);
|
||||
public TraitPair<T> Current => new(actors[index], traits[index]);
|
||||
object System.Collections.IEnumerator.Current => Current;
|
||||
public void Dispose() { }
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Traits
|
||||
readonly Actor actor;
|
||||
readonly ICreatesFrozenActors frozenTrait;
|
||||
readonly Shroud shroud;
|
||||
readonly List<WPos> targetablePositions = new List<WPos>();
|
||||
readonly List<WPos> targetablePositions = new();
|
||||
|
||||
public Player Viewer { get; }
|
||||
public Player Owner { get; private set; }
|
||||
@@ -253,7 +253,7 @@ namespace OpenRA.Traits
|
||||
readonly Player owner;
|
||||
readonly Dictionary<uint, FrozenActor> frozenActorsById;
|
||||
readonly SpatiallyPartitioned<uint> partitionedFrozenActorIds;
|
||||
readonly HashSet<uint> dirtyFrozenActorIds = new HashSet<uint>();
|
||||
readonly HashSet<uint> dirtyFrozenActorIds = new();
|
||||
|
||||
public FrozenActorLayer(Actor self, FrozenActorLayerInfo info)
|
||||
{
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace OpenRA.Traits
|
||||
readonly Map map;
|
||||
|
||||
// Individual shroud modifier sources (type and area)
|
||||
readonly Dictionary<object, ShroudSource> sources = new Dictionary<object, ShroudSource>();
|
||||
readonly Dictionary<object, ShroudSource> sources = new();
|
||||
|
||||
// Per-cell count of each source type, used to resolve the final cell type
|
||||
readonly ProjectedCellLayer<short> passiveVisibleCount;
|
||||
|
||||
@@ -563,7 +563,7 @@ namespace OpenRA.Traits
|
||||
|
||||
public class LobbyBooleanOption : LobbyOption
|
||||
{
|
||||
static readonly Dictionary<string, string> BoolValues = new Dictionary<string, string>()
|
||||
static readonly Dictionary<string, string> BoolValues = new()
|
||||
{
|
||||
{ true.ToString(), "Enabled" },
|
||||
{ false.ToString(), "Disabled" }
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA.Traits
|
||||
public readonly string InternalName = null;
|
||||
|
||||
[Desc("Pick a random faction as the player's faction out of this list.")]
|
||||
public readonly HashSet<string> RandomFactionMembers = new HashSet<string>();
|
||||
public readonly HashSet<string> RandomFactionMembers = new();
|
||||
|
||||
[Desc("The side that the faction belongs to. For example, England belongs to the 'Allies' side.")]
|
||||
public readonly string Side = null;
|
||||
|
||||
@@ -47,15 +47,15 @@ namespace OpenRA.Traits
|
||||
readonly Func<Actor, ActorBoundsPair> selectActorAndBounds;
|
||||
readonly Cache<Player, SpatiallyPartitioned<FrozenActor>> partitionedMouseFrozenActors;
|
||||
readonly SpatiallyPartitioned<Actor> partitionedMouseActors;
|
||||
readonly Dictionary<Actor, ActorBoundsPair> partitionedMouseActorBounds = new Dictionary<Actor, ActorBoundsPair>();
|
||||
readonly Dictionary<Actor, ActorBoundsPair> partitionedMouseActorBounds = new();
|
||||
|
||||
readonly Cache<Player, SpatiallyPartitioned<FrozenActor>> partitionedRenderableFrozenActors;
|
||||
readonly SpatiallyPartitioned<Actor> partitionedRenderableActors;
|
||||
readonly SpatiallyPartitioned<IEffect> partitionedRenderableEffects;
|
||||
|
||||
// Updates are done in one pass to ensure all bound changes have been applied
|
||||
readonly HashSet<Actor> addOrUpdateActors = new HashSet<Actor>();
|
||||
readonly HashSet<Actor> removeActors = new HashSet<Actor>();
|
||||
readonly HashSet<Actor> addOrUpdateActors = new();
|
||||
readonly HashSet<Actor> removeActors = new();
|
||||
readonly Cache<Player, HashSet<FrozenActor>> addOrUpdateFrozenActors;
|
||||
readonly Cache<Player, HashSet<FrozenActor>> removeFrozenActors;
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ namespace OpenRA.Traits
|
||||
[TraitLocation(SystemActors.World)]
|
||||
public class ScreenShakerInfo : TraitInfo
|
||||
{
|
||||
public readonly float2 MinMultiplier = new float2(-3, -3);
|
||||
public readonly float2 MaxMultiplier = new float2(3, 3);
|
||||
public readonly float2 MinMultiplier = new(-3, -3);
|
||||
public readonly float2 MaxMultiplier = new(3, 3);
|
||||
|
||||
public override object Create(ActorInitializer init) { return new ScreenShaker(this); }
|
||||
}
|
||||
@@ -29,7 +29,7 @@ namespace OpenRA.Traits
|
||||
{
|
||||
readonly ScreenShakerInfo info;
|
||||
WorldRenderer worldRenderer;
|
||||
readonly List<ShakeEffect> shakeEffects = new List<ShakeEffect>();
|
||||
readonly List<ShakeEffect> shakeEffects = new();
|
||||
int ticks = 0;
|
||||
|
||||
public ScreenShaker(ScreenShakerInfo info)
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRA
|
||||
Angle += 1024;
|
||||
}
|
||||
|
||||
public static readonly WAngle Zero = new WAngle(0);
|
||||
public static readonly WAngle Zero = new(0);
|
||||
public static WAngle FromFacing(int facing) { return new WAngle(facing * 4); }
|
||||
public static WAngle FromDegrees(int degrees) { return new WAngle(degrees * 1024 / 360); }
|
||||
public static WAngle operator +(WAngle a, WAngle b) { return new WAngle(a.Angle + b.Angle); }
|
||||
|
||||
@@ -27,8 +27,8 @@ namespace OpenRA
|
||||
public long LengthSquared => (long)Length * Length;
|
||||
|
||||
public WDist(int r) { Length = r; }
|
||||
public static readonly WDist Zero = new WDist(0);
|
||||
public static readonly WDist MaxValue = new WDist(int.MaxValue);
|
||||
public static readonly WDist Zero = new(0);
|
||||
public static readonly WDist MaxValue = new(int.MaxValue);
|
||||
public static WDist FromCells(int cells) { return new WDist(1024 * cells); }
|
||||
|
||||
public static WDist operator +(WDist a, WDist b) { return new WDist(a.Length + b.Length); }
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA
|
||||
public WPos(int x, int y, int z) { X = x; Y = y; Z = z; }
|
||||
public WPos(WDist x, WDist y, WDist z) { X = x.Length; Y = y.Length; Z = z.Length; }
|
||||
|
||||
public static readonly WPos Zero = new WPos(0, 0, 0);
|
||||
public static readonly WPos Zero = new(0, 0, 0);
|
||||
|
||||
public static explicit operator WVec(in WPos a) { return new WVec(a.X, a.Y, a.Z); }
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace OpenRA
|
||||
Yaw = yaw;
|
||||
}
|
||||
|
||||
public static readonly WRot None = new WRot(WAngle.Zero, WAngle.Zero, WAngle.Zero);
|
||||
public static readonly WRot None = new(WAngle.Zero, WAngle.Zero, WAngle.Zero);
|
||||
|
||||
public static WRot FromFacing(int facing) { return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facing)); }
|
||||
public static WRot FromYaw(WAngle yaw) { return new WRot(WAngle.Zero, WAngle.Zero, yaw); }
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA
|
||||
public WVec(int x, int y, int z) { X = x; Y = y; Z = z; }
|
||||
public WVec(WDist x, WDist y, WDist z) { X = x.Length; Y = y.Length; Z = z.Length; }
|
||||
|
||||
public static readonly WVec Zero = new WVec(0, 0, 0);
|
||||
public static readonly WVec Zero = new(0, 0, 0);
|
||||
|
||||
public static WVec operator +(in WVec a, in WVec b) { return new WVec(a.X + b.X, a.Y + b.Y, a.Z + b.Z); }
|
||||
public static WVec operator -(in WVec a, in WVec b) { return new WVec(a.X - b.X, a.Y - b.Y, a.Z - b.Z); }
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
public static class ChromeMetrics
|
||||
{
|
||||
static Dictionary<string, string> data = new Dictionary<string, string>();
|
||||
static Dictionary<string, string> data = new();
|
||||
|
||||
public static void Initialize(ModData modData)
|
||||
{
|
||||
|
||||
@@ -25,15 +25,15 @@ namespace OpenRA.Widgets
|
||||
|
||||
public static Widget Root = new ContainerWidget();
|
||||
|
||||
public static TickTime LastTickTime = new TickTime(() => Timestep, Game.RunTime);
|
||||
public static TickTime LastTickTime = new(() => Timestep, Game.RunTime);
|
||||
|
||||
static readonly Stack<Widget> WindowList = new Stack<Widget>();
|
||||
static readonly Stack<Widget> WindowList = new();
|
||||
|
||||
public static Widget MouseFocusWidget;
|
||||
public static Widget KeyboardFocusWidget;
|
||||
public static Widget MouseOverWidget;
|
||||
|
||||
static readonly Mediator Mediator = new Mediator();
|
||||
static readonly Mediator Mediator = new();
|
||||
|
||||
public static void CloseWindow()
|
||||
{
|
||||
@@ -185,7 +185,7 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
string defaultCursor = null;
|
||||
|
||||
public readonly List<Widget> Children = new List<Widget>();
|
||||
public readonly List<Widget> Children = new();
|
||||
|
||||
// Info defined in YAML
|
||||
public string Id = null;
|
||||
@@ -644,7 +644,7 @@ namespace OpenRA.Widgets
|
||||
|
||||
public sealed class Mediator
|
||||
{
|
||||
readonly TypeDictionary types = new TypeDictionary();
|
||||
readonly TypeDictionary types = new();
|
||||
|
||||
public void Subscribe<T>(T instance)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA
|
||||
{
|
||||
public class WidgetLoader
|
||||
{
|
||||
readonly Dictionary<string, MiniYamlNode> widgets = new Dictionary<string, MiniYamlNode>();
|
||||
readonly Dictionary<string, MiniYamlNode> widgets = new();
|
||||
readonly ModData modData;
|
||||
|
||||
public WidgetLoader(ModData modData)
|
||||
|
||||
@@ -28,15 +28,15 @@ namespace OpenRA
|
||||
|
||||
public sealed class World : IDisposable
|
||||
{
|
||||
internal readonly TraitDictionary TraitDict = new TraitDictionary();
|
||||
readonly SortedDictionary<uint, Actor> actors = new SortedDictionary<uint, Actor>();
|
||||
readonly List<IEffect> effects = new List<IEffect>();
|
||||
readonly List<IEffect> unpartitionedEffects = new List<IEffect>();
|
||||
readonly List<ISync> syncedEffects = new List<ISync>();
|
||||
internal readonly TraitDictionary TraitDict = new();
|
||||
readonly SortedDictionary<uint, Actor> actors = new();
|
||||
readonly List<IEffect> effects = new();
|
||||
readonly List<IEffect> unpartitionedEffects = new();
|
||||
readonly List<ISync> syncedEffects = new();
|
||||
readonly GameSettings gameSettings;
|
||||
readonly ModData modData;
|
||||
|
||||
readonly Queue<Action<World>> frameEndActions = new Queue<Action<World>>();
|
||||
readonly Queue<Action<World>> frameEndActions = new();
|
||||
|
||||
public readonly GameSpeed GameSpeed;
|
||||
|
||||
@@ -390,7 +390,7 @@ namespace OpenRA
|
||||
|
||||
public int WorldTick { get; private set; }
|
||||
|
||||
readonly Dictionary<int, MiniYaml> gameSaveTraitData = new Dictionary<int, MiniYaml>();
|
||||
readonly Dictionary<int, MiniYaml> gameSaveTraitData = new();
|
||||
internal void AddGameSaveTraitData(int traitIndex, MiniYaml yaml)
|
||||
{
|
||||
gameSaveTraitData[traitIndex] = yaml;
|
||||
|
||||
@@ -15,16 +15,16 @@ namespace OpenRA
|
||||
{
|
||||
public class WorldViewportSizes : IGlobalModData
|
||||
{
|
||||
public readonly int2 CloseWindowHeights = new int2(480, 600);
|
||||
public readonly int2 MediumWindowHeights = new int2(600, 900);
|
||||
public readonly int2 FarWindowHeights = new int2(900, 1300);
|
||||
public readonly int2 CloseWindowHeights = new(480, 600);
|
||||
public readonly int2 MediumWindowHeights = new(600, 900);
|
||||
public readonly int2 FarWindowHeights = new(900, 1300);
|
||||
|
||||
public readonly float DefaultScale = 1.0f;
|
||||
public readonly float MaxZoomScale = 2.0f;
|
||||
public readonly int MaxZoomWindowHeight = 240;
|
||||
public readonly bool AllowNativeZoom = true;
|
||||
|
||||
public readonly Size MinEffectiveResolution = new Size(1024, 720);
|
||||
public readonly Size MinEffectiveResolution = new(1024, 720);
|
||||
|
||||
public int2 GetSizeRange(WorldViewport distance)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.Cnc.FileFormats
|
||||
public uint Len;
|
||||
}
|
||||
|
||||
readonly PublicKey pubkey = new PublicKey();
|
||||
readonly PublicKey pubkey = new();
|
||||
|
||||
readonly uint[] globOne = new uint[64];
|
||||
uint globOneBitLen, globOneLenXTwo;
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Cnc.FileSystem
|
||||
public string Name { get; }
|
||||
public IEnumerable<string> Contents => index.Keys;
|
||||
|
||||
readonly Dictionary<string, Entry> index = new Dictionary<string, Entry>();
|
||||
readonly Dictionary<string, Entry> index = new();
|
||||
readonly Stream s;
|
||||
|
||||
public BigFile(Stream s, string filename)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user