mirror of
https://github.com/diasurgical/devilution.git
synced 2025-07-23 12:33:00 +02:00
577 lines
22 KiB
C++
577 lines
22 KiB
C++
/**
|
|
* @file help.cpp
|
|
*
|
|
* Implementation of the in-game help text.
|
|
*/
|
|
#include "all.h"
|
|
|
|
int help_select_line;
|
|
int dword_634494;
|
|
BOOL helpflag;
|
|
int displayinghelp[22]; /* check, does nothing? */
|
|
int HelpTop;
|
|
|
|
const char gszHelpText[] = {
|
|
#ifdef SPAWN
|
|
"Shareware Diablo Help|"
|
|
"|"
|
|
"$Keyboard Shortcuts:|"
|
|
"Diablo can be played exclusively by using the mouse controls. "
|
|
"There are times, however, when you may want to use shortcuts to some "
|
|
"commands by using the keyboard. These shortcuts are listed below:|"
|
|
"|"
|
|
"F1: Open the Help Screen|"
|
|
"Esc: Displays the main menu|"
|
|
"Tab: Displays the Auto-map|"
|
|
"Space: Removes any pop-up menus or maps from the play area|"
|
|
"S: Open Speedbook|"
|
|
"B: Open Spellbook|"
|
|
"I: Opens the Inventory screen|"
|
|
"C: Opens the Character screen|"
|
|
"Z: Zooms the game screen in and out|"
|
|
"F: Reduces the brightness of the screen|"
|
|
"G: Increases the brightness of the screen|"
|
|
"Q: Opens the Quest log (non-functional in the Shareware version)|"
|
|
"1 - 8: Use that item from your Belt|"
|
|
"F5, F6, F7, F8: Sets a hot key for a selected skill or spell|"
|
|
"Shift + Left Click: Use any weapon without moving|"
|
|
"|"
|
|
"|"
|
|
"$Movement:|"
|
|
"Movement is controlled by the mouse. The gauntlet on the screen is "
|
|
"your cursor. Use this to indicate the destination of your character "
|
|
"and then left-click to move to that area. "
|
|
"If you hold the mouse button down while moving, the character "
|
|
"will continue to move in that direction.|"
|
|
"|"
|
|
"$Selecting Items:|"
|
|
"What you can interact with within the game is easily identifiable. "
|
|
"Move the cursor over any object or creature. If the object can be "
|
|
"picked up, attacked, activated or used in any way, it will be "
|
|
"immediately outlined. A description of the highlighted object appears "
|
|
"in the text area on the control panel.|"
|
|
"|"
|
|
"Example: If you select a door and then left-click the character will "
|
|
"walk to the door and open it. If you left-click on a highlighted "
|
|
"weapon, the character will walk over to it and put it in his "
|
|
"inventory. If you left-click on a highlighted creature...|"
|
|
"|"
|
|
"$Combat:|"
|
|
"Combat is initiated by left-clicking on a creature that has been "
|
|
"highlighted. If your character is equipped with a melee weapon "
|
|
"(Sword, Mace, Ax, etc.) your character will move to range and attack. "
|
|
"If your character is equipped with a bow, left-clicking will fire an "
|
|
"arrow at the highlighted creature. "
|
|
"Holding down the shift key and then left-clicking allows the "
|
|
"character to attack without moving.|"
|
|
"|"
|
|
"$Picking up Objects:|"
|
|
"If you left-click on an item - such as a weapon, shield, armor or "
|
|
"book - your character will move to that item and add it to his "
|
|
"inventory automatically.|"
|
|
"|"
|
|
"Useable items that are small in size - such as a potion or "
|
|
"scroll - 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 "
|
|
"right-clicking on the item or pressing the corresponding number on "
|
|
"the keyboard.|"
|
|
"|"
|
|
"If you do not have enough room in your inventory or belt for an item "
|
|
"that you try to pick up, it will fall from your grasp. Open your "
|
|
"inventory screen and try re-arranging or removing items to carry "
|
|
"what you really want or need.|"
|
|
"|"
|
|
"$Inventory:|"
|
|
"You can toggle the Inventory screen on and off by clicking the "
|
|
"INV> button on the control panel. Items may be moved around in "
|
|
"your inventory by selecting them and then left-clicking to pick "
|
|
"them up. When you pick up an item while in the inventory screen, "
|
|
"your cursor changes into the item. You can then place this item into "
|
|
"empty spaces in your inventory, swap them with other items in your "
|
|
"inventory or equip them.|"
|
|
"|"
|
|
"If you have an item that you no longer wish to carry, simply "
|
|
"grab the item from your inventory and then left-click in the "
|
|
"play area to drop it.|"
|
|
"|"
|
|
"$Equipping Items:|"
|
|
"To equip an item, open the inventory screen and pick up the desired "
|
|
"item, either from play or from your inventory, placing it in the "
|
|
"appropriate box on the figure in the inventory screen. Weapons and "
|
|
"shields go into the large spaces to the right or left of the figure. "
|
|
"Two-handed weapons such as bows and axes preclude the use of a "
|
|
"shield and will take up both of these large spaces.|"
|
|
"|"
|
|
"Cloaks, robes, capes and all other armor must go in the central "
|
|
"torso slot of the figure. |"
|
|
"|"
|
|
"Helmets and caps go in the box over the head of the character.|"
|
|
"|"
|
|
"Rings go into the small boxes at the hands of the figure.|"
|
|
"|"
|
|
"Amulets go into the small box at the next to the neck of the figure.|"
|
|
"|"
|
|
"To change items that your character has equipped, pick up a new "
|
|
"item and place it on top of the item you wish to remove. Your "
|
|
"character will automatically swap the items and the cursor will "
|
|
"now change into the item that was in that box.|"
|
|
"|"
|
|
"$Usable Items:|"
|
|
"Potions, elixirs and books are classified as usable items. These "
|
|
"items can be used by right-clicking on them in the inventory screen. "
|
|
"Books are too large to be placed in the belt, but any potions or "
|
|
"scrolls that are put there can also be used by pressing the "
|
|
"corresponding number on the keyboard.|"
|
|
"|"
|
|
"$Gold:|"
|
|
"You can select a specific amount of gold to drop by right "
|
|
"clicking on a pile of gold in your inventory. "
|
|
"A dialog will appear that allows you to select a specific amount of "
|
|
"gold to take. When you have entered that number, your cursor will "
|
|
"change into that amount of gold.|"
|
|
"|"
|
|
"$Item Information:|"
|
|
"Many items in Diablo share certain common attributes. These are "
|
|
"damage, durability, charges and minimum requirements..|"
|
|
"|"
|
|
"Damage: This is represented by a range that indicates the minimum "
|
|
"and maximum damage that item can inflict. A short sword has a (2-6) "
|
|
"after its name, meaning it inflicts a minimum of two damage and a "
|
|
"maximum of six when it hits. Damage can be modified by the quality "
|
|
"of the weapon, the character's strength and magical effects.|"
|
|
"|"
|
|
"Durability: This is the amount of damage that an item can take "
|
|
"before it is rendered useless. Durability is represented by a "
|
|
"ratio of current durability to maximum durability. A shield that "
|
|
"has a durability of 15/20 would still have 15 points of damage it "
|
|
"could take from use before it was rendered useless. Maximum "
|
|
"durability can be affected by the quality of the item, enchantments "
|
|
"or repairs made upon the item. The minimum durability can be raised "
|
|
"by repairing an item.|"
|
|
"|"
|
|
"Charges: Some items have charges associated with them. Charges "
|
|
"indicate how many times that item can be used to cast the spell or "
|
|
"affect indicated in its description. Charges are represented by "
|
|
"a ratio of charges left to maximum charges. A staff that has charges "
|
|
"listed as 2/5 could be used to cast 2 more spells before it was "
|
|
"rendered powerless. It could still be used to attack with as a "
|
|
"physical weapon, however. Maximum charges can be affected by the "
|
|
"magic or recharges cast upon the item. Minimum charges can be "
|
|
"raised by recharging the item.|"
|
|
"|"
|
|
"Minimum Requirements: These are the minimum requirements that a "
|
|
"character must meet to wield the item. The more powerful an item is, "
|
|
"the higher the minimum requirements will be. If a character "
|
|
"does not meet these requirements, he will be unable to equip the "
|
|
"item and its name and information will be displayed in red. "
|
|
"The item artwork will also have a red tint in the Inventory screen.|"
|
|
"|"
|
|
"$Items Classes:|"
|
|
"There are three classes of items in Diablo - Mundane, "
|
|
"Magic and Unique:|"
|
|
"|"
|
|
"Mundane items have no special attributes. Their information is "
|
|
"displayed in white text.|"
|
|
"|"
|
|
"Magic Items are represented by blue names and text descriptions. "
|
|
"Use the Identify spell or speak to Cain in town to determine their "
|
|
"exact properties and attributes.|"
|
|
"|"
|
|
"Unique items are represented by gold names and text descriptions. "
|
|
"Use the Identify spell or speak to Cain in town to determine their "
|
|
"exact properties and attributes.|"
|
|
"|"
|
|
"$Skills & Spells:|"
|
|
"You can access your list of skills and spells by left-clicking on "
|
|
"the SPELLS button in the interface bar. This 'Spellbook' contains all "
|
|
"of the skills and spells that your character knows. Spells "
|
|
"available through staffs are also listed here. Left-clicking on "
|
|
"the Icon of the spell you wish to ready will place it in the "
|
|
"'select current spell' icon/area and set it as the current "
|
|
"readied spell. A readied spell "
|
|
"may be cast by simply right-clicking in the play area.|"
|
|
"|"
|
|
"Left-clicking on the 'select current spell' button will also "
|
|
"open a 'Speedbook' menu that also allows you to ready a skill "
|
|
"or spell for use. To use a readied skill or spell, simply "
|
|
"right-click in the main play area.|"
|
|
"|"
|
|
"Skills are the innate abilities of your character. These skills "
|
|
"are different depending on what class you choose and require no "
|
|
"mana to use.|"
|
|
"|"
|
|
"Warrior:|"
|
|
"The Warrior has the skill of Repair Items. This allows him to fix "
|
|
"an item that has been worn by use or is damaged in combat. "
|
|
"To accomplish this, select the Repair Skill through the "
|
|
"Spellbook or Speedbook and right-click the mouse as if you were "
|
|
"casting a spell. Your cursor will change into a Hammer Icon "
|
|
"that you will use to select the item to be repaired. "
|
|
"Although Repairing an item in this way will decrease the "
|
|
"maximum durability of that item, it can be done without leaving "
|
|
"the labyrinth.|"
|
|
"|"
|
|
"The Blacksmith can also repair items for a price. When the "
|
|
"Blacksmith performs this service, it does decrease the maximum "
|
|
"durability of the item.|"
|
|
"|"
|
|
"Rogue:|"
|
|
"The Rogue has the skill of Disarm Traps. This allows her to not only "
|
|
"remove traps, but also acts as a 'sixth sense' that warns her of "
|
|
"where these trapped items are located. To accomplish this, select "
|
|
"the Disarm Trap skill through the Spellbook or Speedbook and "
|
|
"right-click the mouse as if you were casting a spell. "
|
|
"Your cursor will change into a Targeting Cursor that you will "
|
|
"use to select the item to be disarmed. The success of this "
|
|
"attempt is based on the level of the Rogue and the expertise of "
|
|
"whomever set the trap.|"
|
|
"|"
|
|
"Sorcerer:|"
|
|
"The Sorcerer has the skill of Recharge Staffs. This allows him to "
|
|
"focus his mana into an staff that has been drained of its magical "
|
|
"energies. To accomplish this, select the Recharge Staffs skill "
|
|
"through the Spellbook or Speedbook and right-click the mouse as "
|
|
"if you were casting a spell. Your cursor will change into a "
|
|
"Staff Icon that you will use to select the item to be recharged. "
|
|
"Although Recharging a staff in this way will decrease its maximum "
|
|
"charges, it can be done without leaving the labyrinth.|"
|
|
"|"
|
|
"The Witch can also recharge staffs for a price. When the Witch "
|
|
"performs this service, it does decrease the maximum charges of the "
|
|
"item.|"
|
|
"|"
|
|
"Spells are magical effects that can be cast from a scroll, "
|
|
"a staff or memorized from a book. Spells may or may not require "
|
|
"mana to use and are available to all classes.|"
|
|
"|"
|
|
"Spells cast from a scroll cost no mana to use, but are limited "
|
|
"to only one charge. Casting a spell from a scroll is accomplished "
|
|
"by either right clicking on the scroll or, if it is located in "
|
|
"our belt, pressing the corresponding number on the keyboard. "
|
|
"Scrolls can also be readied in the Speedbook and are represented "
|
|
"by a red icon/button in the 'select current spell' area.|"
|
|
"|"
|
|
"Spells cast from staffs cost no mana to use, but are limited by "
|
|
"the number of charges available. To cast spells from a staff, "
|
|
"it must first be equipped. The 'select current spell' icon/button "
|
|
"will change to indicate that the spell on the staff is currently "
|
|
"ready to cast. Scrolls can also be readied in the Spellbook or "
|
|
"Speedbook and are represented by an orange icon/button in the "
|
|
"'select current spell' area.|"
|
|
"|"
|
|
"Spells that are memorized cost mana to cast, but they can be used "
|
|
"as long as the character has mana to power them. The Warrior "
|
|
"and Rogue start the game with no memorized spells while "
|
|
"the sorcerer begins with Firebolt. If the character finds a book "
|
|
"in the labyrinth, he can memorize the spell written in that book "
|
|
"by opening the Inventory screen and right-clicking on the book. "
|
|
"This will make that spell always available to the character for "
|
|
"casting. Memorized spells can be readied through either the "
|
|
"Spellbook or Speedbook and are represented by a blue icon/button "
|
|
"in the 'select current spell' area.|"
|
|
"|"
|
|
"$Important note on books:|"
|
|
"Reading more than one book increases your knowledge of that spell "
|
|
"and gives you the spell at a higher level. The higher the level "
|
|
"of a spell the more effective it is.|"
|
|
"|"
|
|
"While some spells affect the caster, other spells require a target. "
|
|
"These targeted spells are cast in the direction that you indicate "
|
|
"with your cursor on the play area. If you highlight a creature, "
|
|
"you will cast that spell at that creature. Not all items within "
|
|
"the labyrinth can be targeted.|"
|
|
"|"
|
|
"Example: A fireball spell will travel at the creature or to the "
|
|
"location you right-click on. A Healing spell will simply add "
|
|
"health to your character while diminishing his available mana "
|
|
"and requires no targeting.|"
|
|
"|"
|
|
"You can also set a spell or scroll as a Hot Key position for "
|
|
"instant selection. Start by opening the pop-up menu as described "
|
|
"in the skill section above. Assign Hot Keys by hitting the "
|
|
"F5, F6, F7 or F8 keys on your keyboard after scrolling through "
|
|
"the available spells and highlighting the one you wish to assign. |"
|
|
"|"
|
|
"$Health and Mana:|"
|
|
"The two orbs in the Information Bar display your life and mana. "
|
|
"The red sphere of fluid on the left side of the control panel "
|
|
"represents the overall health of your character. When the fluid "
|
|
"is gone - your character is dead.|"
|
|
"|"
|
|
"The blue fluid on the right side of the control panel represents "
|
|
"your character's available mana. Mana is the magical force used by "
|
|
"your character to cast spells. When the liquid in the sphere is "
|
|
"low or depleted, you may be unable to cast some (or all) of your "
|
|
"spells.|"
|
|
"|"
|
|
"$Information Bar:|"
|
|
"The Information Bar is where you receive detailed information in "
|
|
"Diablo and interact with much of your surroundings. Here is a "
|
|
"quick run-down of the control panel areas and their use:|"
|
|
"|"
|
|
"CHAR: This button is used to access your Character Statistics screen|"
|
|
"INV: This button is used to access your Inventory screen|"
|
|
"Quest: This button displays your Quest Log (inactive in "
|
|
"Shareware version)|"
|
|
"Automap: This button activates the mapping overlay|"
|
|
"Menu: This button activates the game menu screen|"
|
|
"Spells: This button is used to access your Spellbook|"
|
|
"Current Spell: This is the spell that has been readied for "
|
|
"immediate casting|"
|
|
"Life Orb: This is the amount of health your character currently has|"
|
|
"Mana Orb: This is the amount of mana your character currently has|"
|
|
"Multiplayer Message: This activates the Message Area|"
|
|
"Description Area: This is where any important information about "
|
|
"creatures or items you can interact with is displayed. "
|
|
"This is also where you will enter the text you wish to send when "
|
|
"sending multiplayer messages.|"
|
|
"|"
|
|
"$Character Info:|"
|
|
"Toggle the Character Statistics Screen on and off by clicking the "
|
|
"<CHAR button on the Information Bar. This screen shows the "
|
|
"'nuts and bolts' of your character. There are four major attributes "
|
|
"that dictate how your character progresses in the game.|"
|
|
"|"
|
|
"STRENGTH: This is how physically powerful your character is. This "
|
|
"statistic plays a large part in determining how much damage you "
|
|
"can do when attacking creatures.|"
|
|
"|"
|
|
"MAGIC: This is how attuned your character is with the arcane powers "
|
|
"of the world. This statistic plays a large part in determining how "
|
|
"much mana you have available for casting spells.|"
|
|
"|"
|
|
"DEXTERITY: This is how quick of foot and hand your character is. "
|
|
"This statistic plays a large part in determining the chance you "
|
|
"have to hit creatures in combat.|"
|
|
"|"
|
|
"VITALITY: This is how physically fit your character is. This "
|
|
"statistic plays a large part in determining how much health your "
|
|
"character has when he is undamaged.|"
|
|
"|"
|
|
"$In Game Menu:|"
|
|
"To activate the Game Menu, click the MENU button on the Information "
|
|
"Bar. You have three options in this menu:|"
|
|
"|"
|
|
"New Game: This exits you from your current game and returns you to "
|
|
"the Main Menu.|"
|
|
"|"
|
|
"Options: This opens the options menu that allows you to "
|
|
"adjust your music and sound effects settings as well as "
|
|
"the gamma level of the screen.|"
|
|
"|"
|
|
"Quit Diablo: This exits the program. Please note that this "
|
|
"automatically saves your character.|"
|
|
"|"
|
|
"$Auto-map:|"
|
|
"Your character automatically maps where he has been in the "
|
|
"labyrinth. To access the auto-map, click the MAP button on the "
|
|
"Information Bar. You can also press TAB on your keyboard to activate "
|
|
"the auto-map. Zooming in and out of the map is done with the + and - "
|
|
"keys while scrolling the map uses the arrow keys.|"
|
|
"&"
|
|
#else
|
|
"$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.|"
|
|
"&"
|
|
#endif
|
|
};
|
|
|
|
void InitHelp()
|
|
{
|
|
helpflag = FALSE;
|
|
dword_634494 = 0;
|
|
displayinghelp[0] = 0;
|
|
}
|
|
|
|
void DrawHelp()
|
|
{
|
|
int i, c, w;
|
|
char col;
|
|
const char *s;
|
|
|
|
DrawSTextHelp();
|
|
DrawQTextBack();
|
|
PrintSString(0, 2, TRUE, "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, TRUE, "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)
|
|
{
|
|
int off, width;
|
|
BYTE c;
|
|
|
|
width = 0;
|
|
off = PitchTbl[SStringY[help_line_nr] + 204] + always_0 + 96 + PANEL_LEFT;
|
|
while (*text) {
|
|
c = gbFontTransTbl[(BYTE)*text];
|
|
text++;
|
|
c = fontframe[c];
|
|
width += fontkern[c] + 1;
|
|
if (c) {
|
|
if (width <= 577)
|
|
PrintChar(off, c, color);
|
|
}
|
|
off += fontkern[c] + 1;
|
|
}
|
|
}
|
|
|
|
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++;
|
|
}
|