mirror of
https://github.com/galaxyhaxz/devilution
synced 2025-02-23 12:44:54 +00:00
218 lines
4.7 KiB
C++
218 lines
4.7 KiB
C++
|
#include "diablo.h"
|
||
|
|
||
|
int help_select_line; // weak
|
||
|
int dword_634494; // weak
|
||
|
int helpflag;
|
||
|
int displayinghelp[22]; /* check, does nothing? */
|
||
|
int HelpTop; // weak
|
||
|
|
||
|
const char gszHelpText[] =
|
||
|
{
|
||
|
"$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 hot key for skill or spell|"
|
||
|
"Shift + Left Click: Attack without moving|"
|
||
|
"|"
|
||
|
"$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.|"
|
||
|
"|"
|
||
|
"$Setting Spell Hotkeys|"
|
||
|
"You can assign up to four Hot Keys 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 = 0;
|
||
|
dword_634494 = 0;
|
||
|
displayinghelp[0] = 0;
|
||
|
}
|
||
|
|
||
|
void DrawHelp()
|
||
|
{
|
||
|
int i, c, w;
|
||
|
char col;
|
||
|
const char *s;
|
||
|
|
||
|
DrawSTextHelp();
|
||
|
DrawQTextBack();
|
||
|
PrintSString(0, 2, 1, "Diablo Help", COL_GOLD, 0);
|
||
|
DrawSLine(5);
|
||
|
|
||
|
s = gszHelpText;
|
||
|
|
||
|
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[fontframe[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++;
|
||
|
}
|
||
|
if(*s == '$') {
|
||
|
s++;
|
||
|
col = COL_RED;
|
||
|
} else {
|
||
|
col = COL_WHITE;
|
||
|
}
|
||
|
if(*s == '&') {
|
||
|
HelpTop = help_select_line;
|
||
|
continue;
|
||
|
}
|
||
|
while(*s != '|' && w < 577) {
|
||
|
while(*s == '\0') {
|
||
|
s++;
|
||
|
}
|
||
|
tempstr[c] = *s;
|
||
|
w += fontkern[fontframe[gbFontTransTbl[(BYTE)tempstr[c]]]] + 1;
|
||
|
c++;
|
||
|
s++;
|
||
|
}
|
||
|
if(w >= 577) {
|
||
|
c--;
|
||
|
while(tempstr[c] != ' ') {
|
||
|
s--;
|
||
|
c--;
|
||
|
}
|
||
|
}
|
||
|
if(c != 0) {
|
||
|
tempstr[c] = '\0';
|
||
|
DrawHelpLine(0, i, tempstr, col);
|
||
|
}
|
||
|
if(*s == '|') {
|
||
|
s++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
PrintSString(0, 23, 1, "Press ESC to end or the arrow keys to scroll.", COL_GOLD, 0);
|
||
|
}
|
||
|
|
||
|
void DrawHelpLine(int always_0, int help_line_nr, char *text, char color)
|
||
|
{
|
||
|
signed int v4; // ebx
|
||
|
int v5; // edi
|
||
|
unsigned char i; // al
|
||
|
unsigned char v7; // al
|
||
|
int v8; // esi
|
||
|
|
||
|
v4 = 0;
|
||
|
v5 = PitchTbl[SStringY[help_line_nr] + 204] + always_0 + 96;
|
||
|
for ( i = *text; *text; i = *text )
|
||
|
{
|
||
|
++text;
|
||
|
v7 = fontframe[gbFontTransTbl[i]];
|
||
|
v8 = v7;
|
||
|
v4 += fontkern[v7] + 1;
|
||
|
if ( v7 )
|
||
|
{
|
||
|
if ( v4 <= 577 )
|
||
|
PrintChar(v5, v7, color);
|
||
|
}
|
||
|
v5 += fontkern[v8] + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void DisplayHelp()
|
||
|
{
|
||
|
help_select_line = 0;
|
||
|
helpflag = 1;
|
||
|
HelpTop = 5000;
|
||
|
}
|
||
|
|
||
|
void HelpScrollUp()
|
||
|
{
|
||
|
if ( help_select_line > 0 )
|
||
|
--help_select_line;
|
||
|
}
|
||
|
|
||
|
void HelpScrollDown()
|
||
|
{
|
||
|
if ( help_select_line < HelpTop )
|
||
|
++help_select_line;
|
||
|
}
|