using Assets.Scripts; using Assets.Scripts.Player; using Assets.Scripts.Slimes; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Assets.Scripts.InteractableObjects { public class Enemy : InteractableObject { System.Random rand = new System.Random(); BasicSlime slime; SlimeFactory factory = new SlimeFactory(); public SlimeType slimeType; public override void handleInteraction(GameObject player) { keepAlive = true; } public void scaleEnemy(PlayerGameObject player) { if (slime == null) { switch (slimeType) { case SlimeType.MAGE: slime = factory.generateMageSlime(player); break; case SlimeType.NORMAL: slime = factory.generateNormalSlime(player); break; case SlimeType.METAL: slime = factory.generateMetalSlime(player); break; case SlimeType.WARRIOR: slime = factory.generateWarriorSlime(player); break; case SlimeType.FOREST: slime = factory.generateForestSlime(player); break; case SlimeType.BOSS: slime = factory.generateBossSlime(player); break; } } } public int[] getStats() { return slime.getStats(); } public string getEnemyName() { return slimeType.ToString().ToLower() + " slime"; } 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("enemytype", "\"" + slimeType.ToString().ToLower() + "\""); if (slime != null) { result = result + ",\r\n" + slime.saveSlime(); } return result; } public void loadEnemy(JToken json) { slime = new BasicSlime(json); slimeType = (SlimeType)Enum.Parse(typeof(SlimeType), json["enemytype"].ToString()); } } }