[Scummvm-git-logs] scummvm master -> 4c36374d34d7f26fb8bfcfd7b25f91cffa75f27d
a-yyg
76591232+a-yyg at users.noreply.github.com
Fri Jul 16 21:13:10 UTC 2021
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d3c4d62ec4 SAGA2: Fix global constructors in intrface.h
16c1879e58 SAGA2: Remove a few original mouse routines
7561607213 SAGA2: Make pointer behavior replicate original
34fa087b3f SAGA2: Initialize gPixelMap properly
7888757dad SAGA2: Move pointer to Saga2Engine
4c36374d34 SAGA2: Fix global constructor warnigns in mouseimg.cpp
Commit: d3c4d62ec463268e49fea0016106569a6fa772ad
https://github.com/scummvm/scummvm/commit/d3c4d62ec463268e49fea0016106569a6fa772ad
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Fix global constructors in intrface.h
Changed paths:
engines/saga2/button.h
engines/saga2/intrface.cpp
engines/saga2/intrface.h
engines/saga2/playmode.cpp
engines/saga2/saga2.h
diff --git a/engines/saga2/button.h b/engines/saga2/button.h
index 25e886b714..aaeb75de27 100644
--- a/engines/saga2/button.h
+++ b/engines/saga2/button.h
@@ -42,6 +42,14 @@ class hResContext;
Misc. Structs and classes
* ======================================================================= */
+struct StaticTextPallete {
+ uint8 dlPen;
+ uint8 urPen;
+ uint8 inPen;
+ uint8 dlHilitePen;
+ uint8 urHilitePen;
+ uint8 inHilitePen;
+};
struct textPallete {
uint8 dlPen;
@@ -60,6 +68,15 @@ struct textPallete {
set(dlP, urP, inP, dlHP, urHP, inHP);
}
+ textPallete(StaticTextPallete pal) {
+ dlPen = pal.dlPen;
+ urPen = pal.urPen;
+ inPen = pal.inPen;
+ dlHilitePen = pal.dlHilitePen;
+ urHilitePen = pal.urHilitePen;
+ inHilitePen = pal.inHilitePen;
+ }
+
void set(uint8 dlP, uint8 urP, uint8 inP, uint8 dlHP, uint8 urHP, uint8 inHP) {
dlPen = dlP;
urPen = urP;
diff --git a/engines/saga2/intrface.cpp b/engines/saga2/intrface.cpp
index 27fda6ead0..88f06da98f 100644
--- a/engines/saga2/intrface.cpp
+++ b/engines/saga2/intrface.cpp
@@ -380,7 +380,7 @@ static const StaticRect phiBtnRect = {531, 451, 44, 9};
static const StaticRect kevBtnRect = {580, 451, 44, 9};
-textPallete genericTextPal(9 + 15, 20, 14, 11, 23, 17);
+StaticTextPallete genericTextPal = {9 + 15, 20, 14, 11, 23, 17};
/* uint8 dlPen;
uint8 urPen;
uint8 inPen;
@@ -629,7 +629,7 @@ CStatusLine::CStatusLine(gPanelList &list,
const char *msg,
gFont *font,
int16 textPos,
- textPallete &pal,
+ textPallete pal,
int32 /*frameTime*/,
int16 ident,
AppFunc *cmd) :
@@ -713,11 +713,6 @@ void CStatusLine::clear(void) {
queueHead = queueTail = 0;
}
-/* ===================================================================== *
- CMassWeightInterface: Static list of indicators
- * ===================================================================== */
-Common::List<CMassWeightIndicator *> CMassWeightIndicator::indList;
-
/* ===================================================================== *
CMassWeightInterface: mass and weight allowence indicators
* ===================================================================== */
@@ -794,11 +789,11 @@ CMassWeightIndicator::CMassWeightIndicator(gPanelList *panel, const Point16 &pos
containerObject = nullptr;
}
- indList.push_back(this);
+ g_vm->_indList.push_back(this);
}
CMassWeightIndicator::~CMassWeightIndicator(void) {
- indList.remove(this);
+ g_vm->_indList.remove(this);
unloadImageRes(pieIndImag, numPieIndImages);
g_vm->_imageCache->releaseImage(massBulkImag);
@@ -834,7 +829,7 @@ void CMassWeightIndicator::recalculate(void) {
**/
void CMassWeightIndicator::update(void) {
if (bRedraw == true) {
- for (Common::List<CMassWeightIndicator *>::iterator it = indList.begin(); it != indList.end(); ++it) {
+ for (Common::List<CMassWeightIndicator *>::iterator it = g_vm->_indList.begin(); it != g_vm->_indList.end(); ++it) {
(*it)->recalculate();
(*it)->invalidate();
}
diff --git a/engines/saga2/intrface.h b/engines/saga2/intrface.h
index d64e96e18c..cb35821e7b 100644
--- a/engines/saga2/intrface.h
+++ b/engines/saga2/intrface.h
@@ -239,7 +239,7 @@ private:
public:
CStatusLine(gPanelList &, const Rect16 &, const char *, gFont *,
- int16, textPallete &, int32, int16, AppFunc *cmd = NULL);
+ int16, textPallete, int32, int16, AppFunc *cmd = NULL);
~CStatusLine(void);
void setLine(char *, uint32 frameTime);
@@ -293,7 +293,6 @@ public:
class CMassWeightIndicator {
private:
- static Common::List<CMassWeightIndicator *> indList;
GameObject *containerObject;
public:
diff --git a/engines/saga2/playmode.cpp b/engines/saga2/playmode.cpp
index d4f78fdb0d..c0b7608c14 100644
--- a/engines/saga2/playmode.cpp
+++ b/engines/saga2/playmode.cpp
@@ -53,7 +53,7 @@ extern gToolBase G_BASE;
extern APPFUNC(cmdClickSpeech);
extern PlayerActor playerList[]; // a list of the players (brothers)
-extern textPallete genericTextPal;
+extern StaticTextPallete genericTextPal;
APPFUNC(cmdHealthStar);
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 4b4290c067..1ad49f6c08 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -52,6 +52,7 @@ class ActorAppearance;
class PathRequest;
class MotionTask;
class MotionTaskList;
+class CMassWeightIndicator;
class GrabInfo;
class CImageCache;
class SensorList;
@@ -124,6 +125,7 @@ public:
Common::List<SensorList *> _sensorListList;
Common::List<Sensor *> _sensorList;
Common::List<MotionTask *>::iterator _nextMT;
+ Common::List<CMassWeightIndicator *> _indList;
Common::List<int> _platformLRU;
BandList *_bandList;
MotionTaskList *_mTaskList;
Commit: 16c1879e58e0cb34c038a4f2d86f5175b73ead67
https://github.com/scummvm/scummvm/commit/16c1879e58e0cb34c038a4f2d86f5175b73ead67
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Remove a few original mouse routines
Changed paths:
engines/saga2/panel.h
engines/saga2/tile.cpp
engines/saga2/tromode.cpp
diff --git a/engines/saga2/panel.h b/engines/saga2/panel.h
index 125213be69..f48334d7a6 100644
--- a/engines/saga2/panel.h
+++ b/engines/saga2/panel.h
@@ -67,8 +67,6 @@ class gWindow;
Input dispatching functions
* ===================================================================== */
-void HandleMouse(gMouseState &mouse);
-void HandleKeyStroke(int key, int qual);
void HandleTimerTick(long newTick);
void EventLoop(bool &running, bool modal = false);
diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index 1ae0df3049..817b4ef054 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -158,7 +158,6 @@ void drawFloatingWindows(gPort &, const Point16 &, const Rect16 &clip);
* ===================================================================== */
extern gMousePointer pointer; // the actual pointer
-extern gMouseState mouseState;
extern gPort backPort;
extern int16 worldCount; // Used as map count as well
@@ -2835,64 +2834,6 @@ inline void drawMetaTiles(void) {
}
}
-/* ===================================================================== *
- Mouse Pointer Fixup Routine
- * ===================================================================== */
-
-// This routine draws an image of the mouse pointer onto the
-// back buffer, and also updates the mouse pointer's backsave
-// buffer with the new data underneath it.
-//
-// Since the blitting of the backsave buffer takes so long,
-// it would cause annoying flicker to have to hide the mouse
-// pointer during the blit. Instead, we go ahead and over-write
-// the image of the mouse pointer with the image of the new
-// mouse pointer.
-
-inline void drawTileMousePointer(void) {
- gPixelMap *currentPtr,
- *saveMap;
- Point16 offset;
- Rect16 saveExtent,
- blitExtent;
-
- // Get the image of the pointer and the hotspot offset
- currentPtr = pointer.getImage(offset);
-
- // If pointer exists, and is in a visible state
- if (currentPtr && pointer.isShown()) {
- // Get address of pointer's backsave rect
- saveMap = pointer.getSaveMap(saveExtent);
-
- // If the pointer overlaps the tile scrolling area
- if (saveExtent.overlap(Rect16(kTileRectX, kTileRectY, kTileRectWidth, kTileRectHeight))) {
- // get the intersecting area
- blitExtent = intersect(saveExtent, Rect16(kTileRectX, kTileRectY, kTileRectWidth, kTileRectHeight));
-
- mouseSavePort.setMap(saveMap);
-
- // Blit the tile data into the backsave buffer
- mouseSavePort.bltPixels(
- tileDrawMap,
- blitExtent.x - kTileRectX + fineScroll.x,
- blitExtent.y - kTileRectY + fineScroll.y,
- blitExtent.x - saveExtent.x,
- blitExtent.y - saveExtent.y,
- blitExtent.width,
- blitExtent.height);
-
- // Blit the mouse pointer onto the tile map
- int x, y;
-
- x = mouseState.pos.x + offset.x + fineScroll.x - kTileRectX;
- y = mouseState.pos.y + offset.y + fineScroll.y - kTileRectY;
-
-// if ( x >=0 && y >=0 )
- TBlit(&tileDrawMap, currentPtr, x, y);
- }
- }
-}
-
/* ===================================================================== *
Tile masking
* ===================================================================== */
@@ -4497,10 +4438,6 @@ void drawMainDisplay(void) {
drawFloatingWindows(backPort,
Point16(kTileRectX - fineScroll.x, kTileRectY),
rect);
-
- // Render the image of the mouse pointer on everything else
- drawTileMousePointer();
-
// Blit it all onto the screen
drawPage->writePixels(
rect,
diff --git a/engines/saga2/tromode.cpp b/engines/saga2/tromode.cpp
index fb76e88fe0..36a28dff09 100644
--- a/engines/saga2/tromode.cpp
+++ b/engines/saga2/tromode.cpp
@@ -52,7 +52,6 @@ namespace Saga2 {
#define VIDEO_Y 0
extern bool gameRunning;
-extern gMouseState prevState;
extern gMousePointer pointer;
extern MouseExtState mouseQueue[];
extern bool allPlayerActorsDead;
Commit: 7561607213f257ff5a7aca2945db961d6458c2d1
https://github.com/scummvm/scummvm/commit/7561607213f257ff5a7aca2945db961d6458c2d1
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Make pointer behavior replicate original
Changed paths:
engines/saga2/gpointer.cpp
diff --git a/engines/saga2/gpointer.cpp b/engines/saga2/gpointer.cpp
index 5f21818ff5..5e9de978fa 100644
--- a/engines/saga2/gpointer.cpp
+++ b/engines/saga2/gpointer.cpp
@@ -64,7 +64,11 @@ bool gMousePointer::init(Point16 pointerLimits) {
// Private routine to draw the mouse pointer image
void gMousePointer::draw(void) {
- CursorMan.showMouse(true);
+ if (hideCount < 1) {
+ CursorMan.showMouse(true);
+ shown = 1;
+ } else
+ shown = 0;
}
// Private routine to restore the mouse pointer image
@@ -72,9 +76,7 @@ void gMousePointer::restore(void) {
if (shown) {
// blit from the saved map to the current position.
- videoPort->displayPage->writePixels(saveExtent,
- saveMap.data,
- saveMap.size.x);
+ CursorMan.showMouse(false);
// A height of zero means backsave is invalid
@@ -108,7 +110,6 @@ void gMousePointer::show(gPort &port, Rect16 r) {
if (saveExtent.overlap(r)) {
if (--hideCount == 0) {
draw();
- CursorMan.showMouse(true);
}
}
Commit: 34fa087b3fcfedf333cf5c7d7694157e3f75f95b
https://github.com/scummvm/scummvm/commit/34fa087b3fcfedf333cf5c7d7694157e3f75f95b
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Initialize gPixelMap properly
Changed paths:
engines/saga2/gdraw.h
diff --git a/engines/saga2/gdraw.h b/engines/saga2/gdraw.h
index c2a3102cf1..a5e0fccf74 100644
--- a/engines/saga2/gdraw.h
+++ b/engines/saga2/gdraw.h
@@ -50,6 +50,8 @@ public:
Extent16 size; // image size
uint8 *data;
+ gPixelMap() : data(nullptr) {}
+
// Compute the number of bytes in the pixel map
int32 bytes(void) {
return size.x * size.y;
Commit: 7888757dad55589e93bd6b4733be988841817af2
https://github.com/scummvm/scummvm/commit/7888757dad55589e93bd6b4733be988841817af2
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Move pointer to Saga2Engine
Changed paths:
engines/saga2/automap.cpp
engines/saga2/button.cpp
engines/saga2/display.cpp
engines/saga2/document.cpp
engines/saga2/floating.cpp
engines/saga2/fta.h
engines/saga2/grabinfo.cpp
engines/saga2/grequest.cpp
engines/saga2/gtextbox.cpp
engines/saga2/intrface.cpp
engines/saga2/main.cpp
engines/saga2/mouseimg.cpp
engines/saga2/msgbox.cpp
engines/saga2/panel.cpp
engines/saga2/saga2.cpp
engines/saga2/saga2.h
engines/saga2/tile.cpp
engines/saga2/towerfta.cpp
engines/saga2/tromode.cpp
engines/saga2/videobox.cpp
diff --git a/engines/saga2/automap.cpp b/engines/saga2/automap.cpp
index 838b10d489..3b279a4c52 100644
--- a/engines/saga2/automap.cpp
+++ b/engines/saga2/automap.cpp
@@ -388,7 +388,7 @@ void CAutoMap::drawClipped(
WindowDecoration *dec;
int16 i;
- pointer.hide();
+ g_vm->_pointer->hide();
// For each "decorative panel" within the frame of the window
@@ -418,7 +418,7 @@ void CAutoMap::drawClipped(
sumMapArea.width, sumMapArea.height);
// show the cursor again
- pointer.show();
+ g_vm->_pointer->show();
}
// ------------------------------------------------------------------------
diff --git a/engines/saga2/button.cpp b/engines/saga2/button.cpp
index 2536cabb23..ca74efa473 100644
--- a/engines/saga2/button.cpp
+++ b/engines/saga2/button.cpp
@@ -208,11 +208,11 @@ void gCompImage::draw(void) {
Rect16 rect = window.getExtent();
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port,
Point16(0, 0),
Rect16(0, 0, rect.width, rect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
void *gCompImage::getCurrentCompImage(void) {
@@ -575,9 +575,9 @@ void gCompButton::draw(void) {
Rect16 rect = window.getExtent();
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port, Point16(0, 0), Rect16(0, 0, rect.width, rect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
void *gCompButton::getCurrentCompImage(void) {
@@ -849,9 +849,9 @@ void gSlider::draw(void) {
Point16 offset = Point16(0, 0);
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port, offset, Rect16(0, 0, imageRect.width, imageRect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
diff --git a/engines/saga2/display.cpp b/engines/saga2/display.cpp
index fd85fd9c1b..b2681ab336 100644
--- a/engines/saga2/display.cpp
+++ b/engines/saga2/display.cpp
@@ -91,15 +91,15 @@ void niceScreenStartup(void) {
disablePaletteChanges();
mainEnable();
closeLoadMode();
- pointer.move(Point16(320, 240));
- //pointer.hide();
+ g_vm->_pointer->move(Point16(320, 240));
+ //g_vm->_pointer->hide();
enablePaletteChanges();
displayUpdate();
dayNightUpdate();
fadeUp();
- pointer.manditoryShow(); // hide mouse pointer
+ g_vm->_pointer->manditoryShow(); // hide mouse pointer
reDrawScreen();
- //pointer.show();
+ //g_vm->_pointer->show();
updateAllUserControls();
reDrawScreen();
g_vm->_mouseInfo->replaceObject();
diff --git a/engines/saga2/document.cpp b/engines/saga2/document.cpp
index 863720ba99..68df8d7870 100644
--- a/engines/saga2/document.cpp
+++ b/engines/saga2/document.cpp
@@ -629,13 +629,13 @@ void CDocument::renderText(void) {
port.setMode(drawModeMatte);
- pointer.hide();
+ g_vm->_pointer->hide();
port.bltPixels(*tPort.map, 0, 0,
bltRect.x, bltRect.y,
bltRect.width, bltRect.height);
- pointer.show();
+ g_vm->_pointer->show();
DisposeTempPort(tPort); // dispose of temporary pixelmap
}
@@ -645,9 +645,9 @@ void CDocument::drawClipped(
gPort &port,
const Point16 &offset,
const Rect16 &clipRect) {
- pointer.hide();
+ g_vm->_pointer->hide();
ModalWindow::drawClipped(port, offset, clipRect);
- pointer.show();
+ g_vm->_pointer->show();
}
void CDocument::draw(void) { // redraw the window
diff --git a/engines/saga2/floating.cpp b/engines/saga2/floating.cpp
index b6669c915c..62af863240 100644
--- a/engines/saga2/floating.cpp
+++ b/engines/saga2/floating.cpp
@@ -249,10 +249,10 @@ void DecoratedWindow::removeDecorations(void) {
// Redraw all of the decorations, on the main port only...
void DecoratedWindow::draw(void) { // redraw the window
- pointer.hide();
+ g_vm->_pointer->hide();
if (displayEnabled())
drawClipped(g_vm->_mainPort, Point16(0, 0), extent);
- pointer.show();
+ g_vm->_pointer->show();
}
// Return true if window floats above animated are
@@ -416,10 +416,10 @@ void gButton::draw(void) {
gPort &port = window.windowPort;
Rect16 rect = window.getExtent();
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
if (displayEnabled())
drawClipped(port, Point16(0, 0), Rect16(0, 0, rect.width, rect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
@@ -686,11 +686,11 @@ void updateWindowSection(const Rect16 &r) {
// Now, blit the temporary bitmap to the main screen.
g_vm->_mainPort.setMode(drawModeReplace);
- pointer.hide(g_vm->_mainPort, clip);
+ g_vm->_pointer->hide(g_vm->_mainPort, clip);
g_vm->_mainPort.bltPixels(tempMap,
0, 0,
clip.x, clip.y, clip.width, clip.height);
- pointer.show(g_vm->_mainPort, clip);
+ g_vm->_pointer->show(g_vm->_mainPort, clip);
g_vm->_mainPort.setMode(drawModeMatte);
delete[] tempMap.data;
}
diff --git a/engines/saga2/fta.h b/engines/saga2/fta.h
index b2090ddecb..52e13cca29 100644
--- a/engines/saga2/fta.h
+++ b/engines/saga2/fta.h
@@ -226,8 +226,6 @@ extern int16 extendedThreadLevel;
extern bool gameRunning; // true while game running
-extern gMousePointer pointer; // the mouse pointer
-
extern volatile int32 gameTime; // current timer
// Resource files
diff --git a/engines/saga2/grabinfo.cpp b/engines/saga2/grabinfo.cpp
index 51270da366..8fc75cf6be 100644
--- a/engines/saga2/grabinfo.cpp
+++ b/engines/saga2/grabinfo.cpp
@@ -158,9 +158,9 @@ uint8 GrabInfo::setIntent(uint8 in) {
// If intention isn't being changed, return immediately
if (intention != (Intent)in) {
// Intention has changed to None
- if (in == (uint8)None && intention != None) pointer.hide();
+ if (in == (uint8)None && intention != None) g_vm->_pointer->hide();
// Intention has changed from None
- else if (in != (uint8)None && intention == None) pointer.show();
+ else if (in != (uint8)None && intention == None) g_vm->_pointer->show();
intention = (Intent)in;
// Set new cursor
diff --git a/engines/saga2/grequest.cpp b/engines/saga2/grequest.cpp
index 3f58da74c2..b38d39eeea 100644
--- a/engines/saga2/grequest.cpp
+++ b/engines/saga2/grequest.cpp
@@ -34,7 +34,6 @@ namespace Saga2 {
extern gFont *mainFont;
extern vDisplayPage *drawPage;
extern gToolBase G_BASE;
-extern gMousePointer pointer; // the actual pointer
const int maxLines = 16,
maxButtons = 16,
diff --git a/engines/saga2/gtextbox.cpp b/engines/saga2/gtextbox.cpp
index 57d25fa6ba..3c6d2908e1 100644
--- a/engines/saga2/gtextbox.cpp
+++ b/engines/saga2/gtextbox.cpp
@@ -42,7 +42,6 @@ StaticRect editBaseRect = {7, 45, 314, 111};
// These are all things that need to be moved to their proper places.
extern gFont *mainFont;
-extern gMousePointer pointer; // the actual pointer
//-----------------------------------------------------------------------
// init
@@ -809,11 +808,11 @@ bool gTextBox::keyStroke(gPanelMessage &msg) {
// Now, redraw the contents.
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawContents(); // draw the string
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
return true;
}
@@ -863,14 +862,14 @@ void gTextBox::handleTimerTick(int32 tick) {
if (tick - blinkStart > blinkTime) {
gPort &port = window.windowPort;
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
port.setPenMap(port.penMap);
port.setStyle(0);
port.setColor(blinkState ? blinkColor0 : blinkColor1);
port.fillRect(editRect.x + blinkX - ((blinkWide + 1) / 2), editRect.y + 1, blinkWide, editRect.height - 1);
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
blinkState = !blinkState;
blinkStart = tick;
@@ -1011,7 +1010,7 @@ void gTextBox::drawClipped(void) {
WriteStatusF(11, "Entry %d[%d] (%d:%d)", index, currentLen[index], cursorPos, anchorPos);
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
if (fullRedraw) {
drawAll(port, Point16(0, 0), Rect16(0, 0, rect.width, rect.height));
@@ -1027,7 +1026,7 @@ void gTextBox::drawClipped(void) {
drawAll(port, Point16(0, 0), Rect16(0, 0, rect.width, rect.height));
}
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
diff --git a/engines/saga2/intrface.cpp b/engines/saga2/intrface.cpp
index 88f06da98f..3bdc324d15 100644
--- a/engines/saga2/intrface.cpp
+++ b/engines/saga2/intrface.cpp
@@ -469,9 +469,9 @@ void CPlaqText::draw(void) {
port.setMode(drawModeMatte);
port.setFont(buttonFont);
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port, Point16(0, 0), Rect16(0, 0, rect.width, rect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
// reset the old font
port.setFont(oldFont);
@@ -969,9 +969,9 @@ void CManaIndicator::draw(void) {
// setup the port
port.setMode(drawModeMatte);
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port, Point16(0, 0), Rect16(0, 0, xSize, ySize));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
@@ -1003,7 +1003,7 @@ void CManaIndicator::drawClipped(gPort &port,
}
// otherwise continue with the update
- pointer.hide();
+ g_vm->_pointer->hide();
// create a temporary gPort to blit stuff to
gPort tempPort;
@@ -1123,7 +1123,7 @@ void CManaIndicator::drawClipped(gPort &port,
if (tempMap.data)
delete[] tempMap.data;
- pointer.show();
+ g_vm->_pointer->show();
}
bool CManaIndicator::needUpdate(PlayerActor *player) {
diff --git a/engines/saga2/main.cpp b/engines/saga2/main.cpp
index c10cdfeeb5..ea1a40e784 100644
--- a/engines/saga2/main.cpp
+++ b/engines/saga2/main.cpp
@@ -73,11 +73,7 @@ bool cliSpeechText = false;
bool cliDrawInv = false;
uint32 cliMemory = 0;
-// User-interface variables
-gMouseState mouseState;
-
// Display variables
-gMousePointer pointer(g_vm->_mainPort); // the actual pointer
BackWindow *mainWindow; // main window...
// Memory allocation heap
@@ -419,19 +415,6 @@ bool readCommandLine(int argc, char *argv[]) {
/* */
/********************************************************************/
-// ------------------------------------------------------------------------
-// Mouse handling
-
-gMouseState prevState;
-MouseExtState mouseQueue[64];
-
-int16 queueIn = 0,
- queueOut = 0;
-
-inline int BUMP(int x) {
- return (x + 1) & 63;
-}
-
// ------------------------------------------------------------------------
// clears any queued input (mouse AND keyboard)
void resetInputDevices(void) {
diff --git a/engines/saga2/mouseimg.cpp b/engines/saga2/mouseimg.cpp
index 7a6fddfd7b..4c7cb8fd92 100644
--- a/engines/saga2/mouseimg.cpp
+++ b/engines/saga2/mouseimg.cpp
@@ -228,9 +228,9 @@ void setupMousePointer(void) {
imageOffset.y = 0;
// Set the combined image as the new mouse cursor
- pointer.hide();
- pointer.setImage(combinedImage, mouseImageOffset.x - imageOffset.x, mouseImageOffset.y - imageOffset.y);
- pointer.show();
+ g_vm->_pointer->hide();
+ g_vm->_pointer->setImage(combinedImage, mouseImageOffset.x - imageOffset.x, mouseImageOffset.y - imageOffset.y);
+ g_vm->_pointer->show();
}
//-----------------------------------------------------------------------
@@ -302,7 +302,7 @@ void setNewText(char *text) {
// Compute relative position of text
Point16 mousePos;
- pointer.getImageCurPos(mousePos);
+ g_vm->_pointer->getImageCurPos(mousePos);
int mouseImageCenter = mousePos.x + mouseImageOffset.x + mouseImage->size.x / 2;
textImageCenteredCol = textImage.size.x / 2;
diff --git a/engines/saga2/msgbox.cpp b/engines/saga2/msgbox.cpp
index 4a4a176a03..69bc018c10 100644
--- a/engines/saga2/msgbox.cpp
+++ b/engines/saga2/msgbox.cpp
@@ -236,9 +236,9 @@ void SimpleWindow::update(const Rect16 &) {
}
void SimpleWindow::draw(void) {
- pointer.hide(g_vm->_mainPort, extent); // hide mouse pointer
+ g_vm->_pointer->hide(g_vm->_mainPort, extent); // hide mouse pointer
drawClipped(g_vm->_mainPort, Point16(0, 0), extent);
- pointer.show(g_vm->_mainPort, extent); // show mouse pointer
+ g_vm->_pointer->show(g_vm->_mainPort, extent); // show mouse pointer
}
void SimpleWindow::drawClipped(
@@ -257,14 +257,14 @@ void SimpleWindow::drawClipped(
box.height -= 100;
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
DrawOutlineFrame(port, extent, windowColor);
writeWrappedPlaqText(port, box, mbButtonFont, textPos, pal, false, title);
gWindow::drawClipped(port, p, r);
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
/* ===================================================================== *
@@ -398,11 +398,11 @@ void SimpleButton::draw(void) {
Rect16 rect = window->getExtent();
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
drawClipped(port,
Point16(0, 0),
Rect16(0, 0, rect.width, rect.height));
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
void SimpleButton::drawClipped(
@@ -419,14 +419,14 @@ void SimpleButton::drawClipped(
box.y += base.y;
SAVE_GPORT_STATE(port); // save pen color, etc.
- pointer.hide(port, extent); // hide mouse pointer
+ g_vm->_pointer->hide(port, extent); // hide mouse pointer
SimpleWindow::DrawOutlineFrame(port, // draw outer frame
box,
buttonColor);
drawTitle((enum text_positions)0);
- pointer.show(port, extent); // show mouse pointer
+ g_vm->_pointer->show(port, extent); // show mouse pointer
}
} // end of namespace Saga2
diff --git a/engines/saga2/panel.cpp b/engines/saga2/panel.cpp
index 408bc3c974..412b05cebe 100644
--- a/engines/saga2/panel.cpp
+++ b/engines/saga2/panel.cpp
@@ -36,7 +36,6 @@
namespace Saga2 {
//extern vDisplayPage *drawPage;
-extern gMousePointer pointer; // the actual pointer
extern char iniFile[];
extern vDisplayPage protoPage;
@@ -244,9 +243,9 @@ void gPanel::drawTitle(enum text_positions placement) {
port.setStyle(textStyleUnderBar); // set style to do underbars
port.moveTo(r.x, r.y); // move to new text pos
- pointer.hide(*globalPort, r); // hide the pointer
+ g_vm->_pointer->hide(*globalPort, r); // hide the pointer
port.drawText(title, -1); // draw the text
- pointer.show(*globalPort, r); // hide the pointer
+ g_vm->_pointer->show(*globalPort, r); // hide the pointer
}
}
@@ -441,10 +440,10 @@ bool gWindow::open(void) {
G_BASE.activeWindow = this;
G_BASE.setActive(NULL);
-// pointer.hide();
+// g_vm->_pointer->hide();
// if (backSave) backSave->save( *globalPort );
-// pointer.setImage( *pointerImage, pointerOffset.x, pointerOffset.y );
-// pointer.show();
+// g_vm->_pointer->setImage( *pointerImage, pointerOffset.x, pointerOffset.y );
+// g_vm->_pointer->show();
openFlag = true;
@@ -600,9 +599,9 @@ void gWindow::setPointer( gPixelMap &map, int x, int y )
if (this == G_BASE.activeWindow)
{
- pointer.hide();
- pointer.setImage( *pointerImage, pointerOffset.x, pointerOffset.y );
- pointer.show();
+ g_vm->_pointer->hide();
+ g_vm->_pointer->setImage( *pointerImage, pointerOffset.x, pointerOffset.y );
+ g_vm->_pointer->show();
}
}
*/
@@ -675,12 +674,12 @@ gPanel *gControl::keyTest(int16 key) {
// drawClipped with the main port.
void gControl::draw(void) {
- pointer.hide(window.windowPort, extent);
+ g_vm->_pointer->hide(window.windowPort, extent);
if (displayEnabled())
drawClipped(*globalPort,
Point16(-window.extent.x, -window.extent.y),
window.extent);
- pointer.show(window.windowPort, extent);
+ g_vm->_pointer->show(window.windowPort, extent);
}
/* ===================================================================== *
@@ -1120,7 +1119,7 @@ int16 rightButtonState(void) {
void LockUI(bool state) {
if (state == true) {
if (lockUINest <= 0) {
- pointer.hide();
+ g_vm->_pointer->hide();
enableUIKeys(false);
G_BASE.setActive(NULL);
}
@@ -1130,7 +1129,7 @@ void LockUI(bool state) {
assert(lockUINest >= 0);
if (lockUINest <= 0) {
enableUIKeys(true);
- pointer.show();
+ g_vm->_pointer->show();
}
}
}
diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index 72cd7b5f07..445ded4f03 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -81,6 +81,7 @@ Saga2Engine::Saga2Engine(OSystem *syst)
_bandList = new BandList();
_mainDisplayList = new DisplayNodeList;
_activeSpells = new SpellDisplayList(kMaxActiveSpells);
+ _pointer = new gMousePointer(_mainPort);
_edpList = nullptr;
_sdpList = nullptr;
@@ -99,6 +100,7 @@ Saga2Engine::~Saga2Engine() {
delete _bandList;
delete _mainDisplayList;
delete _activeSpells;
+ delete _pointer;
}
Common::Error Saga2Engine::run() {
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 1ad49f6c08..6da38a367a 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -61,6 +61,7 @@ class EffectDisplayPrototypeList;
class SpellDisplayPrototypeList;
class DisplayNodeList;
class SpellDisplayList;
+class gMousePointer;
enum {
kDebugResources = 1 << 0,
@@ -136,6 +137,7 @@ public:
ContainerList *_containerList;
DisplayNodeList *_mainDisplayList;
SpellDisplayList *_activeSpells;
+ gMousePointer *_pointer;
gDisplayPort _mainPort;
diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index 817b4ef054..f2dc6475ee 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -157,7 +157,6 @@ void drawFloatingWindows(gPort &, const Point16 &, const Rect16 &clip);
Imports
* ===================================================================== */
-extern gMousePointer pointer; // the actual pointer
extern gPort backPort;
extern int16 worldCount; // Used as map count as well
diff --git a/engines/saga2/towerfta.cpp b/engines/saga2/towerfta.cpp
index 530ae333de..7a3de51136 100644
--- a/engines/saga2/towerfta.cpp
+++ b/engines/saga2/towerfta.cpp
@@ -313,7 +313,7 @@ TERMINATOR(termGUIMessagers) {
INITIALIZER(initMousePointer) {
//pointer.hide();
setMouseImage(kMouseArrowImage, 0, 0);
- return pointer.init(640, 480);
+ return g_vm->_pointer->init(640, 480);
}
TERMINATOR(termMousePointer) {
diff --git a/engines/saga2/tromode.cpp b/engines/saga2/tromode.cpp
index 36a28dff09..98dc063651 100644
--- a/engines/saga2/tromode.cpp
+++ b/engines/saga2/tromode.cpp
@@ -52,13 +52,8 @@ namespace Saga2 {
#define VIDEO_Y 0
extern bool gameRunning;
-extern gMousePointer pointer;
-extern MouseExtState mouseQueue[];
extern bool allPlayerActorsDead;
-extern int16 queueIn,
- queueOut;
-
int16 OptionsDialog(bool disableSaveResume = false);
void SystemEventLoop(void);
void freeAllTileBanks(void);
@@ -163,7 +158,7 @@ void TroModeExternEvent(void) {
static void TroModeSetup(void) {
suspendAudio();
- pointer.hide();
+ g_vm->_pointer->hide();
quickSavePalette();
blackOut();
displayDisable(PlayingVideo);
@@ -182,8 +177,8 @@ static void TroModeCleanup(void) {
blackOut();
quickRestorePalette();
resumeAudio();
- pointer.show();
-// pointer.manditoryShow(); // hide mouse pointer
+ g_vm->_pointer->show();
+// g_vm->_pointer->manditoryShow(); // hide mouse pointer
resetInputDevices();
}
diff --git a/engines/saga2/videobox.cpp b/engines/saga2/videobox.cpp
index 3ae337ba2e..ecc7d3856d 100644
--- a/engines/saga2/videobox.cpp
+++ b/engines/saga2/videobox.cpp
@@ -115,9 +115,9 @@ void CVideoBox::drawClipped(
gPort &port,
const Point16 &offset,
const Rect16 &clipRect) {
- pointer.hide();
+ g_vm->_pointer->hide();
ModalWindow::drawClipped(port, offset, clipRect);
- pointer.show();
+ g_vm->_pointer->show();
}
void CVideoBox::draw(void) { // redraw the window
Commit: 4c36374d34d7f26fb8bfcfd7b25f91cffa75f27d
https://github.com/scummvm/scummvm/commit/4c36374d34d7f26fb8bfcfd7b25f91cffa75f27d
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T06:12:11+09:00
Commit Message:
SAGA2: Fix global constructor warnigns in mouseimg.cpp
Changed paths:
engines/saga2/mouseimg.cpp
diff --git a/engines/saga2/mouseimg.cpp b/engines/saga2/mouseimg.cpp
index 4c7cb8fd92..adf0205604 100644
--- a/engines/saga2/mouseimg.cpp
+++ b/engines/saga2/mouseimg.cpp
@@ -66,12 +66,12 @@ const int maxMouseTextLen = 80;
static char mouseText[maxMouseTextLen] = { "" }; // Current mouse text string
-static Point16 mouseImageOffset; // Hotspot on mouse image
+static StaticPoint16 mouseImageOffset; // Hotspot on mouse image
-static gPixelMap *mouseImage = mouseCursors[kMouseArrowImage]; // Current mouse cursor image
+static gPixelMap *mouseImage = nullptr; // Current mouse cursor image
-static gStaticImage textImage(0, 0, nullptr), // Current mouse text image
- combinedImage(0, 0, nullptr); // Combine mouse text
+static gPixelMap *textImage = nullptr; // Current mouse text image
+static gPixelMap *combinedImage = nullptr; // Combine mouse text
// and image
static int textImageCenteredCol; // The pixel column in the text
@@ -114,7 +114,7 @@ static struct MouseCurosrs {
gStaticImage *mouseCursors[kMouseMax];
static uint8 gaugeImageBuffer[gaugeImageWidth * gaugeImageHeight];
-static gStaticImage gaugeImage(gaugeImageWidth, gaugeImageHeight, gaugeImageBuffer);
+static gPixelMap *gaugeImage;
static bool showGauge = false;
@@ -128,11 +128,24 @@ static bool showGauge = false;
void initCursors() {
for (int i = 0; i < kMouseMax; i++)
mouseCursors[i] = new gStaticImage(mouseCursorData[i].w, mouseCursorData[i].h, *mouseCursorData[i].data);
+
+ mouseImage = mouseCursors[kMouseArrowImage];
+ gaugeImage = new gPixelMap;
+ gaugeImage->size.x = gaugeImageWidth;
+ gaugeImage->size.y = gaugeImageHeight;
+ gaugeImage->data = gaugeImageBuffer;
+
+ textImage = new gPixelMap;
+ combinedImage = new gPixelMap;
}
void freeCursors() {
for (int i = 0; i < kMouseMax; i++)
delete mouseCursors[i];
+
+ delete gaugeImage;
+ delete textImage;
+ delete combinedImage;
}
void createStackedImage(gPixelMap *newImage, int *newImageCenter, gPixelMap **imageArray, int *imageCenterArray, int images) {
@@ -193,8 +206,8 @@ inline void disposeStackedImage(gPixelMap *image) {
// image.
void cleanupMousePointer(void) {
- if (combinedImage.data != nullptr)
- disposeStackedImage(&combinedImage);
+ if (combinedImage->data != nullptr)
+ disposeStackedImage(combinedImage);
}
void setupMousePointer(void) {
@@ -208,28 +221,28 @@ void setupMousePointer(void) {
imageCenterArray[0] = mouseImage->size.x / 2;
if (mouseText[0] != '\0') {
- imageArray[imageIndex] = &textImage;
+ imageArray[imageIndex] = textImage;
imageCenterArray[imageIndex] = textImageCenteredCol;
imageIndex++;
}
if (showGauge) {
- imageArray[imageIndex] = &gaugeImage;
- imageCenterArray[imageIndex] = gaugeImage.size.x / 2;
+ imageArray[imageIndex] = gaugeImage;
+ imageCenterArray[imageIndex] = gaugeImage->size.x / 2;
imageIndex++;
}
- if (combinedImage.data != nullptr)
- disposeStackedImage(&combinedImage);
+ if (combinedImage->data != nullptr)
+ disposeStackedImage(combinedImage);
- createStackedImage(&combinedImage, &combinedImageCenter, imageArray, imageCenterArray, imageIndex);
+ createStackedImage(combinedImage, &combinedImageCenter, imageArray, imageCenterArray, imageIndex);
imageOffset.x = combinedImageCenter - mouseImage->size.x / 2;
imageOffset.y = 0;
// Set the combined image as the new mouse cursor
g_vm->_pointer->hide();
- g_vm->_pointer->setImage(combinedImage, mouseImageOffset.x - imageOffset.x, mouseImageOffset.y - imageOffset.y);
+ g_vm->_pointer->setImage(*combinedImage, mouseImageOffset.x - imageOffset.x, mouseImageOffset.y - imageOffset.y);
g_vm->_pointer->show();
}
@@ -260,11 +273,13 @@ inline void disposeText(void) {
// Free the memory previously allocated to hold the text image
// bitmap
- if (textImage.data != nullptr) {
- free(textImage.data);
- textImage.data = nullptr;
+ if (textImage == nullptr)
+ return;
+
+ if (textImage->data != nullptr) {
+ free(textImage->data);
+ textImage->data = nullptr;
}
- textImage.size.x = textImage.size.y = 0;
}
//-----------------------------------------------------------------------
@@ -277,19 +292,19 @@ void setNewText(char *text) {
Common::strlcpy(mouseText, text, maxMouseTextLen);
// Compute the size of the text bitmap
- textImage.size.y = mainFont->height + 2;
- textImage.size.x = TextWidth(mainFont, text, -1, 0) + 2;
+ textImage->size.y = mainFont->height + 2;
+ textImage->size.x = TextWidth(mainFont, text, -1, 0) + 2;
// Allocate a new buffer for the text image bitmap
- int16 textImageBytes = textImage.bytes();
+ int16 textImageBytes = textImage->bytes();
- textImage.data = (uint8 *)malloc(textImageBytes);
- memset(textImage.data, 0, textImageBytes);
+ textImage->data = (uint8 *)malloc(textImageBytes);
+ memset(textImage->data, 0, textImageBytes);
gPort textImagePort; // gPort used to draw text onto bitmap
// Intialize the text image port
- textImagePort.setMap(&textImage);
+ textImagePort.setMap(textImage);
textImagePort.setMode(drawModeReplace);
textImagePort.setColor(11);
textImagePort.setOutlineColor(24);
@@ -305,11 +320,11 @@ void setNewText(char *text) {
g_vm->_pointer->getImageCurPos(mousePos);
int mouseImageCenter = mousePos.x + mouseImageOffset.x + mouseImage->size.x / 2;
- textImageCenteredCol = textImage.size.x / 2;
+ textImageCenteredCol = textImage->size.x / 2;
if (mouseImageCenter - textImageCenteredCol < 5) {
textImageCenteredCol = mouseImageCenter - 5;
- } else if (mouseImageCenter + (textImage.size.x - textImageCenteredCol) >= screenWidth - 5) {
- textImageCenteredCol = textImage.size.x - ((screenWidth - 5) - mouseImageCenter);
+ } else if (mouseImageCenter + (textImage->size.x - textImageCenteredCol) >= screenWidth - 5) {
+ textImageCenteredCol = textImage->size.x - ((screenWidth - 5) - mouseImageCenter);
}
}
More information about the Scummvm-git-logs
mailing list