summaryrefslogtreecommitdiff
path: root/MorgSimulator/Reader/MorgReader.cs
blob: 56c229b747c7746ea6b0a876238e15d1a711e8db (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
#nullable enable
using MorgSimulator.Factory;
using MorgSimulator.Framework;

namespace MorgSimulator.Reader
{
    public class MorgReader(Reader reader, IEntityFactory<Morg> factory) : EntityReader<Morg>(reader, factory)
    {
        public override Morg? ReadEntity(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.CreateEntity(id, type, x, y, movement, feeding);
        }
    }
}
#nullable disable