mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 06:39:17 +00:00
LAB: Move static text loading to the Resource class
This commit is contained in:
parent
d565b10384
commit
01dffc75a1
@ -75,10 +75,6 @@ bool Alternate = false, ispal = false, noupdatediff = false, MainDisplay = true,
|
||||
extern const char *NewFileName; /* When ProcessRoom.c decides to change the filename
|
||||
of the current picture. */
|
||||
|
||||
extern char *LAMPONMSG, *TURNLEFT, *TURNRIGHT;
|
||||
extern char *GOFORWARDDIR, *NOPATH, *TAKEITEM, *USEONWHAT, *TAKEWHAT, *MOVEWHAT, *OPENWHAT, *CLOSEWHAT, *LOOKWHAT, *NOTHING, *USEMAP, *USEJOURNAL, *TURNLAMPON, *TURNLAMPOFF, *USEWHISKEY, *USEPITH, *USEHELMET;
|
||||
|
||||
|
||||
#define BUFFERSIZE 850000L
|
||||
|
||||
/* LAB: Labyrinth specific code for the special puzzles */
|
||||
@ -208,7 +204,7 @@ static void drawRoomMessage(uint16 CurInv, CloseDataPtr cptr) {
|
||||
if (Alternate) {
|
||||
if ((CurInv <= NumInv) && g_lab->_conditions->in(CurInv) && Inventory[CurInv].BInvName) {
|
||||
if ((CurInv == LAMPNUM) && g_lab->_conditions->in(LAMPON)) /* LAB: Labyrith specific */
|
||||
drawMessage(LAMPONMSG);
|
||||
drawStaticMessage(kTextLampOn);
|
||||
else if (Inventory[CurInv].Many > 1) {
|
||||
Common::String roomMessage = Common::String(Inventory[CurInv].name) + " (" + Common::String::format("%d", Inventory[CurInv].Many) + ")";
|
||||
drawMessage(roomMessage.c_str());
|
||||
@ -536,7 +532,7 @@ static const char *Test;
|
||||
static bool doUse(uint16 CurInv) {
|
||||
|
||||
if (CurInv == MAPNUM) { /* LAB: Labyrinth specific */
|
||||
drawMessage(USEMAP);
|
||||
drawStaticMessage(kTextUseMap);
|
||||
interfaceOff();
|
||||
stopDiff();
|
||||
CurFileName = " ";
|
||||
@ -548,7 +544,7 @@ static bool doUse(uint16 CurInv) {
|
||||
}
|
||||
|
||||
else if (CurInv == JOURNALNUM) { /* LAB: Labyrinth specific */
|
||||
drawMessage(USEJOURNAL);
|
||||
drawStaticMessage(kTextUseJournal);
|
||||
interfaceOff();
|
||||
stopDiff();
|
||||
CurFileName = " ";
|
||||
@ -562,10 +558,10 @@ static bool doUse(uint16 CurInv) {
|
||||
interfaceOff();
|
||||
|
||||
if (g_lab->_conditions->in(LAMPON)) {
|
||||
drawMessage(TURNLAMPOFF);
|
||||
drawStaticMessage(kTextTurnLampOff);
|
||||
g_lab->_conditions->exclElement(LAMPON);
|
||||
} else {
|
||||
drawMessage(TURNLAMPON);
|
||||
drawStaticMessage(kTextTurnLampOn);
|
||||
g_lab->_conditions->inclElement(LAMPON);
|
||||
}
|
||||
|
||||
@ -588,17 +584,17 @@ static bool doUse(uint16 CurInv) {
|
||||
|
||||
else if (CurInv == WHISKEYNUM) { /* LAB: Labyrinth specific */
|
||||
g_lab->_conditions->inclElement(USEDHELMET);
|
||||
drawMessage(USEWHISKEY);
|
||||
drawStaticMessage(kTextUseWhiskey);
|
||||
}
|
||||
|
||||
else if (CurInv == PITHHELMETNUM) { /* LAB: Labyrinth specific */
|
||||
g_lab->_conditions->inclElement(USEDHELMET);
|
||||
drawMessage(USEPITH);
|
||||
drawStaticMessage(kTextUsePith);
|
||||
}
|
||||
|
||||
else if (CurInv == HELMETNUM) { /* LAB: Labyrinth specific */
|
||||
g_lab->_conditions->inclElement(USEDHELMET);
|
||||
drawMessage(USEHELMET);
|
||||
drawStaticMessage(kTextUseHelmet);
|
||||
}
|
||||
|
||||
else
|
||||
@ -955,15 +951,15 @@ from_crumbs:
|
||||
perFlipGadget(ActionMode);
|
||||
|
||||
if (GadID == 0)
|
||||
drawMessage(TAKEWHAT);
|
||||
drawStaticMessage(kTextTakeWhat);
|
||||
else if (GadID == 1)
|
||||
drawMessage(MOVEWHAT);
|
||||
drawStaticMessage(kTextMoveWhat);
|
||||
else if (GadID == 2)
|
||||
drawMessage(OPENWHAT);
|
||||
drawStaticMessage(kTextOpenWhat);
|
||||
else if (GadID == 3)
|
||||
drawMessage(CLOSEWHAT);
|
||||
drawStaticMessage(kTextCloseWhat);
|
||||
else if (GadID == 4)
|
||||
drawMessage(LOOKWHAT);
|
||||
drawStaticMessage(kTextLookWhat);
|
||||
|
||||
WSDL_UpdateScreen();
|
||||
}
|
||||
@ -978,9 +974,9 @@ from_crumbs:
|
||||
|
||||
if ((GadID == 6) || (GadID == 8)) {
|
||||
if (GadID == 6)
|
||||
drawMessage(TURNLEFT);
|
||||
drawStaticMessage(kTextTurnLeft);
|
||||
else
|
||||
drawMessage(TURNRIGHT);
|
||||
drawStaticMessage(kTextTurnRight);
|
||||
|
||||
CurFileName = " ";
|
||||
|
||||
@ -1006,13 +1002,13 @@ from_crumbs:
|
||||
processArrow(&Direction, GadID - 6);
|
||||
|
||||
if (OldRoomNum != RoomNum) {
|
||||
drawMessage(GOFORWARDDIR);
|
||||
drawStaticMessage(kTextGoForward);
|
||||
g_lab->_roomsFound->inclElement(RoomNum); /* Potentially entered a new room */
|
||||
CurFileName = " ";
|
||||
ForceDraw = true;
|
||||
} else {
|
||||
DoBlack = true;
|
||||
drawMessage(NOPATH);
|
||||
drawStaticMessage(kTextNoPath);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1117,7 +1113,7 @@ from_crumbs:
|
||||
if (Old < 5)
|
||||
perFlipGadget(Old);
|
||||
|
||||
drawMessage(USEONWHAT);
|
||||
drawStaticMessage(kTextUseOnWhat);
|
||||
MainDisplay = true;
|
||||
|
||||
WSDL_UpdateScreen();
|
||||
@ -1211,13 +1207,13 @@ from_crumbs:
|
||||
if (doActionRule(MouseX, MouseY, ActionMode, RoomNum, &CPtr))
|
||||
CurFileName = NewFileName;
|
||||
else if (takeItem(MouseX, MouseY, &CPtr))
|
||||
drawMessage(TAKEITEM);
|
||||
drawStaticMessage(kTextTakeItem);
|
||||
else if (doActionRule(MouseX, MouseY, TAKEDEF - 1, RoomNum, &CPtr))
|
||||
CurFileName = NewFileName;
|
||||
else if (doActionRule(MouseX, MouseY, TAKE - 1, 0, &CPtr))
|
||||
CurFileName = NewFileName;
|
||||
else if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
} else if ((ActionMode == 1) /* Manipulate an object */ ||
|
||||
(ActionMode == 2) /* Open up a "door" */ ||
|
||||
(ActionMode == 3)) { /* Close a "door" */
|
||||
@ -1225,7 +1221,7 @@ from_crumbs:
|
||||
CurFileName = NewFileName;
|
||||
else if (!doActionRule(MouseX, MouseY, ActionMode, 0, &CPtr)) {
|
||||
if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
}
|
||||
} else if (ActionMode == 4) { /* Look at closeups */
|
||||
TempCPtr = CPtr;
|
||||
@ -1233,15 +1229,15 @@ from_crumbs:
|
||||
|
||||
if (CPtr == TempCPtr) {
|
||||
if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
} else if (TempCPtr->GraphicName) {
|
||||
if (*(TempCPtr->GraphicName)) {
|
||||
DoBlack = true;
|
||||
CPtr = TempCPtr;
|
||||
} else if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
} else if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
} else if ((ActionMode == 5) &&
|
||||
g_lab->_conditions->in(CurInv)) { /* Use an item on something else */
|
||||
if (doOperateRule(MouseX, MouseY, CurInv, &CPtr)) {
|
||||
@ -1250,7 +1246,7 @@ from_crumbs:
|
||||
if (!g_lab->_conditions->in(CurInv))
|
||||
decIncInv(&CurInv, false);
|
||||
} else if (MouseY < (VGAScaleY(149) + SVGACord(2)))
|
||||
drawMessage(NOTHING);
|
||||
drawStaticMessage(kTextNothing);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1356,8 +1352,7 @@ void LabEngine::go() {
|
||||
|
||||
initMouse();
|
||||
|
||||
mem = mem && initRoomBuffer() &&
|
||||
initLabText();
|
||||
mem = mem && initRoomBuffer();
|
||||
|
||||
if (!dointro)
|
||||
g_music->initMusic();
|
||||
@ -1399,7 +1394,6 @@ void LabEngine::go() {
|
||||
|
||||
closeFont(MsgFont);
|
||||
|
||||
freeLabText();
|
||||
freeRoomBuffer();
|
||||
freeBuffer();
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "lab/mouse.h"
|
||||
#include "lab/vga.h"
|
||||
#include "lab/text.h"
|
||||
#include "lab/resource.h"
|
||||
|
||||
namespace Lab {
|
||||
|
||||
@ -366,6 +367,9 @@ int32 longDrawMessage(const char *str) {
|
||||
|
||||
|
||||
|
||||
void drawStaticMessage(byte index) {
|
||||
drawMessage(g_resource->getStaticText((StaticText)index).c_str());
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* Draws a message to the message box. */
|
||||
|
@ -98,6 +98,7 @@ uint32 flowTextToMem(Image *DestIm, void *font, /* the TextAttr pointer */
|
||||
uint16 y1, uint16 x2, uint16 y2, const char *text); /* The text itself */
|
||||
|
||||
void drawMessage(const char *text);
|
||||
void drawStaticMessage(byte index);
|
||||
int32 longDrawMessage(const char *text);
|
||||
|
||||
/* The Wipes */
|
||||
|
@ -37,119 +37,6 @@ static uint32 SizeOfMemChunk;
|
||||
static char *BeginOfMemChunk, *CurPlace;
|
||||
|
||||
|
||||
char *LOWERFLOORS, *MIDDLEFLOORS, *UPPERFLOORS, *MEDMAZEFLOORS, *HEDGEMAZEFLOORS, *SURMAZEFLOORS, *CARNIVALFLOOR, *SURMAZEMSG, *FACINGNORTH, *FACINGEAST, *FACINGSOUTH, *FACINGWEST, *LAMPONMSG, *TURNLEFT, *TURNRIGHT, *GOFORWARDDIR, *NOPATH, *TAKEITEM, *SAVETEXT, *LOADTEXT, *BOOKMARKTEXT, *PERSONALTEXT, *DISKTEXT, *SAVEBOOK, *RESTOREBOOK, *SAVEFLASH, *RESTOREFLASH, *SAVEDISK, *RESTOREDISK, *NODISKINDRIVE, *WRITEPROTECTED, *SELECTDISK, *FORMATFLOPPY, *FORMATTING, *NOTHING, *USEONWHAT, *TAKEWHAT, *MOVEWHAT, *OPENWHAT, *CLOSEWHAT, *LOOKWHAT, *USEMAP, *USEJOURNAL, *TURNLAMPON, *TURNLAMPOFF, *USEWHISKEY, *USEPITH, *USEHELMET;
|
||||
|
||||
|
||||
#define LABTEXTFILE "Lab:Rooms/LabText"
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Gets the next string from the list, and changes the end of string marker */
|
||||
/* from an end of line to a null character. */
|
||||
/*****************************************************************************/
|
||||
static void setString(char **string) {
|
||||
*string = CurPlace;
|
||||
|
||||
while (*CurPlace != '\n')
|
||||
CurPlace++;
|
||||
|
||||
*CurPlace = 0;
|
||||
CurPlace++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Initializes everything for the Labyrinth text stuff */
|
||||
/*****************************************************************************/
|
||||
bool initLabText() {
|
||||
Common::File *file = openPartial(LABTEXTFILE);
|
||||
if (!file)
|
||||
return false;
|
||||
|
||||
SizeOfMemChunk = file->size();
|
||||
if (!SizeOfMemChunk || !(BeginOfMemChunk = (char *)calloc(SizeOfMemChunk, 1)))
|
||||
return false;
|
||||
|
||||
file->read(BeginOfMemChunk, SizeOfMemChunk);
|
||||
file->close();
|
||||
|
||||
CurPlace = BeginOfMemChunk;
|
||||
|
||||
setString(&LOWERFLOORS);
|
||||
setString(&MIDDLEFLOORS);
|
||||
setString(&UPPERFLOORS);
|
||||
setString(&MEDMAZEFLOORS);
|
||||
setString(&HEDGEMAZEFLOORS);
|
||||
setString(&SURMAZEFLOORS);
|
||||
setString(&CARNIVALFLOOR);
|
||||
setString(&SURMAZEMSG);
|
||||
|
||||
setString(&FACINGNORTH);
|
||||
setString(&FACINGEAST);
|
||||
setString(&FACINGSOUTH);
|
||||
setString(&FACINGWEST);
|
||||
|
||||
setString(&LAMPONMSG);
|
||||
|
||||
setString(&TURNLEFT);
|
||||
setString(&TURNRIGHT);
|
||||
setString(&GOFORWARDDIR);
|
||||
setString(&NOPATH);
|
||||
setString(&TAKEITEM);
|
||||
|
||||
setString(&SAVETEXT);
|
||||
setString(&LOADTEXT);
|
||||
setString(&BOOKMARKTEXT);
|
||||
setString(&PERSONALTEXT);
|
||||
setString(&DISKTEXT);
|
||||
|
||||
setString(&SAVEBOOK);
|
||||
setString(&RESTOREBOOK);
|
||||
setString(&SAVEFLASH);
|
||||
setString(&RESTOREFLASH);
|
||||
setString(&SAVEDISK);
|
||||
setString(&RESTOREDISK);
|
||||
setString(&NODISKINDRIVE);
|
||||
setString(&WRITEPROTECTED);
|
||||
setString(&SELECTDISK);
|
||||
|
||||
setString(&FORMATFLOPPY);
|
||||
setString(&FORMATTING);
|
||||
|
||||
setString(&NOTHING);
|
||||
setString(&USEONWHAT);
|
||||
setString(&TAKEWHAT);
|
||||
setString(&MOVEWHAT);
|
||||
setString(&OPENWHAT);
|
||||
setString(&CLOSEWHAT);
|
||||
setString(&LOOKWHAT);
|
||||
|
||||
setString(&USEMAP);
|
||||
setString(&USEJOURNAL);
|
||||
setString(&TURNLAMPON);
|
||||
setString(&TURNLAMPOFF);
|
||||
setString(&USEWHISKEY);
|
||||
setString(&USEPITH);
|
||||
setString(&USEHELMET);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Frees the memory from the Labyrinth text stuff. */
|
||||
/*****************************************************************************/
|
||||
void freeLabText() {
|
||||
if (SizeOfMemChunk && BeginOfMemChunk)
|
||||
free(BeginOfMemChunk);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Decrypts a chunk of text. */
|
||||
/*****************************************************************************/
|
||||
|
@ -616,47 +616,42 @@ static void drawMap(uint16 CurRoom, uint16 CurMsg, uint16 Floor, bool fadeout, b
|
||||
if (Floor == LOWERFLOOR) {
|
||||
if (onFloor(SURMAZEFLOOR))
|
||||
drawImage(Maze, mapScaleX(538), mapScaleY(277));
|
||||
}
|
||||
|
||||
else if (Floor == MIDDLEFLOOR) {
|
||||
} else if (Floor == MIDDLEFLOOR) {
|
||||
if (onFloor(CARNIVAL))
|
||||
drawImage(Maze, mapScaleX(358), mapScaleY(72));
|
||||
|
||||
if (onFloor(MEDMAZEFLOOR))
|
||||
drawImage(Maze, mapScaleX(557), mapScaleY(325));
|
||||
}
|
||||
|
||||
else if (Floor == UPPERFLOOR) {
|
||||
} else if (Floor == UPPERFLOOR) {
|
||||
if (onFloor(HEDGEMAZEFLOOR))
|
||||
drawImage(HugeMaze, mapScaleX(524), mapScaleY(97));
|
||||
}
|
||||
|
||||
else if (Floor == SURMAZEFLOOR) {
|
||||
flowText(MsgFont, 0, 7, 0, true, true, true, true, mapScaleX(360), 0, mapScaleX(660), mapScaleY(450), SURMAZEMSG);
|
||||
} else if (Floor == SURMAZEFLOOR) {
|
||||
sptr = (char *)g_resource->getStaticText(kTextSurmazeMessage).c_str();
|
||||
flowText(MsgFont, 0, 7, 0, true, true, true, true, mapScaleX(360), 0, mapScaleX(660), mapScaleY(450), sptr);
|
||||
}
|
||||
|
||||
|
||||
switch (Floor) {
|
||||
case LOWERFLOOR:
|
||||
sptr = LOWERFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextLowerFloor).c_str();
|
||||
break;
|
||||
case MIDDLEFLOOR:
|
||||
sptr = MIDDLEFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextMiddleFloor).c_str();
|
||||
break;
|
||||
case UPPERFLOOR:
|
||||
sptr = UPPERFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextUpperFloor).c_str();
|
||||
break;
|
||||
case MEDMAZEFLOOR:
|
||||
sptr = MEDMAZEFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextMedMazeFloor).c_str();
|
||||
break;
|
||||
case HEDGEMAZEFLOOR:
|
||||
sptr = HEDGEMAZEFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextHedgeMazeFloor).c_str();
|
||||
break;
|
||||
case SURMAZEFLOOR:
|
||||
sptr = SURMAZEFLOORS;
|
||||
sptr = (char *)g_resource->getStaticText(kTextSurMazeFloor).c_str();
|
||||
break;
|
||||
case CARNIVAL:
|
||||
sptr = CARNIVALFLOOR;
|
||||
sptr = (char *)g_resource->getStaticText(kTextCarnivalFloor).c_str();
|
||||
break;
|
||||
default:
|
||||
sptr = NULL;
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "lab/labfun.h"
|
||||
#include "lab/parsetypes.h"
|
||||
#include "lab/parsefun.h"
|
||||
#include "lab/resource.h"
|
||||
#include "lab/timing.h"
|
||||
#include "lab/diff.h"
|
||||
#include "lab/vga.h"
|
||||
@ -55,7 +56,6 @@ extern bool DoNotDrawMessage, IsBM, noupdatediff, QuitLab, MusicOn, DoBlack, Lon
|
||||
extern char diffcmap[256 * 3];
|
||||
extern const char *CurFileName;
|
||||
extern CloseDataPtr CPtr;
|
||||
extern char *FACINGNORTH, *FACINGEAST, *FACINGSOUTH, *FACINGWEST;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Generates a random number. */
|
||||
@ -195,53 +195,28 @@ char *getPictName(CloseDataPtr *LCPtr) {
|
||||
/* Draws the current direction to the screen. */
|
||||
/*****************************************************************************/
|
||||
void drawDirection(CloseDataPtr LCPtr) {
|
||||
char Message[250];
|
||||
|
||||
if (LCPtr != NULL) {
|
||||
if (LCPtr->Message) {
|
||||
if (LCPtr != NULL && LCPtr->Message) {
|
||||
drawMessage(LCPtr->Message);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Message[0] = '\0';
|
||||
Common::String message;
|
||||
|
||||
if (Rooms[RoomNum].RoomMsg) {
|
||||
strcpy(Message, Rooms[RoomNum].RoomMsg);
|
||||
strcat(Message, ", ");
|
||||
message += Rooms[RoomNum].RoomMsg;
|
||||
message += ", ";
|
||||
}
|
||||
|
||||
if (Direction == NORTH)
|
||||
strcat(Message, FACINGNORTH);
|
||||
message += g_resource->getStaticText(kTextFacingNorth);
|
||||
else if (Direction == EAST)
|
||||
strcat(Message, FACINGEAST);
|
||||
message += g_resource->getStaticText(kTextFacingEast);
|
||||
else if (Direction == SOUTH)
|
||||
strcat(Message, FACINGSOUTH);
|
||||
message += g_resource->getStaticText(kTextFacingSouth);
|
||||
else if (Direction == WEST)
|
||||
strcat(Message, FACINGWEST);
|
||||
message += g_resource->getStaticText(kTextFacingWest);
|
||||
|
||||
drawMessage(Message);
|
||||
}
|
||||
|
||||
void getRoomMessage(int MyRoomNum, int MyDirection, char *msg) {
|
||||
getViewData(MyRoomNum, MyDirection);
|
||||
|
||||
msg[0] = '\0';
|
||||
|
||||
if (Rooms[MyRoomNum].RoomMsg) {
|
||||
strcpy(msg, Rooms[MyRoomNum].RoomMsg);
|
||||
strcat(msg, ", ");
|
||||
}
|
||||
|
||||
if (MyDirection == NORTH)
|
||||
strcat(msg, FACINGNORTH);
|
||||
else if (MyDirection == EAST)
|
||||
strcat(msg, FACINGEAST);
|
||||
else if (MyDirection == SOUTH)
|
||||
strcat(msg, FACINGSOUTH);
|
||||
else if (MyDirection == WEST)
|
||||
strcat(msg, FACINGWEST);
|
||||
drawMessage(message.c_str());
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -102,7 +102,7 @@ public:
|
||||
bool readInventory(const char *fileName);
|
||||
bool readViews(uint16 roomNum);
|
||||
TextFont *getFont(const char *filename);
|
||||
Common::String getStaticText(byte index) const { return _staticText[index + 1]; }
|
||||
Common::String getStaticText(byte index) const { return _staticText[index]; }
|
||||
|
||||
private:
|
||||
Common::File *openDataFile(const char * fileName, uint32 fileHeader);
|
||||
|
Loading…
Reference in New Issue
Block a user