home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 5.14 / 2000-11_-_Disc_5.14.iso / Goodies / 3DGameStudio / Mission / messages.wdl < prev    next >
Text File  |  2000-02-08  |  7KB  |  251 lines

  1. //////////////////////////////////////////////////////////////////////
  2. // WDL prefabs for displaying messages
  3. //////////////////////////////////////////////////////////////////////
  4. IFNDEF MSG_DEFS;
  5.  FONT standard_font,<ackfont.pcx>,6,9;
  6.  
  7.  DEFINE MSG_X,4;        // from left
  8.  DEFINE MSG_Y,4;        // from above
  9.  DEFINE BLINK_TICKS,6;    // msg blinking period
  10.  DEFINE MSG_TICKS,64;    // msg appearing time
  11.  DEFINE msg_font,standard_font;
  12.  SOUND msg_sound,<msg.wav>;
  13.  
  14.  DEFINE PANEL_POSX,4;    // health panel from left
  15.  DEFINE PANEL_POSY,-20;    // from below
  16.  FONT digit_font,<digfont.pcx>,12,16;    // ammo/health font
  17. ENDIF;
  18.  
  19. IFNDEF MSG_DEFS2;
  20.  DEFINE SCROLL_X,4;        // scroll text from left
  21.  DEFINE SCROLL_Y,4;        // from above
  22.  DEFINE SCROLL_LINES,4;    // maximum 8;
  23. ENDIF;
  24.  
  25. IFNDEF MSG_DEFS3;
  26.  DEFINE HEALTHPANEL,game_panel;    // default health/ammo panel
  27.  
  28.  DEFINE touch_font,standard_font;
  29.  DEFINE touch_sound,msg_sound;
  30. ENDIF;
  31.  
  32. //////////////////////////////////////////////////////////////////////
  33. SKILL msg_counter    { VAL 0; }
  34. STRING empty_str,
  35.  "                                                                    ";
  36. STRING temp_str,
  37.  "                                                                    ";
  38.  
  39. TEXT msg {
  40.     POS_X MSG_X;
  41.     POS_Y MSG_Y;
  42.     FONT    msg_font;
  43.     STRING empty_str;
  44. }
  45.  
  46. //////////////////////////////////////////////////////////////////////
  47. // To display a message string for 5 seconds, perform the instructions
  48. // SET msg.STRING,message_string; CALL show_message;
  49.  
  50. ACTION show_message {
  51. //    SET ME,NULL;        // prevent stopping action by removing an entity
  52.     EXCLUSIVE_GLOBAL;        // stop previous show_message action
  53.     PLAY_SOUND     msg_sound,66;
  54.     SET    msg.VISIBLE,ON;
  55.     WAITT    MSG_TICKS;
  56.     SET    msg.STRING,empty_str;
  57.     SET    msg.VISIBLE,OFF;
  58. }
  59.  
  60. // The same, but message will blink
  61. ACTION blink_message {
  62. //    SET ME,NULL;
  63.     EXCLUSIVE_GLOBAL;
  64.     PLAY_SOUND     msg_sound,66;
  65.     msg_counter = MSG_TICKS;
  66.     WHILE (msg_counter > 0)
  67.     {
  68.         IF (msg.VISIBLE == ON) {
  69.             SET    msg.VISIBLE,OFF;
  70.         } ELSE {
  71.             SET    msg.VISIBLE,ON;
  72.         }
  73.         WAITT    BLINK_TICKS;
  74.         msg_counter -= BLINK_TICKS;
  75.     }
  76.     SET    msg.STRING,empty_str;
  77.     SET    msg.VISIBLE,OFF;
  78. }
  79.  
  80.  
  81. //////////////////////////////////////////////////////////////////////
  82. // actions for scrolling messages
  83. //////////////////////////////////////////////////////////////////////
  84. STRING message_str,
  85.  "                                                                    ";
  86. TEXT enter_txt {
  87.     FONT    msg_font;
  88.     STRING message_str;
  89. }
  90.  
  91. TEXT scroll {
  92.     POS_X MSG_X;
  93.     POS_Y MSG_Y;
  94.     FONT    msg_font;
  95.     STRINGS 8;
  96.     STRING "                                                           ";
  97.     STRING "                                                           ";
  98.     STRING "                                                           ";
  99.     STRING "                                                           ";
  100.     STRING "                                                           ";
  101.     STRING "                                                           ";
  102.     STRING "                                                           ";
  103.     STRING "                                                           ";
  104.     INDEX SCROLL_LINES;
  105. }
  106.  
  107. SYNONYM scroll_string { TYPE STRING; }
  108.  
  109. // scroll message upwards while adding a line
  110. ACTION scroll_message {
  111.     PLAY_SOUND     msg_sound,66;
  112.     SET scroll.VISIBLE,1;
  113.     temp = 1; SET scroll.INDEX,temp;    // INDEX must be set by SET
  114.     WHILE (temp <= SCROLL_LINES)
  115.     {
  116. // this can be used to study the difference between SET and SET_STRING
  117.         SET scroll_string,scroll.STRING;
  118. // now scroll_string is a synonym for the scroll string # (INDEX)
  119.         temp += 1; SET scroll.INDEX,temp;
  120. // now copy scroll string # (INDEX + 1) to scroll string # INDEX, i.e. upwards
  121.         SET_STRING scroll_string,scroll.STRING;
  122.     }
  123.       SET scroll.INDEX,SCROLL_LINES;
  124.     SET_STRING scroll.STRING,empty_str;
  125. }
  126.  
  127. IFDEF ACKNEX_VERSION414;
  128. STRING joined_str," joined";
  129.  
  130. ACTION msg_join {
  131.     SET_STRING temp_str,MESSAGE;
  132.     ADD_STRING temp_str,joined_str;
  133.     SET_STRING scroll.STRING,temp_str;
  134.     CALL scroll_message;
  135. }
  136.  
  137. SYNONYM message_syn { TYPE STRING; DEFAULT message_str; }
  138.  
  139. ACTION msg_string {
  140.     IF (MY_STRING == message_syn) {    // synonyms may be compared directly
  141.         SET_STRING scroll.STRING,message_str;
  142.         CALL scroll_message;
  143.         SET_STRING message_str,empty_str;
  144.     }
  145. }
  146. ENDIF;
  147.  
  148. ACTION enter_message
  149. {
  150.     SET enter_txt.VISIBLE,ON;
  151.     enter_txt.POS_X = scroll.POS_X;
  152.     enter_txt.POS_Y = scroll.POS_Y + (SCROLL_LINES-1) * scroll.CHAR_Y;
  153.     INKEY    message_str;
  154.     IF (RESULT == 13) {
  155. IFDEF ACKNEX_VERSION414;
  156.         SEND_STRING    message_str;
  157. ENDIF;
  158.     }
  159.     SET_STRING message_str,empty_str;
  160.     SET enter_txt.VISIBLE,OFF;
  161. }
  162.  
  163. //////////////////////////////////////////////////////////////////////
  164. // actions for ammo and health panels
  165. //////////////////////////////////////////////////////////////////////
  166. SKILL show_ammo {}
  167. SKILL show_health {}
  168. SKILL show_armor {}
  169. SKILL ammo_number {}
  170. SKILL ammo1 {}
  171. SKILL ammo2 {}
  172. SKILL ammo3 {}
  173. SKILL ammo4 {}
  174.  
  175. PANEL game_panel {
  176.     POS_X        PANEL_POSX;
  177.     DIGITS    0,0,3,digit_font,1,show_ammo;
  178.     DIGITS    40,0,3,digit_font,1,show_health;
  179. //    DIGITS    80,0,3,digit_font,1,show_armor;
  180.     FLAGS        TRANSPARENT,REFRESH;
  181. }
  182.  
  183. //////////////////////////////////////////////////////////////////////
  184. ACTION show_panels
  185. {
  186.     SET HEALTHPANEL.VISIBLE,ON;
  187.     WHILE (1) {    // forever
  188.         HEALTHPANEL.POS_Y = SCREEN_SIZE.Y + PANEL_POSY;
  189.         IF (ammo_number == 0) { show_ammo = 0; }
  190.         IF (ammo_number == 1) { show_ammo = ammo1; }
  191.         IF (ammo_number == 2) { show_ammo = ammo2; }
  192.         IF (ammo_number == 3) { show_ammo = ammo3; }
  193.         IF (ammo_number == 4) { show_ammo = ammo4; }
  194.         IF (player != NULL) {
  195.             show_health = player._HEALTH;
  196.             show_armor = player._ARMOR;
  197.         }
  198.         WAIT    1;
  199.     }
  200. }
  201.  
  202. //////////////////////////////////////////////////////////////////////
  203. // Stuff for displaying object titles if the mouse touches them
  204. TEXT touch_txt {
  205.     FONT    touch_font;
  206.     STRING empty_str;
  207.     FLAGS CENTER_X,CENTER_Y;
  208. }
  209.  
  210. // display a touch text at mouse position
  211. ACTION _show_touch
  212. {
  213.     IF (MY.STRING1 != NULL)
  214.     {
  215.         PLAY_SOUND     touch_sound,33;
  216.         SET touch_txt.VISIBLE,ON;
  217.         SET touch_txt.STRING,MY.STRING1;
  218.         touch_txt.POS_X = MOUSE_POS.X;
  219.         touch_txt.POS_Y = MOUSE_POS.Y;
  220.         SET MY.ENABLE_RELEASE,ON;
  221.  
  222.     //    WHILE (touch_text.VISIBLE == ON)    // move text with mouse
  223.     //    {
  224.     //        touch_text.POSX = MOUSE_X;
  225.     //        touch_text.POSY = MOUSE_Y;
  226.     //        WAIT 1;
  227.     //    }
  228.     }
  229. }
  230.  
  231. // hide touch text if it still displayed my string
  232. ACTION _hide_touch
  233. {
  234.     IF (touch_txt.STRING == MY.STRING1) {
  235.         SET touch_txt.VISIBLE,OFF; }
  236. }
  237.  
  238. // call this from a event action to operate the touch text
  239. ACTION handle_touch
  240. {
  241.     IF (EVENT_TYPE == EVENT_TOUCH) { BRANCH _show_touch; }
  242.     IF (EVENT_TYPE == EVENT_RELEASE) { BRANCH _hide_touch; }
  243. }
  244.  
  245. //////////////////////////////////////////////////////////////////////
  246.  
  247. IFDEF ACKNEX_VERSION414;
  248. ON_JOIN    msg_join;
  249. ON_STRING msg_string;
  250. ON_F4 enter_message;
  251. ENDIF;