Beispiel #1
0
        // Update is called once per frame
        void Update()
        {
            var new_load = load;

            new_load += next_update_load * load_speed * Time.deltaTime;
            new_load -= load_recovery_speed * Time.deltaTime;

            if (new_load < 0)
            {
                new_load = 0;
                if (state == State.recovering)
                {
                    state = State.stable;
                    OverloadEvents.InvokeOnUnblock();
                    play_recovery_sound();
                }
            }

            if (state != State.recovering)
            {
                if (new_load > load_limit)
                {
                    state     = State.recovering;
                    new_load += overload_cost;
                    play_overload_sound();
                }
                else
                if (new_load > load)
                {
                    state = State.overloading;
                }
                else
                {
                    state = State.stable;
                }
            }

            load = new_load;

            next_update_load = 0;

            if (state == State.recovering)
            {
                var recover_percent = 1f - load / (load_limit + overload_cost);
                recover_percent = Mathf.Max(0f, recover_percent);
                recover_percent = Mathf.Min(1f, recover_percent);
                OverloadEvents.InvokeOnBlock(recover_percent);
                OverloadEvents.InvokeOnLoadChange(0);
            }
            else
            {
                OverloadEvents.InvokeOnLoadChange(Mathf.Min(1f, load / load_limit));
            }
        }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     OverloadEvents.InvokeOnUnblock();
 }