X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fcl_minigames.qh;h=cc24d4bf0c69256717525a81ced1e28360ac5941;hb=5c9dd3786d57cbbbca67043ba8076548c1d486ef;hp=0c1740127b3bb8156d8d39c3d707ce5066440381;hpb=7bae88d09fbd53cce732e31633aea92671b43699;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/minigames/cl_minigames.qh b/qcsrc/common/minigames/cl_minigames.qh index 0c1740127..cc24d4bf0 100644 --- a/qcsrc/common/minigames/cl_minigames.qh +++ b/qcsrc/common/minigames/cl_minigames.qh @@ -1,8 +1,6 @@ #ifndef CL_MINIGAMES_H #define CL_MINIGAMES_H -#include "../../dpdefs/keycodes.qh" - // Get a square in the center of the avaliable area // \note macro to pass by reference pos and mySize #define minigame_hud_fitsqare(pos, mySize) \ @@ -48,25 +46,25 @@ bool minigame_hud_mouse_in(vector pos, vector sz); // Like drawstring, but wrapping words to fit maxwidth // returns the size of the drawn area // align selects the string alignment (0 = left, 0.5 = center, 1 = right) -vector minigame_drawstring_wrapped( float maxwidth, vector pos, string text, +vector minigame_drawstring_wrapped( float maxwidth, vector pos, string text, vector fontsize, vector color, float theAlpha, int drawflags, float align ); // Like drawcolorcodedstring, but wrapping words to fit maxwidth // returns the size of the drawn area // align selects the string alignment (0 = left, 0.5 = center, 1 = right) -vector minigame_drawcolorcodedstring_wrapped( float maxwidth, vector pos, +vector minigame_drawcolorcodedstring_wrapped( float maxwidth, vector pos, string text, vector fontsize, float theAlpha, int drawflags, float align ); // Like drawstring but truncates the text to fit maxwidth -void minigame_drawstring_trunc(float maxwidth, vector pos, string text, +void minigame_drawstring_trunc(float maxwidth, vector pos, string text, vector fontsize, vector color, float theAlpha, int drawflags ); // Like drawcolorcodedstring but truncates the text to fit maxwidth -void minigame_drawcolorcodedstring_trunc(float maxwidth, vector pos, string text, +void minigame_drawcolorcodedstring_trunc(float maxwidth, vector pos, string text, vector fontsize, float theAlpha, int drawflags ); // like drawpic but pos represent the center rather than the topleft corner -void minigame_drawpic_centered( vector pos, string texture, vector sz, +void minigame_drawpic_centered( vector pos, string texture, vector sz, vector color, float thealpha, int drawflags ); // Get full path of a minigame texture @@ -79,9 +77,6 @@ string minigame_texture(string name); // For minigame_player: player server slot, don't use for anything else .float minigame_playerslot; -// register all minigames -void initialize_minigames(); - // client-side minigame session cleanup void deactivate_minigame(); @@ -93,29 +88,45 @@ entity minigame_self; // Whethere there's an active minigame float minigame_isactive() { - return active_minigame != world; + return active_minigame != NULL; } // Execute a minigame command #define minigame_cmd(...) minigame_cmd_workaround(0,__VA_ARGS__) void minigame_cmd_workaround(float dummy, string...cmdargc); -// Read a minigame entity from the server -void ent_read_minigame(); - -// Prompt the player to play in the current minigame +// Prompt the player to play in the current minigame // (ie: it's their turn and they should get back to the minigame) void minigame_prompt(); float HUD_MinigameMenu_IsOpened(); -void HUD_MinigameMenu_Close(); +void HUD_MinigameMenu_Close(entity this, entity actor, entity trigger); float HUD_Minigame_Showpanels(); // Adds a game-specific entry to the menu void HUD_MinigameMenu_CustomEntry(entity parent, string message, string event_arg); #define FOREACH_MINIGAME_ENTITY(entityvar) \ - entityvar=world; \ - while( (entityvar = findentity(entityvar,owner,active_minigame)) ) + entityvar=NULL; \ + while( (entityvar = findentity(entityvar,owner,active_minigame)) ) + + +REGISTRY(Minigames, BITS(4)) +#define Minigames_from(i) _Minigames_from(i, NULL) +REGISTER_REGISTRY(Minigames) +REGISTRY_CHECK(Minigames) +#define REGISTER_MINIGAME(name,nicename) \ + REGISTER(Minigames, MINIGAME_##name, m_id, new_pure(minigame_descriptor)); \ + void name##_hud_board(vector, vector); \ + void name##_hud_status(vector, vector); \ + int name##_client_event(entity, string, ...); \ + REGISTER_INIT(MINIGAME_##name) { \ + this.netname = strzone(strtolower(#name)); \ + this.message = nicename; \ + this.minigame_hud_board = name##_hud_board; \ + this.minigame_hud_status = name##_hud_status; \ + this.minigame_event = name##_client_event; \ + } \ + REGISTER_INIT(MINIGAME_##name) #endif