Beispiel #1
0
 public void add_func(perk_func func, List <perk_func> tab)
 {
     if (!tab.Any(s => s.nm == func.nm))
     {
         tab.Add(func);
         tab.OrderBy(s => s.priority);
     }
 }
Beispiel #2
0
    public void add_dot_perk(Func<float, float> func, int prio, float time, string type, string id)
    {
        List<perk_func> funcc;

        switch (type) {
            case "h":
                funcc = dc.func_health;
                break;
            case "hm":
                funcc = dc.func_health_malus;
                break;
            case "d":
                funcc = dc.func_damages;
                break;
            case "dm":
                funcc = dc.func_damages_malus;
                break;
            case "ms":
                funcc = dc.func_speed;
                break;
            case "msm":
                funcc = dc.func_speed_malus;
                break;
            default:
                return;
        }
        perk_func f = new perk_func(id, func, 1);
        dc.add_func(f, funcc);
        if (time > 0)
        {
            if (dots.ContainsKey(f.nm))
            {
                Coroutine to_stop = null;
                if (dots.TryGetValue(f.nm, out to_stop))
                {
                    StopCoroutine(to_stop);
                    dots[f.nm] = StartCoroutine(perk_cooldown(f, funcc, time));
                }
            }
            else
            {
                dots.Add(f.nm, StartCoroutine(perk_cooldown(f, funcc, time)));
            }
        }
    }
Beispiel #3
0
 IEnumerator perk_cooldown(perk_func func, List<perk_func> tab, float time)
 {
     yield return new WaitForSeconds(time);
     dc.remove_func(func.func, tab);
 }