Esempio n. 1
0
    public void AddItem(int value)
    {
        Item newItem = ItemGenerator.GenerateItem(value);

        playerControl.PlayerClass.AddItem(newItem);

        GameObject go = EntitySpawnManager.InstantSpawn(UIItemPoolName, Vector3.zero, Quaternion.identity, countEntity: false);

        go.transform.parent = UIItemHolder.transform;



        float y = (int)((playerControl.PlayerClass.items.Count - 1) / 4) * 0.05f;
        float x = (int)((playerControl.PlayerClass.items.Count - 1) % 4) * 0.25f;

        go.GetComponent <UIButton>().Text = newItem.Description;
        go.GetComponent <UIButton>().RelativePosition.x = x;
        go.GetComponent <UIButton>().RelativePosition.y = y;

        UIItemHolder.GetComponent <UIRect>().AddChild(go.GetComponent <UIButton>());
        UIItemHolder.GetComponent <UIRect>().UpdateChildren();

        if (UIItemHolder.GetComponent <UIScrollPanel>())
        {
            UIItemHolder.GetComponent <UIScrollPanel>().RelHeight = (y + 0.05f);
        }
    }
Esempio n. 2
0
    public void RemovePlayer(PlayerController player)
    {
        if (player == null)
        {
            return;
        }

        int index = 0;

        for (int i = 0; i < Players.Length; i++)
        {
            if (Players[i] == player)
            {
                index = i;
                break;
            }
        }

        Destroy(Cameras[index].gameObject);
        Cameras[index] = null;

        GameEventHandler.TriggerPlayerLeft(player, player.Name);

        Players[index] = null;
        EntitySpawnManager.RemoveHitAble(player.GetComponent <HitAble>());
        Destroy(player.gameObject);
    }
Esempio n. 3
0
    public virtual void Hit(Vector3 HitPosition, Vector3 HitDirection, float forceAmount = 0f)
    {
        if (IsDead)
        {
            return;
        }

        if (sendFurther && reciever)
        {
            reciever.Hit(HitPosition, HitDirection, forceAmount);
            return;
        }

        if (HitEffect)
        {
            int          layermask = 1 << gameObject.layer;
            RaycastHit2D hit       = Physics2D.RaycastAll(HitPosition - HitDirection, HitDirection, HitDirection.magnitude * 2f, layermask).FirstOrDefault(o => o.collider == collider2D);
            if (hit)
            {
                EntitySpawnManager.Spawn(HitEffectPoolName, HitPosition, Quaternion.FromToRotation(Vector3.back, hit.normal), countEntity: false, forceDirectSpawn: true);
                if (forceAmount != 0)
                {
                    Force(HitPosition, HitDirection.normalized, forceAmount);
                }
            }
        }
    }
Esempio n. 4
0
    public void AddItem(Item item)
    {
        items.Add(item);
        item.Start(this);

        GameObject go = EntitySpawnManager.InstantSpawn(UIItemPickupPoolName, transform.position, Quaternion.identity, countEntity: false);

        go.GetComponent <UIItemPickup>().text = item.Description;
    }
Esempio n. 5
0
    public override void Do(PlayerClass player)
    {
        base.Do(player);

        for (int i = 0; i < amount; i++)
        {
            GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + ShootingPosition, Quaternion.FromToRotation(Vector3.up, Vector3.left), countEntity: false);
            go.GetComponent <Rocket>().Impulse(Vector3.up * 5.0f);
            go.GetComponent <Rocket>().player = player.playerControl;
            go.GetComponent <Rocket>().damage = player.GetAttributeValue(AttributeType.DAMAGE) * DamageMult;
        }
    }
Esempio n. 6
0
    public void TrySpawning(string poolName, Vector3 position)
    {
        RaycastHit2D hit = Physics2D.Raycast(position + Vector3.up, Vector3.down, maxDistanceDown, GroundLayer);

        if (hit)
        {
            if (!Physics2D.OverlapCircle(hit.point, minSpace, BaseLayer))
            {
                EntitySpawnManager.Spawn(poolName, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
            }
        }
    }
Esempio n. 7
0
    public override void Do(PlayerClass player)
    {
        base.Do(player);

        for (int i = 0; i < amount; i++)
        {
            //Shoot Or Something
            GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + new Vector3(ShootingPosition.x * player.playerTransform.localScale.x, ShootingPosition.y, 0) + Random.insideUnitSphere * randomPositioning, player.playerTransform.rotation, countEntity: false);
            go.SendMessage("SetDirection", Vector2.right * player.playerTransform.localScale.x, SendMessageOptions.DontRequireReceiver);
            go.SendMessage("SetPlayer", player.playerControl, SendMessageOptions.DontRequireReceiver);
            go.SendMessage("SetDamage", DamageMult * player.GetAttributeValue(AttributeType.DAMAGE), SendMessageOptions.DontRequireReceiver);
        }
    }
Esempio n. 8
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other && other.gameObject && other.gameObject.tag == "Player" && GetComponent <EnemieBase>())
        {
            GetComponent <EnemieBase>().Damage(new Damage()
            {
                amount = amount,
                type   = DamageType.MEELE,
                other  = transform
            });

            EntitySpawnManager.InstantSpawn("Blood", transform.position + Vector3.up * 0.2f, Quaternion.identity, countEntity: false);
        }
    }
Esempio n. 9
0
 public void PlayOneShot(SoundEffect effect, Vector3 position)
 {
     for (int i = 0; i < GameManager.Instance.GetCameras().Length; i++)
     {
         if (GameManager.Instance.GetCameras()[i] != null)
         {
             Vector3    camDiffPos = position - GameManager.Instance.GetCameras()[i].transform.position;
             GameObject go         = EntitySpawnManager.InstantSpawn("SoundEffect", camDiffPos, Quaternion.identity, countEntity: false);
             if (go && go.GetComponent <SoundEffectObject>())
             {
                 go.GetComponent <SoundEffectObject>().PlayOneShot(effect);
             }
         }
     }
 }
Esempio n. 10
0
    public virtual void Die()
    {
        for (int i = 0; i < Drops.Length; i++)
        {
            if (Drops[i].WantsToSpawn)
            {
                for (int a = 0; a < Drops[i].Amount; a++)
                {
                    EntitySpawnManager.Spawn(Drops[i].Next().poolName, transform.position, Quaternion.identity, queue: true);
                }
            }
        }

        EntitySpawnManager.Despawn(poolName, gameObject, true);
        GameEventHandler.TriggerEntityDied(this);
    }
Esempio n. 11
0
    public void Explode()
    {
        HitAbleInfo[] HitAblesInRange = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, ExplosionRange, true);
        //HitAbleInfo[] collider = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, distance, true, false);
        for (int i = 0; i < HitAblesInRange.Length; i++)
        {
            HitAbleInfo item = HitAblesInRange[i];

            if (item == null || item.hitAble == null)
            {
                continue;
            }

            float distance = 0f;
            distance = item.distance;

            float damageMult = (ExplosionRange - distance);

            item.hitAble.Damage(new Damage()
            {
                type              = DamageType.EXPLOSION,
                amount            = damageMult * damage,
                DamageFromAPlayer = true,
                player            = player,
                other             = player.transform
            });
            item.hitAble.Hit(item.ColliderCenter, (item.ColliderCenter - transform.position), force);

            /*
             * Debug.Log("Distance: " + HitAblesInRange[i].distance);
             * HitAblesInRange[i].hitAble.Damage(new Damage()
             * {
             *  DamageFromAPlayer = true,
             *  player = player,
             *  amount = Mathf.Min(distance - HitAblesInRange[i].distance, 0.0f),
             *  type = DamageType.EXPLOSION,
             *  other = player.transform
             * });
             * HitAblesInRange[i].hitAble.Hit(HitAblesInRange[i].ColliderCenter, (HitAblesInRange[i].ColliderCenter - transform.position), force);
             * */
        }

        AudioEffectController.Instance.PlayOneShot(explosion, transform.position);
        EntitySpawnManager.Spawn(hitEffektPoolName, transform.position, Quaternion.identity, forceDirectSpawn: true, countEntity: false);

        EntitySpawnManager.Despawn(poolName, gameObject, false);
    }
Esempio n. 12
0
    public void Spawn()
    {
        if (EntitySpawnManager.Instance.GetNearestPlayers(BaseTransform.position, false, Range) != null)
        {
            var rnd = Random.value;
            foreach (var item in spawnInfos)
            {
                if (rnd < item.weight)
                {
                    EntitySpawnManager.Spawn(item.poolName, BaseTransform.position, Quaternion.identity);

                    return;
                }
                rnd -= item.weight;
            }
        }
    }
Esempio n. 13
0
    private void Hit(GameObject other, Vector3 position)
    {
        if (other && other.GetComponent <HitAble>())
        {
            if (gameObjectHitted.Contains(other))
            {
                return;
            }

            HitAble target = other.GetComponent <HitAble>();
            target.Damage(new Damage()
            {
                DamageFromAPlayer = true,
                player            = player,
                amount            = damage,
                type  = DamageType.RANGED,
                other = player.transform
            });
            target.Hit(position, rigidbody2D.velocity * Time.fixedDeltaTime, force);

            gameObjectHitted.Add(other);

            AudioEffectController.Instance.PlayOneShot(HitEffect, transform.position);
        }
        else
        {
            EntitySpawnManager.InstantSpawn(hitEffektPoolName, position, Quaternion.identity, countEntity: false);

            EntitySpawnManager.Despawn(poolName, gameObject, false);
            return;
        }


        EntitySpawnManager.InstantSpawn(hitEffektPoolName, position, Quaternion.identity, countEntity: false);

        if (pierceCount >= pierceAmount)
        {
            rigidbody2D.velocity = Vector2.zero;
            GameObjectPool.Instance.Despawn(poolName, gameObject);
        }
        else
        {
            pierceCount++;
        }
    }
Esempio n. 14
0
    public override void Do(PlayerClass player)
    {
        base.Do(player);

        //Shoot Or Something
        Vector3 position = new Vector3(ShootingPosition.x * player.playerTransform.localScale.x, ShootingPosition.y, 0);

        if (player.playerControl.Crouching)
        {
            position = new Vector3(CrouchShootingPosition.x * player.playerTransform.localScale.x, CrouchShootingPosition.y, 0);
        }
        GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + position, player.playerTransform.rotation, countEntity: false);

        go.SendMessage("SetDirection", Vector2.right * player.playerTransform.localScale.x, SendMessageOptions.DontRequireReceiver);
        go.SendMessage("SetPlayer", player.playerControl, SendMessageOptions.DontRequireReceiver);
        go.SendMessage("SetDamage", DamageMult * player.GetAttributeValue(AttributeType.DAMAGE), SendMessageOptions.DontRequireReceiver);
        go.SendMessage("SetPierceAmount", pierceAmount, SendMessageOptions.DontRequireReceiver);
        go.SendMessage("SetForce", force, SendMessageOptions.DontRequireReceiver);

        player.playerControl.rigidbody2D.MovePosition(player.playerControl.rigidbody2D.position + KnockBack * player.playerTransform.localScale.x * Time.fixedDeltaTime);
    }
Esempio n. 15
0
    public override void Do(PlayerClass player)
    {
        base.Do(player);

        for (int i = 0; i < buffs.Length; i++)
        {
            player.AddBuff(buffs[i]);
        }

        for (int i = 0; i < Effects.Length; i++)
        {
            if (Effects[i].WantsToSpawn)
            {
                for (int a = 0; a < Effects[i].Amount; a++)
                {
                    GameObject go = EntitySpawnManager.InstantSpawn(Effects[i].Next().poolName, player.playerTransform.position + Vector3.up * 1.5f, Quaternion.identity, countEntity: false);
                    go.transform.parent = player.playerTransform;
                }
            }
        }
    }
Esempio n. 16
0
    public override void Start()
    {
        base.Start();
        healthBar.UpdateBar(true);

        if (StartFullHealth)
        {
            HealFull();
        }

        if (Debug && EntitySpawnManager.ContainsHitAble(this))
        {
            EntitySpawnManager.AddHitAble(this);
        }

        //Correct Positioning based on floor normal
        RaycastHit2D hit = Physics2D.Raycast(transform.position + transform.up, -transform.up, 2f, GroundLayer);

        if (hit)
        {
            transform.localRotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
        }
    }
Esempio n. 17
0
    public void Explode()
    {
        if (!player || !player.transform)
        {
            return;
        }

        HitAbleInfo[] HitAblesInRange = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, ExplosionRange, true);

        foreach (var item in HitAblesInRange)
        {
            if (item == null || item.hitAble == null)
            {
                continue;
            }

            float distance = 0f;
            distance = item.distance;

            float damageMult = (ExplosionRange - distance);

            item.hitAble.Damage(new Damage()
            {
                type              = DamageType.EXPLOSION,
                amount            = damageMult * damage,
                DamageFromAPlayer = true,
                player            = player,
                other             = player.transform
            });
            item.hitAble.Hit(item.Transform.position, (item.ColliderCenter - transform.position), force);
        }

        AudioEffectController.Instance.PlayOneShot(explosion, transform.position);
        EntitySpawnManager.InstantSpawn(hitEffektPoolName, transform.position, Quaternion.identity, countEntity: false);

        GameObjectPool.Instance.Despawn(poolName, gameObject);
    }
Esempio n. 18
0
    public void SelectClass(int id)
    {
        RemovePlayer(Players[currentPlayerSelectingClass]);

        GameObject newPlayer = (GameObject)Object.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);

        EntitySpawnManager.AddHitAble(newPlayer.GetComponent <HitAble>());

        newPlayer.SetActive(false);
        Players[currentPlayerSelectingClass] = newPlayer.GetComponent <PlayerController>();

        GameObject newCam = (GameObject)Object.Instantiate(cameraPrefab, new Vector3(0, 0, -10), Quaternion.identity);

        newCam.SetActive(false);

        newCam.GetComponent <PlayerUI>().playerControl = Players[currentPlayerSelectingClass];

        Cameras[currentPlayerSelectingClass]               = newCam.GetComponent <CameraController>();
        Cameras[currentPlayerSelectingClass].player        = newPlayer.transform;
        Cameras[currentPlayerSelectingClass].playerControl = newPlayer.GetComponent <PlayerController>();

        Players[currentPlayerSelectingClass].PlayerId = currentPlayerSelectingClass;

        PlayerClass playerClass = (PlayerClass)Object.Instantiate(PlayerClasses[id]);

        playerClass.transform.parent = newPlayer.transform;
        Players[currentPlayerSelectingClass].PlayerClass = playerClass;

        slotButtons[currentPlayerSelectingClass].Text = "Selected: " + Players[currentPlayerSelectingClass].PlayerClass.name.Replace("(Clone)", "") + "\nClick to delete";
        slotButtons[currentPlayerSelectingClass].ButtonStyle.normal.textColor = Color.green;

        UpdateReadyButton();
        UpdateSelectedClassUI();

        //SelectNextPlayerSlot();
    }
Esempio n. 19
0
    // Update is called once per frame
    void Update()
    {
        timer -= Time.deltaTime;
        if (timer <= 0)
        {
            EntitySpawnManager.Despawn(poolName, gameObject, false);
            //GameObjectPool.Instance.Despawn(poolName, gameObject);
        }

        /*timer = Mathf.Clamp(timer + Time.deltaTime, 0f, time);
         *
         * float size = startSize + endSize * (timer / time);
         * transform.localScale = new Vector3(size, size, size);
         *
         * if (timer > time * 0.8f)
         * {
         *  GetComponent<SpriteRenderer>().color = new Color(1,1,1,time - timer);
         * }
         *
         * if (timer == time)
         * {
         *  GameObjectPool.Instance.Despawn(poolName, gameObject);
         * }*/
    }
Esempio n. 20
0
    public void PlayOneShot(SoundEffect effect)
    {
        GameObject go = EntitySpawnManager.InstantSpawn("SoundEffect", transform.position, Quaternion.identity, countEntity: false);

        go.GetComponent <SoundEffectObject>().PlayOneShot(effect);
    }
Esempio n. 21
0
 void OnTriggerEnter2D(Collider2D other)
 {
     TriggerHit(other);
     EntitySpawnManager.Despawn(poolName, gameObject, true);
 }
Esempio n. 22
0
 void Awake()
 {
     Instance = this;
 }
Esempio n. 23
0
 private void SpawnRocket(PlayerClass playerClass)
 {
     player = playerClass.playerControl;
     EntitySpawnManager.Spawn(RocketPoolName, playerClass.playerTransform.position + Vector3.up * 2f, Quaternion.FromToRotation(Vector3.up, Vector3.left), callBack: RocketSpawned, queue: true, countEntity: false);
 }