mirror of
https://github.com/edubart/otclient.git
synced 2025-10-14 11:34:54 +02:00
Fixed an issue with the battle list filter.
More work on the minimap, interface changes, fixed direction controls, fixed reseting, fixed some draw things (needs some more work to finish). Fixed a bug in the battle list causing Battle.onFollow(creature) to execute when there was no follow.
This commit is contained in:
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 6.6 KiB |
BIN
modules/game_minimap/floor_down.png
Normal file
BIN
modules/game_minimap/floor_down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
BIN
modules/game_minimap/floor_up.png
Normal file
BIN
modules/game_minimap/floor_up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
@@ -30,9 +30,16 @@ function onMinimapMouseWheel(self, mousePos, direction)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
Known Issue (TODO):
|
||||
If you move the minimap compass directions and
|
||||
you change floor it will not update the minimap.
|
||||
]]
|
||||
-- public functions
|
||||
function Minimap.init()
|
||||
connect(g_game, { onGameStart = Minimap.reset })
|
||||
connect(g_game, { onGameStart = Minimap.reset,
|
||||
onForceWalk = Minimap.center } )
|
||||
|
||||
g_keyboard.bindKeyDown('Ctrl+M', Minimap.toggle)
|
||||
|
||||
minimapButton = TopMenu.addGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', 'minimap.png', Minimap.toggle)
|
||||
@@ -70,7 +77,9 @@ function Minimap.init()
|
||||
end
|
||||
|
||||
function Minimap.terminate()
|
||||
disconnect(g_game, { onGameStart = Minimap.reset })
|
||||
disconnect(g_game, { onGameStart = Minimap.reset,
|
||||
onForceWalk = Minimap.center } )
|
||||
|
||||
g_keyboard.unbindKeyDown('Ctrl+M')
|
||||
|
||||
minimapButton:destroy()
|
||||
@@ -102,6 +111,12 @@ function Minimap.reset()
|
||||
minimapWidget:setZoom(DEFAULT_ZOOM)
|
||||
end
|
||||
|
||||
function Minimap.center()
|
||||
local player = g_game.getLocalPlayer()
|
||||
if not player then return end
|
||||
minimapWidget:followCreature(player)
|
||||
end
|
||||
|
||||
function Minimap.isClickInRange(position, fromPosition, toPosition)
|
||||
return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.x <= toPosition.x and position.y <= toPosition.y)
|
||||
end
|
||||
@@ -111,32 +126,23 @@ compassZones.west = {x = 0, y = 30, posx = -1, posy = 0}
|
||||
compassZones.north = {x = 30, y = 0, posx = 0, posy = -1}
|
||||
compassZones.south = {x = 30, y = 57, posx = 0, posy = 1}
|
||||
compassZones.east = {x = 57, y = 30, posx = 1, posy = 0}
|
||||
compassZones.center = {x = 30, y = 30, posx = 0, posy = 0, center = true}
|
||||
function Minimap.compassClick(self, mousePos)
|
||||
local compassPos = self:getRect()
|
||||
local pos = {x = mousePos.x-compassPos.x, y = mousePos.y-compassPos.y}
|
||||
local move = {x = 0, y = 0}
|
||||
local center = false
|
||||
for i,v in pairs(compassZones) do
|
||||
local lowPos = {x = v.x-15, y = v.y-15}
|
||||
local highPos = {x = v.x+15, y = v.y+15}
|
||||
if Minimap.isClickInRange(pos, lowPos, highPos) then
|
||||
move.x = move.x + v.posx * minimapWidget:getZoom()/10
|
||||
move.y = move.y + v.posy * minimapWidget:getZoom()/10
|
||||
if v.center then center = true end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if center then
|
||||
local player = g_game.getLocalPlayer()
|
||||
if not player then return end
|
||||
minimapWidget:followCreature(player)
|
||||
else
|
||||
local cameraPos = minimapWidget:getCameraPosition()
|
||||
local pos = {x = cameraPos.x + move.x, y = cameraPos.y + move.y, z = cameraPos.z}
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
end
|
||||
local cameraPos = minimapWidget:getCameraPosition()
|
||||
local pos = {x = cameraPos.x + move.x, y = cameraPos.y + move.y, z = cameraPos.z}
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
end
|
||||
|
||||
function Minimap.onButtonClick(id)
|
||||
|
@@ -1,3 +1,30 @@
|
||||
MapControl < Button
|
||||
size: 16 16
|
||||
|
||||
$pressed:
|
||||
image-clip: 0 0 16 16
|
||||
|
||||
$hover !pressed:
|
||||
image-clip: 0 16 16 16
|
||||
|
||||
$!pressed !hover:
|
||||
image-clip: 0 32 16 16
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff88
|
||||
|
||||
FloorUpControl < MapControl
|
||||
image-source: /game_minimap/floor_up.png
|
||||
|
||||
FloorDownControl < MapControl
|
||||
image-source: /game_minimap/floor_down.png
|
||||
|
||||
//ZoomOutControl < MapControl
|
||||
//image-source: /game_minimap/zoom_out.png
|
||||
|
||||
//ZoomInControl < MapControl
|
||||
//image-source: /game_minimap/zoom_in.png
|
||||
|
||||
MiniWindow
|
||||
id: minimapWindow
|
||||
!text: tr('Minimap')
|
||||
@@ -17,46 +44,74 @@ MiniWindow
|
||||
UIButton
|
||||
id: compass
|
||||
image-source: /game_minimap/compass.png
|
||||
color: #ffffff
|
||||
anchors.left: minimap.right
|
||||
anchors.top: minimap.top
|
||||
size: 60 60
|
||||
margin-top: 3
|
||||
margin-left: 5
|
||||
@onClick: function(...) Minimap.compassClick(...) end
|
||||
|
||||
UIButton
|
||||
id: compassReset
|
||||
text: Reset
|
||||
font: verdana-11px-rounded
|
||||
anchors.left: compass.left
|
||||
anchors.top: compass.top
|
||||
margin-top: 25
|
||||
margin-left: 14
|
||||
@onClick: function(...) Minimap.center(...) end
|
||||
$pressed:
|
||||
color: #eb9f4f88
|
||||
margin-top: 26
|
||||
margin-left: 15
|
||||
|
||||
$hover !pressed:
|
||||
color: #eb9f4f
|
||||
|
||||
$!pressed !hover:
|
||||
color: #ffffff
|
||||
margin-top: 25
|
||||
margin-left: 14
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff88
|
||||
|
||||
Button
|
||||
id: zoomOut
|
||||
text: -
|
||||
size: 20 20
|
||||
font: terminus-14px-bold
|
||||
size: 16 16
|
||||
anchors.left: minimap.right
|
||||
anchors.top: compass.bottom
|
||||
margin-top: 5
|
||||
margin-left: 15
|
||||
margin-top: 10
|
||||
margin-left: 10
|
||||
enabled: true
|
||||
@onClick: Minimap.onButtonClick(self:getId())
|
||||
|
||||
Button
|
||||
id: zoomIn
|
||||
text: +
|
||||
size: 20 20
|
||||
size: 16 16
|
||||
anchors.left: zoomOut.left
|
||||
anchors.top: zoomOut.bottom
|
||||
margin-top: 2
|
||||
margin-top: 4
|
||||
enabled: true
|
||||
@onClick: Minimap.onButtonClick(self:getId())
|
||||
|
||||
Button
|
||||
FloorUpControl
|
||||
id: levelUp
|
||||
text: /\
|
||||
size: 20 20
|
||||
anchors.left: zoomOut.right
|
||||
anchors.top: zoomOut.top
|
||||
margin-left: 2
|
||||
margin-left: 15
|
||||
enabled: true
|
||||
@onClick: Minimap.onButtonClick(self:getId())
|
||||
|
||||
Button
|
||||
FloorDownControl
|
||||
id: levelDown
|
||||
text: \/
|
||||
size: 20 20
|
||||
anchors.left: zoomIn.right
|
||||
anchors.top: zoomIn.top
|
||||
margin-left: 2
|
||||
margin-left: 15
|
||||
enabled: true
|
||||
@onClick: Minimap.onButtonClick(self:getId())
|
||||
|
||||
|
BIN
modules/game_minimap/zoom_in.png
Normal file
BIN
modules/game_minimap/zoom_in.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
BIN
modules/game_minimap/zoom_out.png
Normal file
BIN
modules/game_minimap/zoom_out.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
Reference in New Issue
Block a user