reworked interactions, fixed health depleting from testing
This commit is contained in:
144
Assets/Scripts/InteractableObjects/Enemy.cs
Normal file
144
Assets/Scripts/InteractableObjects/Enemy.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using Assets.Scripts;
|
||||
using Assets.Scripts.Player;
|
||||
using Assets.Scripts.Slimes;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.Scripts.InteractableObjects
|
||||
{
|
||||
public class Enemy : InteractableObject
|
||||
{
|
||||
string enemyname;
|
||||
System.Random rand = new System.Random();
|
||||
BasicSlime slime;
|
||||
SlimeFactory factory = new SlimeFactory();
|
||||
|
||||
void Start()
|
||||
{
|
||||
enemyname = gameObject.name;
|
||||
if (enemyname.Contains("("))
|
||||
{
|
||||
enemyname = enemyname.Split('(')[0];
|
||||
}
|
||||
|
||||
renameEnemy();
|
||||
}
|
||||
|
||||
public override void handleInteraction(GameObject player)
|
||||
{
|
||||
keepAlive = true;
|
||||
}
|
||||
|
||||
private void renameEnemy()
|
||||
{
|
||||
switch (enemyname)
|
||||
{
|
||||
case "SlimeMageIdle":
|
||||
enemyname = "Slime Mage";
|
||||
break;
|
||||
case "SlimeBaseIdle":
|
||||
enemyname = "Slime";
|
||||
break;
|
||||
case "SlimeMetalIdle":
|
||||
enemyname = "Slime Metal";
|
||||
break;
|
||||
case "SlimeMiniBossIdle":
|
||||
enemyname = "Slime MiniBoss";
|
||||
break;
|
||||
case "SlimeWarriorIdle":
|
||||
enemyname = "Slime Warrior";
|
||||
break;
|
||||
case "SlimeForestIdle":
|
||||
enemyname = "Slime Forest";
|
||||
break;
|
||||
case "SlimeBossIdle":
|
||||
enemyname = "Slime Boss";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void scaleEnemy(PlayerGameObject player)
|
||||
{
|
||||
if (slime == null)
|
||||
{
|
||||
switch (enemyname)
|
||||
{
|
||||
case "Slime Mage":
|
||||
slime = factory.generateMageSlime(player);
|
||||
break;
|
||||
case "Slime":
|
||||
slime = factory.generateNormalSlime(player);
|
||||
break;
|
||||
case "Slime Metal":
|
||||
slime = factory.generateMetalSlime(player);
|
||||
break;
|
||||
case "Slime MiniBoss":
|
||||
slime = factory.generateMiniBossSlime(player);
|
||||
break;
|
||||
case "Slime Warrior":
|
||||
slime = factory.generateWarriorSlime(player);
|
||||
break;
|
||||
case "Slime Forest":
|
||||
slime = factory.generateForestSlime(player);
|
||||
break;
|
||||
case "Slime Boss":
|
||||
slime = factory.generateBossSlime(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int[] getStats()
|
||||
{
|
||||
return slime.getStats();
|
||||
}
|
||||
|
||||
public string getEnemyName()
|
||||
{
|
||||
return enemyname;
|
||||
}
|
||||
|
||||
public int calculateDamage()
|
||||
{
|
||||
return slime.calculateDamage(rand);
|
||||
}
|
||||
|
||||
public int calculateHeavy()
|
||||
{
|
||||
return slime.calculateHeavy(rand);
|
||||
}
|
||||
|
||||
public bool takeDamage(int amount)
|
||||
{
|
||||
return slime.takeDamage(amount, rand);
|
||||
}
|
||||
|
||||
public int getExperience()
|
||||
{
|
||||
return slime.getExperience();
|
||||
}
|
||||
|
||||
public Item getItem()
|
||||
{
|
||||
return slime.getItem();
|
||||
}
|
||||
|
||||
public string saveEnemy()
|
||||
{
|
||||
string result = "";
|
||||
result = result + FileHandler.generateJSON("enemyname", "\"" + enemyname + "\"");
|
||||
if (slime != null)
|
||||
{
|
||||
result = result + ",\r\n" + slime.saveSlime();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void loadEnemy(JToken json)
|
||||
{
|
||||
slime = new BasicSlime(json);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user