public DatabaseEventRecordingProvider(IServiceProvider serviceProvider, GameTilesRepo gameTilesRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) { _serviceProvider = serviceProvider; _gameTilesRepo = gameTilesRepo; _gameObjectsStepStateRepo = gameObjectsStepStateRepo; }
public override void Save(IEvent eventObj) { if (eventObj is GameObjectsCreationEvent ev) { var stepId = DatabaseEventRecordingProvider.StepId; var items = new List <GameObjectsStepState>(); foreach (var gameObject in ev.GameObjects) { var objects = new List <GameObject> { gameObject }; var dataHolder = new GameObjectsStepState { GameObjectId = gameObject.Id, StepId = stepId, TypeName = gameObject.GetType().Name, X = gameObject.Coordinates.X, Y = gameObject.Coordinates.Y, Hp = gameObject.Hp, StatusId = (int)gameObject.Status, }; if (objects.OfType <IGrowable>().Any()) { var growable = objects.OfType <IGrowable>().Single(); dataHolder.CurrentAge = growable.CurrentAge; } if (objects.OfType <IGender>().Any()) { var genderObj = objects.OfType <IGender>().Single(); dataHolder.GenderTypeId = (int)genderObj.GenderType; dataHolder.CurrentPregnancyTime = genderObj.CurrentPregnancyTime; dataHolder.IsPregnant = genderObj.IsPregnant; } items.Add(dataHolder); } GameObjectsStepStateRepo.Create(items); } else { throw new InvalidDataException($"{eventObj} is invalid event"); } }
public GettingPregnantSaver(LifeGameDBContext context, StepsRepo stepsRepo, EventsRepo eventsRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) : base(context, stepsRepo, eventsRepo, gameObjectsStepStateRepo) { }
public ReproductionSaver(LifeGameDBContext context, StepsRepo stepsRepo, EventsRepo eventsRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) : base(context, stepsRepo, eventsRepo, gameObjectsStepStateRepo) { }
public GivingBirthSaver(LifeGameDBContext context, StepsRepo stepsRepo, EventsRepo eventsRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) : base(context, stepsRepo, eventsRepo, gameObjectsStepStateRepo) { }
public PregnancyProgressionSaver(LifeGameDBContext context, StepsRepo stepsRepo, EventsRepo eventsRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) : base(context, stepsRepo, eventsRepo, gameObjectsStepStateRepo) { }
protected ActionEventSaver(LifeGameDBContext context, StepsRepo stepsRepo, EventsRepo eventsRepo, GameObjectsStepStateRepo gameObjectsStepStateRepo) : base(context, stepsRepo) { EventsRepo = eventsRepo; GameObjectsStepStateRepo = gameObjectsStepStateRepo; }