Mercurial > ~darius > hgwebdir.cgi > paradise_client
diff helpwin.c @ 3:5a977ccbc7a9 default tip
Empty changelog
author | darius |
---|---|
date | Sat, 06 Dec 1997 05:41:29 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/helpwin.c Sat Dec 06 05:41:29 1997 +0000 @@ -0,0 +1,298 @@ +/* $Id: helpwin.c,v 1.1.1.1 1997/12/06 05:41:29 darius Exp $ */ + +/* + * helpwin.c + * copyright 1991 ERic mehlhaff + * Free to use, hack, etc. Just keep these credits here. + * Use of this code may be dangerous to your health and/or system. + * Its use is at your own risk. + * I assume no responsibility for damages, real, potential, or imagined, + * resulting from the use of it. + * + * Hacked into paradise by Bill Dyess + */ + +#include <stdio.h> +#include <math.h> +#include <signal.h> +#include <sys/types.h> + + +#include "Wlib.h" +#include "defs.h" +#include "struct.h" +#include "data.h" + +#ifdef SVR4 +#include <string.h> +#else +#include <strings.h> +#endif + + +/* this is a set of routines that makes up a multi column help window, + ** and shows just what the keymaps current keymap representation of the + ** keys are. + ** + ** fillhelp() handles the filling in if the strings for the help window + ** update_Help_to_Keymap() checks the keymap and sets it up in hte + ** help window. + ** + + ** + ** Format for each entry is follows: + ** first character is the hard-coded character representation for the key + ** in the keymap. Useful for when you re-key things. This could confuse + ** people who do'nt know the keymap format. + ** + ** the next few spaces are either spaces or keys that also do that + ** function. Note that if you have more than 3 keys set to do the same + ** thing, they will not be displayed. + ** So, you could, I suppose map everything to 'Q' and it would not + ** show, but that's a pretty bizarre situation. + ** + + ** + ** Bugs & Comments: + ** You have to be sure that helpWin is defined to be big enough to handle + ** all the messages. That's pretty much a trial&error by-hand thing + ** at this point + ** + ** BZZZT! Not anymore, done automatically [BDyess] + */ + +/* fills in the help window to note all keys also mapped to the + ** listed functions + */ +void update_Help_to_Keymap(); + +char *help_message[] = +{ + " 0 Set speed 0", + " 1 Set speed 1", + " 2 Set speed 2", + " 3 Set speed 3", + " 4 Set speed 4", + " 5 Set speed 5", + " 6 Set speed 6", + " 7 Set speed 7", + " 8 Set speed 8", + " 9 Set speed 9", + "^0 Set speed 10", + "^1 Set speed 11", + "^2 Set speed 12", + "^3 Set speed 13", + "^4 Set speed 14", + "^5 Set speed 15", + "^6 Set speed 16", + "^7 Set speed 17", + "^8 Set speed 18", + "^9 Set speed 19", + "^) Set speed 20", + "^! Set speed 21", + "^@ Set speed 22", + "^# Set speed 23", + "^$ Set speed 24", + "^% Set speed 25", + "^^ Set speed 26", + "^& Set speed 27", + "^* Set speed 28", + "^( Set speed 29", + " % speed = maximum", + " # speed = 1/2 maximum", + " < slow speed 1", + " > speed up 1", + " ` Afterburners", + " - Engage warp", + " k Set course", + " p Fire phaser", + " t Fire photon torpedo", + " f Fire plasma torpedo", + " C Switch special weapon", + " d detonate enemy torps", + " D detonate own torps", + " L List players", + " P List planets", + " S Status graph toggle", + " ] Put up shields", + " [ Put down shields", + " u Shield toggle", + " s Shield toggle", + " i Info on player/planet", + " I Extended info on player", + "^i Info on a planet", + " b Bomb planet", + " z Beam up armies", + " x Beam down armies", + " { Cloak", + " } Uncloak", + " T Toggle tractor beam", + " y Toggle pressor beam", + " _ Turn on tractor beam", + " ^ Turn on pressor beam", + " $ Turn off tractor/pressor beam", + " R Enter repair mode", + " o Orbit planet or dock to outpost", + " e Docking permission toggle", + " r Refit (change ship type)", + " Q Quit", + " q Fast Quit", + " ? Message window toggle", + " c Cloaking device toggle", + " l Lock on to player/planet", + " ; Lock on to planet", + " h Help window toggle", + " w War declarations window", + " N Planet names toggle", + " V Rotate local planet display", + " B Rotate galactic planet display", + " * Send in practice robot", + " E Send Distress signal", + " F Send armies carried report", + " U Show rankings window", + " m Message Window Zoom", + " ' Message Zoom + start to Team", + " / Toggle sorted player list", + " : Toggle message logging", + " ! activate kitchen sink", + " + Show UDP options window", + " = Update all", + " , Ping stats window", + " M Show MOTD window", +#if 0 + " . NetstatWindow", + " \\ LagMeter", +#endif + +#ifdef SHORT_PACKETS + " ~ Toggle PacketWindow", + " \\ Update small", + " | Update medium", +#endif /* SHORT_PACKETS */ + + " (space) Unmap special windows", + +#ifdef TIMER + " @ Reset dashboard timer", + "^t Cycle timer", +#endif /* TIMER */ + "^m Toggle map zoom", +#ifdef WIDE_PLIST + " K Cycle playerlist", +#endif /* WIDE_PLIST */ + +#ifdef MACROS + " X Enter Macro Mode", + " X? Show current Macros", +#endif /* MACROS */ + + " & Reread .paradiserc", + " ) Rotate galaxy clockwise", + " ( Rotate galaxy counter-clockwise", +#ifdef RECORDER + "^r Stop recording", +#endif +#ifdef SOUND + "^s Sound window toggle", +#endif +#ifdef TOOLS + " \" Toggle shell tools window", +#endif +#ifdef AMIGA + " A Flush queued speech", + "HELP Show Amiga keys/info", +#endif + 0 +}; + +int helpmessages = (sizeof(help_message) / sizeof(char *)); +/* this is the number of help messages there are */ + +#define MAXHELP 40 +/* maximum length in characters of key explanation */ + + +void +fillhelp() +{ + register int i = 0, row, column; + char helpmessage[MAXHELP]; + + + /* 4 column help window. THis may be changed depending on font size */ + for (column = 0; column < 4; column++) { + for (row = 1; row < helpmessages / 4 + 2; row++) { + if (help_message[i] == 0) + break; + else { + strcpy(helpmessage, help_message[i]); + update_Help_to_Keymap(helpmessage); + W_WriteText(helpWin, MAXHELP * column, row - 1, textColor, + helpmessage, strlen(helpmessage), W_RegularFont); + i++; + } + } + if (help_message[i] == 0) + break; + } +} + + +/* this takes the help messages and puts in the keymap, so the player can + * see just what does what! + * + * ordinary format: "U Show rankings window", + * translatedd here to "[ sE Computer options window", + */ +void +update_Help_to_Keymap(helpmessage) + char helpmessage[]; +{ + int i, num_mapped = 0, key; + + key = helpmessage[1]; + if (helpmessage[0] == '^') { + /* control character */ + key += 128; + } + if ((int) strlen(helpmessage) < 6) { + return; + } + for (i = 0; i < 256; i++) { + if (myship->s_keymap[i] != key) + continue; + if (i == key) + continue; /* it's already there! don't add it! */ + + /* we've found a key mapped to key! */ + /* the key is i */ + num_mapped += 1 + (i > 127) ? 1 : 0; + if (num_mapped > 3) + continue; /* we've found too many! */ + + /* put the key in the string */ + if (i > 127) { + helpmessage[1 + num_mapped] = '^'; + helpmessage[2 + num_mapped] = i - 128; + } else { + helpmessage[2 + num_mapped] = i; + } + } + + + /* clear spaces if any area available */ +/* switch (num_mapped) + { + case 0: + helpmessage[3] = ' '; + case 1: + helpmessage[4] = ' '; + case 2: + helpmessage[5] = ' '; + case 3: + default: + helpmessage[6] = ' '; + } +*/ + return; +}