MACROS.BAK 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // Choose which type of netplay
  3. //
  4. #include <dos.h>
  5. #include <conio.h>
  6. #include <string.h>
  7. #include "main.h"
  8. //
  9. // Line input routine -- totally crude!
  10. //
  11. int EditLine(item_t *item,char *string,int maxlen)
  12. {
  13. char c;
  14. int len;
  15. textbackground(0);
  16. textcolor(15);
  17. Clear(item);
  18. Pos(item);
  19. cprintf("%s",string);
  20. while(1)
  21. {
  22. c = getch();
  23. switch(c)
  24. {
  25. case 8: // BACKSPACE
  26. case 0x4b: // LEFT ARROW
  27. len = strlen(string);
  28. if (!len)
  29. {
  30. sound(2500);
  31. delay(3);
  32. nosound();
  33. continue;
  34. }
  35. string[len-1] = 0;
  36. Clear(item);
  37. Pos(item);
  38. cprintf("%s",string);
  39. case 77: // RIGHT ARROW
  40. case 0x48: // UP
  41. case 0x50: // DOWN
  42. sound(2500);
  43. delay(3);
  44. nosound();
  45. break;
  46. case KEY_ENTER:
  47. case KEY_ESC:
  48. return c;
  49. default:
  50. if (c < 0x20 || c > 0x7a)
  51. {
  52. sound(2500);
  53. delay(3);
  54. nosound();
  55. continue;
  56. }
  57. len = strlen(string);
  58. if (len+1 == maxlen)
  59. {
  60. sound(2500);
  61. delay(3);
  62. nosound();
  63. continue;
  64. }
  65. string[len] = c;
  66. string[len+1] = 0;
  67. Pos(item);
  68. cprintf("%s",string);
  69. break;
  70. }
  71. }
  72. }
  73. enum {MAC_MACRO0,MAC_MACRO1,MAC_MACRO2,MAC_MACRO3,MAC_MACRO4,MAC_MACRO5,
  74. MAC_MACRO6,MAC_MACRO7,MAC_MACRO8,MAC_MACRO9,MAC_MAX};
  75. item_t macrositems[]=
  76. {
  77. {MAC_MACRO0, 22,7,40, -1,-1},
  78. {MAC_MACRO1, 22,8,40, -1,-1},
  79. {MAC_MACRO2, 22,9,40, -1,-1},
  80. {MAC_MACRO3, 22,10,40, -1,-1},
  81. {MAC_MACRO4, 22,11,40, -1,-1},
  82. {MAC_MACRO5, 22,12,40, -1,-1},
  83. {MAC_MACRO6, 22,13,40, -1,-1},
  84. {MAC_MACRO7, 22,14,40, -1,-1},
  85. {MAC_MACRO8, 22,15,40, -1,-1},
  86. {MAC_MACRO9, 22,16,40, -1,-1}
  87. };
  88. menu_t macrosmenu=
  89. {
  90. &macrositems[0],
  91. MAC_MACRO0,
  92. MAC_MAX,
  93. 0x7f
  94. };
  95. void MacroConfig(void)
  96. {
  97. short key;
  98. short field;
  99. int i;
  100. char string[40];
  101. SaveScreen();
  102. DrawPup(&macros);
  103. textcolor(15);
  104. textbackground(1);
  105. for (i = 0;i < MAC_MAX; i++)
  106. {
  107. Clear(&macrositems[i]);
  108. Pos(&macrositems[i]);
  109. cprintf("%s",&chatmacros[i][0]);
  110. }
  111. gotoxy(1,25);
  112. while(1)
  113. {
  114. SetupMenu(&macrosmenu);
  115. field = GetMenuInput();
  116. key = menukey;
  117. switch(key)
  118. {
  119. case KEY_ENTER:
  120. strcpy(string,chatmacros[field]);
  121. key = EditLine(&macrositems[field],string,40);
  122. if (key == KEY_ENTER)
  123. strcpy(chatmacros[field],string);
  124. textbackground(1);
  125. textcolor(15);
  126. Clear(&macrositems[field]);
  127. Pos(&macrositems[field]);
  128. cprintf("%s",chatmacros[field]);
  129. gotoxy(1,25);
  130. continue;
  131. case KEY_ESC:
  132. RestoreScreen();
  133. return;
  134. }
  135. }
  136. };