using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour {

    public static GameManager SP;

    private ArrayList objectsList;
    private float moveSpeed = 1.5f;
    private int spawnedObjects = 0;
    private int score;

	void Awake () {
        SP = this;

        objectsList = new ArrayList();
        spawnedObjects = score =0;
	}

    void Update()
    {
        //Move objects
        for (int i = objectsList.Count - 1; i >= 0; i--)
        {
            float farLeft = -10;
            float farRight = 10;

            MovingObject movObj = (MovingObject)objectsList[i];
            Transform trans = movObj.transform;
            trans.Translate((int)movObj.direction * Time.deltaTime * moveSpeed, 0, 0);
            if (trans.position.x < farLeft || trans.position.x > farRight)
            {
                Destroy(trans.gameObject);
                objectsList.Remove(movObj);
            }
        }
    }

    void OnGUI(){
        if(GUILayout.Button("Restart")){
            Application.LoadLevel(Application.loadedLevel);
        }
        GUILayout.Label(" Hit: " + score + "/" + spawnedObjects);
    }

    public void AddTarget(MovingObject newObj){
        spawnedObjects++;
        objectsList.Add(newObj);
    }

    public bool RemoveObject(Transform trans)
    {
        
        foreach (MovingObject obj in objectsList)
        {
            if (obj.transform == trans)
            {
                score++;
                objectsList.Remove(obj);
                Destroy(obj.transform.gameObject); 
                return true; 
            }
        }
        Debug.LogError("ERROR: Couldn't find target!");
        return false;
    }

}