Advertisement
Pro_Unit

MeleeWeaponBehaviour

Jan 7th, 2021
1,007
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.24 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using UniRx;
  3.  
  4. public class MeleeWeaponBehaviour : WeaponBehaviour
  5. {
  6.     private Dictionary<Character, bool> _killedCharacters =  new Dictionary<Character, bool>();
  7.     protected override void Awake()
  8.     {
  9.         base.Awake();
  10.  
  11.         _damager = GetComponentInChildren<Damager>();
  12.         _damager.Damage = Data.DamageFromWeapon;
  13.         _damager.Owner = _character.gameObject;
  14.         _damager.OnGiveDamage.Subscribe(health => TakeDamage()).AddTo(this);
  15.         _damager.OnFinalDamage.Subscribe(SendCharacterKillMessage).AddTo(this);
  16.  
  17.     }
  18.  
  19.     private void SendCharacterKillMessage(Health health)
  20.     {
  21.         var character = health.Owner.GetComponent<Character>();
  22.         if (_killedCharacters.TryGetValue(character, out bool dead))
  23.         {
  24.             if (dead)
  25.                 return;
  26.             _killedCharacters[character] = true;
  27.         }
  28.         else
  29.         {
  30.             _killedCharacters.Add(character, true);
  31.         }
  32.  
  33.         character.Events.OnSpawn.Take(1).Subscribe(OnCharacterSpawned);
  34.         _character.Events.OnKill.OnNext(character.gameObject);
  35.     }
  36.  
  37.     private void OnCharacterSpawned(Character character)
  38.     {
  39.         _killedCharacters[character] = false;
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement