// Call this when a callback is complete
    public void NextCallBack()
    {
        EventQueue queue = App.Model.queueModel.queues[App.Model.queueModel.queues.Count - 1];

        if (queue.mandatoryCallBacks.Count == 0 && queue.optionalCallBacks.Count == 0) // queue done
        {
            App.Model.queueModel.QueueFinished();
            queue.finishedCallBack();
        }
        else // queue not done
        {
            if (queue.mandatoryCallBacks.Count > 0) // Need to execute more mandatory events
            {
                EventAction ea = queue.mandatoryCallBacks[0]; // Can add further sorting among mandatory events later
                queue.ExecuteEvent(ea);
                ea.callback();
            }
            else // Only optional events are left
            {
                // Create a list of still valid optional events
                // If there are none: App.Model.queueModel.QueueFinished(); queue.finishedCallBack();
                // If there is at least 1: Add a skip option and send to multiple option menu
                queue.RemoveInvalidOptionalEvents();
                if (queue.optionalCallBacks.Count == 0) // All remaining optional events were invalid
                {
                    App.Model.queueModel.QueueFinished();
                    queue.finishedCallBack();
                }
                else // Choose an optional event to execute
                {
                    List <MultipleOptionMenuObject> options = new List <MultipleOptionMenuObject>();
                    foreach (EventAction ea in queue.optionalCallBacks)
                    {
                        if (ea.asset != null)
                        {
                            options.Add(new MultipleOptionMenuObject(MultipleOptionType.AssetEvent, ea.asset));
                        }
                        else if (ea.spell != null)
                        {
                            options.Add(new MultipleOptionMenuObject(MultipleOptionType.SpellEvent, ea.spell));
                        }
                    }
                    options.Add(new MultipleOptionMenuObject(MultipleOptionType.Text, "None"));
                    App.Controller.multipleOptionController.StartMultipleOption(options, "Select an Action", OptionalEventSelected);
                }
            }
        }
    }
    public void OptionalEventSelected(int index)
    {
        EventQueue queue = App.Model.queueModel.queues[App.Model.queueModel.queues.Count - 1];

        if (index == queue.optionalCallBacks.Count) // The "None" option was chosen
        {
            App.Model.queueModel.QueueFinished();
            queue.finishedCallBack();
        }
        else // An optional event was selected
        {
            EventAction ea = queue.optionalCallBacks[index];
            queue.ExecuteEvent(ea);
            ea.callback();
        }
    }