Esempio n. 1
0
    public void AssignWaveStat(Dictionary <string, IntFloat> monster_count, int wave, int wavelet)
    {
        float total_mass = 0;
        float total_time = 0;

        foreach (string name in monster_count.Keys)
        {
            int count = monster_count[name].myInt;

            enemyStats stat = Central.Instance.getEnemy(name);

            if (stat != null)
            {
                WaveStat wavestat = getWaveStat(Central.Instance.current_lvl, wave, wavelet, name);
                wavestat.speed = stat.speed;
                wavestat.total_modified_mass = stat.getModifiedMass() * count;


                wavestat.time = monster_count[name].myFloat;
                total_mass   += wavestat.total_modified_mass;
                total_time   += wavestat.time;
            }
            else
            {
                Debug.Log("Count not assign a WaveStat for " + name + "\n");
            }
        }
        WaveStat total_wavestat = getWaveStat(Central.Instance.current_lvl, wave, wavelet, all);

        total_wavestat.speed = -1;
        total_wavestat.total_modified_mass = total_mass;
        total_wavestat.time = total_time;
    }
Esempio n. 2
0
    public enemyStats LoadEnemy(string line)
    {
        JSONParser p      = new JSONParser(line);
        JSONObject pname  = new JSONObject();
        JSONObject pcost  = new JSONObject();
        JSONObject prunes = new JSONObject();
        JSONObject mass   = new JSONObject();

        p.parse();
        p.root.TryGetValue("name", out pname);
        p.root.TryGetValue("cost", out pcost);
        p.root.TryGetValue("mass", out mass); //this is here for wave balancing
        p.root.TryGetValue("runes", out prunes);

        EnemyType type = EnumUtil.EnumFromString <EnemyType>(pname.value, EnemyType.Null);

        if (type == EnemyType.Null)
        {
            Debug.LogError("Trying to initialize an unknown EnemyType from " + pname.value);
            return(null);
        }
        enemyStats enemy = new enemyStats(type);

        Central.Instance.enemies.Add(enemy);
        return(enemy);
    }
Esempio n. 3
0
 public void CheckBasicStats(enemyStats s)
 {
     //if (my_rigidbody.mass != s.mass) Debug.LogError(this.name + " mass Prefab != init file: " + my_rigidbody.mass + " vs " + s.mass + "\n");
     //if (my_ai.speed != s.speed) Debug.LogError(this.name + " speed Prefab != init file: " + my_ai.speed + " vs " + s.speed + "\n");
     //if (Get.GetDefense(defenses,EffectType.Force) != s.defense) Debug.LogError(this.name + " defense Prefab != init file: " + Get.GetDefense(defenses, EffectType.Force) + " vs " + s.defense + "\n");
     // if (Get.GetDefense(defenses,EffectType.VexingForce) != s.vf_defense) Debug.LogError(this.name + " vf_defense Prefab != init file: " + Get.GetDefense(defenses, EffectType.VexingForce) + " vs " + s.vf_defense + "\n");
 }
Esempio n. 4
0
 public static void initEnemies()
 {
     foreach (EnemyType type in Enum.GetValues(typeof(EnemyType)))
     {
         enemyStats enemy = new enemyStats(type);
         Central.Instance.enemies.Add(enemy);
     }
 }
Esempio n. 5
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        enemyStats enemy = collision.collider.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            if (rb.velocity.magnitude > initialVelocity / speedRatio)
            {
                enemy.changeHealth(-damage);
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 6
0
    private void OnCollisionStay2D(Collision2D collision)
    {
        enemyStats enemy = collision.collider.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            enemy.changeHealth(-damage);
            if (oneHit)
            {
                Physics2D.IgnoreCollision(collision.otherCollider, GetComponent <Collider2D>());
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 7
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        enemyStats enemy = collision.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            enemy.changeHealth(-damage);
            if (oneHit)
            {
                Physics2D.IgnoreCollision(collision, GetComponent <Collider2D>());
            }
            Rigidbody2D enemyRb = enemy.GetComponent <Rigidbody2D>();
            enemyRb.AddForce(rb.velocity.normalized * piercingCoefficient);
            rb.AddForce(-rb.velocity.normalized * piercingCoefficient);
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 8
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        enemyStats enemy = collision.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            if (rb.velocity.magnitude > initialVelocity / 3)
            {
                print("Hit enemy");
                enemy.changeHealth(-damage);
                Rigidbody2D enemyRb   = enemy.GetComponent <Rigidbody2D>();
                float       massRatio = 1f / enemyRb.mass;
                //print(massRatio);
                enemyRb.AddForce(rb.velocity.normalized * piercingCoefficient * massRatio, ForceMode2D.Impulse);
                rb.AddForce(-rb.velocity.normalized * piercingCoefficient * massRatio, ForceMode2D.Impulse);
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 9
0
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                    LOAD ACTORS
    public string oldLoadActors(string what)
    {
        string line = file.Dequeue();

        while (line != null && !line[0].Equals(':'))
        {
            if (what.Equals("Toys"))
            {
                unitStats actor = LoadActor(line);
                line = file.Dequeue();
                Central.Instance.setUnitStats(actor, true);
            }
            else
            {
                enemyStats enemy = LoadEnemy(line);
                line = file.Dequeue();
                Central.Instance.enemies.Add(enemy);
                Peripheral.Instance.haveMonsters.Add(enemy.name, true);
            }
        }

        return(line);
    }
Esempio n. 10
0
    public void initStats(enemyStats s)
    {
        //	if (tween == null) {tween = this.gameObject.AddComponent<Tweener>();}
        if (my_ai == null)
        {
            my_ai = GetComponent <AI>();
        }
        if (my_body == null)
        {
            my_body = GetComponent <Body>();
        }
        if (my_rigidbody == null)
        {
            my_rigidbody = GetComponentInChildren <Rigidbody2D>();
        }
        if (my_collider == null)
        {
            my_collider = GetComponentInChildren <Collider2D>();
        }

        if (my_visuals == null || !my_visuals.gameObject.activeSelf)
        {
            initVisuals();
        }



        modified_defenses             = false;
        normalize_defenses_is_running = false;

        if (mass != null)
        {
            mass.gameObject.transform.SetParent(transform);
        }
        if (mass == null)
        {
            mass = Peripheral.Instance.zoo.getObject("Monsters/Helpers/Mass", true).GetComponent <Mass>();
        }
        if (!mass.gameObject.activeSelf)
        {
            mass.gameObject.SetActive(true);
        }

        _initMass();
        mass.gameObject.transform.SetParent(transform);
        mass.gameObject.transform.localPosition = Vector3.zero;
        mass.gameObject.transform.localScale    = Vector3.one;
        mass.gameObject.transform.localRotation = Quaternion.identity;
        stats = s.DeepClone();

        init_defenses = CloneUtil.copyList <Defense>(stats.defenses);
        defenses      = CloneUtil.copyList <Defense>(stats.defenses);


        //tileSize = Peripheral.Instance.tileSize;

        init_scale = Vector3.one;
        this.transform.localScale = init_scale;

        if (init_mass == -1)
        {
            init_mass = my_rigidbody.mass;
        }
        else
        {
            my_rigidbody.mass = init_mass;
            mass.Define(my_rigidbody, this.transform.GetChild(0).transform, mass_factor, status_bar_location, scale_transform);
        }

        if (init_speed == -1)
        {
            init_speed = my_ai.speed;
        }
        else
        {
            my_ai.speed = init_speed;
        }


        wish_list = new WishType[stats.inventory.Count];

        for (int i = 0; i < stats.inventory.Count; i++)
        {
            wish_list[i] = stats.inventory[i].type;
        }

        mass.SetPosition(status_bar_location);
        dying = false;
        InvokeRepeating("CheckIfAlive", 0, check_if_alive_repeat_rate);

        for (int i = 0; i < enemy_tech.Length; i++)
        {
            enemy_tech[i].setActive(true);
        }

        lavas = new List <Lava>();
        //   CheckBasicStats(s); //for wave balancing purposes, reminder that these stats are now in the init file, not on the prefab
    }
Esempio n. 11
0
 void Start()
 {
     eStats = GetComponentInParent <enemyStats>();
 }
Esempio n. 12
0
 private void Start()
 {
     me = this;
 }