BOOL ShowAvailableAppInfo(INT Index) { PAPPLICATION_INFO Info = (PAPPLICATION_INFO) ListViewGetlParam(Index); WCHAR szText[MAX_STR_LEN]; if (!Info) return FALSE; NewRichEditText(Info->szName, CFE_BOLD); InsertRichEditText(L"\n", 0); #define ADD_TEXT(a, b, c, d) \ if (b[0] != '\0') \ { \ LoadStringW(hInst, a, szText, sizeof(szText) / sizeof(WCHAR)); \ InsertRichEditText(szText, c); \ InsertRichEditText(b, d); \ } \ ADD_TEXT(IDS_AINFO_VERSION, Info->szVersion, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_LICENCE, Info->szLicence, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_SIZE, Info->szSize, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_URLSITE, Info->szUrlSite, CFE_BOLD, CFE_LINK); ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc, CFE_BOLD, 0); return TRUE; }
int QueryTrackers (void) { tMenuItem m [3]; int i; if (!RequestServerListFromTracker ()) return 0; memset (m, 0, sizeof (m)); ADD_GAUGE (0, " ", 0, 1000); ADD_TEXT (1, "", 0); ADD_TEXT (2, "(Press Escape to cancel)", 0); m [2].centered = 1; nQueryTimeout = SDL_GetTicks (); do { i = ExecMenu2 (NULL, "Looking for Trackers", 3, m, TrackerPoll, 0, NULL); } while (i >= 0); return i; }
BOOL ShowAvailableAppInfo(INT Index) { PAPPLICATION_INFO Info = (PAPPLICATION_INFO) ListViewGetlParam(Index); WCHAR szText[MAX_STR_LEN]; if (!Info) return FALSE; NewRichEditText(Info->szName, CFE_BOLD); InsertRichEditText(L"\n", 0); ADD_TEXT(IDS_AINFO_VERSION, Info->szVersion, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_LICENSE, Info->szLicense, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_SIZE, Info->szSize, CFE_BOLD, 0); ADD_TEXT(IDS_AINFO_URLSITE, Info->szUrlSite, CFE_BOLD, CFE_LINK); ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc, CFE_BOLD, 0); return TRUE; }
static void print_master_line(VSTREAM *fp, int mode, PC_MASTER_ENT *masterp) { char **argv = masterp->argv->argv; const char *arg; const char *aval; int arg_len; int line_len; int field; int in_daemon_options; static int column_goal[] = { 0, /* service */ 11, /* type */ 17, /* private */ 25, /* unpriv */ 33, /* chroot */ 41, /* wakeup */ 49, /* maxproc */ 57, /* command */ }; #define ADD_TEXT(text, len) do { \ vstream_fputs(text, fp); line_len += len; } \ while (0) #define ADD_SPACE ADD_TEXT(" ", 1) /* * Show the standard fields at their preferred column position. Use at * least one-space column separation. */ for (line_len = 0, field = 0; field < PC_MASTER_MIN_FIELDS; field++) { arg = argv[field]; if (line_len > 0) { do { ADD_SPACE; } while (line_len < column_goal[field]); } ADD_TEXT(arg, strlen(arg)); } /* * Format the daemon command-line options and non-option arguments. Here, * we have no data-dependent preference for column positions, but we do * have argument grouping preferences. */ in_daemon_options = 1; for ( /* void */ ; (arg = argv[field]) != 0; field++) { arg_len = strlen(arg); aval = 0; if (in_daemon_options) { /* * Try to show the generic options (-v -D) on the first line, and * non-options on a later line. */ if (arg[0] != '-' || strcmp(arg, "--") == 0) { in_daemon_options = 0; if ((mode & FOLD_LINE) && line_len > column_goal[PC_MASTER_MIN_FIELDS - 1]) { /* Force line wrap. */ line_len = LINE_LIMIT; } } /* * Special processing for options that require a value. */ else if (strchr(daemon_options_expecting_value, arg[1]) != 0 && (aval = argv[field + 1]) != 0) { /* * Optionally, expand $name in parameter value. */ if (strcmp(arg, "-o") == 0 && (mode & SHOW_EVAL) != 0) aval = expand_parameter_value((VSTRING *) 0, mode, aval, masterp); /* * Keep option and value on the same line. */ arg_len += strlen(aval) + 1; } } /* * Insert a line break when the next item won't fit. */ if (line_len > INDENT_LEN) { if ((mode & FOLD_LINE) == 0 || line_len + 1 + arg_len < LINE_LIMIT) { ADD_SPACE; } else { vstream_fputs("\n" INDENT_TEXT, fp); line_len = INDENT_LEN; } } ADD_TEXT(arg, strlen(arg)); if (aval) { ADD_SPACE; ADD_TEXT(aval, strlen(aval)); field += 1; } } vstream_fputs("\n", fp); }
static void print_master_line(int mode, ARGV *argv) { char *arg; char *aval; int line_len; int field; int in_daemon_options; static int column_goal[] = { 0, /* service */ 11, /* type */ 17, /* private */ 25, /* unpriv */ 33, /* chroot */ 41, /* wakeup */ 49, /* maxproc */ 57, /* command */ }; #define ADD_TEXT(text, len) do { \ vstream_fputs(text, VSTREAM_OUT); line_len += len; } \ while (0) #define ADD_SPACE ADD_TEXT(" ", 1) /* * Show the standard fields at their preferred column position. Use at * least one-space column separation. */ for (line_len = 0, field = 0; field < PC_MASTER_MIN_FIELDS; field++) { arg = argv->argv[field]; if (line_len > 0) { do { ADD_SPACE; } while (line_len < column_goal[field]); } ADD_TEXT(arg, strlen(arg)); } /* * Format the daemon command-line options and non-option arguments. Here, * we have no data-dependent preference for column positions, but we do * have argument grouping preferences. */ in_daemon_options = 1; for ( /* void */ ; argv->argv[field] != 0; field++) { arg = argv->argv[field]; if (in_daemon_options) { /* * Try to show the generic options (-v -D) on the first line, and * non-options on a later line. */ if (arg[0] != '-' || strcmp(arg, "--") == 0) { in_daemon_options = 0; if ((mode & FOLD_LINE) && line_len > column_goal[PC_MASTER_MIN_FIELDS - 1]) { vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT); line_len = INDENT_LEN; } } /* * Try to avoid breaking "-o name=value" over multiple lines if * it would fit on one line. */ else if ((mode & FOLD_LINE) && line_len > INDENT_LEN && strcmp(arg, "-o") == 0 && (aval = argv->argv[field + 1]) != 0 && INDENT_LEN + 3 + strlen(aval) < LINE_LIMIT) { vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT); line_len = INDENT_LEN; ADD_TEXT(arg, strlen(arg)); arg = aval; field += 1; } } /* * Insert a line break when the next argument won't fit (unless, of * course, we just inserted a line break). */ if (line_len > INDENT_LEN) { if ((mode & FOLD_LINE) == 0 || line_len + 1 + strlen(arg) < LINE_LIMIT) { ADD_SPACE; } else { vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT); line_len = INDENT_LEN; } } ADD_TEXT(arg, strlen(arg)); } vstream_fputs("\n", VSTREAM_OUT); }
void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platform, int page, String &title, String *&key, String *&dsc) { key = new String[HELP_NUM_LINES]; dsc = new String[HELP_NUM_LINES]; int i = 0; switch (page) { case 1: title = "Common keyboard commands:"; ADD_BIND("F5", "Save / Load dialog"); if (version >= 5) ADD_BIND(".", "Skip line of text"); ADD_BIND("Esc", "Skip cutscene"); ADD_BIND("Space", "Pause game"); ADD_BIND("Ctrl 0-9", "Load game state 1-10"); ADD_BIND("Alt 0-9", "Save game state 1-10"); #ifdef MACOSX ADD_BIND("Cmd q", "Quit"); #else ADD_BIND("Alt x, Ctrl z", "Quit"); #endif ADD_BIND("Alt Enter", "Toggle fullscreen"); ADD_BIND("[, ]", "Music volume up / down"); ADD_BIND("-, +", "Text speed slower / faster"); ADD_BIND("Enter", "Simulate left mouse button"); ADD_BIND("Tab", "Simulate right mouse button"); break; case 2: title = "Special keyboard commands:"; ADD_BIND("~, #", "Show / Hide console"); ADD_BIND("Ctrl d", "Start the debugger"); ADD_BIND("Ctrl s", "Show memory consumption"); ADD_BIND("Ctrl f", "Run in fast mode (*)"); ADD_BIND("Ctrl g", "Run in really fast mode (*)"); ADD_BIND("Ctrl m", "Toggle mouse capture"); ADD_BIND("Ctrl Alt 1-8", "Switch between graphics filters"); ADD_BIND("Ctrl Alt +, -", "Increase / Decrease scale factor"); ADD_BIND("Ctrl Alt a", "Toggle aspect-ratio correction"); ADD_LINE; ADD_LINE; // FIXME: This should use word-wrapping, and should not assume // that the font is mono-spaced. ADD_TEXT("* Note that using ctrl-f and"); ADD_TEXT(" ctrl-g are not recommended"); ADD_TEXT(" since they may cause crashes"); ADD_TEXT(" or incorrect game behaviour."); break; case 3: if (gameId == GID_LOOM) title = "Spinning drafts on the keyboard:"; else title = "Main game controls:"; switch (gameId) { case GID_ZAK: case GID_MANIAC: // HACK. I know use of g_scumm here is evil, however, // introducing new GID and putting it everywhere will // pollute code much more that this single instance if (g_scumm->_game.platform == Common::kPlatformNES) { ADD_BIND("q", "Push"); ADD_BIND("a", "Pull"); ADD_BIND("z", "Give"); ADD_BIND("w", "Open"); ADD_BIND("s", "Close"); ADD_BIND("x", "Go to"); ADD_BIND("e", "Get"); ADD_BIND("d", "Use"); ADD_BIND("c", "Read"); ADD_BIND("r", "New kid"); ADD_BIND("f", "Turn on"); ADD_BIND("v", "Turn off"); break; } ADD_BIND("q", "Push"); ADD_BIND("a", "Pull"); ADD_BIND("z", "Give"); ADD_BIND("w", "Open"); ADD_BIND("s", "Close"); ADD_BIND("x", "Read"); ADD_BIND("e", "Walk to"); ADD_BIND("d", "Pick up"); ADD_BIND("c", "What is"); if (gameId == GID_MANIAC) { ADD_BIND("r", "Unlock"); ADD_BIND("f", "New kid"); } else { ADD_BIND("r", "Put on"); ADD_BIND("f", "Take off"); } ADD_BIND("v", "Use"); ADD_BIND("t", "Turn on"); ADD_BIND("g", "Turn off"); if (gameId == GID_MANIAC) ADD_BIND("b", "Fix"); else ADD_BIND("b", "Switch"); break; case GID_INDY3: ADD_BIND("q", "Push"); ADD_BIND("a", "Pull"); ADD_BIND("z", "Give"); ADD_BIND("w", "Open"); ADD_BIND("s", "Close"); ADD_BIND("x", "Look"); ADD_BIND("e", "Walk to"); ADD_BIND("d", "Pick up"); ADD_BIND("c", "What is"); ADD_BIND("r", "Use"); ADD_BIND("f", "Turn on"); ADD_BIND("v", "Turn off"); ADD_BIND("t", "Talk"); ADD_BIND("g", "Travel"); ADD_BIND("b", "To Henry / To Indy"); break; case GID_LOOM: ADD_BIND("q, c", "play C minor on distaff"); ADD_BIND("w, d", "play D on distaff"); ADD_BIND("e, e", "play E on distaff"); ADD_BIND("r, f", "play F on distaff"); ADD_BIND("t, g", "play G on distaff"); ADD_BIND("y, a", "play A on distaff"); ADD_BIND("u, b", "play B on distaff"); ADD_BIND("i, C", "play C major on distaff"); break; case GID_MONKEY_EGA: case GID_MONKEY_VGA: ADD_BIND("o", "Open"); ADD_BIND("c", "Close"); ADD_BIND("s", "puSh"); ADD_BIND("y", "pull (Yank)"); ADD_BIND("w", "Walk to"); ADD_BIND("p", "Pick up"); ADD_BIND("t", "Talk to"); ADD_BIND("g", "Give"); ADD_BIND("u", "Use"); ADD_BIND("l", "Look at"); ADD_BIND("n", "turn oN"); ADD_BIND("f", "turn oFf"); break; case GID_MONKEY: case GID_MONKEY2: case GID_INDY4: case GID_TENTACLE: ADD_BIND("g", "Give"); ADD_BIND("o", "Open"); ADD_BIND("c", "Close"); ADD_BIND("p", "Pick up"); ADD_BIND("l", "Look at"); ADD_BIND("t", "Talk to"); ADD_BIND("u", "Use"); ADD_BIND("s", "puSh"); ADD_BIND("y", "pull (Yank)"); if (platform == Common::kPlatformSegaCD) { // FIXME look at scripts to figure all options out... // keys 1->4 seem to do something as well ADD_BIND("6", "Highlight prev dialogue"); ADD_BIND("7", "Highlight next dialogue"); } break; case GID_SAMNMAX: ADD_BIND("w", "Walk"); ADD_BIND("t", "Talk"); ADD_BIND("u", "Use"); ADD_BIND("i", "Inventory"); ADD_BIND("o", "Object"); ADD_BIND("p", "Pick up"); ADD_BIND("l", "Look"); ADD_BIND("b", "Black and White / Color"); break; case GID_FT: ADD_BIND("e", "Eyes"); ADD_BIND("t", "Tongue"); ADD_BIND("i", "Inventory"); ADD_BIND("p", "Punch"); ADD_BIND("k", "Kick"); break; case GID_DIG: ADD_BIND("e", "Examine"); ADD_BIND("t", "Regular cursor"); ADD_BIND("i", "Inventory"); ADD_BIND("c", "Comm"); break; case GID_CMI: ADD_BIND("F1", "Save / Load / Options"); ADD_BIND("e", "Examine"); ADD_BIND("t", "Talk to"); ADD_BIND("i", "Inventory"); ADD_BIND("u", "Use"); break; } break; case 4: title = "Other game controls:"; if (version <= 2) { ADD_TEXT("Inventory: (not yet implemented)"); ADD_BIND("u", "Scroll list up"); ADD_BIND("j", "Scroll list down"); ADD_BIND("i", "Upper left item"); ADD_BIND("k", "Lower left item"); ADD_BIND("o", "Upper right item"); ADD_BIND("l", "Lower right item"); ADD_LINE; ADD_TEXT("Switching characters:"); if (gameId == GID_MANIAC) { ADD_BIND("F1", "Dave"); ADD_BIND("F2", "Second kid"); ADD_BIND("F3", "Third kid"); } else { ADD_BIND("F1", "Zak"); ADD_BIND("F2", "Annie"); ADD_BIND("F3", "Melissa"); ADD_BIND("F4", "Leslie"); } } else if (gameId == GID_INDY3 || gameId == GID_ZAK) { // Indy3, or FM-TOWNS Zak ADD_TEXT("Inventory:"); ADD_BIND("y", "Upper left item"); ADD_BIND("h", "Middle left item"); ADD_BIND("n", "Lower left item"); ADD_BIND("u", "Upper right item"); ADD_BIND("j", "Middle right item"); ADD_BIND("m", "Lower right item"); ADD_BIND("o", "Scroll list up"); ADD_BIND("l", "Scroll list down"); } break; case 5: switch (gameId) { case GID_INDY3: title = "Fighting controls (numpad):"; ADD_BIND("7", "Step back"); ADD_BIND("4", "Step back"); ADD_BIND("1", "Step back"); ADD_BIND("8", "Block high"); ADD_BIND("5", "Block middle"); ADD_BIND("2", "Block low"); ADD_BIND("9", "Punch high"); ADD_BIND("6", "Punch middle"); ADD_BIND("3", "Punch low"); ADD_LINE; ADD_LINE; ADD_TEXT("These are for Indy on left."); ADD_TEXT("When Indy is on the right,"); ADD_TEXT("7, 4, and 1 are switched with"); ADD_TEXT("9, 6, and 3, respectively."); break; } break; case 6: switch (gameId) { case GID_INDY3: title = "Biplane controls (numpad):"; ADD_BIND("7", "Fly to upper left"); ADD_BIND("4", "Fly to left"); ADD_BIND("1", "Fly to lower left"); ADD_BIND("8", "Fly upwards"); ADD_BIND("5", "Fly straight"); ADD_BIND("2", "Fly down"); ADD_BIND("9", "Fly to upper right"); ADD_BIND("6", "Fly to right"); ADD_BIND("3", "Fly to lower right"); break; } break; } while (i < HELP_NUM_LINES) { ADD_LINE; } }
static void pcf_print_master_field(VSTREAM *fp, int mode, PCF_MASTER_ENT *masterp, int field) { char **argv = masterp->argv->argv; const char *arg; const char *aval; int arg_len; int line_len; int in_daemon_options; int need_parens; /* * Show the field value, or the first value in the case of a multi-column * field. */ #define ADD_CHAR(ch) ADD_TEXT((ch), 1) line_len = 0; if ((mode & PCF_HIDE_NAME) == 0) { ADD_TEXT(argv[0], strlen(argv[0])); ADD_CHAR(PCF_NAMESP_SEP_STR); ADD_TEXT(argv[1], strlen(argv[1])); ADD_CHAR(PCF_NAMESP_SEP_STR); ADD_TEXT(pcf_str_field_pattern(field), strlen(pcf_str_field_pattern(field))); } if ((mode & (PCF_HIDE_NAME | PCF_HIDE_VALUE)) == 0) { ADD_TEXT(" = ", 3); } if ((mode & PCF_HIDE_VALUE) == 0) { if (line_len > 0 && line_len + strlen(argv[field]) > PCF_LINE_LIMIT) { vstream_fputs("\n" PCF_INDENT_TEXT, fp); line_len = PCF_INDENT_LEN; } ADD_TEXT(argv[field], strlen(argv[field])); } /* * Format the daemon command-line options and non-option arguments. Here, * we have no data-dependent preference for column positions, but we do * have argument grouping preferences. */ if (field == PCF_MASTER_FLD_CMD && (mode & PCF_HIDE_VALUE) == 0) { in_daemon_options = 1; for (field += 1; (arg = argv[field]) != 0; field++) { arg_len = strlen(arg); aval = 0; need_parens = 0; if (in_daemon_options) { /* * We make no special case for generic options (-v -D) * options. */ if (arg[0] != '-' || strcmp(arg, "--") == 0) { in_daemon_options = 0; } else if (strchr(pcf_daemon_options_expecting_value, arg[1]) != 0 && (aval = argv[field + 1]) != 0) { /* Force line break before option with value. */ line_len = PCF_LINE_LIMIT; /* * Optionally, expand $name in parameter value. */ if (strcmp(arg, "-o") == 0 && (mode & PCF_SHOW_EVAL) != 0) aval = pcf_expand_parameter_value((VSTRING *) 0, mode, aval, masterp); /* * Keep option and value on the same line. */ arg_len += strlen(aval) + 1; if ((need_parens = aval[strcspn(aval, PCF_MASTER_BLANKS)]) != 0) arg_len += 2; } } else { need_parens = arg[strcspn(arg, PCF_MASTER_BLANKS)]; } /* * Insert a line break when the next item won't fit. */ if (line_len > PCF_INDENT_LEN) { if ((mode & PCF_FOLD_LINE) == 0 || line_len + 1 + arg_len < PCF_LINE_LIMIT) { ADD_SPACE; } else { vstream_fputs("\n" PCF_INDENT_TEXT, fp); line_len = PCF_INDENT_LEN; } } if (in_daemon_options == 0 && need_parens) ADD_TEXT("{", 1); ADD_TEXT(arg, strlen(arg)); if (in_daemon_options == 0 && need_parens) ADD_TEXT("}", 1); if (aval) { ADD_SPACE; if (need_parens) ADD_TEXT("{", 1); ADD_TEXT(aval, strlen(aval)); if (need_parens) ADD_TEXT("}", 1); field += 1; /* Force line break after option with value. */ line_len = PCF_LINE_LIMIT; } } } vstream_fputs("\n", fp); if (msg_verbose) vstream_fflush(fp); }