[Scummvm-git-logs] scummvm master -> 578f75f9b97962318aeaec7ce013b44bd76bc41d

grisenti noreply at scummvm.org
Sun Apr 9 13:43:41 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
578f75f9b9 HPL1: merge interface and implementation for mouse


Commit: 578f75f9b97962318aeaec7ce013b44bd76bc41d
    https://github.com/scummvm/scummvm/commit/578f75f9b97962318aeaec7ce013b44bd76bc41d
Author: grisenti (emanuele at grisenti.net)
Date: 2023-04-09T15:26:06+02:00

Commit Message:
HPL1: merge interface and implementation for mouse

Changed paths:
  R engines/hpl1/engine/impl/MouseSDL.cpp
  R engines/hpl1/engine/impl/MouseSDL.h
    engines/hpl1/engine/game/low_level_game_setup.cpp
    engines/hpl1/engine/input/LowLevelInput.cpp
    engines/hpl1/engine/input/LowLevelInput.h
    engines/hpl1/engine/input/Mouse.cpp
    engines/hpl1/engine/input/Mouse.h
    engines/hpl1/module.mk


diff --git a/engines/hpl1/engine/game/low_level_game_setup.cpp b/engines/hpl1/engine/game/low_level_game_setup.cpp
index 68ad73f053d..77d4fdfaff1 100644
--- a/engines/hpl1/engine/game/low_level_game_setup.cpp
+++ b/engines/hpl1/engine/game/low_level_game_setup.cpp
@@ -23,7 +23,6 @@
 #include "hpl1/engine/impl/LowLevelGraphicsSDL.h"
 #include "hpl1/engine/impl/LowLevelPhysicsNewton.h"
 #include "hpl1/engine/impl/LowLevelSoundOpenAL.h"
-#include "hpl1/engine/impl/MouseSDL.h"
 #include "hpl1/engine/impl/low_level_graphics_tgl.h"
 #include "hpl1/engine/input/LowLevelInput.h"
 #include "hpl1/engine/resources/low_level_resources.h"
diff --git a/engines/hpl1/engine/impl/MouseSDL.cpp b/engines/hpl1/engine/impl/MouseSDL.cpp
deleted file mode 100644
index c48e394a3f7..00000000000
--- a/engines/hpl1/engine/impl/MouseSDL.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/*
- * Copyright (C) 2006-2010 - Frictional Games
- *
- * This file is part of HPL1 Engine.
- */
-
-#include "common/bitarray.h"
-#include "common/events.h"
-#include "hpl1/engine/graphics/LowLevelGraphics.h"
-#include "hpl1/engine/impl/MouseSDL.h"
-#include "hpl1/engine/input/InputTypes.h"
-#include "hpl1/engine/input/LowLevelInput.h"
-
-namespace hpl {
-
-//////////////////////////////////////////////////////////////////////////
-// CONSTRUCTORS
-//////////////////////////////////////////////////////////////////////////
-
-//-----------------------------------------------------------------------
-
-cMouseSDL::cMouseSDL(LowLevelInput *apLowLevelInputSDL, iLowLevelGraphics *apLowLevelGraphics) : iMouse("SDL Portable Mouse") {
-	mfMaxPercent = 0.7f;
-	mfMinPercent = 0.1f;
-	mlBufferSize = 6;
-
-	_buttonState.set_size(eMButton_LastEnum);
-
-	_lowLevelInputSDL = apLowLevelInputSDL;
-	_lowLevelGraphics = apLowLevelGraphics;
-
-	_relMousePos = cVector2f(0, 0);
-	_absMousePos = cVector2f(0, 0);
-}
-
-//-----------------------------------------------------------------------
-
-//////////////////////////////////////////////////////////////////////////
-// PUBLIC METHODS
-//////////////////////////////////////////////////////////////////////////
-
-//-----------------------------------------------------------------------
-
-static void setMouseState(const int state, Common::BitArray &states) {
-	if (state != Common::EVENT_WHEELDOWN)
-		states.unset(eMButton_WheelDown);
-	if (state != Common::EVENT_WHEELUP)
-		states.unset(eMButton_WheelUp);
-
-	switch (state) {
-	case Common::EVENT_LBUTTONDOWN:
-		return states.set(eMButton_Left);
-	case Common::EVENT_LBUTTONUP:
-		return states.unset(eMButton_Left);
-	case Common::EVENT_RBUTTONDOWN:
-		return states.set(eMButton_Right);
-	case Common::EVENT_RBUTTONUP:
-		return states.unset(eMButton_Right);
-	case Common::EVENT_MBUTTONDOWN:
-		return states.set(eMButton_Middle);
-	case Common::EVENT_MBUTTONUP:
-		return states.unset(eMButton_Middle);
-	case Common::EVENT_WHEELUP:
-		return states.set(eMButton_WheelUp);
-	case Common::EVENT_WHEELDOWN:
-		return states.set(eMButton_WheelDown);
-	}
-}
-
-void cMouseSDL::processEvent(const Common::Event &ev) {
-	if (!Common::isMouseEvent(ev))
-		return;
-	// const cVector2f screenSize = _lowLevelGraphics->GetScreenSize();
-	// const cVector2f virtualSize = _lowLevelGraphics->GetVirtualSize();
-	if (ev.type == Common::EVENT_MOUSEMOVE) {
-		_absMousePos = cVector2f(ev.mouse.x, ev.mouse.y);
-		// mvMouseAbsPos = (mvMouseAbsPos / screenSize) * virtualSize;
-	} else {
-		setMouseState(ev.type, _buttonState);
-	}
-	_relMousePos = cVector2f(ev.relMouse.x, ev.relMouse.y);
-	// mvMouseRelPos = (mvMouseRelPos / screenSize) * virtualSize;
-}
-
-void cMouseSDL::Update() {
-	for (const Common::Event &ev : _lowLevelInputSDL->_events)
-		processEvent(ev);
-}
-
-//-----------------------------------------------------------------------
-
-bool cMouseSDL::ButtonIsDown(eMButton mButton) {
-	return _buttonState.get(mButton);
-}
-
-//-----------------------------------------------------------------------
-
-cVector2f cMouseSDL::GetAbsPosition() {
-	// Do a transform with the screen-size to the the float coordinates.
-	cVector2f vPos = _absMousePos;
-
-	return vPos;
-}
-
-//-----------------------------------------------------------------------
-
-cVector2f cMouseSDL::GetRelPosition() {
-	// Do a transform with the screen-size to the the float coordinates.
-	cVector2f vPos = _relMousePos;
-	// Ok this is?
-	_relMousePos = cVector2f(0, 0);
-
-	return vPos;
-	/*cVector2f vNew;
-
-	if((int)mlstMouseCoord.size() >= mlBufferSize)
-		mlstMouseCoord.erase(mlstMouseCoord.begin());
-
-	mlstMouseCoord.push_back(vPos);
-
-	int lBufferSize = (int) mlstMouseCoord.size();
-
-	cVector2f vSum(0,0);
-	float fPercent = mfMinPercent;
-	float fPercentAdd =  (mfMaxPercent - mfMinPercent)/((float)lBufferSize);
-	float fTotalPercent=0;
-
-	tVector2fListIt It = mlstMouseCoord.begin();
-	while(It != mlstMouseCoord.end())
-	{
-		vSum.x +=It->x*fPercent;
-		vSum.y +=It->y*fPercent;
-		fTotalPercent+=fPercent;
-		fPercent+=fPercentAdd;
-
-		It++;
-	}
-	vNew.x = vSum.x/fTotalPercent;
-	vNew.y = vSum.y/fTotalPercent;
-
-	return vNew;*/
-}
-
-//-----------------------------------------------------------------------
-
-void cMouseSDL::Reset() {
-	error("call to unimplemented function Mouse::Reset");
-}
-
-//-----------------------------------------------------------------------
-
-void cMouseSDL::SetSmoothProperties(float afMinPercent,
-									float afMaxPercent, unsigned int alBufferSize) {
-	mfMaxPercent = afMaxPercent;
-	mfMinPercent = afMinPercent;
-	mlBufferSize = alBufferSize;
-}
-
-//-----------------------------------------------------------------------
-
-/////////////////////////////////////////////////////////////////////////
-// PRIVATE METHODS
-/////////////////////////////////////////////////////////////////////////
-
-//-----------------------------------------------------------------------
-
-//-----------------------------------------------------------------------
-
-} // namespace hpl
diff --git a/engines/hpl1/engine/impl/MouseSDL.h b/engines/hpl1/engine/impl/MouseSDL.h
deleted file mode 100644
index ddf9cc226a6..00000000000
--- a/engines/hpl1/engine/impl/MouseSDL.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/*
- * Copyright (C) 2006-2010 - Frictional Games
- *
- * This file is part of HPL1 Engine.
- */
-
-#ifndef HPL_MOUSE_SDL_H
-#define HPL_MOUSE_SDL_H
-
-#include "common/bitarray.h"
-#include "hpl1/engine/input/Mouse.h"
-
-namespace Common {
-struct Event;
-}
-
-namespace hpl {
-
-class iLowLevelGraphics;
-class LowLevelInput;
-
-class cMouseSDL : public iMouse {
-public:
-	cMouseSDL(LowLevelInput *apLowLevelInputSDL, iLowLevelGraphics *apLowLevelGraphics);
-
-	bool ButtonIsDown(eMButton);
-
-	void Update();
-
-	/**
-	 * \todo Fix so it works and handles screen size
-	 * \return
-	 */
-	cVector2f GetAbsPosition();
-
-	/**
-	 * \todo Fix so it works and handles screen size
-	 * \return
-	 */
-	cVector2f GetRelPosition();
-
-	void Reset();
-
-	/**
-	 * Sets how much smoothening there will be in the RelPosition.
-	 * The percentages are just ratios, so min/max 1/10 equals 0.1/1
-	 * \param afMinPercent The influence of the oldest value
-	 * \param afMaxPercent The influence of the newest value
-	 * \param alBufferSize The number of values recorded
-	 */
-	void SetSmoothProperties(float afMinPercent,
-							 float afMaxPercent, unsigned int alBufferSize);
-
-private:
-	void processEvent(const Common::Event &ev);
-	cVector2f _absMousePos;
-	cVector2f _relMousePos;
-	Common::BitArray _buttonState;
-	float mfMaxPercent;
-	float mfMinPercent;
-	int mlBufferSize;
-	LowLevelInput *_lowLevelInputSDL;
-	iLowLevelGraphics *_lowLevelGraphics;
-};
-
-} // namespace hpl
-
-#endif // HPL_MOUSE_SDL_H
diff --git a/engines/hpl1/engine/input/LowLevelInput.cpp b/engines/hpl1/engine/input/LowLevelInput.cpp
index 45fb53d5c22..00943f76313 100644
--- a/engines/hpl1/engine/input/LowLevelInput.cpp
+++ b/engines/hpl1/engine/input/LowLevelInput.cpp
@@ -27,9 +27,9 @@
 
 #include "common/events.h"
 #include "common/system.h"
-#include "hpl1/engine/impl/MouseSDL.h"
 #include "hpl1/engine/input/Keyboard.h"
 #include "hpl1/engine/input/LowLevelInput.h"
+#include "hpl1/engine/input/Mouse.h"
 #include "hpl1/engine/system/low_level_system.h"
 
 namespace hpl {
@@ -65,7 +65,7 @@ void LowLevelInput::EndInputUpdate() {
 //-----------------------------------------------------------------------
 
 iMouse *LowLevelInput::CreateMouse() {
-	return hplNew(cMouseSDL, (this, _lowLevelGraphics));
+	return hplNew(iMouse, (this, _lowLevelGraphics));
 }
 
 //-----------------------------------------------------------------------
diff --git a/engines/hpl1/engine/input/LowLevelInput.h b/engines/hpl1/engine/input/LowLevelInput.h
index 92d323ac005..70e6771da0d 100644
--- a/engines/hpl1/engine/input/LowLevelInput.h
+++ b/engines/hpl1/engine/input/LowLevelInput.h
@@ -39,7 +39,7 @@ class iLowLevelGraphics;
 
 class LowLevelInput {
 	friend class Keyboard;
-	friend class cMouseSDL;
+	friend class iMouse;
 
 public:
 	LowLevelInput(iLowLevelGraphics *graphics);
diff --git a/engines/hpl1/engine/input/Mouse.cpp b/engines/hpl1/engine/input/Mouse.cpp
index c97723a4ab7..cb891c79b2b 100644
--- a/engines/hpl1/engine/input/Mouse.cpp
+++ b/engines/hpl1/engine/input/Mouse.cpp
@@ -25,17 +25,122 @@
  * This file is part of HPL1 Engine.
  */
 
+#include "common/bitarray.h"
+#include "common/events.h"
+#include "hpl1/engine/graphics/LowLevelGraphics.h"
+#include "hpl1/engine/input/InputTypes.h"
+#include "hpl1/engine/input/LowLevelInput.h"
 #include "hpl1/engine/input/Mouse.h"
 
 namespace hpl {
+
 //////////////////////////////////////////////////////////////////////////
 // CONSTRUCTORS
 //////////////////////////////////////////////////////////////////////////
 
 //-----------------------------------------------------------------------
 
-iMouse::iMouse(tString asName) : iInputDevice(asName, eInputDeviceType_Mouse) {
+iMouse::iMouse(LowLevelInput *apLowLevelInputSDL, iLowLevelGraphics *apLowLevelGraphics) : iInputDevice("Mouse", eInputDeviceType_Mouse) {
+	mfMaxPercent = 0.7f;
+	mfMinPercent = 0.1f;
+	mlBufferSize = 6;
+
+	_buttonState.set_size(eMButton_LastEnum);
+
+	_lowLevelInputSDL = apLowLevelInputSDL;
+	_lowLevelGraphics = apLowLevelGraphics;
+
+	_relMousePos = cVector2f(0, 0);
+	_absMousePos = cVector2f(0, 0);
+}
+
+//-----------------------------------------------------------------------
+
+//////////////////////////////////////////////////////////////////////////
+// PUBLIC METHODS
+//////////////////////////////////////////////////////////////////////////
+
+//-----------------------------------------------------------------------
+
+static void setMouseState(const int state, Common::BitArray &states) {
+	if (state != Common::EVENT_WHEELDOWN)
+		states.unset(eMButton_WheelDown);
+	if (state != Common::EVENT_WHEELUP)
+		states.unset(eMButton_WheelUp);
+
+	switch (state) {
+	case Common::EVENT_LBUTTONDOWN:
+		return states.set(eMButton_Left);
+	case Common::EVENT_LBUTTONUP:
+		return states.unset(eMButton_Left);
+	case Common::EVENT_RBUTTONDOWN:
+		return states.set(eMButton_Right);
+	case Common::EVENT_RBUTTONUP:
+		return states.unset(eMButton_Right);
+	case Common::EVENT_MBUTTONDOWN:
+		return states.set(eMButton_Middle);
+	case Common::EVENT_MBUTTONUP:
+		return states.unset(eMButton_Middle);
+	case Common::EVENT_WHEELUP:
+		return states.set(eMButton_WheelUp);
+	case Common::EVENT_WHEELDOWN:
+		return states.set(eMButton_WheelDown);
+	}
+}
+
+void iMouse::processEvent(const Common::Event &ev) {
+	if (!Common::isMouseEvent(ev))
+		return;
+	if (ev.type == Common::EVENT_MOUSEMOVE) {
+		_absMousePos = cVector2f(ev.mouse.x, ev.mouse.y);
+	} else {
+		setMouseState(ev.type, _buttonState);
+	}
+	_relMousePos = cVector2f(ev.relMouse.x, ev.relMouse.y);
+}
+
+void iMouse::Update() {
+	for (const Common::Event &ev : _lowLevelInputSDL->_events)
+		processEvent(ev);
+}
+
+//-----------------------------------------------------------------------
+
+bool iMouse::ButtonIsDown(eMButton mButton) {
+	return _buttonState.get(mButton);
+}
+
+//-----------------------------------------------------------------------
+
+cVector2f iMouse::GetAbsPosition() {
+	cVector2f vPos = _absMousePos;
+
+	return vPos;
+}
+
+//-----------------------------------------------------------------------
+
+cVector2f iMouse::GetRelPosition() {
+	cVector2f vPos = _relMousePos;
+	_relMousePos = cVector2f(0, 0);
+	return vPos;
+}
+
+//-----------------------------------------------------------------------
+
+void iMouse::Reset() {
+	error("call to unimplemented function Mouse::Reset");
 }
 
 //-----------------------------------------------------------------------
+
+void iMouse::SetSmoothProperties(float afMinPercent,
+								 float afMaxPercent, unsigned int alBufferSize) {
+	mfMaxPercent = afMaxPercent;
+	mfMinPercent = afMinPercent;
+	mlBufferSize = alBufferSize;
+}
+
+//-----------------------------------------------------------------------
+
 } // namespace hpl
diff --git a/engines/hpl1/engine/input/Mouse.h b/engines/hpl1/engine/input/Mouse.h
index db71c218872..ae6475c73c1 100644
--- a/engines/hpl1/engine/input/Mouse.h
+++ b/engines/hpl1/engine/input/Mouse.h
@@ -28,46 +28,67 @@
 #ifndef HPL_MOUSE_H
 #define HPL_MOUSE_H
 
+#include "common/bitarray.h"
 #include "hpl1/engine/input/InputDevice.h"
 #include "hpl1/engine/input/InputTypes.h"
 #include "hpl1/engine/math/MathTypes.h"
 
+namespace Common {
+struct Event;
+}
+
 namespace hpl {
 
+class LowLevelInput;
+class iLowLevelGraphics;
+
 class iMouse : public iInputDevice {
 public:
-	iMouse(tString asName);
-	virtual ~iMouse() {}
+	iMouse(LowLevelInput *apLowLevelInputSDL, iLowLevelGraphics *apLowLevelGraphics);
+	~iMouse() {}
 
 	/**
 	 * Check if a mouse button is down
 	 * \param eMButton the button to check
 	 * \return
 	 */
-	virtual bool ButtonIsDown(eMButton) = 0;
+	bool ButtonIsDown(eMButton);
 	/**
 	 * Get the absolute pos of the mouse.
 	 * \return
 	 */
-	virtual cVector2f GetAbsPosition() = 0;
+	cVector2f GetAbsPosition();
 	/**
 	 * Get the relative movement.
 	 * \return
 	 */
-	virtual cVector2f GetRelPosition() = 0;
+	cVector2f GetRelPosition();
 
 	/**
 	 * Reset smoothing and relative movement.
 	 */
-	virtual void Reset() = 0;
+	void Reset();
 	/**
 	 * Set parameters for mouse smoothing
 	 * \param afMinPercent Influence of the oldest position.
 	 * \param afMaxPercent Influence of the latest position.
 	 * \param alBufferSize number of saved positions, 1 = no smoothing
 	 */
-	virtual void SetSmoothProperties(float afMinPercent,
-									 float afMaxPercent, unsigned int alBufferSize) = 0;
+	void SetSmoothProperties(float afMinPercent,
+							 float afMaxPercent, unsigned int alBufferSize);
+
+	void Update();
+
+private:
+	void processEvent(const Common::Event &ev);
+	cVector2f _absMousePos;
+	cVector2f _relMousePos;
+	Common::BitArray _buttonState;
+	float mfMaxPercent;
+	float mfMinPercent;
+	int mlBufferSize;
+	LowLevelInput *_lowLevelInputSDL;
+	iLowLevelGraphics *_lowLevelGraphics;
 };
 
 } // namespace hpl
diff --git a/engines/hpl1/module.mk b/engines/hpl1/module.mk
index d249e1eb83a..67eeb88a453 100644
--- a/engines/hpl1/module.mk
+++ b/engines/hpl1/module.mk
@@ -100,7 +100,6 @@ MODULE_OBJS := \
 	engine/impl/MeshLoaderColladaHelpers.o \
 	engine/impl/MeshLoaderColladaLoader.o \
 	engine/impl/MeshLoaderMSH.o \
-	engine/impl/MouseSDL.o \
 	engine/impl/OcclusionQueryOGL.o \
 	engine/impl/OpenALSoundChannel.o \
 	engine/impl/OpenALSoundData.o \




More information about the Scummvm-git-logs mailing list