"git@git.noc.ruhr-uni-bochum.de:pohlsvkp/teqp_fork_old.git" did not exist on "08b54c5760cecdb85d3cccbf7960323b1eb301e0"
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, GetPreviewWorldPosition(), Quaternion.identity, transform);
public void OnEnemyDrag()
{
if (enemyImage != null)
{
enemyImage.transform.position = GetPreviewWorldPosition();
}
}
public void OnEnemyDrop()
{
if (enemyImage != null)
{
Destroy(enemyImage);
enemyImage = null;
var targetPos = GetPreviewWorldPosition();
var newEnemy = Instantiate(activeSpawn.enemyPrefab, targetPos, Quaternion.identity);
// The spawned Enemy has the pivot at the bottom, not in the middle.
// Move it down by half its height to match the preview position.
targetPos.y -= newEnemy.GetComponent<SpriteRenderer>().bounds.extents.y;
newEnemy.transform.position = targetPos;
Vector3 GetPreviewWorldPosition()
{
Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
pos.z = 0;
return pos;
}