diff options
Diffstat (limited to 'engines/tinsel/dialogs.cpp')
-rw-r--r-- | engines/tinsel/dialogs.cpp | 58 |
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 |