#include #include using namespace a5; class My_Event : public User_Event { public: int id; int type; int x, y, z; int server_time; int source_unit_id; int destination_unit_id; int item_id; int amount; My_Event(int id_, int type_, int x_, int y_, int z_, int server_time_, int source_unit_id_, int desination_unit_id_, int item_id_, int amount_) : id(id_) , type(type_) , x(x_) , y(y_) , z(z_) , server_time(server_time_) , source_unit_id(source_unit_id_) , destination_unit_id(desination_unit_id_) , item_id(item_id_) , amount(amount_) { } }; class My_Source : public User_Event_Source { }; int main() { int ticks = 0; Timer timer(2.0); My_Source user_src; Event_Queue queue; queue.Register(user_src); queue.Register(timer); timer.Start(); while (true) { Event_Reader e(queue); e.WaitNext(); switch (e.SubType()) { case Timer::Event::Type: { ++ticks; std::auto_ptr event(new My_Event( ticks, 1, 10, 10, 10, 12345, 1, 2, 1, 100 )); user_src.Emit(event.release()); } break; case Event::User_Type: { My_Event *my_event = dynamic_cast(&e.Event()); if (my_event) { printf("Got My_event [ID: %i]\n", my_event->id); } } } } }