示例#1
0
        public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime)
        {
            try
            {
                foreach (MetricRate rate in mMetrics)
                {
                    float hoursElapsed = SimClock.ElapsedTime(TimeUnit.Hours) - rate.mStartTime;

                    if (hoursElapsed < rate.mHoursUntilChange)
                    {
                        continue;
                    }

                    rate.mStartTime = SimClock.ElapsedTime(TimeUnit.Hours);

                    switch (rate.mMetric)
                    {
                    case MetricRate.MetricType.ConcertsPerformed:
                        Music music = OmniCareer.Career <Music>(Career);
                        if (music != null)
                        {
                            music.ConcertsPerformed += rate.mRate;
                        }
                        break;

                    case MetricRate.MetricType.Journals:
                        OmniCareer journals = Career as OmniCareer;
                        if (journals != null)
                        {
                            journals.FinishedJournal();
                        }
                        break;

                    case MetricRate.MetricType.Recruitment:
                        OmniCareer recruit = Career as OmniCareer;
                        if (recruit != null)
                        {
                            recruit.AddToRecruits();
                        }
                        break;

                    case MetricRate.MetricType.Reports:
                        LawEnforcement law = OmniCareer.Career <LawEnforcement>(Career);
                        if (law != null)
                        {
                            law.ReportsCompltetedToday += rate.mRate;
                        }
                        break;

                    case MetricRate.MetricType.StoriesAndReviews:
                        Journalism journalism = OmniCareer.Career <Journalism>(Career);
                        if (journalism != null)
                        {
                            journalism.StoriesWrittenToday += rate.mRate;
                        }
                        break;

                    case MetricRate.MetricType.WinLossRecord:
                        ProSports proSports = OmniCareer.Career <ProSports>(Career);
                        if (proSports != null)
                        {
                            if (rate.mRate > 0)
                            {
                                proSports.mWinRecord += rate.mRate;
                                proSports.mTotalWins += rate.mRate;
                            }
                            else
                            {
                                proSports.mLossRecord -= rate.mRate;
                                proSports.mTotalLoss  -= rate.mRate;
                            }
                        }
                        break;

                    case MetricRate.MetricType.MeetingsHeld:
                        Business business = OmniCareer.Career <Business>(Career);
                        if (business != null)
                        {
                            business.MeetingsHeldToday += rate.mRate;
                        }
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception(Career.OwnerDescription, e);
            }
        }