summaryrefslogtreecommitdiff
path: root/MorgSimulator/Reader/MorgReader.cs
blob: 2bf9a300d2871c12aa354e14d39c7db258856201 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#nullable enable
using MorgSimulator.Factory;

namespace MorgSimulator.Reader
{
    public class MorgReader(Reader reader, IMorgFactory factory) : ReaderDecorator(reader)
    {
        private readonly IMorgFactory _factory = factory;

        public Morg? ReadMorg(int id)
        {
            if (_reader is not CSVReader csvReader) return null;

            var fields = csvReader.ReadCSVLine();

            if (fields == null || fields.Length < 5) return null;

            var type = fields[0].Trim();
            var xString = fields[1].Trim();
            var yString = fields[2].Trim();
            var movement = fields[3].Trim();
            var feeding = fields[4].Trim();

            if (!int.TryParse(xString, out int x) ||
                !int.TryParse(yString, out int y))
                return null;

            return _factory.CreateMorg(id, type, x, y, movement, feeding);
        }
    }
}
#nullable disable