Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        //add time since last update to total seconds
        if (God.is_time_passing)
        {
            God.seconds_since_start += Time.deltaTime;
            float seconds_rounded = Mathf.Floor(God.seconds_since_start);

            //runs once a day
            if (God.current_day != (int)God.seconds_since_start / God.seconds_per_day)
            {
                //update date and world data
                God.current_day      = (int)God.seconds_since_start / God.seconds_per_day;
                God.world_co2_total += God.world_co2_production;
                God.update_world();

                //save game occasionally
                if (God.current_day % 5 == 0)
                {
                    God.save();
                }

                //update all timers, and trigger finished event if needed

                //update research timers
                List <string> research_keys = new List <string>(research_timer.Keys);
                foreach (var i in research_keys)
                {
                    research_timer[i] -= 1;
                    if (research_timer[i] == 0)
                    {
                        research_timer.Remove(i);
                        Research.timer_finished(i);
                    }
                }

                //update building timers
                List <string> build_keys = new List <string>(build_timer.Keys);
                foreach (var i in build_keys)
                {
                    build_timer[i] -= 1;
                    if (build_timer[i] == 0)
                    {
                        build_timer.Remove(i);
                        Building.timer_finished(i);
                    }
                }
                //update god timers
                List <string> god_keys = new List <string>(god_timer.Keys);
                foreach (string i in god_keys)
                {
                    god_timer[i] -= 1;
                    if (god_timer[i] == 0)
                    {
                        god_timer.Remove(i);
                        God.timer_finished(i);
                    }
                }
                //update policy timers
                List <string> policy_keys = new List <string>(policy_timer.Keys);
                foreach (string i in policy_keys)
                {
                    policy_timer[i] -= 1;
                    if (policy_timer[i] == 0)
                    {
                        policy_timer.Remove(i);
                        PolicyPage.timer_finished(i);
                    }
                }
                //update diaster timers
                List <string> disaster_keys = new List <string>(disaster_timer.Keys);
                foreach (string i in disaster_keys)
                {
                    disaster_timer[i] -= 1;
                    if (disaster_timer[i] == 0)
                    {
                        disaster_timer.Remove(i);
                        Disaster.timer_finished(i);
                    }
                }
            }
        }
    }