aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2012-01-21 20:06:08 +1100
committerStrangerke2012-04-06 08:20:30 +0200
commit90e076a36a25e79262848d0820f04d4fe1e5cc8f (patch)
tree0172fa7a5a8af12f949c8a5fa5233055c3b953e6
parent35b502612bebeec8007385f6eb1496b5755b4f31 (diff)
downloadscummvm-rg350-90e076a36a25e79262848d0820f04d4fe1e5cc8f.tar.gz
scummvm-rg350-90e076a36a25e79262848d0820f04d4fe1e5cc8f.tar.bz2
scummvm-rg350-90e076a36a25e79262848d0820f04d4fe1e5cc8f.zip
MORTEVIELLE: Merge the _mouseButtons and clic variables
The original separate implementation was causing problems with the mouse click variable remaining set too long.
-rw-r--r--engines/mortevielle/actions.cpp5
-rw-r--r--engines/mortevielle/alert.cpp7
-rw-r--r--engines/mortevielle/graphics.cpp2
-rw-r--r--engines/mortevielle/menu.cpp19
-rw-r--r--engines/mortevielle/mor2.cpp5
-rw-r--r--engines/mortevielle/mortevielle.cpp12
-rw-r--r--engines/mortevielle/mortevielle.h5
-rw-r--r--engines/mortevielle/mouse.cpp10
-rw-r--r--engines/mortevielle/mouse.h2
-rw-r--r--engines/mortevielle/ovd1.cpp3
-rw-r--r--engines/mortevielle/ques.cpp5
11 files changed, 39 insertions, 36 deletions
diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp
index 81042c4ce2..9c1a6b738c 100644
--- a/engines/mortevielle/actions.cpp
+++ b/engines/mortevielle/actions.cpp
@@ -32,6 +32,7 @@
#include "mortevielle/menu.h"
#include "mortevielle/mor.h"
#include "mortevielle/mor2.h"
+#include "mortevielle/mortevielle.h"
#include "mortevielle/mouse.h"
#include "mortevielle/outtext.h"
#include "mortevielle/ques.h"
@@ -1094,8 +1095,8 @@ L2:
} else choi = 0;
}
}
- } while (!((tou == '\15') || (((c != 0) || clic) && (choi != 0))));
- clic = false;
+ } while (!((tou == '\15') || (((c != 0) || g_vm->getMouseClick()) && (choi != 0))));
+ g_vm->setMouseClick(false);
if (choi != 46) {
ix = choi - 1;
if (col) {
diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp
index 36170361c3..6a380b2155 100644
--- a/engines/mortevielle/alert.cpp
+++ b/engines/mortevielle/alert.cpp
@@ -28,6 +28,7 @@
#include "common/str.h"
#include "mortevielle/alert.h"
#include "mortevielle/level15.h"
+#include "mortevielle/mortevielle.h"
#include "mortevielle/mouse.h"
#include "mortevielle/sprint.h"
@@ -150,7 +151,7 @@ int do_alert(Common::String str_, int n) {
while (keypressed())
dumi = get_ch(); // input >> kbd >> dumi;
- clic = false;
+ g_vm->setMouseClick(false);
decod(str_, nbcase, nblig, nbcol, chaine, cas);
sauvecr(50, succ(int, nligne) << 4);
@@ -242,8 +243,8 @@ int do_alert(Common::String str_, int n) {
}
test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2]))
|| ((cx > limit[2][1]) && (cx < limit[2][2])));
- } while (!clic);
- clic = false;
+ } while (!g_vm->getMouseClick());
+ g_vm->setMouseClick(false);
hide_mouse();
if (! test3) {
quoi = n;
diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp
index ee9c63228b..034a60c505 100644
--- a/engines/mortevielle/graphics.cpp
+++ b/engines/mortevielle/graphics.cpp
@@ -79,7 +79,7 @@ void PaletteManager::setDefaultPalette() {
#define INCR_TAIX { if (_xSize & 1) ++_xSize; }
#define DEFAULT_WIDTH (SCREEN_WIDTH / 2)
-#define BUFFER_SIZE 8192
+#define BUFFER_SIZE 40000
void GfxSurface::decode(const byte *pSrc) {
_width = _height = 0;
diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp
index b14aacf4fa..f24062a000 100644
--- a/engines/mortevielle/menu.cpp
+++ b/engines/mortevielle/menu.cpp
@@ -187,7 +187,7 @@ void draw_menu() {
msg4 = no_choice;
msg3 = no_choice;
choisi = false;
- clic = false;
+ g_vm->setMouseClick(false);
test0 = false;
}
@@ -342,7 +342,7 @@ void menu_up(int xx) {
void erase_menu() {
/* debug('erase_menu'); */
active_menu = false;
- clic = false;
+ g_vm->setMouseClick(false);
menu_up(msg3);
}
@@ -355,7 +355,7 @@ void mdn() {
if (! active_menu) return;
x = x_s;
y = y_s;
- if (! clic) {
+ if (!g_vm->getMouseClick()) {
if ((x == xprec) &&
(y == yprec)) return;
else {
@@ -385,21 +385,26 @@ void mdn() {
} else { /* Not in the MenuTitle line */
if ((y > 11) && (test0)) util(x, y);
}
- } else /* il y a eu 'clic' */
+ } else /* There was a click */
if ((msg3 == fichier) && (msg4 != no_choice)) {
- clic = false;
+ // Another menu to be displayed
+ g_vm->setMouseClick(false);
menu_up(msg3);
if (lo(msg4) == 1) msg3 = 7;
else msg3 = 8;
menu_down(msg3);
- } else { /* il y a eu clic sur un autre menu */
+
+ g_vm->setMouseClick(false);
+ } else {
+ // A menu was clicked on
choisi = (test0) && (msg4 != no_choice);
menu_up(msg3);
msg[4] = msg4;
msg[3] = msg3;
msg3 = no_choice;
msg4 = no_choice;
- clic = false;
+
+ g_vm->setMouseClick(false);
}
}
diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp
index 4b8a9ae25a..1c27ef3f04 100644
--- a/engines/mortevielle/mor2.cpp
+++ b/engines/mortevielle/mor2.cpp
@@ -202,7 +202,7 @@ void tkey1(bool d) {
read_pos_mouse(x, y, c);
} while (!(quest || (c != 0) || (d && anyone)));
if (quest) key = testou();
- clic = false;
+ g_vm->setMouseClick(false);
show_mouse();
}
@@ -628,7 +628,8 @@ void tfleche() {
do {
mov_mouse(qust, touch);
- if (clic) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12);
+ if (g_vm->getMouseClick())
+ rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12);
tinke();
} while (!(qust || rect || anyone));
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp
index bdb5b710c8..88a3ecd9e5 100644
--- a/engines/mortevielle/mortevielle.cpp
+++ b/engines/mortevielle/mortevielle.cpp
@@ -40,7 +40,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g
Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle") {
g_vm = this;
_lastGameFrame = 0;
- _mouseButtons = 0;
+ _mouseClick = false;
}
MortevielleEngine::~MortevielleEngine() {
@@ -168,21 +168,15 @@ bool MortevielleEngine::handleEvents() {
switch (event.type) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_LBUTTONUP:
- case Common::EVENT_RBUTTONDOWN:
- case Common::EVENT_RBUTTONUP:
case Common::EVENT_MOUSEMOVE:
_mousePos = Common::Point(event.mouse.x, event.mouse.y / 2);
x_s = event.mouse.x;
y_s = event.mouse.y / 2;
if (event.type == Common::EVENT_LBUTTONDOWN)
- _mouseButtons |= 1;
+ _mouseClick = true;
else if (event.type == Common::EVENT_LBUTTONUP)
- _mouseButtons &= ~1;
- else if (event.type == Common::EVENT_RBUTTONDOWN)
- _mouseButtons |= 2;
- else if (event.type == Common::EVENT_RBUTTONUP)
- _mouseButtons &= ~2;
+ _mouseClick = false;
break;
case Common::EVENT_KEYDOWN:
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index b0e7343d0e..4c755a1f5e 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -53,7 +53,7 @@ private:
const ADGameDescription *_gameDescription;
Common::Stack<int> _keypresses;
uint32 _lastGameFrame;
- int _mouseButtons;
+ bool _mouseClick;
Common::Point _mousePos;
Common::ErrorCode initialise();
@@ -78,7 +78,8 @@ public:
int getChar();
Common::Point getMousePos() const { return _mousePos; }
void setMousePos(const Common::Point &pt);
- int getMouseButtons() const { return _mouseButtons; }
+ bool getMouseClick() const { return _mouseClick; }
+ void setMouseClick(bool v) { _mouseClick = v; }
};
extern MortevielleEngine *g_vm;
diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp
index 2e945287ba..98429cc04e 100644
--- a/engines/mortevielle/mouse.cpp
+++ b/engines/mortevielle/mouse.cpp
@@ -57,7 +57,7 @@ void init_mouse() {
y_s = 0;
p_o_s = 0;
/*int_m:= False;*/
- clic = false;
+ g_vm->setMouseClick(false);
m_show = m_arrow;
if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) int_m = false;
if (int_m) {
@@ -278,7 +278,7 @@ void pos_mouse(int x, int y) {
void read_pos_mouse(int &x, int &y, int &c) {
x = g_vm->getMousePos().x;
y = g_vm->getMousePos().y;
- c = g_vm->getMouseButtons();
+ c = g_vm->getMouseClick() ? 1 : 0;
}
void mov_mouse(bool &funct, char &key) {
@@ -292,10 +292,8 @@ void mov_mouse(bool &funct, char &key) {
p_key = keypressed();
// If mouse button clicked, return it
- if (g_vm->getMouseButtons() != 0) {
- clic = true;
+ if (g_vm->getMouseClick())
return;
- }
// Handle any pending keypresses
while (p_key) {
@@ -343,7 +341,7 @@ void mov_mouse(bool &funct, char &key) {
break;
case ' ':
case '\15' : {
- clic = true;
+ g_vm->setMouseClick(true);
return;
}
break;
diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h
index a981d521ac..32fba0420f 100644
--- a/engines/mortevielle/mouse.h
+++ b/engines/mortevielle/mouse.h
@@ -30,7 +30,7 @@
namespace Mortevielle {
-extern bool clic, int_m;
+extern bool int_m;
extern int m_show,
x_s,
diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp
index f01937667a..283756948c 100644
--- a/engines/mortevielle/ovd1.cpp
+++ b/engines/mortevielle/ovd1.cpp
@@ -31,6 +31,7 @@
#include "mortevielle/level15.h"
#include "mortevielle/menu.h"
#include "mortevielle/mor.h"
+#include "mortevielle/mortevielle.h"
#include "mortevielle/mouse.h"
#include "mortevielle/outtext.h"
#include "mortevielle/ovd1.h"
@@ -142,7 +143,7 @@ void ani50() {
msg4 = no_choice;
msg[3] = no_choice;
msg[4] = no_choice;
- clic = false;
+ g_vm->setMouseClick(false);
}
diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp
index c9154acc59..e7ae1b30ec 100644
--- a/engines/mortevielle/ques.cpp
+++ b/engines/mortevielle/ques.cpp
@@ -28,6 +28,7 @@
#include "common/str.h"
#include "mortevielle/boite.h"
#include "mortevielle/level15.h"
+#include "mortevielle/mortevielle.h"
#include "mortevielle/mouse.h"
#include "mortevielle/outtext.h"
#include "mortevielle/ques.h"
@@ -105,7 +106,7 @@ namespace Mortevielle {
j = 0;
memk = 0;
do {
- clic = false;
+ g_vm->setMouseClick(false);
tesok = false;
mov_mouse(func, key);
k = 1;
@@ -130,7 +131,7 @@ namespace Mortevielle {
afftex(st, 100, 27 + memk * 8, 100, 1, 0);
memk = 0;
}
- } while (!((memk != 0) && clic));
+ } while (!((memk != 0) && g_vm->getMouseClick()));
if (memk == ok[i]) compte = compte + 1;
else {
if (i == 5) i = i + 1;