aboutsummaryrefslogtreecommitdiff
path: root/engines/tinsel/dialogs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tinsel/dialogs.cpp')
-rw-r--r--engines/tinsel/dialogs.cpp58
1 files changed, 36 insertions, 22 deletions
diff --git a/engines/tinsel/dialogs.cpp b/engines/tinsel/dialogs.cpp
index ed59b5669b..73cad7a68f 100644
--- a/engines/tinsel/dialogs.cpp
+++ b/engines/tinsel/dialogs.cpp
@@ -1587,7 +1587,7 @@ static bool InvKeyIn(const Common::KeyState &kbd) {
MultiDeleteObject(GetPlayfieldList(FIELD_STATUS), iconArray[HL3]);
iconArray[HL3] = NULL;
}
- iconArray[HL3] = ObjectTextOut(nullContext,
+ iconArray[HL3] = ObjectTextOut(
GetPlayfieldList(FIELD_STATUS), sedit, 0,
InvD[ino].inventoryX + cd.box[cd.selBox].xpos + 2,
InvD[ino].inventoryY + cd.box[cd.selBox].ypos + TYOFF,
@@ -1595,7 +1595,7 @@ static bool InvKeyIn(const Common::KeyState &kbd) {
if (MultiRightmost(iconArray[HL3]) > MAX_NAME_RIGHT) {
MultiDeleteObject(GetPlayfieldList(FIELD_STATUS), iconArray[HL3]);
UpdateString(Common::KeyState(Common::KEYCODE_BACKSPACE));
- iconArray[HL3] = ObjectTextOut(nullContext,
+ iconArray[HL3] = ObjectTextOut(
GetPlayfieldList(FIELD_STATUS), sedit, 0,
InvD[ino].inventoryX + cd.box[cd.selBox].xpos + 2,
InvD[ino].inventoryY + cd.box[cd.selBox].ypos + TYOFF,
@@ -1669,7 +1669,7 @@ static void Select(int i, bool force) {
}
#endif
- iconArray[HL3] = ObjectTextOut(nullContext,
+ iconArray[HL3] = ObjectTextOut(
GetPlayfieldList(FIELD_STATUS), sedit, 0,
InvD[ino].inventoryX + cd.box[i].xpos + 2,
#ifdef JAPAN
@@ -2245,7 +2245,7 @@ static int WhichMenuBox(int curX, int curY, bool bSlides) {
* InvBoxes
*/
static void InvBoxes(bool InBody, int curX, int curY) {
- static int rotateIndex = -1;
+ static int rotateIndex = -1; // FIXME: Avoid non-const global vars
int index; // Box pointed to on this call
const FILM *pfilm;
@@ -2634,17 +2634,16 @@ static void AddBackground(OBJECT **rect, OBJECT **title, int extraH, int extraV,
return;
// Create text object using title string
- CoroContext dummyCoro;
if (textFrom == FROM_HANDLE) {
LoadStringRes(InvD[ino].hInvTitle, TextBufferAddr(), TBUFSZ);
- *title = ObjectTextOut(dummyCoro, GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
+ *title = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
InvD[ino].inventoryX + width/2, InvD[ino].inventoryY + M_TOFF,
GetTagFontHandle(), TXT_CENTRE);
assert(*title); // Inventory title string produced NULL text
MultiSetZPosition(*title, Z_INV_HTEXT);
} else if (textFrom == FROM_STRING && cd.ixHeading != NO_HEADING) {
LoadStringRes(configStrings[cd.ixHeading], TextBufferAddr(), TBUFSZ);
- *title = ObjectTextOut(dummyCoro, GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
+ *title = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
InvD[ino].inventoryX + width/2, InvD[ino].inventoryY + M_TOFF,
GetTagFontHandle(), TXT_CENTRE);
assert(*title); // Inventory title string produced NULL text
@@ -2668,7 +2667,7 @@ static void AddTitle(POBJECT *title, int extraH) {
// Create text object using title string
if (InvD[ino].hInvTitle != (SCNHANDLE)NO_HEADING) {
LoadStringRes(InvD[ino].hInvTitle, TextBufferAddr(), TBUFSZ);
- *title = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
+ *title = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
InvD[ino].inventoryX + (width/2)+NM_BG_POS_X, InvD[ino].inventoryY + NM_TOFF,
GetTagFontHandle(), TXT_CENTRE, 0);
assert(*title);
@@ -2749,14 +2748,14 @@ static void AddBox(int *pi, const int i) {
(!TinselV2 && (cd.box[i].ixText == USE_POINTER))) {
if (cd.box[i].boxText != NULL) {
if (cd.box[i].boxType == RGROUP) {
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS), cd.box[i].boxText, 0,
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), cd.box[i].boxText, 0,
#ifdef JAPAN
x + 2, y+2, GetTagFontHandle(), 0);
#else
x + 2, y + TYOFF, GetTagFontHandle(), 0);
#endif
} else {
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS), cd.box[i].boxText, 0,
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), cd.box[i].boxText, 0,
#ifdef JAPAN
// Note: it never seems to go here!
x + cd.box[i].w/2, y+2, GetTagFontHandle(), TXT_CENTRE);
@@ -2782,10 +2781,10 @@ static void AddBox(int *pi, const int i) {
}
if (TinselV2 && (cd.box[i].boxType == RGROUP))
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS), TextBufferAddr(),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), TextBufferAddr(),
0, x + 2, y + TYOFF, GetTagFontHandle(), 0, 0);
else
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0,
#ifdef JAPAN
x + cd.box[i].w/2, y+2, GetTagFontHandle(), TXT_CENTRE);
@@ -2842,7 +2841,7 @@ static void AddBox(int *pi, const int i) {
assert(cd.box[i].ixText != USE_POINTER);
LoadStringRes(configStrings[cd.box[i].ixText], TextBufferAddr(), TBUFSZ);
}
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0, x + MDTEXT_XOFF, y + MDTEXT_YOFF, GetTagFontHandle(), TXT_RIGHT);
MultiSetZPosition(iconArray[*pi], Z_INV_ITEXT);
*pi += 1;
@@ -2869,11 +2868,11 @@ static void AddBox(int *pi, const int i) {
}
if (cd.box[i].boxType == TOGGLE2) {
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0, x + cd.box[i].w / 2, y + TOG2_YOFF,
GetTagFontHandle(), TXT_CENTRE, 0);
} else {
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0, x + MDTEXT_XOFF, y + MDTEXT_YOFF,
GetTagFontHandle(), TXT_RIGHT, 0);
}
@@ -2908,7 +2907,7 @@ static void AddBox(int *pi, const int i) {
assert(cd.box[i].ixText != USE_POINTER);
LoadStringRes(configStrings[cd.box[i].ixText], TextBufferAddr(), TBUFSZ);
}
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0, x+MDTEXT_XOFF, y+MDTEXT_YOFF, GetTagFontHandle(), TXT_RIGHT);
MultiSetZPosition(iconArray[*pi], Z_INV_ITEXT);
*pi += 1;
@@ -2933,7 +2932,7 @@ static void AddBox(int *pi, const int i) {
// Stick in the text
assert(cd.box[i].textMethod == TM_INDEX);
LoadStringRes(SysString(cd.box[i].ixText), TextBufferAddr(), TBUFSZ);
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS),
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS),
TextBufferAddr(), 0, x + cd.box[i].w / 2, y + TOG2_YOFF,
GetTagFontHandle(), TXT_CENTRE, 0);
MultiSetZPosition(iconArray[*pi], Z_INV_ITEXT);
@@ -2945,7 +2944,7 @@ static void AddBox(int *pi, const int i) {
break;
LoadStringRes(LanguageDesc(displayedLanguage), TextBufferAddr(), TBUFSZ);
- iconArray[*pi] = ObjectTextOut(nullContext, GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
+ iconArray[*pi] = ObjectTextOut(GetPlayfieldList(FIELD_STATUS), TextBufferAddr(), 0,
x + cd.box[i].w / 2, y + ROT_YOFF, GetTagFontHandle(), TXT_CENTRE, 0);
MultiSetZPosition(iconArray[*pi], Z_INV_ITEXT);
*pi += 1;
@@ -3410,7 +3409,7 @@ enum InvCursorFN {IC_AREA, IC_DROP};
*/
static void InvCursor(InvCursorFN fn, int CurX, int CurY) {
static enum { IC_NORMAL, IC_DR, IC_UR, IC_TB, IC_LR,
- IC_INV, IC_UP, IC_DN } ICursor = IC_NORMAL; // FIXME: local static var
+ IC_INV, IC_UP, IC_DN } ICursor = IC_NORMAL; // FIXME: Avoid non-const global vars
int area; // The part of the window the cursor is over
bool restoreMain = false;
@@ -4279,7 +4278,7 @@ static int NearestSlideY(int fity) {
* y-movement during such a drag.
*/
static void SlideSlider(int y, SSFN fn) {
- static int newY = 0, lasti = 0; // FIXME: local static var
+ static int newY = 0, lasti = 0; // FIXME: Avoid non-const global vars
int gotoY, ati;
// Only do this if there's a slider
@@ -4333,7 +4332,7 @@ static void SlideSlider(int y, SSFN fn) {
* y-movement during such a drag.
*/
static void SlideCSlider(int y, SSFN fn) {
- static int newY = 0; // FIXME: local static var
+ static int newY = 0; // FIXME: Avoid non-const global vars
int gotoY;
int fc;
@@ -4400,7 +4399,7 @@ static void SlideCSlider(int y, SSFN fn) {
* and upon x-movement during such a drag.
*/
static void SlideMSlider(int x, SSFN fn) {
- static int newX = 0; // FIXME: local static var
+ static int newX = 0; // FIXME: Avoid non-const global vars
int gotoX;
int index, i;
@@ -5552,6 +5551,21 @@ extern void RegisterIcons(void *cptr, int num) {
memmove(destP, srcP, 12);
destP->attribute = 0;
}
+ } else if (TinselV1Mac) {
+ // Macintosh version has BE encoded resources, so the values need to be byte swapped
+ MEM_NODE *node = MemoryAllocFixed(numObjects * sizeof(INV_OBJECT));
+ assert(node);
+ invObjects = (INV_OBJECT *)MemoryDeref(node);
+ assert(invObjects);
+ INV_OBJECT *srcP = (INV_OBJECT *)cptr;
+ INV_OBJECT *destP = (INV_OBJECT *)invObjects;
+
+ for (int i = 0; i < num; ++i, ++destP, ++srcP) {
+ destP->id = FROM_BE_32(srcP->id);
+ destP->hIconFilm = FROM_BE_32(srcP->hIconFilm);
+ destP->hScript = FROM_BE_32(srcP->hScript);
+ destP->attribute = FROM_BE_32(srcP->attribute);
+ }
} else if (TinselV2) {
if (invFilms == NULL) {
// First time - allocate memory