Beispiel #1
0
        public void AddRobot(int x, int y, CompassPoint c, string name)
        {
            ArgCheck.IsSet(ArenaCoordinates, nameof(ArenaCoordinates));
            ArgCheck.Check(x, nameof(x), p => p > ArenaCoordinates.Value.TopRightX, "x outside arena coordinates");
            ArgCheck.Check(y, nameof(y), p => p > ArenaCoordinates.Value.TopRightY, "y outside arena coordinates");
            var maybeRobot = GetRobot(name);

            if (maybeRobot.HasValue)
            {
                throw new ApplicationException($"Robot {name} already exist");
            }
            var evt = new RobotAdded(Id, Version, x, y,
                                     EnumEx.MapByStringValue <CompassPoint, Contracts.CompassPoint>(c), name);

            RaiseDomainEvent(evt);
        }
Beispiel #2
0
 private void Apply(RobotAdded evt)
 {
     _robots.Add(evt.Name, Domain.Robot.Create(evt.Name, RobotCoordinates.Create(evt.XCoordinate, evt.YCoordinate),
                                               EnumEx.MapByStringValue <Contracts.CompassPoint, CompassPoint>(evt.CompassPoint)));
 }