Use pattern matching

This commit is contained in:
Eduardo Cáceres
2022-05-02 13:11:49 +02:00
committed by atlimit8
parent aed2b8afae
commit 2677e9c013
15 changed files with 83 additions and 90 deletions

View File

@@ -309,8 +309,7 @@ namespace OpenRA.Mods.Common.Activities
{
foreach (var actor in self.World.ActorMap.GetActorsAt(cell))
{
var move = actor.OccupiesSpace as Mobile;
if (move == null || !move.IsTraitEnabled() || !move.IsLeaving())
if (!(actor.OccupiesSpace is Mobile move) || !move.IsTraitEnabled() || !move.IsLeaving())
return false;
}

View File

@@ -155,8 +155,7 @@ namespace OpenRA.Mods.Common.Traits
return false;
// PERF: Mobile implements IPositionable, so we can use 'as' to save a trait look-up here.
var mobile = positionable as Mobile;
if (mobile != null && !mobile.CanInteractWithGroundLayer(self))
if (positionable is Mobile mobile && !mobile.CanInteractWithGroundLayer(self))
return false;
return true;

View File

@@ -55,8 +55,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
foreach (var sequence in kv.Value.Sequences(image))
{
var s = kv.Value.GetSequence(image, sequence) as FileNotFoundSequence;
if (s == null)
if (!(kv.Value.GetSequence(image, sequence) is FileNotFoundSequence s))
continue;
Console.WriteLine("\tSequence `{0}.{1}` references sprite `{2}` that does not exist.", image, sequence, s.Filename);

View File

@@ -260,9 +260,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
foreach (var o in options)
{
if (o is EditorActorCheckbox)
if (o is EditorActorCheckbox co)
{
var co = (EditorActorCheckbox)o;
var checkboxContainer = checkboxOptionTemplate.Clone();
checkboxContainer.Bounds.Y = initContainer.Bounds.Height;
initContainer.Bounds.Height += checkboxContainer.Bounds.Height;
@@ -283,9 +282,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
initContainer.AddChild(checkboxContainer);
}
else if (o is EditorActorSlider)
else if (o is EditorActorSlider so)
{
var so = (EditorActorSlider)o;
var sliderContainer = sliderOptionTemplate.Clone();
sliderContainer.Bounds.Y = initContainer.Bounds.Height;
initContainer.Bounds.Height += sliderContainer.Bounds.Height;
@@ -319,9 +317,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
initContainer.AddChild(sliderContainer);
}
else if (o is EditorActorDropdown)
else if (o is EditorActorDropdown ddo)
{
var ddo = (EditorActorDropdown)o;
var dropdownContainer = dropdownOptionTemplate.Clone();
dropdownContainer.Bounds.Y = initContainer.Bounds.Height;
initContainer.Bounds.Height += dropdownContainer.Bounds.Height;

View File

@@ -92,8 +92,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
foreach (var kv in modData.MapCache.MapLocations)
{
var folder = kv.Key as Folder;
if (folder == null)
if (!(kv.Key is Folder folder))
continue;
try

View File

@@ -226,8 +226,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
games[games.IndexOf(oldPath)] = newPath;
foreach (var c in gameList.Children)
{
var item = c as ScrollItemWidget;
if (item == null || item.ItemKey != oldPath)
if (!(c is ScrollItemWidget item) || item.ItemKey != oldPath)
continue;
item.ItemKey = newPath;

View File

@@ -133,8 +133,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// Select the first active tab
foreach (var b in typesContainer.Children)
{
var button = b as ProductionTypeButtonWidget;
if (button == null || button.IsDisabled())
if (!(b is ProductionTypeButtonWidget button) || button.IsDisabled())
continue;
button.OnClick();

View File

@@ -207,74 +207,74 @@ namespace OpenRA.Mods.Common.Widgets.Logic
switch (i.Key)
{
case "copy":
{
var sourceDir = Path.Combine(path, i.Value.Value);
foreach (var node in i.Value.Nodes)
{
var sourcePath = Path.Combine(sourceDir, node.Value.Value);
var targetPath = Platform.ResolvePath(node.Key);
if (File.Exists(targetPath))
var sourceDir = Path.Combine(path, i.Value.Value);
foreach (var node in i.Value.Nodes)
{
Log.Write("install", "Ignoring installed file " + targetPath);
continue;
var sourcePath = Path.Combine(sourceDir, node.Value.Value);
var targetPath = Platform.ResolvePath(node.Key);
if (File.Exists(targetPath))
{
Log.Write("install", "Ignoring installed file " + targetPath);
continue;
}
Log.Write("install", $"Copying {sourcePath} -> {targetPath}");
extracted.Add(targetPath);
Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
using (var source = File.OpenRead(sourcePath))
using (var target = File.OpenWrite(targetPath))
{
var displayFilename = Path.GetFileName(targetPath);
var length = source.Length;
Action<long> onProgress = null;
if (length < ShowPercentageThreshold)
message = "Copying " + displayFilename;
else
onProgress = b => message = $"Copying {displayFilename} ({100 * b / length}%)";
CopyStream(source, target, length, onProgress);
}
}
Log.Write("install", $"Copying {sourcePath} -> {targetPath}");
extracted.Add(targetPath);
Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
using (var source = File.OpenRead(sourcePath))
using (var target = File.OpenWrite(targetPath))
{
var displayFilename = Path.GetFileName(targetPath);
var length = source.Length;
Action<long> onProgress = null;
if (length < ShowPercentageThreshold)
message = "Copying " + displayFilename;
else
onProgress = b => message = $"Copying {displayFilename} ({100 * b / length}%)";
CopyStream(source, target, length, onProgress);
}
break;
}
break;
}
case "extract-raw":
{
ExtractFromPackage(ExtractionType.Raw, path, i.Value, extracted, m => message = m);
break;
}
{
ExtractFromPackage(ExtractionType.Raw, path, i.Value, extracted, m => message = m);
break;
}
case "extract-blast":
{
ExtractFromPackage(ExtractionType.Blast, path, i.Value, extracted, m => message = m);
break;
}
{
ExtractFromPackage(ExtractionType.Blast, path, i.Value, extracted, m => message = m);
break;
}
case "extract-mscab":
{
ExtractFromMSCab(path, i.Value, extracted, m => message = m);
break;
}
{
ExtractFromMSCab(path, i.Value, extracted, m => message = m);
break;
}
case "extract-iscab":
{
ExtractFromISCab(path, i.Value, extracted, m => message = m);
break;
}
{
ExtractFromISCab(path, i.Value, extracted, m => message = m);
break;
}
case "delete":
{
// Yaml path may be specified relative to a named directory (e.g. ^SupportDir) or the detected disc path
var sourcePath = i.Value.Value.StartsWith("^") ? Platform.ResolvePath(i.Value.Value) : Path.Combine(path, i.Value.Value);
{
// Yaml path may be specified relative to a named directory (e.g. ^SupportDir) or the detected disc path
var sourcePath = i.Value.Value.StartsWith("^") ? Platform.ResolvePath(i.Value.Value) : Path.Combine(path, i.Value.Value);
Log.Write("debug", "Deleting {0}", sourcePath);
File.Delete(sourcePath);
break;
}
Log.Write("debug", "Deleting {0}", sourcePath);
File.Delete(sourcePath);
break;
}
default:
Log.Write("debug", "Unknown installation command {0} - ignoring", i.Key);
@@ -479,8 +479,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
foreach (var prefix in source.RegistryPrefixes)
{
var path = Microsoft.Win32.Registry.GetValue(prefix + source.RegistryKey, source.RegistryValue, null) as string;
if (path == null)
if (!(Microsoft.Win32.Registry.GetValue(prefix + source.RegistryKey, source.RegistryValue, null) is string path))
continue;
if (source.Type == ModContent.SourceType.RegistryDirectoryFromFile)
@@ -530,7 +529,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return false;
}
else if (CryptoUtil.SHA1Hash(fileStream) != kv.Value.Value)
return false;
return false;
}
}
}

View File

@@ -89,8 +89,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
row.Bounds.Y = optionsContainer.Bounds.Height;
optionsContainer.Bounds.Height += row.Bounds.Height;
foreach (var child in row.Children)
if (child is CheckboxWidget)
checkboxColumns.Enqueue((CheckboxWidget)child);
if (child is CheckboxWidget childCheckbox)
checkboxColumns.Enqueue(childCheckbox);
optionsContainer.AddChild(row);
}
@@ -118,8 +118,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
row.Bounds.Y = optionsContainer.Bounds.Height;
optionsContainer.Bounds.Height += row.Bounds.Height;
foreach (var child in row.Children)
if (child is DropDownButtonWidget)
dropdownColumns.Enqueue((DropDownButtonWidget)child);
if (child is DropDownButtonWidget dropDown)
dropdownColumns.Enqueue(dropDown);
optionsContainer.AddChild(row);
}