Newer
Older
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)
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()
{
if (enemyImage != null)
{
Destroy(enemyImage);
enemyImage = null;
Instantiate(activeSpawn.enemyPrefab, PositionPrefab(), Quaternion.identity);
}