The help for the shareware version appears to be an older and more verbose version that simply was never updated (both are unchanged between 1.00 and 1.09).
213 lines
5.7 KiB
C++
213 lines
5.7 KiB
C++
/**
|
|
* @file help.cpp
|
|
*
|
|
* Implementation of the in-game help text.
|
|
*/
|
|
|
|
#include "control.h"
|
|
#include "engine/render/text_render.hpp"
|
|
#include "init.h"
|
|
#include "minitext.h"
|
|
#include "stores.h"
|
|
#include "utils/language.h"
|
|
|
|
namespace devilution {
|
|
|
|
int help_select_line;
|
|
bool helpflag;
|
|
int HelpTop;
|
|
|
|
const char gszHelpText[] = {
|
|
// TRANSLATORS: HUGE KEY. There might be changes in a future version where redundant keys between the shareware help and the full game help will be consolidated.
|
|
N_("$Keyboard Shortcuts:|"
|
|
"F1: Open Help Screen|"
|
|
"Esc: Display Main Menu|"
|
|
"Tab: Display Auto-map|"
|
|
"Space: Hide all info screens|"
|
|
"S: Open Speedbook|"
|
|
"B: Open Spellbook|"
|
|
"I: Open Inventory screen|"
|
|
"C: Open Character screen|"
|
|
"Q: Open Quest log|"
|
|
"F: Reduce screen brightness|"
|
|
"G: Increase screen brightness|"
|
|
"Z: Zoom Game Screen|"
|
|
"+ / -: Zoom Automap|"
|
|
"1 - 8: Use Belt item|"
|
|
"F5, F6, F7, F8: Set hotkey for skill or spell|"
|
|
"Shift + Left Mouse Button: Attack without moving|"
|
|
"Shift + Left Mouse Button (on character screen): Assign all stat points|"
|
|
"Shift + Left Mouse Button (on inventory): Move item to belt or equip/unequip item|"
|
|
"Shift + Left Mouse Button (on belt): Move item to inventory|"
|
|
"|"
|
|
"$Movement:|"
|
|
"If you hold the mouse button down while moving, the character "
|
|
"will continue to move in that direction.|"
|
|
"|"
|
|
"$Combat:|"
|
|
"Holding down the shift key and then left-clicking allows the "
|
|
"character to attack without moving.|"
|
|
"|"
|
|
"$Auto-map:|"
|
|
"To access the auto-map, click the 'MAP' button on the "
|
|
"Information Bar or press 'TAB' on the keyboard. Zooming in and "
|
|
"out of the map is done with the + and - keys. Scrolling the map "
|
|
"uses the arrow keys.|"
|
|
"|"
|
|
"$Picking up Objects:|"
|
|
"Useable items that are small in size, such as potions or scrolls, "
|
|
"are automatically placed in your 'belt' located at the top of "
|
|
"the Interface bar . When an item is placed in the belt, a small "
|
|
"number appears in that box. Items may be used by either pressing "
|
|
"the corresponding number or right-clicking on the item.|"
|
|
"|"
|
|
"$Gold|"
|
|
"You can select a specific amount of gold to drop by"
|
|
"right-clicking on a pile of gold in your inventory.|"
|
|
"|"
|
|
"$Skills & Spells:|"
|
|
"You can access your list of skills and spells by left-clicking on "
|
|
"the 'SPELLS' button in the interface bar. Memorized spells and "
|
|
"those available through staffs are listed here. Left-clicking on "
|
|
"the spell you wish to cast will ready the spell. A readied spell "
|
|
"may be cast by simply right-clicking in the play area.|"
|
|
"|"
|
|
"$Using the Speedbook for Spells|"
|
|
"Left-clicking on the 'readied spell' button will open the 'Speedbook' "
|
|
"which allows you to select a skill or spell for immediate use. "
|
|
"To use a readied skill or spell, simply right-click in the main play "
|
|
"area.|"
|
|
"Shift + Left-clicking on the 'select current spell' button will clear the readied spell|"
|
|
"|"
|
|
"$Setting Spell Hotkeys|"
|
|
"You can assign up to four Hotkeys for skills, spells or scrolls. "
|
|
"Start by opening the 'speedbook' as described in the section above. "
|
|
"Press the F5, F6, F7 or F8 keys after highlighting the spell you "
|
|
"wish to assign.|"
|
|
"|"
|
|
"$Spell Books|"
|
|
"Reading more than one book increases your knowledge of that "
|
|
"spell, allowing you to cast the spell more effectively.|"
|
|
"&")
|
|
};
|
|
|
|
void InitHelp()
|
|
{
|
|
helpflag = false;
|
|
}
|
|
|
|
static void DrawHelpLine(const CelOutputBuffer &out, int x, int y, char *text, uint16_t style)
|
|
{
|
|
const int sx = x + 32 + PANEL_X;
|
|
const int sy = y * 12 + 44 + UI_OFFSET_Y;
|
|
DrawString(out, text, { sx, sy, 577, 0 }, style);
|
|
}
|
|
|
|
void DrawHelp(const CelOutputBuffer &out)
|
|
{
|
|
int i, c, w;
|
|
const char *s;
|
|
|
|
DrawSTextHelp();
|
|
DrawQTextBack(out);
|
|
PrintSString(out, 0, 2, gbIsHellfire ? _("Hellfire Help") : _("Diablo Help"), UIS_GOLD | UIS_CENTER);
|
|
DrawSLine(out, 5);
|
|
|
|
s = _(&gszHelpText[0]);
|
|
|
|
for (i = 0; i < help_select_line; i++) {
|
|
c = 0;
|
|
w = 0;
|
|
while (*s == '\0') {
|
|
s++;
|
|
}
|
|
if (*s == '$') {
|
|
s++;
|
|
}
|
|
if (*s == '&') {
|
|
continue;
|
|
}
|
|
while (*s != '|' && w < 577) {
|
|
while (*s == '\0') {
|
|
s++;
|
|
}
|
|
tempstr[c] = *s;
|
|
w += fontkern[GameFontSmall][fontframe[GameFontSmall][gbFontTransTbl[(BYTE)tempstr[c]]]] + 1;
|
|
c++;
|
|
s++;
|
|
}
|
|
if (w >= 577) {
|
|
c--;
|
|
while (tempstr[c] != ' ') {
|
|
s--;
|
|
c--;
|
|
}
|
|
}
|
|
if (*s == '|') {
|
|
s++;
|
|
}
|
|
}
|
|
for (i = 7; i < 22; i++) {
|
|
c = 0;
|
|
w = 0;
|
|
while (*s == '\0') {
|
|
s++;
|
|
}
|
|
uint16_t style = UIS_SILVER;
|
|
if (*s == '$') {
|
|
s++;
|
|
style = UIS_RED;
|
|
}
|
|
if (*s == '&') {
|
|
HelpTop = help_select_line;
|
|
continue;
|
|
}
|
|
while (*s != '|' && w < 577) {
|
|
while (*s == '\0') {
|
|
s++;
|
|
}
|
|
tempstr[c] = *s;
|
|
BYTE tc = gbFontTransTbl[(BYTE)tempstr[c]];
|
|
w += fontkern[GameFontSmall][fontframe[GameFontSmall][tc]] + 1;
|
|
c++;
|
|
s++;
|
|
}
|
|
if (w >= 577) {
|
|
c--;
|
|
while (tempstr[c] != ' ') {
|
|
s--;
|
|
c--;
|
|
}
|
|
}
|
|
if (c != 0) {
|
|
tempstr[c] = '\0';
|
|
DrawHelpLine(out, 0, i, tempstr, style);
|
|
}
|
|
if (*s == '|') {
|
|
s++;
|
|
}
|
|
}
|
|
|
|
PrintSString(out, 0, 23, _("Press ESC to end or the arrow keys to scroll."), UIS_GOLD | UIS_CENTER);
|
|
}
|
|
|
|
void DisplayHelp()
|
|
{
|
|
help_select_line = 0;
|
|
helpflag = true;
|
|
HelpTop = 5000;
|
|
}
|
|
|
|
void HelpScrollUp()
|
|
{
|
|
if (help_select_line > 0)
|
|
help_select_line--;
|
|
}
|
|
|
|
void HelpScrollDown()
|
|
{
|
|
if (help_select_line < HelpTop)
|
|
help_select_line++;
|
|
}
|
|
|
|
} // namespace devilution
|