remove code from uimap to lua
This commit is contained in:
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;
|
||||
return nullptr;
|
||||
|
||||
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 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…
Reference in New Issue