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");
     }
 }
Пример #2
0
        private void FillGameObjectsStepStateData(List <GameObject> gameObjects)
        {
            List <GameObjectsStepState> items = new List <GameObjectsStepState>();
            var stepId = StepId;

            foreach (var gameObject in 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);
        }