public CharUIElement RemoveUI(Character character)
 {
     for (int i = 0; i < charUIs.Count; i++)
     {
         if (charUIs[i] != null && charUIs[i].character == character)
         {
             CharUIElement z = charUIs[i];
             charUIs.Remove(charUIs[i]);
             OrderUI();
             return(z);
         }
     }
     //charUIs.RemoveAll(x => x.character == character);
     return(null);
 }
    public void PositionUI(CharUIElement cue)
    {
        RectTransform rect;
        int           count;

        if (cue.character.team == 0)
        {
            rect  = t0anchor.GetComponent <RectTransform>();
            count = t0anchor.transform.childCount;
            cue.transform.SetParent(t0anchor.transform);
        }
        else
        {
            rect  = t1anchor.GetComponent <RectTransform>();
            count = t1anchor.transform.childCount;
            cue.transform.SetParent(t1anchor.transform);
        }
        cue.GetComponent <RectTransform>().anchoredPosition = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y - count * -offset);
    }
    private void AddCharacter(Tile t, GameObject prefab)
    {
        int grp = Undo.GetCurrentGroup();

        Undo.RecordObject(world.GetComponent <UiHandler>(), "New Char");
        Undo.RecordObject(t.tileContent, "New Char");

        GameObject z = PrefabUtility.InstantiatePrefab(prefab) as GameObject;

        world.AddCharPrefab(z, t, team);
        t.tileContent.type = GameHelper.TileType.Gras;
        Undo.RegisterCreatedObjectUndo(z, "New Char");

        CharUIElement cue = Instantiate(world.charuiprefab).GetComponent <CharUIElement>();

        cue.character = z.GetComponent <Character>();
        cue.Init();
        world.GetComponent <UiHandler>().AddUI(cue);
        Undo.RegisterCreatedObjectUndo(cue.gameObject, "New Char");

        //has to be done or UiHandler charUis contains None refereces after play
        EditorUtility.SetDirty(world.GetComponent <UiHandler>());
        Undo.CollapseUndoOperations(grp);
    }
    //Add Remove Section
    private void RemoveCharacter(Tile t)
    {
        int grp = Undo.GetCurrentGroup();

        //weird RegisterObect not enough UiHandler.charuis will not get updated but with RegisterCompleteObjectUndo it works
        Undo.RegisterCompleteObjectUndo(world.GetComponent <UiHandler>().gameObject, "New Char");
        //Same here
        Undo.RegisterCompleteObjectUndo(t.tileContent, "Remove Char");

        //save position of Ui
        Undo.RegisterFullObjectHierarchyUndo(GameObject.Find("Canvas"), "Remove Char");
        CharUIElement cue = world.GetComponent <UiHandler>().Get(t.tileContent.GetCharacter());

        Undo.DestroyObjectImmediate(cue.gameObject);
        world.GetComponent <UiHandler>().ClearNones();
        world.GetComponent <UiHandler>().OrderUI();

        Undo.DestroyObjectImmediate(t.tileContent.GetCharacter().gameObject);
        t.tileContent.character = null;

        //has to be done or UiHandler charUis contains None refereces after play
        EditorUtility.SetDirty(world.GetComponent <UiHandler>());
        Undo.CollapseUndoOperations(grp);
    }
 public void AddUI(CharUIElement cue)
 {
     charUIs.Add(cue);
     PositionUI(cue);
 }