Skip to content

Commit 61d83e7

Browse files
authored
Merge pull request #266 from scratchcpp/mouse_api
Add mousePressed property to IEngine
2 parents faac54b + 4c71c65 commit 61d83e7

File tree

5 files changed

+35
-0
lines changed

5 files changed

+35
-0
lines changed

include/scratchcpp/iengine.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ class LIBSCRATCHCPP_EXPORT IEngine
119119
/*! Sets the Y coordinate of the mouse pointer. */
120120
virtual void setMouseY(double y) = 0;
121121

122+
/*! Returns true if mouse is pressed. */
123+
virtual bool mousePressed() const = 0;
124+
125+
/*! Sets the pressed state of mouse. */
126+
virtual void setMousePressed(bool pressed) = 0;
127+
122128
/*! Returns the stage width. */
123129
virtual unsigned int stageWidth() const = 0;
124130

src/engine/internal/engine.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,16 @@ void Engine::setMouseY(double y)
433433
m_mouseY = y;
434434
}
435435

436+
bool Engine::mousePressed() const
437+
{
438+
return m_mousePressed;
439+
}
440+
441+
void Engine::setMousePressed(bool pressed)
442+
{
443+
m_mousePressed = pressed;
444+
}
445+
436446
unsigned int Engine::stageWidth() const
437447
{
438448
return m_stageWidth;

src/engine/internal/engine.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ class Engine : public IEngine
5252
double mouseY() const override;
5353
void setMouseY(double y) override;
5454

55+
bool mousePressed() const override;
56+
void setMousePressed(bool pressed) override;
57+
5558
unsigned int stageWidth() const override;
5659
void setStageWidth(unsigned int width) override;
5760

@@ -141,6 +144,7 @@ class Engine : public IEngine
141144
bool m_anyKeyPressed = false;
142145
double m_mouseX = 0;
143146
double m_mouseY = 0;
147+
bool m_mousePressed = false;
144148
unsigned int m_stageWidth = 480;
145149
unsigned int m_stageHeight = 360;
146150

test/engine/engine_test.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,18 @@ TEST(EngineTest, MouseY)
160160
ASSERT_EQ(engine.mouseY(), 179.9258);
161161
}
162162

163+
TEST(EngineTest, MousePressed)
164+
{
165+
Engine engine;
166+
ASSERT_FALSE(engine.mousePressed());
167+
168+
engine.setMousePressed(true);
169+
ASSERT_TRUE(engine.mousePressed());
170+
171+
engine.setMousePressed(false);
172+
ASSERT_FALSE(engine.mousePressed());
173+
}
174+
163175
TEST(EngineTest, StageWidth)
164176
{
165177
Engine engine;

test/mocks/enginemock.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ class EngineMock : public IEngine
4040
MOCK_METHOD(double, mouseY, (), (const, override));
4141
MOCK_METHOD(void, setMouseY, (double y), (override));
4242

43+
MOCK_METHOD(bool, mousePressed, (), (const, override));
44+
MOCK_METHOD(void, setMousePressed, (bool), (override));
45+
4346
MOCK_METHOD(unsigned int, stageWidth, (), (const, override));
4447
MOCK_METHOD(void, setStageWidth, (unsigned int), (override));
4548

0 commit comments

Comments
 (0)