/// <summary>
    /// Removes the unit from the GUI and the underlying data structure.
    /// </summary>
    /// <param name="unit">Unit.</param>
    /// <param name="turnOrder">Turn order.</param>
    public void RemoveUnit(Unit unit, TurnOrder turnOrder)
    {
        TurnOrderImage turnOrderImage = _turnOrderImageCollection.Get(unit, turnOrder);

        _turnOrderImageCollection.Remove(turnOrderImage, turnOrder);
        turnOrder.RemoveUnit(unit);
    }
 /// <summary>
 /// Add the specified turnOrderImage and turnOrder.
 /// </summary>
 /// <param name="turnOrderImage">Turn order image.</param>
 /// <param name="turnOrder">Turn order.</param>
 public void Add(TurnOrderImage turnOrderImage, TurnOrder turnOrder)
 {
     if (!_imageDictionary.ContainsKey(turnOrder))
     {
         _imageDictionary [turnOrder] = new List <TurnOrderImage> ();
     }
     _imageDictionary[turnOrder].Add(turnOrderImage);
 }
    /// <summary>
    /// Adds the unit to the GUI and underlying data structure.
    /// If the unit had been previously persistently highlighted, apply it when added back.
    /// </summary>
    /// <param name="unit">Unit.</param>
    /// <param name="orderIndex">Ordering Index.</param>
    public void AddUnit(Unit unit, TurnOrder turnOrder, int orderIndex = -1)
    {
        // Instantiate a new Image game object
        Image unitImage = Instantiate(imagePrefab);

        unitImage.sprite = unit.GetPortrait();
        unitImage.transform.SetParent(_panel.transform, false);

        // Associate unit with image
        TurnOrderImage turnOrderImage = unitImage.GetComponent <TurnOrderImage> ();

        turnOrderImage.Unit = unit;

        unitImage.name = string.Format("{0} - {1}", unit.GetFullName(), turnOrderImage.GetInstanceID());

        // Add image to list
        _turnOrderImageCollection.Add(turnOrderImage, turnOrder);

        // Add unit to turn order list
        if (orderIndex <= -1)
        {
            turnOrder.AddUnit(unit);
        }
        else
        {
            turnOrder.InsertUnit(unit, orderIndex);
            if (unit.HasDeferredAbility)
            {
                _turnOrderImageCollection.Get(unit, turnOrder).ActivateStatusImage(_statusImage);
            }
        }

        // Handle highlighting
        if (_highlightOnSpawn)
        {
            turnOrderImage.Highlight(false);
        }
        _highlightOnSpawn = false;
    }
 /// <summary>
 /// Remove the specified turnOrderImage.
 /// </summary>
 /// <param name="turnOrderImage">Turn order image.</param>
 public void Remove(TurnOrderImage turnOrderImage, TurnOrder turnOrder)
 {
     _imageDictionary [turnOrder].Remove(turnOrderImage);
     turnOrderImage.transform.SetParent(null);
     Destroy(turnOrderImage.gameObject);
 }