예제 #1
0
    wave getWave()
    {
        wave        new_wave = new wave();
        InitWavelet wavelet  = generateWavelet();

        new_wave.add_wavelet(wavelet, false);
        new_wave.monster_count   = wavelet.GetMonsterCount();
        new_wave.time_name_start = (day) ? TimeName.Day : TimeName.Night;
        new_wave.time_name_end   = (day) ? TimeName.Day : TimeName.Night;

        return(new_wave);
    }
예제 #2
0
파일: Moon.cs 프로젝트: Valensta/otherside
    void Update()
    {
        if (!WaveInProgress)
        {
            return;
        }

        Sun.Instance.SetTime();

        TIME += Time.deltaTime;

        do_xp = true;


        if (monsters_transform.childCount == 0 && (wait - TIME) > Get.getSkipForwardGap(Central.Instance.current_lvl))
        {
            int buffer = 2;
            Debug.Log($"!!!!! {current_wave}.{current_wavelet} wavelet defined {my_wavelet!=null} SKIPPED {TIME - wait - buffer} seconds!\n");

            Tracker.Log(PlayerEvent.WaveTiming, true,
                        new Dictionary <string, string> {
                { "attribute_1", $"{current_wave}.{current_wavelet} wavelet defined {my_wavelet!=null}" },
                { "attribute_2", "SKIPPED" }
            }, new Dictionary <string, double> {
                { "metric_1", (TIME - wait - buffer) }
            });

            TIME  = wait - buffer; // if we ran out of enemies, let's speed things along
            do_xp = false;
        }



        if (my_wavelet == null)
        {
            if (monsters_transform.childCount >= 3)
            {
                extra_end_wait += Time.deltaTime;
                return;
            }

            TIME = wait;
            Debug.Log($"!!!!! Extra end wait {current_wave}.{current_wavelet} wavelet defined {my_wavelet != null} was {extra_end_wait}\n");

            Tracker.Log(PlayerEvent.WaveTiming, true,
                        new Dictionary <string, string>
            {
                { "attribute_1", $"{current_wave}.{current_wavelet} wavelet defined {my_wavelet != null}" },
                { "attribute_2", "WAITED" }
            },
                        new Dictionary <string, double>()
            {
                { "metric_1", extra_end_wait }
            });


            extra_end_wait = 0f;
            do_xp          = false;
        }

        if (!LevelBalancer.Instance.am_enabled)
        {
            if (do_xp)
            {
                if (TIME > xp_timer)
                {
                    // Debug.Log($"Wave {current_wave} doing XP assignment {time_based_xp} {Time.realtimeSinceStartup} TIME {TIME} xp_timer {xp_timer}\n");
                    onTimeBasedXpAssigned?.Invoke(time_based_xp);
                    xp_timer += xp_grant_interval;
                }
            }
            else
            {
                xp_timer = TIME + xp_grant_interval;
            }
        }

        if (wait > 0 && TIME < wait)
        {
            return;
        }

        if (!done)
        {
            if (my_wavelet == null || my_wavelet.GetMonsterCount() == 0)
            {
                if (current_wavelet < my_wave.wavelets.Count)
                {
                    my_wavelet = my_wave.wavelets[current_wavelet];
                    Noisemaker.Instance.Play("wavelet_start");
                    //if (!balanceMode())
                    SetWavelet(current_wavelet + 1);
                    //    Debug.Log("Wavelet start end " + " Duration.time " + Duration.time + " SUN " + Sun.Instance.current_time_of_day + "\n");

                    m_count = 0;
                    e_count = 0;
                    if (current_wavelet == my_wave.wavelets.Count)
                    {
                        Peripheral.Instance.level_state   = LState.OnLastWavelet;
                        Peripheral.Instance.Wave_interval = my_wavelet.getEndWait();
                        if (onLastWavelet != null)
                        {
                            onLastWavelet(current_wave);
                        }
                    }
                }
                else
                {
                    done = true;
                    //  Debug.Log("Wave end " + " Duration.time " + Duration.time + "\n");
                    Noisemaker.Instance.Play("wave_end");
                }
            }
            if (!done)
            {
                bool reset = (m_count >= my_wavelet.enemies[e_count].c);
                bool last  = (m_count == my_wavelet.enemies[e_count].c - 1);

                if (reset)
                {
                    m_count = 0;
                    e_count++;
                }

                if (e_count < my_wavelet.enemies.Length)
                {
                    if (last)
                    {
                        incrementWait(my_wavelet.lull);
                    }
                    else
                    {
                        incrementWait(my_wavelet.interval);
                    }

                    StartCoroutine(makeMonster(my_wavelet.enemies[e_count].name, my_wavelet.enemies[e_count].p));
                    m_count++;
                }
                else
                {
                    if (current_wavelet != my_wave.wavelets.Count)
                    {
                        incrementWait(my_wavelet.end_wait);
                    }
                    my_wavelet = null;
                }
            }
            return;
        }
        else
        {
            if (Peripheral.Instance.Wave_interval < 0 && monsters_transform.childCount > 0)
            {
                return;
            }
            done = true;
            Noisemaker.Instance.Play("wave_end");
            if (onWaveEnd != null)
            {
                onWaveEnd(current_wave);
            }
            if (!balanceMode())
            {
                SetWave(current_wave + 1, 0);
            }

            WaveInProgress = false;
            Peripheral.Instance.level_state = LState.WaveEnded;
        }
    }
예제 #3
0
파일: Wave.cs 프로젝트: Valensta/otherside
 public void add_wavelet(InitWavelet w, bool old_school)
 {
     wavelets.Add(w);
     monster_count  += w.GetMonsterCount();
     total_run_time += w.GetTotalRunTime(old_school);
 }