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); }
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))); }