Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UniRx;
- public class MeleeWeaponBehaviour : WeaponBehaviour
- {
- private Dictionary<Character, bool> _killedCharacters = new Dictionary<Character, bool>();
- protected override void Awake()
- {
- base.Awake();
- _damager = GetComponentInChildren<Damager>();
- _damager.Damage = Data.DamageFromWeapon;
- _damager.Owner = _character.gameObject;
- _damager.OnGiveDamage.Subscribe(health => TakeDamage()).AddTo(this);
- _damager.OnFinalDamage.Subscribe(SendCharacterKillMessage).AddTo(this);
- }
- private void SendCharacterKillMessage(Health health)
- {
- var character = health.Owner.GetComponent<Character>();
- if (_killedCharacters.TryGetValue(character, out bool dead))
- {
- if (dead)
- return;
- _killedCharacters[character] = true;
- }
- else
- {
- _killedCharacters.Add(character, true);
- }
- character.Events.OnSpawn.Take(1).Subscribe(OnCharacterSpawned);
- _character.Events.OnKill.OnNext(character.gameObject);
- }
- private void OnCharacterSpawned(Character character)
- {
- _killedCharacters[character] = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement