Example #1
0
        public void ProcessDayChange()
        {
            if (GameHelper.IsDayChange)
            {
                return;
            }

            try
            {
                using (var trs = transactionScopeProvider.CreateTransactionScope(IsolationLevel.Serializable, TimeSpan.FromMinutes(8)))
                {
                    GameHelper.IsDayChange = true;
                    processCitizens();

                    var         configuration = configurationRepository.GetConfiguration();
                    DebugLogger log           = new DebugLogger();

#if !DEBUG
                    if ((DateTime.Now - configuration.LastDayChange).TotalHours < 15)
                    {
                        throw new Exception("Last day change was less than 15 hrs ago!");
                    }
#endif

                    contractService.ProcessDayChange();
                    congressCandidateService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("congressCandidateService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    partyService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("partyService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    countryService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("countryService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    congressVotingService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("congressVotingService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    battleService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("battleService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    regionService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("regionService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    companyService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("companyService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    embargoService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("embargoService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    hotelService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("hotelService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    houseService.ProcessDayChange(GameHelper.CurrentDay + 1);
                    log.Log("hotelService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status);

                    employeeService.ProcessDayChange(GameHelper.CurrentDay + 1);

                    warService.ProcessDayChange(GameHelper.CurrentDay + 1);

                    mppService.ProcessDayChange(GameHelper.CurrentDay + 1);

                    configuration.CurrentDay++;
                    configuration.LastDayChange = DateTime.Now.Date;

                    newDayRepository.AddInformationAboutNewDay(GameHelper.CurrentDay);

                    GameHelper.CurrentDay        = configuration.CurrentDay;
                    GameHelper.LastDayChangeTime = configuration.LastDayChange;
                    configurationRepository.SaveChanges();

                    trs.Complete();
                }
            }
            finally
            {
                GameHelper.IsDayChange = false;
            }

            ReloadPersistent();
        }