From 4bfd335c98522f374280ce54990bfca6a38d6c77 Mon Sep 17 00:00:00 2001 From: Henrique Santiago Date: Mon, 9 Jan 2012 16:06:16 -0200 Subject: [PATCH] remove code from uimap to lua --- modules/game/game.otmod | 1 + modules/game/map.lua | 16 ++++++++++++++++ src/otclient/luafunctions.cpp | 1 + src/otclient/ui/uimap.cpp | 24 ++++++------------------ src/otclient/ui/uimap.h | 5 +++-- 5 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 modules/game/map.lua diff --git a/modules/game/game.otmod b/modules/game/game.otmod index ba7d4d99..20688767 100644 --- a/modules/game/game.otmod +++ b/modules/game/game.otmod @@ -17,3 +17,4 @@ Module require 'game' require 'thing' require 'creature' + require 'map' diff --git a/modules/game/map.lua b/modules/game/map.lua new file mode 100644 index 00000000..1b7ebe50 --- /dev/null +++ b/modules/game/map.lua @@ -0,0 +1,16 @@ +function UIMap:onMousePress(mousePos, mouseButton) + + local tile = self:getTile(mousePos) + if not tile then return false end + + if not Options.classicControl then + + if mouseButton == MouseRightButton then + Game.createThingMenu(mousePos, tile:getTopLookThing(), tile:getTopUseThing(), tile:getTopCreature()) + return true + end + + end + + return false +end diff --git a/src/otclient/luafunctions.cpp b/src/otclient/luafunctions.cpp index c59db202..65fc1894 100644 --- a/src/otclient/luafunctions.cpp +++ b/src/otclient/luafunctions.cpp @@ -201,6 +201,7 @@ void OTClient::registerLuaFunctions() g_lua.registerClass(); g_lua.bindClassStaticFunction("create", []{ return UIMapPtr(new UIMap); } ); + g_lua.bindClassMemberFunction("getTile", &UIMap::getTile); g_lua.registerClass(); g_lua.bindClassStaticFunction("create", []{ return UIGamePtr(new UIGame); } ); diff --git a/src/otclient/ui/uimap.cpp b/src/otclient/ui/uimap.cpp index c31a381b..6a15761d 100644 --- a/src/otclient/ui/uimap.cpp +++ b/src/otclient/ui/uimap.cpp @@ -25,9 +25,7 @@ #include #include #include -#include #include -#include UIMap::UIMap() { @@ -55,16 +53,18 @@ void UIMap::onStyleApply(const std::string& styleName, const OTMLNodePtr& styleN UIWidget::onStyleApply(styleName, styleNode); } -bool UIMap::onMousePress(const Point& mousePos, Fw::MouseButton button) +TilePtr UIMap::getTile(const Point& mousePos) { if(!m_mapRect.contains(mousePos)) - return UIWidget::onMousePress(mousePos, button); + return nullptr; // Get tile position Point relativeStretchMousePos = mousePos - m_mapRect.topLeft(); + LocalPlayerPtr localPlayer = g_game.getLocalPlayer(); if(localPlayer) relativeStretchMousePos += localPlayer->getWalkOffset(); + Size mapSize(g_map.getVibibleSize().width() * Map::NUM_TILE_PIXELS, g_map.getVibibleSize().height() * Map::NUM_TILE_PIXELS); PointF stretchFactor(m_mapRect.width() / (float)mapSize.width(), m_mapRect.height() / (float)mapSize.height()); @@ -89,21 +89,9 @@ bool UIMap::onMousePress(const Point& mousePos, Fw::MouseButton button) // todo: get creature, using walkOffset etc. if(!tile || !tile->isClickable()) - return true; - - if(button == Fw::MouseLeftButton) { - g_game.look(tile->getTopLookThing()); - EffectPtr effect = EffectPtr(new Effect); - static int id = 0; - effect->setId(id++); - g_map.addThing(effect, tilePos); - } - else if(button == Fw::MouseRightButton) { - - g_lua.callGlobalField("Game","createThingMenu", mousePos, tile->getTopLookThing(), tile->getTopUseThing(), tile->getTopCreature()); - } + return nullptr; - return true; + return tile; } void UIMap::onGeometryChange(const Rect& oldRect, const Rect& newRect) diff --git a/src/otclient/ui/uimap.h b/src/otclient/ui/uimap.h index b72ced2b..dd5ce11f 100644 --- a/src/otclient/ui/uimap.h +++ b/src/otclient/ui/uimap.h @@ -25,6 +25,7 @@ #include "declarations.h" #include +#include class UIMap : public UIWidget { @@ -32,9 +33,10 @@ public: UIMap(); void render(); + TilePtr getTile(const Point& mousePos); + protected: virtual void onStyleApply(const std::string& styleName, const OTMLNodePtr& styleNode); - virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button); virtual void onGeometryChange(const Rect& oldRect, const Rect& newRect); private: @@ -43,4 +45,3 @@ private: }; #endif -