public void PerformGoldenAgeTasks()
        {
            if (GoldenAgeCanon.IsCivInGoldenAge(this))
            {
                GoldenAgeCanon.ChangeTurnsOfGoldenAgeForCiv(this, -1);

                if (GoldenAgeCanon.GetTurnsLeftOnGoldenAgeForCiv(this) <= 0)
                {
                    GoldenAgeCanon.StopGoldenAgeForCiv(this);
                }
            }
            else
            {
                int happiness = CivHappinessLogic.GetNetHappinessOfCiv(this);

                GoldenAgeCanon.ChangeGoldenAgeProgressForCiv(this, happiness);

                float progressTowards = GoldenAgeCanon.GetGoldenAgeProgressForCiv(this);
                float progressNeeded  = GoldenAgeCanon.GetNextGoldenAgeCostForCiv(this);

                if (progressTowards >= progressNeeded)
                {
                    GoldenAgeCanon.SetGoldenAgeProgressForCiv(this, 0f);
                    GoldenAgeCanon.StartGoldenAgeForCiv(this, GoldenAgeCanon.GetGoldenAgeLengthForCiv(this));
                }
            }
        }
        private void TryStartGoldenAge(ICivilization civ)
        {
            int goldenAgeDuration = GoldenAgeCanon.GetGoldenAgeLengthForCiv(civ);

            if (GoldenAgeCanon.IsCivInGoldenAge(civ))
            {
                GoldenAgeCanon.ChangeTurnsOfGoldenAgeForCiv(civ, goldenAgeDuration);
            }
            else
            {
                GoldenAgeCanon.StartGoldenAgeForCiv(civ, goldenAgeDuration);
            }
        }