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(); } }
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); }
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("=============================="); }