diff --git a/src/interface.cc b/src/interface.cc index e36fb15..3845bdc 100644 --- a/src/interface.cc +++ b/src/interface.cc @@ -1,6 +1,7 @@ #include "interface.h" #include "animation.h" +#include "art.h" #include "color.h" #include "combat.h" #include "config.h" @@ -15,6 +16,7 @@ #include "game_config.h" #include "game_mouse.h" #include "game_sound.h" +#include "geometry.h" #include "item.h" #include "memory.h" #include "object.h" @@ -43,149 +45,222 @@ // Minimum poison amount to display POISONED indicator. #define POISON_INDICATOR_THRESHOLD 0 +// The maximum number of indicator boxes the indicator bar can display. +// +// For unknown reason this number is 6, even though there are only 5 different +// indicator types. In addition to that, default screen width 640px cannot hold +// 6 boxes 130px each. +#define INDICATOR_SLOTS_COUNT (6) + +// The values of it's members are offsets to beginning of numbers in +// numbers.frm. +typedef enum InterfaceNumbersColor { + INTERFACE_NUMBERS_COLOR_WHITE = 0, + INTERFACE_NUMBERS_COLOR_YELLOW = 120, + INTERFACE_NUMBERS_COLOR_RED = 240, +} InterfaceNumbersColor; + +// Available indicators. +// +// Indicator boxes in the bar are displayed according to the order of this enum. +typedef enum Indicator { + INDICATOR_ADDICT, + INDICATOR_SNEAK, + INDICATOR_LEVEL, + INDICATOR_POISONED, + INDICATOR_RADIATED, + INDICATOR_COUNT, +} Indicator; + +// Provides metadata about indicator boxes. +typedef struct IndicatorDescription { + // An identifier of title in `intrface.msg`. + int title; + + // A flag denoting this box represents something harmful to the player. It + // affects color of the title. + bool isBad; + + // Prerendered indicator data. + // + // This value is provided at runtime during indicator box initialization. + // It includes indicator box background with it's title positioned in the + // center and is green colored if indicator is good, or red otherwise, as + // denoted by [isBad] property. + unsigned char* data; +} IndicatorDescription; + +typedef struct InterfaceItemState { + Object* item; + unsigned char isDisabled; + unsigned char isWeapon; + int primaryHitMode; + int secondaryHitMode; + int action; + int itemFid; +} InterfaceItemState; + +static int _intface_redraw_items_callback(Object* a1, Object* a2); +static int _intface_change_fid_callback(Object* a1, Object* a2); +static void interfaceBarSwapHandsAnimatePutAwayTakeOutSequence(int previousWeaponAnimationCode, int weaponAnimationCode); +static int interfaceBarRefreshMainAction(); +static int endTurnButtonInit(); +static int endTurnButtonFree(); +static int endCombatButtonInit(); +static int endCombatButtonFree(); +static void interfaceUpdateAmmoBar(int x, int ratio); +static int _intface_item_reload(); +static void interfaceRenderCounter(int x, int y, int previousValue, int value, int offset, int delay); +static int indicatorBarInit(); +static void interfaceBarFree(); +static void indicatorBarReset(); +static int indicatorBoxCompareByPosition(const void* a, const void* b); +static void indicatorBarRender(int count); +static bool indicatorBarAdd(int indicator); + // 0x518F08 -bool gInterfaceBarInitialized = false; +static bool gInterfaceBarInitialized = false; // 0x518F0C -bool gInterfaceBarSwapHandsInProgress = false; +static bool gInterfaceBarSwapHandsInProgress = false; // 0x518F10 -bool gInterfaceBarEnabled = false; +static bool gInterfaceBarEnabled = false; // 0x518F14 -bool _intfaceHidden = false; +static bool _intfaceHidden = false; // 0x518F18 -int gInventoryButton = -1; +static int gInventoryButton = -1; // 0x518F1C -CacheEntry* gInventoryButtonUpFrmHandle = NULL; +static CacheEntry* gInventoryButtonUpFrmHandle = NULL; // 0x518F20 -CacheEntry* gInventoryButtonDownFrmHandle = NULL; +static CacheEntry* gInventoryButtonDownFrmHandle = NULL; // 0x518F24 -int gOptionsButton = -1; +static int gOptionsButton = -1; // 0x518F28 -CacheEntry* gOptionsButtonUpFrmHandle = NULL; +static CacheEntry* gOptionsButtonUpFrmHandle = NULL; // 0x518F2C -CacheEntry* gOptionsButtonDownFrmHandle = NULL; +static CacheEntry* gOptionsButtonDownFrmHandle = NULL; // 0x518F30 -int gSkilldexButton = -1; +static int gSkilldexButton = -1; // 0x518F34 -CacheEntry* gSkilldexButtonUpFrmHandle = NULL; +static CacheEntry* gSkilldexButtonUpFrmHandle = NULL; // 0x518F38 -CacheEntry* gSkilldexButtonDownFrmHandle = NULL; +static CacheEntry* gSkilldexButtonDownFrmHandle = NULL; // 0x518F3C -CacheEntry* gSkilldexButtonMaskFrmHandle = NULL; +static CacheEntry* gSkilldexButtonMaskFrmHandle = NULL; // 0x518F40 -int gMapButton = -1; +static int gMapButton = -1; // 0x518F44 -CacheEntry* gMapButtonUpFrmHandle = NULL; +static CacheEntry* gMapButtonUpFrmHandle = NULL; // 0x518F48 -CacheEntry* gMapButtonDownFrmHandle = NULL; +static CacheEntry* gMapButtonDownFrmHandle = NULL; // 0x518F4C -CacheEntry* gMapButtonMaskFrmHandle = NULL; +static CacheEntry* gMapButtonMaskFrmHandle = NULL; // 0x518F50 -int gPipboyButton = -1; +static int gPipboyButton = -1; // 0x518F54 -CacheEntry* gPipboyButtonUpFrmHandle = NULL; +static CacheEntry* gPipboyButtonUpFrmHandle = NULL; // 0x518F58 -CacheEntry* gPipboyButtonDownFrmHandle = NULL; +static CacheEntry* gPipboyButtonDownFrmHandle = NULL; // 0x518F5C -int gCharacterButton = -1; +static int gCharacterButton = -1; // 0x518F60 -CacheEntry* gCharacterButtonUpFrmHandle = NULL; +static CacheEntry* gCharacterButtonUpFrmHandle = NULL; // 0x518F64 -CacheEntry* gCharacterButtonDownFrmHandle = NULL; +static CacheEntry* gCharacterButtonDownFrmHandle = NULL; // 0x518F68 -int gSingleAttackButton = -1; +static int gSingleAttackButton = -1; // 0x518F6C -CacheEntry* gSingleAttackButtonUpHandle = NULL; +static CacheEntry* gSingleAttackButtonUpHandle = NULL; // 0x518F70 -CacheEntry* gSingleAttackButtonDownHandle = NULL; +static CacheEntry* gSingleAttackButtonDownHandle = NULL; // CacheEntry* _itemButtonDisabledKey = NULL; // 0x518F78 -int gInterfaceCurrentHand = HAND_LEFT; +static int gInterfaceCurrentHand = HAND_LEFT; // 0x518F7C -const Rect gInterfaceBarMainActionRect = { 267, 26, 455, 93 }; +static const Rect gInterfaceBarMainActionRect = { 267, 26, 455, 93 }; // 0x518F8C -int gChangeHandsButton = -1; +static int gChangeHandsButton = -1; // 0x518F90 -CacheEntry* gChangeHandsButtonUpFrmHandle = NULL; +static CacheEntry* gChangeHandsButtonUpFrmHandle = NULL; // 0x518F94 -CacheEntry* gChangeHandsButtonDownFrmHandle = NULL; +static CacheEntry* gChangeHandsButtonDownFrmHandle = NULL; // 0x518F98 -CacheEntry* gChangeHandsButtonMaskFrmHandle = NULL; +static CacheEntry* gChangeHandsButtonMaskFrmHandle = NULL; // 0x518F9C -bool gInterfaceBarEndButtonsIsVisible = false; +static bool gInterfaceBarEndButtonsIsVisible = false; // Combat mode curtains rect. // // 0x518FA0 -const Rect gInterfaceBarEndButtonsRect = { 580, 38, 637, 96 }; +static const Rect gInterfaceBarEndButtonsRect = { 580, 38, 637, 96 }; // 0x518FB0 -int gEndTurnButton = -1; +static int gEndTurnButton = -1; // 0x518FB4 -CacheEntry* gEndTurnButtonUpFrmHandle = NULL; +static CacheEntry* gEndTurnButtonUpFrmHandle = NULL; // 0x518FB8 -CacheEntry* gEndTurnButtonDownFrmHandle = NULL; +static CacheEntry* gEndTurnButtonDownFrmHandle = NULL; // 0x518FBC -int gEndCombatButton = -1; +static int gEndCombatButton = -1; // 0x518FC0 -CacheEntry* gEndCombatButtonUpFrmHandle = NULL; +static CacheEntry* gEndCombatButtonUpFrmHandle = NULL; // 0x518FC4 -CacheEntry* gEndCombatButtonDownFrmHandle = NULL; +static CacheEntry* gEndCombatButtonDownFrmHandle = NULL; // 0x518FC8 -unsigned char* gGreenLightFrmData = NULL; +static unsigned char* gGreenLightFrmData = NULL; // 0x518FCC -unsigned char* gYellowLightFrmData = NULL; +static unsigned char* gYellowLightFrmData = NULL; // 0x518FD0 -unsigned char* gRedLightFrmData = NULL; +static unsigned char* gRedLightFrmData = NULL; // 0x518FD4 -const Rect gInterfaceBarActionPointsBarRect = { 316, 14, 406, 19 }; +static const Rect gInterfaceBarActionPointsBarRect = { 316, 14, 406, 19 }; // 0x518FE4 -unsigned char* gNumbersFrmData = NULL; +static unsigned char* gNumbersFrmData = NULL; // 0x518FE8 -IndicatorDescription gIndicatorDescriptions[INDICATOR_COUNT] = { +static IndicatorDescription gIndicatorDescriptions[INDICATOR_COUNT] = { { 102, true, NULL }, // ADDICT { 100, false, NULL }, // SNEAK { 101, false, NULL }, // LEVEL @@ -197,132 +272,132 @@ IndicatorDescription gIndicatorDescriptions[INDICATOR_COUNT] = { int gInterfaceBarWindow = -1; // 0x519028 -int gIndicatorBarWindow = -1; +static int gIndicatorBarWindow = -1; // Last hit points rendered in interface. // // Used to animate changes. // // 0x51902C -int gInterfaceLastRenderedHitPoints = 0; +static int gInterfaceLastRenderedHitPoints = 0; // Last color used to render hit points in interface. // // Used to animate changes. // // 0x519030 -int gInterfaceLastRenderedHitPointsColor = INTERFACE_NUMBERS_COLOR_RED; +static int gInterfaceLastRenderedHitPointsColor = INTERFACE_NUMBERS_COLOR_RED; // Last armor class rendered in interface. // // Used to animate changes. // // 0x519034 -int gInterfaceLastRenderedArmorClass = 0; +static int gInterfaceLastRenderedArmorClass = 0; // Each slot contains one of indicators or -1 if slot is empty. // // 0x5970E0 -int gIndicatorSlots[INDICATOR_SLOTS_COUNT]; +static int gIndicatorSlots[INDICATOR_SLOTS_COUNT]; // 0x5970F8 -InterfaceItemState gInterfaceItemStates[HAND_COUNT]; +static InterfaceItemState gInterfaceItemStates[HAND_COUNT]; // 0x597128 -CacheEntry* gYellowLightFrmHandle; +static CacheEntry* gYellowLightFrmHandle; // 0x59712C -CacheEntry* gRedLightFrmHandle; +static CacheEntry* gRedLightFrmHandle; // 0x597130 -CacheEntry* gNumbersFrmHandle; +static CacheEntry* gNumbersFrmHandle; // 0x597138 -bool gIndicatorBarIsVisible; +static bool gIndicatorBarIsVisible; // 0x59713C -unsigned char* gChangeHandsButtonUpFrmData; +static unsigned char* gChangeHandsButtonUpFrmData; // 0x597140 -CacheEntry* gGreenLightFrmHandle; +static CacheEntry* gGreenLightFrmHandle; // 0x597144 -unsigned char* gEndCombatButtonUpFrmData; +static unsigned char* gEndCombatButtonUpFrmData; // 0x597148 -unsigned char* gEndCombatButtonDownFrmData; +static unsigned char* gEndCombatButtonDownFrmData; // 0x59714C -unsigned char* gChangeHandsButtonDownFrmData; +static unsigned char* gChangeHandsButtonDownFrmData; // 0x597150 -unsigned char* gEndTurnButtonDownFrmData; +static unsigned char* gEndTurnButtonDownFrmData; // 0x597154 -unsigned char _itemButtonDown[188 * 67]; +static unsigned char _itemButtonDown[188 * 67]; // 0x59A288 -unsigned char* gEndTurnButtonUpFrmData; +static unsigned char* gEndTurnButtonUpFrmData; // 0x59A28C -unsigned char* gChangeHandsButtonMaskFrmData; +static unsigned char* gChangeHandsButtonMaskFrmData; // 0x59A290 -unsigned char* gCharacterButtonUpFrmData; +static unsigned char* gCharacterButtonUpFrmData; // 0x59A294 -unsigned char* gSingleAttackButtonUpData; +static unsigned char* gSingleAttackButtonUpData; // 0x59A298 -unsigned char* _itemButtonDisabled; +static unsigned char* _itemButtonDisabled; // 0x59A29C -unsigned char* gMapButtonDownFrmData; +static unsigned char* gMapButtonDownFrmData; // 0x59A2A0 -unsigned char* gPipboyButtonUpFrmData; +static unsigned char* gPipboyButtonUpFrmData; // 0x59A2A4 -unsigned char* gCharacterButtonDownFrmData; +static unsigned char* gCharacterButtonDownFrmData; // 0x59A2A8 -unsigned char* gSingleAttackButtonDownData; +static unsigned char* gSingleAttackButtonDownData; // 0x59A2AC -unsigned char* gPipboyButtonDownFrmData; +static unsigned char* gPipboyButtonDownFrmData; // 0x59A2B0 -unsigned char* gMapButtonMaskFrmData; +static unsigned char* gMapButtonMaskFrmData; // 0x59A2B4 -unsigned char _itemButtonUp[188 * 67]; +static unsigned char _itemButtonUp[188 * 67]; // 0x59D3E8 -unsigned char* gMapButtonUpFrmData; +static unsigned char* gMapButtonUpFrmData; // 0x59D3EC -unsigned char* gSkilldexButtonMaskFrmData; +static unsigned char* gSkilldexButtonMaskFrmData; // 0x59D3F0 -unsigned char* gSkilldexButtonDownFrmData; +static unsigned char* gSkilldexButtonDownFrmData; // 0x59D3F4 -unsigned char* gInterfaceWindowBuffer; +static unsigned char* gInterfaceWindowBuffer; // 0x59D3F8 -unsigned char* gInventoryButtonUpFrmData; +static unsigned char* gInventoryButtonUpFrmData; // 0x59D3FC -unsigned char* gOptionsButtonUpFrmData; +static unsigned char* gOptionsButtonUpFrmData; // 0x59D400 -unsigned char* gOptionsButtonDownFrmData; +static unsigned char* gOptionsButtonDownFrmData; // 0x59D404 -unsigned char* gSkilldexButtonUpFrmData; +static unsigned char* gSkilldexButtonUpFrmData; // 0x59D408 -unsigned char* gInventoryButtonDownFrmData; +static unsigned char* gInventoryButtonDownFrmData; // A slice of main interface background containing 10 shadowed action point // dots. In combat mode individual colored dots are rendered on top of this @@ -331,7 +406,7 @@ unsigned char* gInventoryButtonDownFrmData; // This buffer is initialized once and does not change throughout the game. // // 0x59D40C -unsigned char gInterfaceActionPointsBarBackground[90 * 5]; +static unsigned char gInterfaceActionPointsBarBackground[90 * 5]; // Should the game window stretch all the way to the bottom or sit at the top of the interface bar (default) bool gInterfaceBarMode = false; @@ -1657,7 +1732,7 @@ void interfaceBarEndButtonsRenderRedLights() } // 0x45FD88 -int interfaceBarRefreshMainAction() +static int interfaceBarRefreshMainAction() { if (gInterfaceBarWindow == -1) { return -1; @@ -1924,21 +1999,21 @@ int interfaceBarRefreshMainAction() } // 0x460658 -int _intface_redraw_items_callback(Object* a1, Object* a2) +static int _intface_redraw_items_callback(Object* a1, Object* a2) { interfaceBarRefreshMainAction(); return 0; } // 0x460660 -int _intface_change_fid_callback(Object* a1, Object* a2) +static int _intface_change_fid_callback(Object* a1, Object* a2) { gInterfaceBarSwapHandsInProgress = false; return 0; } // 0x46066C -void interfaceBarSwapHandsAnimatePutAwayTakeOutSequence(int previousWeaponAnimationCode, int weaponAnimationCode) +static void interfaceBarSwapHandsAnimatePutAwayTakeOutSequence(int previousWeaponAnimationCode, int weaponAnimationCode) { gInterfaceBarSwapHandsInProgress = true; @@ -1997,7 +2072,7 @@ void interfaceBarSwapHandsAnimatePutAwayTakeOutSequence(int previousWeaponAnimat } // 0x4607E0 -int endTurnButtonInit() +static int endTurnButtonInit() { int fid; @@ -2033,7 +2108,7 @@ int endTurnButtonInit() } // 0x4608C4 -int endTurnButtonFree() +static int endTurnButtonFree() { if (gInterfaceBarWindow == -1) { return -1; @@ -2060,7 +2135,7 @@ int endTurnButtonFree() } // 0x460940 -int endCombatButtonInit() +static int endCombatButtonInit() { int fid; @@ -2096,7 +2171,7 @@ int endCombatButtonInit() } // 0x460A24 -int endCombatButtonFree() +static int endCombatButtonFree() { if (gInterfaceBarWindow == -1) { return -1; @@ -2123,7 +2198,7 @@ int endCombatButtonFree() } // 0x460AA0 -void interfaceUpdateAmmoBar(int x, int ratio) +static void interfaceUpdateAmmoBar(int x, int ratio) { if ((ratio & 1) != 0) { ratio -= 1; @@ -2157,7 +2232,7 @@ void interfaceUpdateAmmoBar(int x, int ratio) } // 0x460B20 -int _intface_item_reload() +static int _intface_item_reload() { if (gInterfaceBarWindow == -1) { return -1; @@ -2188,7 +2263,7 @@ int _intface_item_reload() // [offset] = 0 - grey, 120 - yellow, 240 - red. // // 0x460BA0 -void interfaceRenderCounter(int x, int y, int previousValue, int value, int offset, int delay) +static void interfaceRenderCounter(int x, int y, int previousValue, int value, int offset, int delay) { if (value > 999) { value = 999; @@ -2305,7 +2380,7 @@ void interfaceRenderCounter(int x, int y, int previousValue, int value, int offs } // 0x461134 -int indicatorBarInit() +static int indicatorBarInit() { int oldFont = fontGetCurrent(); @@ -2396,7 +2471,7 @@ int indicatorBarInit() } // 0x461454 -void interfaceBarFree() +static void interfaceBarFree() { if (gIndicatorBarWindow != -1) { windowDestroy(gIndicatorBarWindow); @@ -2415,7 +2490,7 @@ void interfaceBarFree() // NOTE: This function is not referenced in the original code. // // 0x4614A0 -void indicatorBarReset() +static void indicatorBarReset() { if (gIndicatorBarWindow != -1) { windowDestroy(gIndicatorBarWindow); @@ -2502,7 +2577,7 @@ int indicatorBarRefresh() } // 0x461624 -int indicatorBoxCompareByPosition(const void* a, const void* b) +static int indicatorBoxCompareByPosition(const void* a, const void* b) { int indicatorBox1 = *(int*)a; int indicatorBox2 = *(int*)b; @@ -2519,7 +2594,7 @@ int indicatorBoxCompareByPosition(const void* a, const void* b) // Renders indicator boxes into the indicator bar window. // // 0x461648 -void indicatorBarRender(int count) +static void indicatorBarRender(int count) { if (gIndicatorBarWindow == -1) { return; @@ -2572,7 +2647,7 @@ void indicatorBarRender(int count) // space in the indicator bar. // // 0x4616F0 -bool indicatorBarAdd(int indicator) +static bool indicatorBarAdd(int indicator) { for (int index = 0; index < INDICATOR_SLOTS_COUNT; index++) { if (gIndicatorSlots[index] == -1) { diff --git a/src/interface.h b/src/interface.h index ef9fed5..ccff557 100644 --- a/src/interface.h +++ b/src/interface.h @@ -1,9 +1,7 @@ #ifndef INTERFACE_H #define INTERFACE_H -#include "art.h" #include "db.h" -#include "geometry.h" #include "obj_types.h" typedef enum Hand { @@ -14,6 +12,12 @@ typedef enum Hand { HAND_COUNT, } Hand; +#define INDICATOR_BOX_WIDTH 130 +#define INDICATOR_BOX_HEIGHT 21 + +#define INTERFACE_BAR_WIDTH 640 +#define INTERFACE_BAR_HEIGHT 100 + typedef enum InterfaceItemAction { INTERFACE_ITEM_ACTION_DEFAULT = -1, INTERFACE_ITEM_ACTION_USE, @@ -25,156 +29,7 @@ typedef enum InterfaceItemAction { INTERFACE_ITEM_ACTION_COUNT, } InterfaceItemAction; -// The values of it's members are offsets to beginning of numbers in -// numbers.frm. -typedef enum InterfaceNumbersColor { - INTERFACE_NUMBERS_COLOR_WHITE = 0, - INTERFACE_NUMBERS_COLOR_YELLOW = 120, - INTERFACE_NUMBERS_COLOR_RED = 240, -} InterfaceNumbersColor; - -#define INDICATOR_BOX_WIDTH 130 -#define INDICATOR_BOX_HEIGHT 21 - -#define INTERFACE_BAR_WIDTH 640 -#define INTERFACE_BAR_HEIGHT 100 - -// The maximum number of indicator boxes the indicator bar can display. -// -// For unknown reason this number is 6, even though there are only 5 different -// indicator types. In addition to that, default screen width 640px cannot hold -// 6 boxes 130px each. -#define INDICATOR_SLOTS_COUNT (6) - -// Available indicators. -// -// Indicator boxes in the bar are displayed according to the order of this enum. -typedef enum Indicator { - INDICATOR_ADDICT, - INDICATOR_SNEAK, - INDICATOR_LEVEL, - INDICATOR_POISONED, - INDICATOR_RADIATED, - INDICATOR_COUNT, -} Indicator; - -// Provides metadata about indicator boxes. -typedef struct IndicatorDescription { - // An identifier of title in `intrface.msg`. - int title; - - // A flag denoting this box represents something harmful to the player. It - // affects color of the title. - bool isBad; - - // Prerendered indicator data. - // - // This value is provided at runtime during indicator box initialization. - // It includes indicator box background with it's title positioned in the - // center and is green colored if indicator is good, or red otherwise, as - // denoted by [isBad] property. - unsigned char* data; -} IndicatorDescription; - -typedef struct InterfaceItemState { - Object* item; - unsigned char isDisabled; - unsigned char isWeapon; - int primaryHitMode; - int secondaryHitMode; - int action; - int itemFid; -} InterfaceItemState; - -extern bool gInterfaceBarInitialized; -extern bool gInterfaceBarSwapHandsInProgress; -extern bool gInterfaceBarEnabled; -extern bool _intfaceHidden; -extern int gInventoryButton; -extern CacheEntry* gInventoryButtonUpFrmHandle; -extern CacheEntry* gInventoryButtonDownFrmHandle; -extern int gOptionsButton; -extern CacheEntry* gOptionsButtonUpFrmHandle; -extern CacheEntry* gOptionsButtonDownFrmHandle; -extern int gSkilldexButton; -extern CacheEntry* gSkilldexButtonUpFrmHandle; -extern CacheEntry* gSkilldexButtonDownFrmHandle; -extern CacheEntry* gSkilldexButtonMaskFrmHandle; -extern int gMapButton; -extern CacheEntry* gMapButtonUpFrmHandle; -extern CacheEntry* gMapButtonDownFrmHandle; -extern CacheEntry* gMapButtonMaskFrmHandle; -extern int gPipboyButton; -extern CacheEntry* gPipboyButtonUpFrmHandle; -extern CacheEntry* gPipboyButtonDownFrmHandle; -extern int gCharacterButton; -extern CacheEntry* gCharacterButtonUpFrmHandle; -extern CacheEntry* gCharacterButtonDownFrmHandle; -extern int gSingleAttackButton; -extern CacheEntry* gSingleAttackButtonUpHandle; -extern CacheEntry* gSingleAttackButtonDownHandle; -extern CacheEntry* _itemButtonDisabledKey; -extern int gInterfaceCurrentHand; -extern const Rect gInterfaceBarMainActionRect; -extern int gChangeHandsButton; -extern CacheEntry* gChangeHandsButtonUpFrmHandle; -extern CacheEntry* gChangeHandsButtonDownFrmHandle; -extern CacheEntry* gChangeHandsButtonMaskFrmHandle; -extern bool gInterfaceBarEndButtonsIsVisible; -extern const Rect gInterfaceBarEndButtonsRect; -extern int gEndTurnButton; -extern CacheEntry* gEndTurnButtonUpFrmHandle; -extern CacheEntry* gEndTurnButtonDownFrmHandle; -extern int gEndCombatButton; -extern CacheEntry* gEndCombatButtonUpFrmHandle; -extern CacheEntry* gEndCombatButtonDownFrmHandle; -extern unsigned char* gGreenLightFrmData; -extern unsigned char* gYellowLightFrmData; -extern unsigned char* gRedLightFrmData; -extern const Rect gInterfaceBarActionPointsBarRect; -extern unsigned char* gNumbersFrmData; -extern IndicatorDescription gIndicatorDescriptions[INDICATOR_COUNT]; extern int gInterfaceBarWindow; -extern int gIndicatorBarWindow; -extern int gInterfaceLastRenderedHitPoints; -extern int gInterfaceLastRenderedHitPointsColor; -extern int gInterfaceLastRenderedArmorClass; - -extern int gIndicatorSlots[INDICATOR_SLOTS_COUNT]; -extern InterfaceItemState gInterfaceItemStates[HAND_COUNT]; -extern CacheEntry* gYellowLightFrmHandle; -extern CacheEntry* gRedLightFrmHandle; -extern CacheEntry* gNumbersFrmHandle; -extern bool gIndicatorBarIsVisible; -extern unsigned char* gChangeHandsButtonUpFrmData; -extern CacheEntry* gGreenLightFrmHandle; -extern unsigned char* gEndCombatButtonUpFrmData; -extern unsigned char* gEndCombatButtonDownFrmData; -extern unsigned char* gChangeHandsButtonDownFrmData; -extern unsigned char* gEndTurnButtonDownFrmData; -extern unsigned char _itemButtonDown[12596]; -extern unsigned char* gEndTurnButtonUpFrmData; -extern unsigned char* gChangeHandsButtonMaskFrmData; -extern unsigned char* gCharacterButtonUpFrmData; -extern unsigned char* gSingleAttackButtonUpData; -extern unsigned char* _itemButtonDisabled; -extern unsigned char* gMapButtonDownFrmData; -extern unsigned char* gPipboyButtonUpFrmData; -extern unsigned char* gCharacterButtonDownFrmData; -extern unsigned char* gSingleAttackButtonDownData; -extern unsigned char* gPipboyButtonDownFrmData; -extern unsigned char* gMapButtonMaskFrmData; -extern unsigned char _itemButtonUp[12596]; -extern unsigned char* gMapButtonUpFrmData; -extern unsigned char* gSkilldexButtonMaskFrmData; -extern unsigned char* gSkilldexButtonDownFrmData; -extern unsigned char* gInterfaceWindowBuffer; -extern unsigned char* gInventoryButtonUpFrmData; -extern unsigned char* gOptionsButtonUpFrmData; -extern unsigned char* gOptionsButtonDownFrmData; -extern unsigned char* gSkilldexButtonUpFrmData; -extern unsigned char* gInventoryButtonDownFrmData; -extern unsigned char gInterfaceActionPointsBarBackground[450]; extern bool gInterfaceBarMode; int interfaceInit(); @@ -203,24 +58,7 @@ void interfaceBarEndButtonsShow(bool animated); void interfaceBarEndButtonsHide(bool animated); void interfaceBarEndButtonsRenderGreenLights(); void interfaceBarEndButtonsRenderRedLights(); -int interfaceBarRefreshMainAction(); -int _intface_redraw_items_callback(Object* a1, Object* a2); -int _intface_change_fid_callback(Object* a1, Object* a2); -void interfaceBarSwapHandsAnimatePutAwayTakeOutSequence(int previousWeaponAnimationCode, int weaponAnimationCode); -int endTurnButtonInit(); -int endTurnButtonFree(); -int endCombatButtonInit(); -int endCombatButtonFree(); -void interfaceUpdateAmmoBar(int x, int ratio); -int _intface_item_reload(); -void interfaceRenderCounter(int x, int y, int previousValue, int value, int offset, int delay); -int indicatorBarInit(); -void interfaceBarFree(); -void indicatorBarReset(); int indicatorBarRefresh(); -int indicatorBoxCompareByPosition(const void* a, const void* b); -void indicatorBarRender(int count); -bool indicatorBarAdd(int indicator); bool indicatorBarShow(); bool indicatorBarHide();