Exemplo n.º 1
0
 private void fire_callback(object key, Action callback, GameEventBundle the_bundle)
 {
     Debug.Log("Firing callback for " + GameEvent.EVENT_DICT[key] + " " + the_bundle.args.relevant_card.get_name());
     Debug.Log(events_to_fire.Contains(the_bundle));
     events_to_fire.Remove(the_bundle);
     if (callback != null)
     {
         Debug.Log("Running the callback");
         callback();
     }
 }
Exemplo n.º 2
0
    public void fire_game_event(object key, GameArgs args)
    {
        Debug.Log("FIRIGN " + GameEvent.EVENT_DICT[key]);

        EventHandler e =
            (EventHandler)GameEvent.listEventDelegates[key];
        GameEventBundle this_bundle = new GameEventBundle(key, args, e, args.what_to_do_after_event_or_if_no_response, false);

        events_to_fire.Add(this_bundle);
        execute_event(this_bundle);
    }
Exemplo n.º 3
0
    private void execute_event(GameEventBundle bundle, bool is_resuming = false)
    {
        GameEventBundle this_bundle = bundle;
        object          key         = bundle.key;
        EventHandler    e           = bundle.e;
        GameArgs        args        = bundle.args;

        if (game.is_waiting_for_player_response())
        {
            Debug.Log("We are waiting for a response before " + GameEvent.EVENT_DICT[key]);
            Debug.Log("Adding to queue or stack");
        }
        else
        {
            Debug.Log("not waiting for response, so go ahead.");
            if (e != null && !this_bundle.event_fired_already)
            {
                Debug.Log("SOMEONE is responding" + GameEvent.EVENT_DICT[key]);
                e(this, args);
                this_bundle.event_fired_already = true;
            }
            else
            {
                Debug.Log("event handler is null meaning no one responded." + GameEvent.EVENT_DICT[key]);
            }

            if (game.is_waiting_for_player_response() && !is_resuming)
            {
                Debug.Log("Now we are waiting for a response after " + GameEvent.EVENT_DICT[key]);
            }
            else
            {
                fire_callback(key, args.what_to_do_after_event_or_if_no_response, this_bundle);
                if (is_resuming)
                {
                    resume_handling();
                }
            }
            Debug.Log("Finished firing event " + GameEvent.EVENT_DICT[key]);
        }
        Debug.Log("Bundle for " + GameEvent.EVENT_DICT[key] + " " + args.relevant_card.get_name());
        Debug.Log("==============================");
        foreach (GameEventBundle b in events_to_fire)
        {
            Debug.Log(b.ToString());
        }
        Debug.Log("==============================");
    }