Skip to content
Snippets Groups Projects
EnemySpawnController.cs 2.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class EnemySpawnController : MonoBehaviour
    {
    
        [SerializeField] List<Opponent> enemyList;
        [SerializeField] List<Image> enemySprites;
    
    
        Dictionary<Opponent, Image> enemies = new Dictionary<Opponent, Image>();
    
    
        float mana;
    
        Opponent activeSpawn;
        [SerializeField] GameObject dragObject;
        GameObject enemyImage;
    
        private void Awake()
        {
            mana = -1;
    
            for (int i = 0; i < enemyList.Count; i++)
            {
    
                enemies.Add(enemyList[i], enemySprites[i]);
    
            }
        }
    
        // Update is called once per frame
        void Update()
        {
    
            var actualMana = StatsManager.instance.GetMana();
            if (mana != actualMana)
    
                ChangeActiveState();
            }
        }
    
        void ChangeActiveState()
        {
    
            foreach (KeyValuePair<Opponent, Image> enemy in enemies)
    
            {
                if (enemy.Key.enemyCost > mana)
                {
    
                    enemy.Value.color = new Color(0.3f, 0.3f, 0.3f, 1f);
    
                    enemy.Value.color = new Color(1f, 1f, 1f, 1f);
    
                }
            }
        }
    
        void SetEnemyToSpawnObject(string enemyName)
        {
            foreach (Opponent enemy in enemyList)
            {
                if (enemy.Name == enemyName)
                {
                    activeSpawn = enemy;
                }
            }
        }
    
        public void OnEnemyMouseDown(string enemyName)
        {
            SetEnemyToSpawnObject(enemyName);
    
            if (StatsManager.instance.ModifyMana(-1 * (int)activeSpawn.enemyCost))
    
            {
                dragObject.GetComponent<Image>().sprite = activeSpawn.EnemySprite;
    
                enemyImage = Instantiate(dragObject, PositionPrefab(), Quaternion.identity, transform);
    
        Vector3 PositionPrefab()
        {
            Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            pos.z = 0;
            return pos;
        }
    
        public void OnEnemyDrag()
        {
            if (enemyImage != null)
            {
                enemyImage.transform.position = PositionPrefab();
            }
    
        }
    
        public void OnEnemyDrop()
        {
            Destroy(enemyImage);
            enemyImage = null;
    
            Instantiate(activeSpawn.enemyPrefab, PositionPrefab(), Quaternion.identity);