Browse Source

Reorder stores.cpp

pull/914/head
Anders Jenbo 5 years ago
parent
commit
e3ef222c4a
  1. 178
      Source/stores.cpp
  2. 94
      Source/stores.h

178
Source/stores.cpp

@ -336,6 +336,72 @@ void AddSText(int x, int y, BOOL j, const char *str, char clr, BOOL sel)
stext[y]._ssel = sel;
}
static void PrintStoreItem(ItemStruct *x, int l, char iclr)
{
char sstr[128];
char str, dex;
BYTE mag;
sstr[0] = '\0';
if (x->_iIdentified) {
if (x->_iMagical != ITEM_QUALITY_UNIQUE) {
if (x->_iPrePower != -1) {
PrintItemPower(x->_iPrePower, x);
strcat(sstr, tempstr);
}
}
if (x->_iSufPower != -1) {
PrintItemPower(x->_iSufPower, x);
if (sstr[0])
strcat(sstr, ", ");
strcat(sstr, tempstr);
}
}
if (x->_iMiscId == IMISC_STAFF && x->_iMaxCharges) {
sprintf(tempstr, "Charges: %i/%i", x->_iCharges, x->_iMaxCharges);
if (sstr[0])
strcat(sstr, ", ");
strcat(sstr, tempstr);
}
if (sstr[0]) {
AddSText(40, l, FALSE, sstr, iclr, FALSE);
l++;
}
sstr[0] = '\0';
if (x->_iClass == ICLASS_WEAPON)
sprintf(sstr, "Damage: %i-%i ", x->_iMinDam, x->_iMaxDam);
if (x->_iClass == ICLASS_ARMOR)
sprintf(sstr, "Armor: %i ", x->_iAC);
if (x->_iMaxDur != DUR_INDESTRUCTIBLE && x->_iMaxDur) {
sprintf(tempstr, "Dur: %i/%i, ", x->_iDurability, x->_iMaxDur);
strcat(sstr, tempstr);
} else {
strcat(sstr, "Indestructible, ");
}
if (x->_itype == ITYPE_MISC)
sstr[0] = '\0';
str = x->_iMinStr;
dex = x->_iMinDex;
mag = x->_iMinMag;
if ((str + mag + dex) == 0) {
strcat(sstr, "No required attributes");
} else {
strcpy(tempstr, "Required:");
if (x->_iMinStr)
sprintf(tempstr, "%s %i Str", tempstr, x->_iMinStr);
if (x->_iMinMag)
sprintf(tempstr, "%s %i Mag", tempstr, x->_iMinMag);
if (x->_iMinDex)
sprintf(tempstr, "%s %i Dex", tempstr, x->_iMinDex);
strcat(sstr, tempstr);
}
AddSText(40, l++, FALSE, sstr, iclr, FALSE);
if (x->_iMagical == ITEM_QUALITY_UNIQUE) {
if (x->_iIdentified)
AddSText(40, l, FALSE, "Unique Item", iclr, FALSE);
}
}
void StoreAutoPlace()
{
BOOL done;
@ -462,72 +528,6 @@ void S_ScrollSBuy(int idx)
stextsel = stextdown;
}
void PrintStoreItem(ItemStruct *x, int l, char iclr)
{
char sstr[128];
char str, dex;
BYTE mag;
sstr[0] = '\0';
if (x->_iIdentified) {
if (x->_iMagical != ITEM_QUALITY_UNIQUE) {
if (x->_iPrePower != -1) {
PrintItemPower(x->_iPrePower, x);
strcat(sstr, tempstr);
}
}
if (x->_iSufPower != -1) {
PrintItemPower(x->_iSufPower, x);
if (sstr[0])
strcat(sstr, ", ");
strcat(sstr, tempstr);
}
}
if (x->_iMiscId == IMISC_STAFF && x->_iMaxCharges) {
sprintf(tempstr, "Charges: %i/%i", x->_iCharges, x->_iMaxCharges);
if (sstr[0])
strcat(sstr, ", ");
strcat(sstr, tempstr);
}
if (sstr[0]) {
AddSText(40, l, FALSE, sstr, iclr, FALSE);
l++;
}
sstr[0] = '\0';
if (x->_iClass == ICLASS_WEAPON)
sprintf(sstr, "Damage: %i-%i ", x->_iMinDam, x->_iMaxDam);
if (x->_iClass == ICLASS_ARMOR)
sprintf(sstr, "Armor: %i ", x->_iAC);
if (x->_iMaxDur != DUR_INDESTRUCTIBLE && x->_iMaxDur) {
sprintf(tempstr, "Dur: %i/%i, ", x->_iDurability, x->_iMaxDur);
strcat(sstr, tempstr);
} else {
strcat(sstr, "Indestructible, ");
}
if (x->_itype == ITYPE_MISC)
sstr[0] = '\0';
str = x->_iMinStr;
dex = x->_iMinDex;
mag = x->_iMinMag;
if ((str + mag + dex) == 0) {
strcat(sstr, "No required attributes");
} else {
strcpy(tempstr, "Required:");
if (x->_iMinStr)
sprintf(tempstr, "%s %i Str", tempstr, x->_iMinStr);
if (x->_iMinMag)
sprintf(tempstr, "%s %i Mag", tempstr, x->_iMinMag);
if (x->_iMinDex)
sprintf(tempstr, "%s %i Dex", tempstr, x->_iMinDex);
strcat(sstr, tempstr);
}
AddSText(40, l++, FALSE, sstr, iclr, FALSE);
if (x->_iMagical == ITEM_QUALITY_UNIQUE) {
if (x->_iIdentified)
AddSText(40, l, FALSE, "Unique Item", iclr, FALSE);
}
}
void S_StartSBuy()
{
int i;
@ -769,6 +769,29 @@ BOOL SmithRepairOk(int i)
return TRUE;
}
static void AddStoreHoldRepair(ItemStruct *itm, int i)
{
ItemStruct *item;
int v;
item = &storehold[storenumh];
storehold[storenumh] = *itm;
if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified)
item->_ivalue = 30 * item->_iIvalue / 100;
v = item->_ivalue * (100 * (item->_iMaxDur - item->_iDurability) / item->_iMaxDur) / 100;
if (!v) {
if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified)
return;
v = 1;
}
if (v > 1)
v >>= 1;
item->_iIvalue = v;
item->_ivalue = v;
storehidx[storenumh] = i;
storenumh++;
}
void S_StartSRepair()
{
BOOL repairok;
@ -828,29 +851,6 @@ void S_StartSRepair()
OffsetSTextY(22, 6);
}
void AddStoreHoldRepair(ItemStruct *itm, int i)
{
ItemStruct *item;
int v;
item = &storehold[storenumh];
storehold[storenumh] = *itm;
if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified)
item->_ivalue = 30 * item->_iIvalue / 100;
v = item->_ivalue * (100 * (item->_iMaxDur - item->_iDurability) / item->_iMaxDur) / 100;
if (!v) {
if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified)
return;
v = 1;
}
if (v > 1)
v >>= 1;
item->_iIvalue = v;
item->_ivalue = v;
storehidx[storenumh] = i;
storenumh++;
}
void S_StartWitch()
{
stextsize = FALSE;

94
Source/stores.h

@ -6,95 +6,33 @@
#ifndef __STORES_H__
#define __STORES_H__
extern int stextup;
extern int storenumh;
extern int stextlhold;
extern ItemStruct boyitem;
extern int stextshold;
extern ItemStruct premiumitem[SMITH_PREMIUM_ITEMS];
extern BYTE *pSTextBoxCels;
extern int premiumlevel;
extern int talker;
extern STextStruct stext[STORE_LINES];
extern char stextsize;
extern int stextsmax;
extern int InStoreFlag;
extern ItemStruct storehold[48];
extern int gossipstart;
#ifdef HELLFIRE
extern ItemStruct witchitem[25];
#else
extern ItemStruct witchitem[20];
#endif
extern BOOL stextscrl;
extern int numpremium;
extern ItemStruct healitem[20];
extern ItemStruct golditem;
extern char storehidx[48];
extern BYTE *pSTextSlidCels;
extern int stextvhold;
extern int stextsel;
extern char stextscrldbtn;
extern int gossipend;
extern BYTE *pSPentSpn2Cels;
extern int stextsval;
extern int boylevel;
extern ItemStruct smithitem[SMITH_ITEMS];
extern int stextdown;
extern char stextscrlubtn;
extern char stextflag;
void InitStores();
void SetupTownStores();
void FreeStoreMem();
void DrawSTextBack();
void PrintSString(int x, int y, BOOL cjustflag, const char *str, char col, int val);
void DrawSLine(int y);
void DrawSSlider(int y1, int y2);
void DrawSTextHelp();
void ClearSText(int s, int e);
void AddSLine(int y);
void AddSTextVal(int y, int val);
void OffsetSTextY(int y, int yo);
void AddSText(int x, int y, BOOL j, const char *str, char clr, BOOL sel);
void StoreAutoPlace();
void S_StartSmith();
void S_ScrollSBuy(int idx);
void PrintStoreItem(ItemStruct *x, int l, char iclr);
void S_StartSBuy();
void S_ScrollSPBuy(int idx);
BOOL S_StartSPBuy();
BOOL SmithSellOk(int i);
void S_ScrollSSell(int idx);
void S_StartSSell();
BOOL SmithRepairOk(int i);
void S_StartSRepair();
void AddStoreHoldRepair(ItemStruct *itm, int i);
void S_StartWitch();
void S_ScrollWBuy(int idx);
void S_StartWBuy();
BOOL WitchSellOk(int i);
void S_StartWSell();
BOOL WitchRechargeOk(int i);
void AddStoreHoldRecharge(ItemStruct itm, int i);
void S_StartWRecharge();
void S_StartNoMoney();
void S_StartNoRoom();
void S_StartConfirm();
void S_StartBoy();
void S_StartBBoy();
void S_StartHealer();
void S_ScrollHBuy(int idx);
void S_StartHBuy();
void S_StartStory();
BOOL IdItemOk(ItemStruct *i);
void AddStoreHoldId(ItemStruct itm, int i);
void S_StartSIdentify();
void S_StartIdShow();
void S_StartTalk();
void S_StartTavern();
void S_StartBarMaid();
void S_StartDrunk();
void StartStore(char s);
void DrawSText();
void STextESC();
@ -102,40 +40,9 @@ void STextUp();
void STextDown();
void STextPrior();
void STextNext();
void S_SmithEnter();
void SetGoldCurs(int pnum, int i);
void SetSpdbarGoldCurs(int pnum, int i);
void TakePlrsMoney(int cost);
void SmithBuyItem();
void S_SBuyEnter();
void SmithBuyPItem();
void S_SPBuyEnter();
BOOL StoreGoldFit(int idx);
void PlaceStoreGold(int v);
void StoreSellItem();
void S_SSellEnter();
void SmithRepairItem();
void S_SRepairEnter();
void S_WitchEnter();
void WitchBuyItem();
void S_WBuyEnter();
void S_WSellEnter();
void WitchRechargeItem();
void S_WRechargeEnter();
void S_BoyEnter();
void BoyBuyItem();
void HealerBuyItem();
void S_BBuyEnter();
void StoryIdItem();
void S_ConfirmEnter();
void S_HealerEnter();
void S_HBuyEnter();
void S_StoryEnter();
void S_SIDEnter();
void S_TalkEnter();
void S_TavernEnter();
void S_BarmaidEnter();
void S_DrunkEnter();
void STextEnter();
void CheckStoreBtn();
void ReleaseStoreBtn();
@ -143,6 +50,5 @@ void ReleaseStoreBtn();
/* rdata */
extern int SStringY[24];
extern const char *const talkname[9];
#endif /* __STORES_H__ */

Loading…
Cancel
Save