Enemy.cs
unknown
csharp
2 months ago
4.0 kB
7
Indexable
using GameManager;
using MoreMountains.Feedbacks;
using UnityEngine;
namespace Enemies
{
public class Enemy : MonoBehaviour
{
public int health = 3;
public int shield = 0;
private EnemySpawner eSpawner;
public int earthshipDamage = 1;
public int oil = 10;
ResourceManager resourceManager;
SpriteRenderer spriteRenderer;
public Sprite shieldSprite;
public Sprite normalSprite;
public bool shieldDisabled;
[Header("Audio")]
[SerializeField] AudioClip deathSound;
[Header("Type")]
public string enemyType;
private MMF_Player _mmfPlayer;
private MMF_FloatingText floatingText;
private void Awake()
{
eSpawner = FindObjectOfType<EnemySpawner>();
resourceManager = FindObjectOfType<ResourceManager>();
spriteRenderer = GetComponent<SpriteRenderer>();
_mmfPlayer = FindObjectOfType<MMF_Player>();
floatingText = _mmfPlayer.GetFeedbackOfType<MMF_FloatingText>();
if (shield == 0) shieldDisabled = true;
}
private void Start()
{
CheckForShield();
}
bool CheckForShield()
{
if (shieldDisabled) return false;
switch (shield)
{
case > 0:
spriteRenderer.sprite = shieldSprite;
return true;
default:
spriteRenderer.sprite = normalSprite;
return false;
}
}
int CalculateDamageAmount(int amount, int towerType)
{
int newAmount = amount;
// Nerf/Buff Template: if (towerType == NUM && enemyType == "type") newAmount *= 2/newAmount /= 2;
switch (towerType)
{
// Buffs
case 0 when enemyType == "brown":
case 5 when enemyType == "black":
case 2 when enemyType == "green":
newAmount *= 2;
break;
// Nerfs
case 5 when enemyType == "brown":
case 2 when enemyType == "black":
case 0 when enemyType == "green":
newAmount /= 2;
break;
}
// The Fire Cucumber
if (towerType == 2 && enemyType == "green") newAmount *= 2;
else if (towerType == 2 && enemyType == "black") newAmount /= 2;
Debug.Log("Damage output for " + gameObject.name + ": " + newAmount);
return newAmount;
}
// TowerType Explanations
// 0 = The Cucumber/The Mint Cucumber
// 1 = The Cloud
// 2 = The Trill Cyan
// 3 = The Airship
// 4 = The Venus
// 5 = The Eel
// 6 = The Cactus
// 7 = The Fire Cucumber
// EnemyType Explanations
// green
// black
// brown
public void RemoveHealth(int amount, int armorDamageMultiplier, int towerType)
{
int damageAmount = CalculateDamageAmount(amount, towerType);
if (CheckForShield())
{
shield -= damageAmount * armorDamageMultiplier;
}
else
{
health -= damageAmount;
}
Debug.Log("Damage output for " + gameObject.name + ": " + damageAmount);
Debug.Log("Enemy health for " + gameObject.name + ": " + health);
floatingText.Value = damageAmount.ToString();
_mmfPlayer.PlayFeedbacks(transform.position, damageAmount);
if (health > 0) return;
RemoveEnemy();
}
public void RemoveEnemy()
{
AudioSource.PlayClipAtPoint(deathSound, transform.position);
eSpawner.spawnedEnemies.Remove(gameObject);
Destroy(gameObject);
}
}
}
Editor is loading...
Leave a Comment