예제 #1
0
        public void GiveBirth()
        {
            FemaleImplOwner.CurrentPregnancyTime = 0;
            FemaleImplOwner.IsPregnant           = false;
            _stringBuilder.Clear();
            var randomBirthNumber = GameSession.Random.Next(1, FemaleImplOwner.MaxBirth + 1);

            _stringBuilder.Append($"{FemaleImplOwner.GetType().Name}({FemaleImplOwner.Id}) gave birth to {randomBirthNumber}.\nCreatures born: ");

            _birthEvent.ActorId    = FemaleImplOwner.Id;
            _birthEvent.ActorType  = FemaleImplOwner.GetType();
            _birthEvent.StepNumber = GameSession.StepCount;
            _birthEvent.ChildrenId = new List <int>();

            _gameObjectsCreationEvent.GameObjects = new List <GameObject>();
            _gameObjectsCreationEvent.StepNumber  = GameSession.StepCount;
            for (int i = 0; i < randomBirthNumber; i++)
            {
                var gameObject = MapSeeder.CreateObject(FemaleImplOwner.GetType(), FemaleImplOwner.Coordinates);
                _birthEvent.ChildrenId.Add(gameObject.Id);

                _gameObjectsCreationEvent.GameObjects.Add(gameObject);

                FemaleImplOwner.Map.GameObjects.Add(gameObject);

                _stringBuilder.Append($"{FemaleImplOwner.Map.GameObjects.Last().GetType().Name}({FemaleImplOwner.Map.GameObjects.Last().Id}) ");
            }

            _eventRecorder.Record(_gameObjectsCreationEvent);
            _eventRecorder.Record(_birthEvent);

            _stringBuilder.Append("\n");
            _logger.LogInformation(_stringBuilder.ToString());
        }
예제 #2
0
        public void GetPregnant()
        {
            _stringBuilder.Clear();
            FemaleImplOwner.IsPregnant           = true;
            FemaleImplOwner.CurrentPregnancyTime = 0;

            _gettingPregnantEvent.ActorId    = FemaleImplOwner.Id;
            _gettingPregnantEvent.ActorType  = FemaleImplOwner.GetType();
            _gettingPregnantEvent.StepNumber = GameSession.StepCount;

            _eventRecorder.Record(_gettingPregnantEvent);

            _stringBuilder.Append($"{FemaleImplOwner.GetType().Name}({FemaleImplOwner.Id}) got pregnant.");
            _logger.LogInformation(_stringBuilder.ToString());
        }
예제 #3
0
        public void ProgressPregnancy()
        {
            if (FemaleImplOwner.IsPregnant)
            {
                _pregnancyProgressionEvent.ActorId    = FemaleImplOwner.Id;
                _pregnancyProgressionEvent.ActorType  = FemaleImplOwner.GetType();
                _pregnancyProgressionEvent.StepNumber = GameSession.StepCount;

                _eventRecorder.Record(_pregnancyProgressionEvent);
                if (FemaleImplOwner.CurrentPregnancyTime < FemaleImplOwner.BirthTime)
                {
                    FemaleImplOwner.CurrentPregnancyTime++;
                }
                else
                {
                    GiveBirth();
                }
            }
        }