Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@ on:
push:
pull_request:

permissions:
contents: read # to fetch code (actions/checkout)

jobs:
linux:
name: Linux (.NET 6.0)
runs-on: ubuntu-22.04

steps:
- name: Clone Repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Install .NET 6.0
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v5
with:
dotnet-version: '6.0.x'

Expand Down Expand Up @@ -46,7 +49,7 @@ jobs:

steps:
- name: Clone Repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Prepare Environment
run: |
Expand All @@ -66,14 +69,14 @@ jobs:

windows:
name: Windows (.NET 6.0)
runs-on: windows-2019
runs-on: windows-2022

steps:
- name: Clone Repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Install .NET 6.0
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v5
with:
dotnet-version: '6.0.x'

Expand All @@ -94,7 +97,7 @@ jobs:

- name: Check Mods
run: |
choco install lua --version 5.1.5.52
choco install lua --version 5.1.5.52 --no-progress
$ENV:Path = $ENV:Path + ";C:\Program Files (x86)\Lua\5.1\"
.\make.ps1 check-scripts
.\make.ps1 test
36 changes: 14 additions & 22 deletions OpenRA.Mods.D2/FileFormats/WsaReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,13 @@ namespace OpenRA.Mods.D2.FileFormats
{
public class WsaReader
{
int width;
int height;
int currentFrame;
ISpriteFrame[] frames;

public int Length { get { return frames == null ? 0 : frames.Length; } }
public int CurrentFrame { get { return currentFrame; } }
public int CurrentFrame { get; private set; }
public ISpriteFrame Frame { get { return CurrentSpriteFrame(); } }
public int Width { get { return width; } }
public int Height { get { return height; } }
public int Width { get; private set; }
public int Height { get; private set; }

public WsaReader()
{
Expand All @@ -38,24 +35,19 @@ public WsaReader()

public WsaReader(Stream stream)
{
TypeDictionary metadata;

Read(stream, out metadata);
Read(stream, out _);
Reset();
}

public void Read(Stream stream, out TypeDictionary metadata)
{
ISpriteFrame[] videoFrames;
ISpriteFrame prev = null;
var wsaLoader = new WsaLoader();

metadata = null;

if (frames != null)
prev = frames[frames.Length - 1];
prev = frames[^1];

wsaLoader.TryParseSpriteWithPrevFrame(stream, prev, out videoFrames, out metadata);
wsaLoader.TryParseSpriteWithPrevFrame(stream, prev, out var videoFrames, out metadata);

if (frames == null)
{
Expand All @@ -64,8 +56,8 @@ public void Read(Stream stream, out TypeDictionary metadata)
if (Length > 0)
{
var frame = frames[0];
width = frame.Size.Width;
height = frame.Size.Height;
Width = frame.Size.Width;
Height = frame.Size.Height;
}
}
else
Expand All @@ -74,21 +66,21 @@ public void Read(Stream stream, out TypeDictionary metadata)

public void Reset()
{
currentFrame = 0;
CurrentFrame = 0;
}

public void AdvanceFrame()
{
if (frames != null && currentFrame < frames.Length - 1)
currentFrame++;
if (frames != null && CurrentFrame < frames.Length - 1)
CurrentFrame++;
else
currentFrame = 0;
CurrentFrame = 0;
}

ISpriteFrame CurrentSpriteFrame()
{
if (frames != null && currentFrame < frames.Length)
return frames[currentFrame];
if (frames != null && CurrentFrame < frames.Length)
return frames[CurrentFrame];

return null;
}
Expand Down
21 changes: 10 additions & 11 deletions OpenRA.Mods.D2/Graphics/D2BuildingPlacementRenderable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@

namespace OpenRA.Mods.D2.Graphics
{
public struct D2BuildingPlacementRenderable : IRenderable, IFinalizedRenderable
public readonly struct D2BuildingPlacementRenderable : IRenderable, IFinalizedRenderable
{
readonly WPos pos;
readonly Rectangle bounds;
readonly Color color;
readonly bool crossEnabled;
Expand All @@ -26,21 +25,21 @@ public D2BuildingPlacementRenderable(Actor actor, Rectangle bounds, Color color,

public D2BuildingPlacementRenderable(WPos pos, Rectangle bounds, Color color, bool crossEnabled)
{
this.pos = pos;
Pos = pos;
this.bounds = bounds;
this.color = color;
this.crossEnabled = crossEnabled;
}

public WPos Pos { get { return pos; } }
public WPos Pos { get; }

public PaletteReference Palette { get { return null; } }
public int ZOffset { get { return 0; } }
public bool IsDecoration { get { return true; } }

public IRenderable WithPalette(PaletteReference newPalette) { return this; }
public IRenderable WithZOffset(int newOffset) { return this; }
public IRenderable OffsetBy(in WVec vec) { return new D2BuildingPlacementRenderable(pos + vec, bounds, color, crossEnabled); }
public IRenderable OffsetBy(in WVec vec) { return new D2BuildingPlacementRenderable(Pos + vec, bounds, color, crossEnabled); }
public IRenderable AsDecoration() { return this; }

public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; }
Expand All @@ -50,23 +49,23 @@ public void Render(WorldRenderer wr)
var rect = ScreenBounds(wr);
var tl = new float3(rect.Left, rect.Top, 1024.0f);
var br = new float3(rect.Right, rect.Bottom, 1024.0f);
var width = 1.0f;
Game.Renderer.WorldRgbaColorRenderer.DrawRect(tl, br, width, color);
const float Width = 1.0f;
Game.Renderer.WorldRgbaColorRenderer.DrawRect(tl, br, Width, color);
if (crossEnabled)
{
Game.Renderer.WorldRgbaColorRenderer.DrawLine(tl, br, width, color);
Game.Renderer.WorldRgbaColorRenderer.DrawLine(tl, br, Width, color);
var tr = new float3(br.X, tl.Y, 1024.0f);
var bl = new float3(tl.X, br.Y, 1024.0f);
Game.Renderer.WorldRgbaColorRenderer.DrawLine(tr, bl, width, color);
Game.Renderer.WorldRgbaColorRenderer.DrawLine(tr, bl, Width, color);
}
}

public void RenderDebugGeometry(WorldRenderer wr) { }

public Rectangle ScreenBounds(WorldRenderer wr)
{
var tl = new WPos(pos.X + bounds.Left, pos.Y + bounds.Top - 1, 0);
var br = new WPos(pos.X + bounds.Right, pos.Y + bounds.Bottom - 1, 0);
var tl = new WPos(Pos.X + bounds.Left, Pos.Y + bounds.Top - 1, 0);
var br = new WPos(Pos.X + bounds.Right, Pos.Y + bounds.Bottom - 1, 0);
var tlOffset = wr.ScreenPxPosition(tl);
var brOffset = wr.ScreenPxPosition(br);

Expand Down
11 changes: 3 additions & 8 deletions OpenRA.Mods.D2/Graphics/D2ChromeProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,10 @@ static ISpriteFrame LoadSpriteFrame(Stream stream)
{
foreach (var loader in Game.ModData.SpriteLoaders)
{
ISpriteFrame[] frames;
TypeDictionary metadata;
if (loader.TryParseSprite(stream, string.Empty, out frames, out metadata))
if (loader.TryParseSprite(stream, string.Empty, out var frames, out _) && frames.Length > 0)
{
if (frames.Length > 0)
{
// Will use only first frame if multiple frames available
return frames[0];
}
// Will use only first frame if multiple frames available
return frames[0];
}
}

Expand Down
20 changes: 9 additions & 11 deletions OpenRA.Mods.D2/ImportData/D2ImportOriginalMaps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static class D2ImportOriginalMaps
{
public static int ImportOriginalMaps(ModData modData, Dictionary<string, string> info)
{
string[] files = Array.Empty<string>();
var files = Array.Empty<string>();
var unpackedFilesCount = 0;

if (info.ContainsKey("OriginalMaps"))
Expand Down Expand Up @@ -49,18 +49,16 @@ public static int ImportOriginalMaps(ModData modData, Dictionary<string, string>
var mapFilename = Path.Combine(originalPath, Path.GetFileNameWithoutExtension(filename) + ".oramap");
try
{
if (!File.Exists(mapFilename))
if (!File.Exists(mapFilename) && modData.DefaultFileSystem.Exists(filename))
{
if (modData.DefaultFileSystem.Exists(filename))
{
var rules = Ruleset.LoadDefaults(modData);
var map = D2MapImporter.Import(filename, modData.Manifest.Id, "arrakis2", rules);
var rules = Ruleset.LoadDefaults(modData);
var map = D2MapImporter.Import(filename, modData.Manifest.Id, "arrakis2", rules);

if (map != null)
{
map.Save(ZipFileLoader.Create(mapFilename));
Console.WriteLine("Original map {0} saved to {1}", filename, mapFilename);
}
if (map != null)
{
map.Save(ZipFileLoader.Create(mapFilename));
unpackedFilesCount++;
Console.WriteLine("Original map {0} saved to {1}", filename, mapFilename);
}
}
}
Expand Down
Loading