Skip to content

Commit 84a09bb

Browse files
committed
Use primary constructors
1 parent 1651dd3 commit 84a09bb

File tree

64 files changed

+247
-573
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+247
-573
lines changed

src/Trains.Emoji/Program.cs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@
55

66
namespace Trains.Emoji;
77

8-
public class EmojiDrawer
8+
public class EmojiDrawer(
9+
IRenderer<Tree> treeRenderer,
10+
IEnumerable<IRenderer<Track>> trackRenderers,
11+
IRenderer<Train> trainRenderer,
12+
IPixelMapper pixelMapper)
913
{
1014
private static int s_numberOfTrainsToDraw = 6;
1115
private static int s_numberOfTreesToDraw = 3;
1216

13-
private readonly IRenderer<Tree> _treeRenderer;
14-
private readonly IEnumerable<IRenderer<Track>> _trackRenderers;
15-
private readonly IRenderer<Train> _trainRenderer;
16-
private readonly IPixelMapper _pixelMapper;
17+
private readonly IRenderer<Tree> _treeRenderer = treeRenderer;
18+
private readonly IEnumerable<IRenderer<Track>> _trackRenderers = trackRenderers;
19+
private readonly IRenderer<Train> _trainRenderer = trainRenderer;
20+
private readonly IPixelMapper _pixelMapper = pixelMapper;
21+
1722
private const string BaseFolderName = "EmojiOutput";
1823

1924
public static void Main(string[] args)
@@ -47,14 +52,6 @@ static bool IsArg(string actual, string expected)
4752
|| string.Equals(actual, "-" + expected, StringComparison.OrdinalIgnoreCase);
4853
}
4954

50-
public EmojiDrawer(IRenderer<Tree> treeRenderer, IEnumerable<IRenderer<Track>> trackRenderers, IRenderer<Train> trainRenderer, IPixelMapper pixelMapper)
51-
{
52-
_treeRenderer = treeRenderer;
53-
_trackRenderers = trackRenderers;
54-
_trainRenderer = trainRenderer;
55-
_pixelMapper = pixelMapper;
56-
}
57-
5855
public void Save(IEnumerable<int> imageSizes)
5956
{
6057
if (Directory.Exists(BaseFolderName))

src/Trains.NET.Engine/Entity/Layout.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@
33

44
namespace Trains.NET.Engine;
55

6-
public class Layout : ILayout, IInitializeAsync, IGameState, IGameStep
6+
public class Layout(IEntityCollectionSerializer gameSerializer) : ILayout, IInitializeAsync, IGameState, IGameStep
77
{
88
public event EventHandler? CollectionChanged;
99

1010
private readonly object _gate = new object();
11-
private readonly IEntityCollectionSerializer _gameSerializer;
11+
private readonly IEntityCollectionSerializer _gameSerializer = gameSerializer;
1212
private IStaticEntity?[][] _entities = null!;
1313
private int _rows;
1414

15-
public Layout(IEntityCollectionSerializer gameSerializer)
16-
{
17-
_gameSerializer = gameSerializer;
18-
}
19-
2015
public Task InitializeAsync(int columns, int rows)
2116
{
2217
_entities = new IStaticEntity[columns][];

src/Trains.NET.Engine/Entity/MovableLayout.cs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,18 @@
22

33
namespace Trains.NET.Engine;
44

5-
public class MovableLayout : IMovableLayout, IGameState, IGameStep
5+
public class MovableLayout(ILayout layout, IEntityCollectionSerializer gameSerializer) : IMovableLayout, IGameState, IGameStep
66
{
77
private ImmutableList<IMovable> _movables = ImmutableList<IMovable>.Empty;
88
private Dictionary<Track, (Train, float)> _lastTrackLeases = new();
9-
private readonly ILayout _layout;
10-
private readonly IEntityCollectionSerializer _gameSerializer;
11-
private readonly Train _reservedTrain;
9+
private readonly ILayout _layout = layout;
10+
private readonly IEntityCollectionSerializer _gameSerializer = gameSerializer;
11+
private readonly Train _reservedTrain = new Train(0);
1212

1313
public int Count => _movables.Count;
1414

1515
public IMovable this[int index] => _movables[index];
1616

17-
public MovableLayout(ILayout layout, IEntityCollectionSerializer gameSerializer)
18-
{
19-
_layout = layout;
20-
_gameSerializer = gameSerializer;
21-
_reservedTrain = new Train(0);
22-
}
23-
2417
public int IndexOf(IMovable movable)
2518
=> _movables.IndexOf(movable);
2619

src/Trains.NET.Engine/GameState/GameStateManager.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44
namespace Trains.NET.Engine;
55

66
[Order(999999)]
7-
public class GameStateManager : IGameStateManager, IInitializeAsync, IGameStep
7+
public class GameStateManager(
8+
IEnumerable<IGameState> gameStates,
9+
IGameStorage storage)
10+
: IGameStateManager, IInitializeAsync, IGameStep
811
{
912
// Auto-save every 2 seconds
1013
private const int AutosaveInterval = 2 * 60;
1114

1215
private int _autosaveCounter;
1316
private bool _autosaveEnabled;
1417

15-
private readonly IEnumerable<IGameState> _gameStates;
16-
private readonly IGameStorage _storage;
18+
private readonly IEnumerable<IGameState> _gameStates = gameStates;
19+
private readonly IGameStorage _storage = storage;
1720
private readonly InformationStat _autosaveStat = InstrumentationBag.Add<InformationStat>("Autosave");
1821
private readonly ElapsedMillisecondsTimedStat _saveTimeStat = InstrumentationBag.Add<ElapsedMillisecondsTimedStat>("Save-Time");
1922

@@ -38,12 +41,6 @@ public bool AutosaveEnabled
3841
}
3942
}
4043

41-
public GameStateManager(IEnumerable<IGameState> gameStates, IGameStorage storage)
42-
{
43-
_gameStates = gameStates;
44-
_storage = storage;
45-
}
46-
4744
public Task InitializeAsync(int columns, int rows)
4845
{
4946
Load();

src/Trains.NET.Engine/Nature/Tree.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
namespace Trains.NET.Engine;
22

3-
public class Tree : IStaticEntity, ISeeded
3+
public class Tree(int seed) : IStaticEntity, ISeeded
44
{
5-
public Tree(int seed)
6-
{
7-
this.Seed = seed;
8-
}
9-
105
public int Column { get; set; }
116
public int Row { get; set; }
12-
public int Seed { get; }
7+
public int Seed { get; } = seed;
138

149
public string Identifier => this.Seed.ToString();
1510

src/Trains.NET.Engine/Storage/EntityCollectionSerializer.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,9 @@
22

33
namespace Trains.NET.Engine.Storage;
44

5-
public class EntityCollectionSerializer : IEntityCollectionSerializer
5+
public class EntityCollectionSerializer(IEnumerable<IEntitySerializer> serializer) : IEntityCollectionSerializer
66
{
7-
private readonly IEnumerable<IEntitySerializer> _serializers;
8-
9-
public EntityCollectionSerializer(IEnumerable<IEntitySerializer> serializer)
10-
{
11-
_serializers = serializer;
12-
}
7+
private readonly IEnumerable<IEntitySerializer> _serializers = serializer;
138

149
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "<Pending>")]
1510
public IEnumerable<IEntity> Deserialize(string lines)

src/Trains.NET.Engine/Tools/ClearAllCommand.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
namespace Trains.NET.Engine;
22

33
[Order(10)]
4-
public class ClearAllCommand : ICommand
4+
public class ClearAllCommand(IGameStateManager gameStateManager) : ICommand
55
{
6-
private readonly IGameStateManager _gameStateManager;
6+
private readonly IGameStateManager _gameStateManager = gameStateManager;
77

88
public string Name => "Clear All";
99

10-
public ClearAllCommand(IGameStateManager gameStateManager)
11-
{
12-
_gameStateManager = gameStateManager;
13-
}
14-
1510
public void Execute()
1611
{
1712
_gameStateManager.Reset();

src/Trains.NET.Engine/Tools/EraserTool.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
namespace Trains.NET.Engine;
22

33
[Order(20)]
4-
public class EraserTool : ITool
4+
public class EraserTool(
5+
ILayout trackLayout,
6+
IMovableLayout movableLayout,
7+
ITrainManager trainManager) : ITool
58
{
6-
private readonly ILayout _collection;
7-
private readonly IMovableLayout _movableLayout;
8-
private readonly ITrainManager _trainManager;
9+
private readonly ILayout _collection = trackLayout;
10+
private readonly IMovableLayout _movableLayout = movableLayout;
11+
private readonly ITrainManager _trainManager = trainManager;
912

1013
public ToolMode Mode => ToolMode.Build;
1114
public string Name => "Eraser";
1215

13-
public EraserTool(ILayout trackLayout, IMovableLayout movableLayout, ITrainManager trainManager)
14-
{
15-
_collection = trackLayout;
16-
_movableLayout = movableLayout;
17-
_trainManager = trainManager;
18-
}
19-
2016
public void Execute(int column, int row, ExecuteInfo info)
2117
{
2218
_collection.Remove(column, row);
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
namespace Trains.NET.Engine;
22

3-
public struct ExecuteInfo
3+
public struct ExecuteInfo(int fromColumn, int fromRow)
44
{
5-
public readonly int FromColumn;
6-
public readonly int FromRow;
7-
8-
public ExecuteInfo(int fromColumn, int fromRow)
9-
{
10-
FromColumn = fromColumn;
11-
FromRow = fromRow;
12-
}
5+
public readonly int FromColumn = fromColumn;
6+
public readonly int FromRow = fromRow;
137
}

src/Trains.NET.Engine/Tools/SaveCommand.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
namespace Trains.NET.Engine;
22

33
[Order(150)]
4-
public class SaveCommand : ICommand
4+
public class SaveCommand(IGameStateManager gameStateManager) : ICommand
55
{
6-
private readonly IGameStateManager _gameStateManager;
6+
private readonly IGameStateManager _gameStateManager = gameStateManager;
77

88
public string Name => "Save";
99

10-
public SaveCommand(IGameStateManager gameStateManager)
11-
{
12-
_gameStateManager = gameStateManager;
13-
}
14-
1510
public void Execute()
1611
{
1712
_gameStateManager.Save();

0 commit comments

Comments
 (0)