4 #define ITEM_HANDLE(signal, ...) __Item_Send_##signal(__VA_ARGS__)
5 CLASS(GameItem, Object)
6 ATTRIB(GameItem, m_id, int, 0)
7 METHOD(GameItem, show, void(entity this))
8 void GameItem_show(entity this) { print("A game item\n"); }
9 void ITEM_HANDLE(Show, entity this) { this.show(this); }
14 #define REGISTER_ITEM(id, class, body) \
16 void RegisterItems_##id() { \
17 const entity this = NEW(class); \
19 this.m_id = ITEM_COUNT; \
20 ITEMS[ITEM_COUNT++] = this; \
23 ACCUMULATE_FUNCTION(RegisterItems, RegisterItems_##id)