Skip to content
Snippets Groups Projects
EnemySpawnController.cs 2.34 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> enemys = new Dictionary<Opponent, Image>();
    
        StatsManager statsManager;
        float mana;
    
        Opponent activeSpawn;
        [SerializeField] GameObject dragObject;
        GameObject enemyImage;
    
        private void Awake()
        {
            statsManager = FindObjectOfType<StatsManager>();
            mana = -1;
    
            for (int i = 0; i < enemyList.Count; i++)
            {
                enemys.Add(enemyList[i], enemySprites[i]);
            }
        }
    
        // Update is called once per frame
        void Update()
        {
            if (mana != statsManager.GetMana())
            {
                mana = statsManager.GetMana();
                ChangeActiveState();
            }
        }
    
        void ChangeActiveState()
        {
            foreach (KeyValuePair<Opponent, Image> enemy in enemys)
            {
                if (enemy.Key.enemyCost > mana)
                {
                    enemy.Value.color = new Color(0.3f,0.3f,0.3f,1f);
                }
                else
                {
                    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.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);
        }
    }