Example #1
0
 public void IncreaseReceivedDamage(SNCharacter target, int damage)
 {
     if (target.Equals(myCharacter))
     {
         dealedDamageByMe += damage;
     }
 }
Example #2
0
 public void OnHit(SNCharacter character)
 {
     if (weapon != null)
     {
         weapon.OnHit(character);
     }
 }
Example #3
0
    private IEnumerator ShowBloodSplash(SNWeapon.AttackClass attack, SNCharacter dealer)
    {
        if (bloodSplashPrefab != null)
        {
            if (attack.bloodSplahIndexes.Length > 0)
            {
                int index = attack.bloodSplahIndexes [Random.Range(0, attack.bloodSplahIndexes.Length)];

                GameObject gob = Instantiate(bloodSplashPrefab, characterTransform.position, Quaternion.identity);
                if (dealer)
                {
                    float direction = transform.position.x - dealer.transform.position.x;
                    if (direction > 0)
                    {
                        gob.GetComponent <SpriteRenderer> ().flipX = true;
                    }
                }
                Debug.Log("Show blood splash with index " + index);
                gob.GetComponent <SpriteRenderer> ().color = bloodColor;
                gob.GetComponent <Animator> ().Play("Splash" + index);
                yield return(new WaitForSeconds(1));

                gob.GetComponent <SpriteRenderer> ().sortingOrder = -1;
                //yield return new WaitForSeconds (1);
                gob.GetComponent <Animator> ().Play("Hide" + index);
                yield return(new WaitForSeconds(5));

                Destroy(gob);
            }
        }
    }
Example #4
0
    public void HandleCollision(SNCharacter characterToHit)
    {
        if (!destroyed)
        {
            bool destroy = false;

            Debug.Log("Handle bullet hit" + characterToHit);

            if (owner)
            {
                if (characterToHit)
                {
                    if (!characterToHit.Equals(owner))
                    {
                        characterToHit.TakeDamage(attackDesc, owner);
                        destroy = destroyOnHit;
                    }
                }
                else
                {
                    destroy = destroyOnHit;
                }
            }
            else
            {
                Debug.LogError("Missing bullet owner");
            }

            if (destroy)
            {
                rotate    = false;
                destroyed = true;
                if (showHitAnimation)
                {
                    //bulletAnimator.SetTrigger ("Hit");
                    if (bulletAnimator)
                    {
                        bulletAnimator.Play("Hit");
                    }
                    speed = 0;
                    GetComponent <Collider2D> ().enabled = false;
                    Destroy(this.gameObject, durationOfHitAnimation);
                }
                else
                {
                    Destroy(this.gameObject);
                }
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     currentSpeed          = runSpeed;
     rigidBody             = GetComponent <Rigidbody2D> ();
     character             = GetComponent <SNCharacter> ();
     topDownPhysics        = GetComponent <TopDownPhysics> ();
     currentAnimationState = AnimationsStates.Custom;
     if (rigidBody.isKinematic)
     {
         useKinematic = true;
     }
     else
     {
         useKinematic = false;
     }
 }
Example #6
0
    public void TakeDamage(SNWeapon.AttackClass attack, SNCharacter dealer)
    {
        if (!dead)
        {
            bool  criticalHit = false;
            int   damage      = Random.Range(attack.attackDamageMin, attack.attackDamageMax);
            float crit        = Random.Range(0.01f, 1f);

            if (crit <= attack.criticalDamageRatio)
            {
                criticalHit = true;
                damage     *= 2;
            }
            ShowHit();
            if ((attack.shakeDuration > 0) && (attack.shakeStrengh > 0))
            {
                Camera.main.GetComponent <CameraFollow> ().Shake(attack.shakeDuration, attack.shakeStrengh);
            }
            health -= damage;
            if (healthBar != null)
            {
                healthBar.RefreshHealth(health);
            }
            if (damageIndicatorPrefab != null)
            {
                GameObject gob = Instantiate(damageIndicatorPrefab, transform.GetChild(0).position, Quaternion.identity);
                gob.GetComponent <DamageIndicator> ().ShowDamage(damage, criticalHit);
                gob.GetComponent <Animator> ().Play("dmg_indicator_show" + Random.Range(1, 4));
                Destroy(gob, 5);
            }
            StartCoroutine(ShowBloodSplash(attack, dealer));
            ShowHitSpark(attack);
            if (!immune)
            {
                Vector2 dir = dealer.transform.position - this.transform.position;
                movementController.Hurt(dir, attack.enemyPushDuration);
                movementController.Knockback(-dir, attack.enemyPushForce, attack.enemyPushDuration);
            }

            if (health <= 0 && !dead)
            {
                Death();
            }
        }
    }
Example #7
0
 public void SetOwner(SNCharacter character)
 {
     if (character != null)
     {
         owner = character;
         for (int i = 0; i < this.transform.childCount; i++)
         {
             Transform child = this.transform.GetChild(i);
             if (child != null)
             {
                 KeepPlayerPosition keepC = child.GetComponent <KeepPlayerPosition> ();
                 if (keepC != null)
                 {
                     keepC.SetPlayerTransform(character.transform);
                 }
             }
         }
     }
 }
Example #8
0
 public void InitHUD(SNCharacter player, Color color)
 {
     //this.gameObject.SetActive(true);
     if (player)
     {
         playerColor     = color;
         Player          = player;
         EnergyBar.color = color;
         for (int i = 0; i < healthBars.Count; i++)
         {
             Destroy(healthBars[i]);
         }
         healthBars.Clear();
         for (int i = 0; i < player.health; i++)
         {
             GameObject gob = Instantiate(HealthBarFullPrefab, HealthBar);
             gob.GetComponent <Image> ().color = FullColor * playerColor;
             healthBars.Add(gob);
         }
     }
 }
Example #9
0
 private void InstatiatePlayers()
 {
     for (int k = 0; k < SpawnPoints.Count; k++)
     {
         SpawnPoint temp    = SpawnPoints [k];
         int        randIdx = Random.Range(0, SpawnPoints.Count);
         SpawnPoints [k]       = SpawnPoints [randIdx];
         SpawnPoints [randIdx] = temp;
     }
     for (int i = 0; i < PlayerInstances.Count; i++)
     {
         if (PlayerInstances [i].Joined)
         {
             GameObject  gob    = Instantiate(PlayerPrefab, SpawnPoints [i].point.transform.position, Quaternion.identity);
             SNCharacter player = gob.transform.GetChild(0).GetComponent <SNCharacter> ();
             SNCharacter snChar = gob.GetComponent <SNCharacter> ();
             if (player != null)
             {
                 SNUserController user = gob.GetComponent <SNUserController> ();
                 //player.SetCharacterColor (PlayerInstances [i].Color);
                 user.Input = ReInput.players.GetPlayer(PlayerInstances [i].ControllID);
                 //user.InputID = PlayerInstances [i].ControllID;
                 player.movementController.lastInputMove = SpawnPoints [i].startDirection;
                 //player.gplay = this;
                 //player.HUD = PlayerInstances [i].HUD;
                 //player.HUD.InitHUD (player, PlayerInstances [i].Color);
                 //player.HealthBarComponent.MaxHealth = player.Health;
                 PlayerInstances [i].ScoreUI.PlayerName.text  = PlayerInstances [i].Name;
                 PlayerInstances [i].ScoreUI.PlayerName.color = PlayerInstances [i].Color;
                 PlayerInstances [i].PlayerCharacter          = player;
                 PlayerInstances [i].User = user;
                 //CamFollow.Targets.Add (player);
             }
             if (snChar && snChar.characterTransform)
             {
                 cameraFollow.Targets.Add(snChar.characterTransform);
             }
         }
     }
 }
Example #10
0
 public void OnHit(SNCharacter character)
 {
     Debug.Log("Attack hit:" + character.name);
     if (character != null && attackToChecking != null)
     {
         if ((owner != null) && (!owner.tag.Equals(character.tag)))
         {
             if (!currentlyAttackedCharacters.Contains(character))
             {
                 if (character.parry)
                 {
                     if (character.weapon != null)
                     {
                         owner.ParryKnockback(character.characterTransform, character.weapon.parryKnockbackDuration, character.weapon.parryKnockbackForce);
                     }
                 }
                 else if (character.blocking)
                 {
                     character.HitBlock(currentAttack, owner.characterTransform, parryKnockbackDuration, parryKnockbackForce);
                 }
                 else if ((character.attackStartTime < 5) &&
                          (Mathf.Abs(owner.attackStartTime - character.attackStartTime) < parryOnAttackTimeDifference))
                 {
                     if (character.weapon != null)
                     {
                         owner.ParryKnockback(character.characterTransform, character.weapon.parryKnockbackDuration, character.weapon.parryKnockbackForce);
                     }
                     character.ParryKnockback(owner.characterTransform, parryKnockbackDuration, parryKnockbackForce);
                 }
                 else
                 {
                     character.TakeDamage(attackToChecking, owner);
                     currentlyAttackedCharacters.Add(character);
                 }
             }
         }
     }
 }
Example #11
0
 // Use this for initialization
 void Start()
 {
     movementController = GetComponent <SNMovementController> ();
     character          = GetComponent <SNCharacter> ();
     AIState            = AIStates.Idle;
 }
Example #12
0
 // Use this for initialization
 void Start()
 {
     Input = ReInput.players.GetPlayer(0);
     movementController = GetComponent <SNMovementController> ();
     character          = GetComponent <SNCharacter> ();
 }
Example #13
0
 public void SetOwner(SNCharacter character)
 {
     owner = character;
 }