Beispiel #1
0
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;
    }
}
Beispiel #2
0
void updateStrings(byte gameId, byte version, Common::Platform platform,
			int page, Common::String &title, Common::String *&key, Common::String *&dsc) {
	key = new Common::String[HELP_NUM_LINES];
	dsc = new Common::String[HELP_NUM_LINES];
	int i = 0;
	switch (page) {
	case 1: {
		title = "DS Controls (right handed):";
		ADD_BIND("Pad Left", "Left mouse button");
		ADD_BIND("Pad Right", "Right mouse button");
		ADD_BIND("Pad Up", "Mouse hover mode (no click)");
		ADD_BIND("Pad Down", "Skip dialog line (some games)");
		ADD_BIND("Start", "Pause/Game menu");
		ADD_BIND("Select", "DS Options menu");
		ADD_BIND("B", "Skip cutscenes");
		ADD_BIND("A", "Switch screens");
		ADD_BIND("Y", "Show/hide debug console");
		ADD_BIND("X", "Show/hide keyboard");
		ADD_BIND("L+Pad/Pen", "Scroll current touch screen view");
		ADD_BIND("L+B/A", "Zoom in/out");
		break;
	}

	case 2: {
		title = "DS Controls (left handed):";
		ADD_BIND("Y", "Left mouse button");
		ADD_BIND("A", "Right mouse button");
		ADD_BIND("X", "Mouse hover mode (no click)");
		ADD_BIND("B", "Skip dialog line (some games)");
		ADD_BIND("Start", "Pause/Game menu");
		ADD_BIND("Select", "DS Options menu");
		ADD_BIND("Pad Down", "Skip cutscenes");
		ADD_BIND("Pad Up", "Show/hide keyboard");
		ADD_BIND("Pad Left", "Show/hide debug console");
		ADD_BIND("Pad Right", "Swap screens");
		ADD_BIND("R+Pad/Pen", "Scroll current touch screen view");
		ADD_BIND("R+dwn/rgt", "Zoom in/out");
		break;
	}

	case 3: {
		title = "Indiana Jones Fight controls:";
		ADD_BIND("Pad Left", "Move left");
		ADD_BIND("Pad Right", "Move right");
		ADD_BIND("Pad Up", "High guard");
		ADD_BIND("Pad Down", "Guard down");
		ADD_BIND("Y", "Guard middle");
		ADD_BIND("X", "Punch high");
		ADD_BIND("A", "Punch middle");
		ADD_BIND("B", "Punch low");
		break;
	}
	}


	while (i < HELP_NUM_LINES) {
		ADD_LINE;
	}

}