home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / Hud.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-01-21  |  3.0 KB  |  191 lines

  1. #ifndef __Hud_h__
  2. #define __Hud_h__
  3.  
  4. #include "texfont.h"
  5. #include "SDL.h"
  6. #include "Game.h"
  7.  
  8. #define HUD_MESSAGE_BOX_MAX_MESSAGES        10
  9. #define HUD_MESSAGE_BOX_MESSAGE_LIFETIME    5000
  10.  
  11. class HudMessagebox;
  12. class HudCenterOfScreenMessages;
  13. class HudChatPrompt;
  14. class HudCrosshair;
  15. class HudDebugInfo;
  16. class HudStatusbar;
  17. class HudScoreboard;
  18. class HudTakeDamageIndicator;
  19. //class HudWeaponInfo;
  20.  
  21. class Hud{
  22. public:
  23.     texFont_t* font;
  24.     HudMessagebox* messagebox;
  25.     HudCenterOfScreenMessages* centerOfScreenMessages;
  26.     HudChatPrompt* chatPrompt;
  27.     HudCrosshair* crosshair;
  28.     HudStatusbar* statusbar;
  29.     HudDebugInfo* debugInfo;
  30.     HudScoreboard* scoreboard;
  31.     HudTakeDamageIndicator* takeDamageIndicator;
  32.  
  33.     Hud();
  34.     ~Hud();
  35.  
  36.     void draw();
  37.     void drawFPS();
  38.     void drawPing();
  39.     void drawTarget();
  40.     void drawHelp();
  41. //    void drawCenterOfScreenMessages();
  42.     void drawTakeDamageIndicator();
  43.     void renderTeamMarkers();
  44.  
  45.     Shader* teamMarkerShader;
  46.     Texture* hudReferenceTexture;
  47. };
  48.  
  49. class Message{
  50. public:
  51.     char* string;
  52.     unsigned long spawntime;
  53.  
  54.     Message(const char* string);
  55.     ~Message();
  56. };
  57.  
  58. class HudMessagebox{
  59. public:
  60. //    bool visible;
  61.     Mix_Chunk* chatMessageSound;
  62.  
  63.     HudMessagebox();
  64.     ~HudMessagebox();
  65.  
  66.  
  67.     void addMessage(Message* message);
  68.     void addChatMessage(Client* fromClient, chatMessagePacket_t* cm);
  69.     void deleteMessage(Message* message);
  70.     void draw();
  71.  
  72. protected:
  73.     texFont_t* font;
  74.     Message* messages[HUD_MESSAGE_BOX_MAX_MESSAGES];
  75. };
  76.  
  77. class HudCenterOfScreenMessages{
  78. public:
  79.     char* message;
  80.     unsigned long lastMessageMillis;
  81.  
  82.     HudCenterOfScreenMessages();
  83.     ~HudCenterOfScreenMessages();
  84.  
  85.     void setMessage(const char* formatString, ...);
  86.  
  87.     void draw();
  88. };
  89.  
  90. class HudChatPrompt{
  91. public:
  92.     bool isActive;
  93.     int mode;
  94.  
  95.     HudChatPrompt();
  96.     ~HudChatPrompt();
  97.  
  98.     void activate(int mode);
  99.     void deactivate();
  100.  
  101.     void receiveKey(SDL_keysym* keysym);
  102.  
  103.     void draw();
  104.  
  105. protected:
  106.     texFont_t* font;
  107.     char* promptStr;
  108.  
  109.     char* inputStr;
  110.     int inputStrIndex;
  111.  
  112. };
  113.  
  114. class HudCrosshair{
  115. public:
  116.  
  117.     HudCrosshair();
  118.     ~HudCrosshair();
  119.  
  120.     void draw();
  121. protected:
  122.     Texture* crosshairTextures[8];
  123. };
  124.  
  125. class HudStatusbar{
  126. public:
  127.     int min[2];
  128.     int max[2];
  129.  
  130.     HudStatusbar();
  131.     ~HudStatusbar();
  132.  
  133.     void draw();
  134. protected:
  135.     Texture* background;
  136.     Texture* energyIcon;
  137.     Texture* armorIcon;
  138.     Texture* weaponThumbnails[GAME_NUM_WEAPONS];
  139.  
  140.     void drawBackground();
  141. };
  142.  
  143. class HudScoreboard{
  144. public:
  145.  
  146.     HudScoreboard();
  147.     ~HudScoreboard();
  148.  
  149.     void draw();
  150.     void drawMiniscoreboard();
  151.  
  152. protected:
  153.     texFont_t* font;
  154.     void drawBackground();
  155.     void drawDeathmatchScoreboard();
  156.     void drawTeamDeathmatchScoreboard();
  157. };
  158.  
  159.  
  160. class HudTakeDamageIndicator{
  161. public:
  162.  
  163.     HudTakeDamageIndicator();
  164.     ~HudTakeDamageIndicator();
  165.  
  166.     void draw();
  167. protected:
  168.     Texture* texture;
  169. };
  170.  
  171.  
  172.  
  173. class HudDebugInfo{
  174. public:
  175. //    bool visible;
  176.     int min[2];
  177.     int max[2];
  178.  
  179.     HudDebugInfo();
  180.     ~HudDebugInfo();
  181.  
  182.     void draw();
  183. protected:
  184.     texFont_t* font;
  185.     void drawBackground();
  186. };
  187.  
  188.  
  189.  
  190. #endif    /* __Hud_h__ */
  191.