From 82233dc655bf7268b5fa275f8b424bec65694955 Mon Sep 17 00:00:00 2001 From: BeniS Date: Wed, 11 Jul 2012 00:15:31 +1200 Subject: [PATCH] Changes/Fixes to Channels/Hotkeys/Inventory Slots. - Fixed issue with opening multiple instances of the same message channels (will focus the channel if already exists). - Added tooltip to the 'Clear message window' button. - Added keyboard Up/Down press for hotkeys. - Added inventory slots/images. - Started on adding soul --- modules/game/player.lua | 16 +++- modules/game_console/console.lua | 21 +++-- modules/game_console/console.otui | 1 + modules/game_hotkeys/hotkeys_manager.lua | 6 ++ modules/game_inventory/inventory.lua | 26 +++++- modules/game_inventory/inventory.otui | 93 ++++++++++++++------ modules/game_inventory/slots/ammo.png | Bin 0 -> 3976 bytes modules/game_inventory/slots/back.png | Bin 0 -> 4828 bytes modules/game_inventory/slots/body.png | Bin 0 -> 4855 bytes modules/game_inventory/slots/feet.png | Bin 0 -> 4579 bytes modules/game_inventory/slots/finger.png | Bin 0 -> 4002 bytes modules/game_inventory/slots/head.png | Bin 0 -> 4318 bytes modules/game_inventory/slots/left-hand.png | Bin 0 -> 4494 bytes modules/game_inventory/slots/legs.png | Bin 0 -> 4536 bytes modules/game_inventory/slots/neck.png | Bin 0 -> 4191 bytes modules/game_inventory/slots/right-hand.png | Bin 0 -> 4909 bytes modules/game_minimap/minimap.lua | 31 +++---- 17 files changed, 140 insertions(+), 54 deletions(-) create mode 100644 modules/game_inventory/slots/ammo.png create mode 100644 modules/game_inventory/slots/back.png create mode 100644 modules/game_inventory/slots/body.png create mode 100644 modules/game_inventory/slots/feet.png create mode 100644 modules/game_inventory/slots/finger.png create mode 100644 modules/game_inventory/slots/head.png create mode 100644 modules/game_inventory/slots/left-hand.png create mode 100644 modules/game_inventory/slots/legs.png create mode 100644 modules/game_inventory/slots/neck.png create mode 100644 modules/game_inventory/slots/right-hand.png diff --git a/modules/game/player.lua b/modules/game/player.lua index 8043d336..39e84389 100644 --- a/modules/game/player.lua +++ b/modules/game/player.lua @@ -1,5 +1,19 @@ -- @docclass Player +InventorySlotHead = 1 +InventorySlotNeck = 2 +InventorySlotBack = 3 +InventorySlotBody = 4 +InventorySlotRight = 5 +InventorySlotLeft = 6 +InventorySlotLeg = 7 +InventorySlotFeet = 8 +InventorySlotFinger = 9 +InventorySlotAmmo = 10 + +InventorySlotFirst = 1 +InventorySlotLast = 10 + function Player:isPartyLeader() local shield = self:getShield() return (shield == ShieldWhiteYellow or @@ -37,4 +51,4 @@ function Player:hasVip(creatureName) if (vip[1] == creatureName) then return true end end return false -end +end \ No newline at end of file diff --git a/modules/game_console/console.lua b/modules/game_console/console.lua index f4acfb75..8604503c 100644 --- a/modules/game_console/console.lua +++ b/modules/game_console/console.lua @@ -118,18 +118,13 @@ local function onOpenChannel(channelId, channelName) end local function onOpenPrivateChannel(receiver) - local privateTab = Console.getTab(receiver) - if privateTab == nil then - channels[receiver] = receiver - Console.addTab(receiver, true) - end + Console.addPrivateChannel(receiver) end local function onOpenOwnPrivateChannel(channelId, channelName) local privateTab = Console.getTab(channelName) if privateTab == nil then - --channels[channelId] = channelName (this should be tested) - Console.addChannel(channelName, channelId, true) + Console.addChannel(channelName, channelId) end ownPrivateName = channelName end @@ -302,7 +297,12 @@ function Console.openHelp() end function Console.addTab(name, focus) - local tab = consoleTabBar:addTab(name) + local tab = Console.getTab(name) + if(tab) then -- is channel already open + if(not focus) then focus = true end + else + tab = consoleTabBar:addTab(name) + end if focus then consoleTabBar:selectTab(tab) elseif name ~= tr('Server Log') then @@ -348,6 +348,11 @@ function Console.addChannel(name, id) return tab end +function Console.addPrivateChannel(receiver) + channels[receiver] = receiver + return Console.addTab(receiver, true) +end + function Console.addPrivateText(text, speaktype, name, isPrivateCommand, creatureName) local focus = false if speaktype.speakType == SpeakPrivateNpcToPlayer then diff --git a/modules/game_console/console.otui b/modules/game_console/console.otui index 54a34523..4ff5a597 100644 --- a/modules/game_console/console.otui +++ b/modules/game_console/console.otui @@ -75,6 +75,7 @@ Panel TabButton id: clearChannelButton + !tooltip: tr('Clear current message window') icon: icons/clearchannel.png anchors.right: next.left anchors.top: parent.top diff --git a/modules/game_hotkeys/hotkeys_manager.lua b/modules/game_hotkeys/hotkeys_manager.lua index b7ee6ead..ec0a7bed 100644 --- a/modules/game_hotkeys/hotkeys_manager.lua +++ b/modules/game_hotkeys/hotkeys_manager.lua @@ -35,10 +35,13 @@ local hotkeyColors = { -- public functions function HotkeysManager.init() hotkeysWindow = g_ui.displayUI('hotkeys_manager.otui') + local hotkeyListPanel = hotkeysWindow:getChildById('currentHotkeys') hotkeysWindow:setVisible(false) hotkeysButton = TopMenu.addGameButton('hotkeysButton', tr('Hotkeys') .. ' (Ctrl+K)', '/game_hotkeys/icon.png', HotkeysManager.toggle) g_keyboard.bindKeyDown('Ctrl+K', HotkeysManager.toggle) + g_keyboard.bindKeyPress('Down', function() hotkeyListPanel:focusNextChild(KeyboardFocusReason) end, hotkeysWindow) + g_keyboard.bindKeyPress('Up', function() hotkeyListPanel:focusPreviousChild(KeyboardFocusReason) end, hotkeysWindow) currentHotkeysList = hotkeysWindow:getChildById('currentHotkeys') currentItemPreview = hotkeysWindow:getChildById('itemPreview') @@ -102,6 +105,9 @@ function HotkeysManager.terminate() hotkeysManagerLoaded = false g_keyboard.unbindKeyDown('Ctrl+K') + g_keyboard.unbindKeyPress('Down', function() channelListPanel:focusNextChild(KeyboardFocusReason) end, channelsWindow) + g_keyboard.unbindKeyPress('Up', function() channelListPanel:focusPreviousChild(KeyboardFocusReason) end, channelsWindow) + HotkeysManager.save() currentHotkeysList = nil diff --git a/modules/game_inventory/inventory.lua b/modules/game_inventory/inventory.lua index b5259524..434ed6f7 100644 --- a/modules/game_inventory/inventory.lua +++ b/modules/game_inventory/inventory.lua @@ -1,5 +1,19 @@ Inventory = {} +-- public variables +InventorySlotStyles = { + [InventorySlotHead] = "HeadSlot", + [InventorySlotNeck] = "NeckSlot", + [InventorySlotBack] = "BackSlot", + [InventorySlotBody] = "BodySlot", + [InventorySlotRight] = "RightSlot", + [InventorySlotLeft] = "LeftSlot", + [InventorySlotLeg] = "LegSlot", + [InventorySlotFeet] = "FeetSlot", + [InventorySlotFinger] = "FingerSlot", + [InventorySlotAmmo] = "AmmoSlot" +} + -- private variables local inventoryWindow local inventoryPanel @@ -39,7 +53,7 @@ end function Inventory.refresh() local player = g_game.getLocalPlayer() - for i=1,10 do + for i=InventorySlotFirst,InventorySlotLast do if player then Inventory.onInventoryChange(player, i, player:getInventoryItem(i)) else @@ -63,9 +77,15 @@ function Inventory.onMiniWindowClose() end -- hooked events -function Inventory.onInventoryChange(player, slot, item) +function Inventory.onInventoryChange(player, slot, item, oldItem) local itemWidget = inventoryPanel:getChildById('slot' .. slot) - itemWidget:setItem(item) + if(item) then + itemWidget:setStyle('Item') + itemWidget:setItem(item) + else + itemWidget:setStyle(InventorySlotStyles[slot]) + itemWidget:setItem(nil) + end end function Inventory.onFreeCapacityChange(player, freeCapacity) diff --git a/modules/game_inventory/inventory.otui b/modules/game_inventory/inventory.otui index 05398711..42019a6f 100644 --- a/modules/game_inventory/inventory.otui +++ b/modules/game_inventory/inventory.otui @@ -1,3 +1,43 @@ +HeadSlot < Item + id: slot1 + image-source: /game_inventory/slots/head.png + +BodySlot < Item + id: slot4 + image-source: /game_inventory/slots/body.png + +LegSlot < Item + id: slot7 + image-source: /game_inventory/slots/legs.png + +FeetSlot < Item + id: slot8 + image-source: /game_inventory/slots/feet.png + +NeckSlot < Item + id: slot2 + image-source: /game_inventory/slots/neck.png + +LeftSlot < Item + id: slot6 + image-source: /game_inventory/slots/left-hand.png + +FingerSlot < Item + id: slot9 + image-source: /game_inventory/slots/finger.png + +BackSlot < Item + id: slot3 + image-source: /game_inventory/slots/back.png + +RightSlot < Item + id: slot5 + image-source: /game_inventory/slots/right-hand.png + +AmmoSlot < Item + id: slot10 + image-source: /game_inventory/slots/ammo.png + MiniWindow id: inventoryWindow !text: tr('Inventory') @@ -6,84 +46,74 @@ MiniWindow @onClose: Inventory.onMiniWindowClose() &save: true - MiniWindowContents - Item + MiniWindowContents + HeadSlot // head - id: slot1 anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter margin-top: 4 &position: {x=65535, y=1, z=0} - Item - // armor - id: slot4 + BodySlot + // body anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=4, z=0} - Item + LegSlot // legs - id: slot7 anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=7, z=0} - Item + FeetSlot // feet - id: slot8 anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=8, z=0} - Item - // necklace - id: slot2 + NeckSlot + // neck anchors.top: parent.top anchors.right: slot1.left margin-top: 10 margin-right: 5 &position: {x=65535, y=2, z=0} - Item - // left - id: slot6 + LeftSlot + // left hand anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=6, z=0} - Item - // ring - id: slot9 + FingerSlot + // finger anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=9, z=0} - Item - // backpack - id: slot3 + BackSlot + // back anchors.top: parent.top anchors.left: slot1.right margin-top: 10 margin-left: 5 &position: {x=65535, y=3, z=0} - Item - // right - id: slot5 + RightSlot + // right hand anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 &position: {x=65535, y=5, z=0} - Item + AmmoSlot // ammo - id: slot10 anchors.top: prev.bottom anchors.horizontalCenter: prev.horizontalCenter margin-top: 5 @@ -97,4 +127,13 @@ MiniWindow margin-top: 5 text-align: center text-auto-resize: true + + GameLabel + id: soul + height: 30 + anchors.top: slot9.bottom + anchors.left: slot9.left + margin-top: 5 + text-align: center + text-auto-resize: true diff --git a/modules/game_inventory/slots/ammo.png b/modules/game_inventory/slots/ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..345415f548cdb22f8ef11ca79fd78c2330c21f4d GIT binary patch literal 3976 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 literal 0 HcmV?d00001 diff --git a/modules/game_inventory/slots/feet.png b/modules/game_inventory/slots/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdfd5fd919103d0fed0b7171e374c32384cf9c1 GIT binary patch literal 4579 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 N002ovPDHLkV1jv=uMz+N literal 0 HcmV?d00001 diff --git a/modules/game_inventory/slots/finger.png b/modules/game_inventory/slots/finger.png new file mode 100644 index 0000000000000000000000000000000000000000..61dec1e65a81527a39474323ba0ce543520adbbf GIT binary patch literal 4002 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 literal 0 HcmV?d00001 diff --git a/modules/game_inventory/slots/head.png b/modules/game_inventory/slots/head.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f3782b2ab721adbd0b11672ceb24959d3218a4 GIT binary patch literal 4318 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 literal 0 HcmV?d00001 diff --git a/modules/game_minimap/minimap.lua b/modules/game_minimap/minimap.lua index ea04fa29..3ad4abeb 100644 --- a/modules/game_minimap/minimap.lua +++ b/modules/game_minimap/minimap.lua @@ -38,7 +38,7 @@ end -- public functions function Minimap.init() connect(g_game, { onGameStart = Minimap.reset, - onForceWalk = Minimap.center } ) + onForceWalk = Minimap.center }) g_keyboard.bindKeyDown('Ctrl+M', Minimap.toggle) @@ -78,7 +78,7 @@ end function Minimap.terminate() disconnect(g_game, { onGameStart = Minimap.reset, - onForceWalk = Minimap.center } ) + onForceWalk = Minimap.center }) g_keyboard.unbindKeyDown('Ctrl+M') @@ -104,19 +104,6 @@ function Minimap.onMiniWindowClose() minimapButton:setOn(false) end -function Minimap.reset() - local player = g_game.getLocalPlayer() - if not player then return end - minimapWidget:followCreature(player) - 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 @@ -159,4 +146,18 @@ function Minimap.onButtonClick(id) pos.z = pos.z + 1 minimapWidget:setCameraPosition(pos) end +end + +-- hooked events +function Minimap.reset() + local player = g_game.getLocalPlayer() + if not player then return end + minimapWidget:followCreature(player) + minimapWidget:setZoom(DEFAULT_ZOOM) +end + +function Minimap.center() + local player = g_game.getLocalPlayer() + if not player then return end + minimapWidget:followCreature(player) end \ No newline at end of file