using Invector; using Invector.vMelee; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Beyond { public class ShadowSlayerBarkHelper : MonoBehaviour { private const int fullyChargedBarkId = 24, emptySlayerBarkId = 14, normalSwordAttackBarkID = 23, powerBarkID = 22; public vObjectDamage blastDamager, flamethrowerDamager;//, fireballDamager; public BarkManager barkManager; // public bEquipArea weaponsArea; public vMeleeManager meleeManager; // public List weaponSlots; private vMeleeWeapon weapon; public MagicAttacks magicAttacks; public TutorialController emptySlayerTutorial; // Start is called before the first frame update private void Awake() { EnableShadowSlayerBarks(); } private void EnableShadowSlayerBarks() { meleeManager.onDamageHit.AddListener(TryToPlayAttackBark); blastDamager.onHit.AddListener(TryToPlayPowerBark); flamethrowerDamager.onHit.AddListener(TryToPlayPowerBark); magicAttacks.onHitFireball += TryToPlayPowerBark; // fireballDamager.onHit.AddListener(TryToPlayPowerBark); } private void TryToPlayAttackBark(vHitInfo arg0) { CharacterVisibilityController visilibityController = arg0.targetCollider.GetComponent(); if (visilibityController) { weapon = meleeManager.rightWeapon; bItemAttribute power = weapon.GetComponent().power; if (power != null && power.value > 0) { //attacking with fully charged slayer barkManager.PlayBark(fullyChargedBarkId); } else if (power != null && power.value <= 0 && !emptySlayerTutorial.played) { emptySlayerTutorial.StartTutorial(); //attacking with empty slayer, change id to correct! // barkManager.PlayBark(emptySlayerBarkId); } else if (power == null) { //attacking barkManager.PlayBark(normalSwordAttackBarkID); } //not much of an improvement as bark handles playing already, just removes few check before TryToRemoveAttackListener(); } } private void TryToRemoveAttackListener() { if (!(barkManager.CanBarkBeStillPlayed(fullyChargedBarkId) || !emptySlayerTutorial.played /*|| barkManager.CanBarkBeStillPlayed(emptySlayerBarkId) */ || barkManager.CanBarkBeStillPlayed(normalSwordAttackBarkID))) { meleeManager.onDamageHit.RemoveListener(TryToPlayAttackBark); } } public void TryToPlayPowerBark(Collider arg0) { CharacterVisibilityController visilibityController = arg0.GetComponent(); if (visilibityController) { barkManager.PlayBark(powerBarkID); TryToRemovePowerBarkListener(); } } private void TryToRemovePowerBarkListener() { if (barkManager.CanBarkBeStillPlayed(powerBarkID)) { blastDamager.onHit.RemoveListener(TryToPlayPowerBark); flamethrowerDamager.onHit.RemoveListener(TryToPlayPowerBark); magicAttacks.onHitFireball -= TryToPlayPowerBark; //fireballDamager.onHit.RemoveListener(TryToPlayPowerBark); } } // Update is called once per frame private void Update() { } } }