public virtual void damageMob(MobBehaviour mb)
 {
     if (this.mobHit == null)
     {
         this.mobHit = mb;
         this.hurt(this.mobHit);
     }
 }
示例#2
0
    public static MobBehaviour InstantiateMob(Vector3 position, MobBehaviour mob, MobSpawner spawn)
    {
        MobBehaviour newGm = GameObject.Instantiate <MobBehaviour>(mob);

        newGm.Init(new Vector3(position.x, position.y, 5), spawn);
        newGm.transform.SetParent(backGround.transform, true);
        BoxCollider2D box = newGm.gameObject.AddComponent <BoxCollider2D>();

        box.isTrigger = true;
        return(newGm);
    }
示例#3
0
 protected virtual void updateActiveList()
 {
     for (int i = 0; i < this.activeMobs.Count; i++)
     {
         MobBehaviour mb = this.activeMobs[i];
         if (!mb.gameObject.activeSelf)
         {
             this.activeMobs.RemoveAt(i);
             i--;
         }
     }
 }
示例#4
0
 public void GetHitOnServer(GameObject tar)
 {
     SetTarget(tar);
     inCombat       = true;
     rbody.bodyType = RigidbodyType2D.Dynamic;
     foreach (uint idmb in teammates)
     {
         MobBehaviour mb = NetworkIdentity.spawned[idmb].gameObject.GetComponent <MobBehaviour>();
         mb.SetTarget(tar);
         mb.inCombat       = true;
         mb.rbody.bodyType = RigidbodyType2D.Dynamic;
     }
 }
示例#5
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag == "Mob" && FightEnemy == null)
     {
         MobBehaviour otherMb = GetComponent <MobBehaviour>();
         if (otherMb.ownerId != ownerId)
         {
             //otherMb.agent.enabled = false;
             //otherMb.CurrentState = EnemyState.Fighting;
             //otherMb.FightEnemy = this;
             FightEnemy    = otherMb;
             CurrentState  = EnemyState.Fighting;
             agent.enabled = false;
         }
     }
 }
示例#6
0
    public void spawnMob(int ID)
    {
        if (canSpawn)
        {
            GameObject mob;
            if (queue.Count == 0)
            {
                mob = Instantiate(mobs[ID], spawns[flagCount].position, Quaternion.identity);

                AI.mobsKinds[flagCount][ID]++;
                mob.GetComponent <NavMeshAgent>().speed = mobs[ID].GetComponent <MobBehaviour>().movingSpeed;
            }

            else
            {
                mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity);
                AI.mobsKinds[lanes[0]][queue[0]]++;
                mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed;
                queue.RemoveAt(0);
                lanes.RemoveAt(0);
                if (queue.Count < maxQueue)
                {
                    queue.Add(ID);
                    lanes.Add(flagCount);
                }
            }

            MobBehaviour enemy = mob.GetComponent <MobBehaviour>();

            enemy.baseTarget = _enemyBase.transform;
            Debug.Log(enemy.baseTarget);
            enemy.LaneIndex = flagCount;
            enemy.ownerId   = 1;

            canSpawn = false;
            StartCoroutine(cooldown(ID, enemy.GetComponent <MobBehaviour>().spawnTime));
        }
        else
        {
            if (queue.Count < maxQueue)
            {
                queue.Add(ID);
                lanes.Add(flagCount);
            }
        }
    }
示例#7
0
    public void spawnMob(int ID, int lane)
    {
        if (canSpawn)
        {
            GameObject mob;
            if (queue.Count == 0)
            {
                mob = Instantiate(mobs[ID], spawns[lane].position, Quaternion.identity);
                mob.GetComponent <NavMeshAgent>().speed = mobs[ID].GetComponent <MobBehaviour>().movingSpeed;
            }

            else
            {
                mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity);
                mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed;
                queue.RemoveAt(0);
                lanes.RemoveAt(0);
                if (queue.Count < maxQueue)
                {
                    queue.Add(ID);
                    lanes.Add(lane);
                }
            }

            MobBehaviour enemy = mob.GetComponent <MobBehaviour>();

            enemy.baseTarget = _enemyBase.transform;
            enemy.LaneIndex  = lane;
            enemy.ownerId    = 2;

            canSpawn = false;

            StartCoroutine(cooldown(ID, 5f));
        }
        else
        {
            if (queue.Count < maxQueue)
            {
                queue.Add(ID);
                lanes.Add(lane);
            }
        }
    }
示例#8
0
 public void GetHit(Collider2D collision)
 {
     if (collision.transform.parent != null)
     {
         //collision is the player(players weapon to be exact)
         if (collision.transform.name == "Weapon")
         {
             SetTarget(collision.transform.parent.gameObject);
             inCombat       = true;
             rbody.bodyType = RigidbodyType2D.Dynamic;
             foreach (uint idmb in teammates)
             {
                 MobBehaviour mb = NetworkIdentity.spawned[idmb].gameObject.GetComponent <MobBehaviour>();
                 mb.SetTarget(collision.transform.parent.gameObject);
                 mb.inCombat       = true;
                 mb.rbody.bodyType = RigidbodyType2D.Dynamic;
             }
             target.GetComponent <PlayerRpg>().Attack(gameObject);
         }
     }
 }
示例#9
0
    IEnumerator cooldown(int ID, float time)
    {
        yield return(new WaitForSeconds(time));

        canSpawn = true;
        if (queue.Count != 0)
        {
            GameObject mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity);
            AI.mobsKinds[lanes[0]][queue[0]]++;
            mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed;
            MobBehaviour enemy = mob.GetComponent <MobBehaviour>();
            enemy.baseTarget = _enemyBase.transform;
            Debug.Log(enemy.baseTarget);
            enemy.LaneIndex = flagCount;
            enemy.ownerId   = 1;
            queue.RemoveAt(0);
            lanes.RemoveAt(0);
            canSpawn = false;
            StartCoroutine(cooldown(ID, 2f));
        }
    }
示例#10
0
 /// <summary>
 /// Adds an behavior flag.
 /// </summary>
 /// <param name="flag">the flag</param>
 public void AddBehavior(MobBehaviour behaviorEnum)
 {
     behavior |= behaviorEnum.GetFlag();
 }
 protected virtual void hurt(MobBehaviour mb)
 {
     mb.hurt(this.power);
     this.gameObject.SetActive(false);
 }
 void Start()
 {
     this.mb = this.transform.GetComponentInParent <MobBehaviour>();
 }
 protected override void onEnable()
 {
     base.onEnable();
     this.mobHit = null;
 }
示例#14
0
 public override void spawn(MobBehaviour mb)
 {
     base.spawn(mb);
     mb.transform.rotation = rotation;
 }
示例#15
0
 public static int GetFlag(this MobBehaviour behaviour)
 {
     return((int)Math.Pow(2, (int)behaviour));
 }
示例#16
0
 /// <summary>
 /// Removes an behavior flag.
 /// </summary>
 /// <param name="flag">the <see cref="MobBehaviour"/></param>
 public void RemoveBehavior(MobBehaviour behaviorEnum)
 {
     behavior &= ~behaviorEnum.GetFlag();
 }
示例#17
0
 /// <summary>
 /// Determines if the <see cref="BaseInteractiveObject"/> has a specific behavior flag.
 /// </summary>
 /// <param name="behaviorEnum">the flag</param>
 /// <returns>true if the <see cref="BaseInteractiveObject"/> has the flag; false otherwise</returns>
 public bool HasBehavior(MobBehaviour behaviorEnum)
 {
     return(HasBehavior(behaviorEnum.GetFlag()));
 }