hu_lib.h
上传用户:xuyinpeng
上传日期:2021-05-12
资源大小:455k
文件大小:4k
源码类别:

射击游戏

开发平台:

Visual C++

  1. // Emacs style mode select   -*- C++ -*- 
  2. //-----------------------------------------------------------------------------
  3. //
  4. // $Id:$
  5. //
  6. // Copyright (C) 1993-1996 by id Software, Inc.
  7. //
  8. // This source is available for distribution and/or modification
  9. // only under the terms of the DOOM Source Code License as
  10. // published by id Software. All rights reserved.
  11. //
  12. // The source is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
  15. // for more details.
  16. //
  17. // DESCRIPTION:  none
  18. //
  19. //-----------------------------------------------------------------------------
  20. #ifndef __HULIB__
  21. #define __HULIB__
  22. // We are referring to patches.
  23. #include "r_defs.h"
  24. // background and foreground screen numbers
  25. // different from other modules.
  26. #define BG 1
  27. #define FG 0
  28. // font stuff
  29. #define HU_CHARERASE KEY_BACKSPACE
  30. #define HU_MAXLINES 4
  31. #define HU_MAXLINELENGTH 80
  32. //
  33. // Typedefs of widgets
  34. //
  35. // Text Line widget
  36. //  (parent of Scrolling Text and Input Text widgets)
  37. typedef struct
  38. {
  39.     // left-justified position of scrolling text window
  40.     int x;
  41.     int y;
  42.     
  43.     patch_t** f; // font
  44.     int sc; // start character
  45.     unsigned char l[HU_MAXLINELENGTH+1]; // line of text
  46.     int len;        // current line length
  47.     // whether this line needs to be udpated
  48.     int needsupdate;       
  49. } hu_textline_t;
  50. // Scrolling Text window widget
  51. //  (child of Text Line widget)
  52. typedef struct
  53. {
  54.     hu_textline_t l[HU_MAXLINES]; // text lines to draw
  55.     int h; // height in lines
  56.     int cl; // current line number
  57.     // pointer to boolean stating whether to update window
  58.     boolean* on;
  59.     boolean laston; // last value of *->on.
  60. } hu_stext_t;
  61. // Input Text Line widget
  62. //  (child of Text Line widget)
  63. typedef struct
  64. {
  65.     hu_textline_t l; // text line to input on
  66.      // left margin past which I am not to delete characters
  67.     int lm;
  68.     // pointer to boolean stating whether to update window
  69.     boolean* on; 
  70.     boolean laston; // last value of *->on;
  71. } hu_itext_t;
  72. //
  73. // Widget creation, access, and update routines
  74. //
  75. // initializes heads-up widget library
  76. void HUlib_init(void);
  77. //
  78. // textline code
  79. //
  80. // clear a line of text
  81. void HUlib_clearTextLine(hu_textline_t *t);
  82. void HUlib_initTextLine(hu_textline_t *t, int x, int y, patch_t **f, int sc);
  83. // returns success
  84. boolean HUlib_addCharToTextLine(hu_textline_t *t, char ch);
  85. // returns success
  86. boolean HUlib_delCharFromTextLine(hu_textline_t *t);
  87. // draws tline
  88. void HUlib_drawTextLine(hu_textline_t *l, boolean drawcursor);
  89. // erases text line
  90. void HUlib_eraseTextLine(hu_textline_t *l); 
  91. //
  92. // Scrolling Text window widget routines
  93. //
  94. // ?
  95. void
  96. HUlib_initSText
  97. ( hu_stext_t* s,
  98.   int x,
  99.   int y,
  100.   int h,
  101.   patch_t** font,
  102.   int startchar,
  103.   boolean* on );
  104. // add a new line
  105. void HUlib_addLineToSText(hu_stext_t* s);  
  106. // ?
  107. void
  108. HUlib_addMessageToSText
  109. ( hu_stext_t* s,
  110.   char* prefix,
  111.   char* msg );
  112. // draws stext
  113. void HUlib_drawSText(hu_stext_t* s);
  114. // erases all stext lines
  115. void HUlib_eraseSText(hu_stext_t* s); 
  116. // Input Text Line widget routines
  117. void
  118. HUlib_initIText
  119. ( hu_itext_t* it,
  120.   int x,
  121.   int y,
  122.   patch_t** font,
  123.   int startchar,
  124.   boolean* on );
  125. // enforces left margin
  126. void HUlib_delCharFromIText(hu_itext_t* it);
  127. // enforces left margin
  128. void HUlib_eraseLineFromIText(hu_itext_t* it);
  129. // resets line and left margin
  130. void HUlib_resetIText(hu_itext_t* it);
  131. // left of left-margin
  132. void
  133. HUlib_addPrefixToIText
  134. ( hu_itext_t* it,
  135.   char* str );
  136. // whether eaten
  137. boolean
  138. HUlib_keyInIText
  139. ( hu_itext_t* it,
  140.   unsigned char ch );
  141. void HUlib_drawIText(hu_itext_t* it);
  142. // erases all itext lines
  143. void HUlib_eraseIText(hu_itext_t* it); 
  144. #endif
  145. //-----------------------------------------------------------------------------
  146. //
  147. // $Log:$
  148. //
  149. //-----------------------------------------------------------------------------