remove code from uimap to lua

master
Henrique Santiago 13 years ago
parent b00076bcb9
commit 4bfd335c98

@ -17,3 +17,4 @@ Module
require 'game'
require 'thing'
require 'creature'
require 'map'

@ -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

@ -201,6 +201,7 @@ void OTClient::registerLuaFunctions()
g_lua.registerClass<UIMap, UIWidget>();
g_lua.bindClassStaticFunction<UIMap>("create", []{ return UIMapPtr(new UIMap); } );
g_lua.bindClassMemberFunction<UIMap>("getTile", &UIMap::getTile);
g_lua.registerClass<UIGame, UIWidget>();
g_lua.bindClassStaticFunction<UIGame>("create", []{ return UIGamePtr(new UIGame); } );

@ -25,9 +25,7 @@
#include <otclient/core/map.h>
#include <framework/otml/otml.h>
#include <framework/graphics/graphics.h>
#include <otclient/core/tile.h>
#include <otclient/core/localplayer.h>
#include <otclient/core/effect.h>
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)

@ -25,6 +25,7 @@
#include "declarations.h"
#include <framework/ui/uiwidget.h>
#include <otclient/core/tile.h>
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

Loading…
Cancel
Save