From d812706328ddd31bd23b425d7d4eb7777d29ae55 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 3 Feb 2016 11:01:41 +0100 Subject: [PATCH] WAGE: Started text selection implementation --- engines/wage/gui.cpp | 17 ++++++++++++++++- engines/wage/gui.h | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp index 1f07b2a3820c..3bd47bbbb5be 100644 --- a/engines/wage/gui.cpp +++ b/engines/wage/gui.cpp @@ -155,6 +155,8 @@ Gui::Gui(WageEngine *engine) { _cursorState = false; _cursorOff = false; + _inTextSelection = false; + g_system->getPaletteManager()->setPalette(palette, 0, 4); CursorMan.replaceCursorPalette(palette, 0, 4); @@ -649,8 +651,21 @@ Designed *Gui::mouseUp(int x, int y) { } void Gui::mouseDown(int x, int y) { - if (_menu->mouseClick(x, y)) + if (_menu->mouseClick(x, y)) { _menuDirty = true; + } else if (_consoleTextArea.contains(x, y)) { + startMarking(x, y); + } +} + +void Gui::startMarking(int x, int y) { + const int firstLine = _scrollPos / _consoleLineHeight; + int textLine = (y - kConHOverlap - kConHPadding - _scrollPos % _consoleLineHeight - _consoleTextArea.top) / _consoleLineHeight + firstLine; + int charPos = x - kConWOverlap - kConWPadding - _consoleTextArea.left; + + _inTextSelection = true; + + warning("x: %d y: %d", textLine, charPos); } } // End of namespace Wage diff --git a/engines/wage/gui.h b/engines/wage/gui.h index 488543e4856e..09c4693ba803 100644 --- a/engines/wage/gui.h +++ b/engines/wage/gui.h @@ -111,6 +111,7 @@ class Gui { void flowText(Common::String &str); const Graphics::Font *getConsoleFont(); const Graphics::Font *getTitleFont(); + void startMarking(int x, int y); public: Graphics::Surface _screen; @@ -143,6 +144,8 @@ class Gui { Common::Rect _sceneArea; bool _sceneIsActive; bool _cursorIsArrow; + + bool _inTextSelection; }; } // End of namespace Wage