Files
beyond/Assets/Scripts/Audio/ShadowSlayerBarkHelper.cs
2024-11-20 15:21:28 +01:00

105 lines
3.8 KiB
C#

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<bEquipSlot> 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<CharacterVisibilityController>();
if (visilibityController)
{
weapon = meleeManager.rightWeapon;
bItemAttribute power = weapon.GetComponent<bMeleeEquipment>().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<CharacterVisibilityController>();
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()
{
}
}
}