mirror of
https://github.com/edubart/otclient.git
synced 2025-10-13 19:14:56 +02:00
BEAWARE all game functionality is disabled with this commit for a while
* rework client modules * hide main window when loading * remake top menu functions * rework modules autoload * improve path resolving for otml and lua * move core_widgets to core_lib * fix tooltip issues * split some styles * add bit32 lua library * fix assert issues * fix compilation on linux 32 systems * rework gcc compile options * renable and fix some warnings * remove unused constants * speedup sprite cache * move UIGame to lua (not funcional yet) * fix a lot of issues in x11 window * fix crash handler * add some warnings do uiwidget and much more...
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
MainWindow
|
||||
size: 256 128
|
||||
text: Add to VIP list
|
||||
@onEnter: VipList.addVip()
|
||||
@onEscape: VipList.destroyAddWindow()
|
||||
|
||||
Label
|
||||
text: Please enter a character name:
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
LineEdit
|
||||
id: name
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
margin-top: 4
|
||||
|
||||
HorizontalSeparator
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: next.top
|
||||
margin-bottom: 10
|
||||
|
||||
Button
|
||||
text: Ok
|
||||
width: 64
|
||||
anchors.right: next.left
|
||||
anchors.bottom: parent.bottom
|
||||
margin-right: 10
|
||||
@onClick: VipList.addVip()
|
||||
|
||||
Button
|
||||
text: Cancel
|
||||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
@onClick: VipList.destroyAddWindow()
|
@@ -1,129 +0,0 @@
|
||||
VipList = {}
|
||||
|
||||
-- private variables
|
||||
local vipWindow
|
||||
local vipButton
|
||||
local addVipWindow
|
||||
|
||||
-- public functions
|
||||
function VipList.create()
|
||||
vipWindow = displayUI('viplist.otui', { parent = g_game.gameRightPanel })
|
||||
vipWindow:hide()
|
||||
vipButton = TopMenu.addGameButton('vipListButton', 'VIP list', 'viplist.png', VipList.toggle)
|
||||
end
|
||||
|
||||
function VipList.destroy()
|
||||
vipWindow:destroy()
|
||||
vipWindow = nil
|
||||
vipButton:destroy()
|
||||
vipButton = nil
|
||||
end
|
||||
|
||||
function VipList.toggle()
|
||||
local visible = not vipWindow:isExplicitlyVisible()
|
||||
vipWindow:setVisible(visible)
|
||||
vipButton:setOn(visible)
|
||||
end
|
||||
|
||||
function VipList.createAddWindow()
|
||||
addVipWindow = displayUI('addvip.otui')
|
||||
end
|
||||
|
||||
function VipList.destroyAddWindow()
|
||||
addVipWindow:destroy()
|
||||
addVipWindow = nil
|
||||
end
|
||||
|
||||
function VipList.addVip()
|
||||
g_game.addVip(addVipWindow:getChildById('name'):getText())
|
||||
VipList.destroyAddWindow()
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function VipList.onAddVip(id, name, online)
|
||||
local vipList = vipWindow:getChildById('vipList')
|
||||
|
||||
local label = createWidget('VipListLabel', nil)
|
||||
label:setId('vip' .. id)
|
||||
label:setText(name)
|
||||
|
||||
if online then
|
||||
label:setColor('#00ff00')
|
||||
else
|
||||
label:setColor('#ff0000')
|
||||
end
|
||||
|
||||
label.vipOnline = online
|
||||
|
||||
label:setPhantom(false)
|
||||
connect(label, { onDoubleClick = function () g_game.openPrivateChannel(label:getText()) return true end } )
|
||||
|
||||
local nameLower = name:lower()
|
||||
local childrenCount = vipList:getChildCount()
|
||||
|
||||
for i=1,childrenCount do
|
||||
local child = vipList:getChildByIndex(i)
|
||||
if online and not child.vipOnline then
|
||||
vipList:insertChild(i, label)
|
||||
return
|
||||
end
|
||||
|
||||
if (not online and not child.vipOnline) or (online and child.vipOnline) then
|
||||
local childText = child:getText():lower()
|
||||
local length = math.min(childText:len(), nameLower:len())
|
||||
|
||||
for j=1,length do
|
||||
if nameLower:byte(j) < childText:byte(j) then
|
||||
vipList:insertChild(i, label)
|
||||
return
|
||||
elseif nameLower:byte(j) > childText:byte(j) then
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
vipList:insertChild(childrenCount+1, label)
|
||||
end
|
||||
|
||||
function VipList.onVipStateChange(id, online)
|
||||
local vipList = vipWindow:getChildById('vipList')
|
||||
local label = vipList:getChildById('vip' .. id)
|
||||
local text = label:getText()
|
||||
vipList:removeChild(label)
|
||||
|
||||
VipList.onAddVip(id, text, online)
|
||||
end
|
||||
|
||||
function VipList.onVipListMousePress(widget, mousePos, mouseButton)
|
||||
if mouseButton ~= MouseRightButton then return end
|
||||
|
||||
local vipList = vipWindow:getChildById('vipList')
|
||||
|
||||
local menu = createWidget('PopupMenu')
|
||||
menu:addOption('Add new VIP', function() VipList.createAddWindow() end)
|
||||
menu:display(mousePos)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function VipList.onVipListLabelMousePress(widget, mousePos, mouseButton)
|
||||
if mouseButton ~= MouseRightButton then return end
|
||||
|
||||
local vipList = vipWindow:getChildById('vipList')
|
||||
|
||||
local menu = createWidget('PopupMenu')
|
||||
menu:addOption('Add new VIP', function() VipList.createAddWindow() end)
|
||||
menu:addOption('Remove ' .. widget:getText(), function() if widget then g_game.removeVip(widget:getId():sub(4)) vipList:removeChild(widget) end end)
|
||||
menu:addSeparator()
|
||||
menu:addOption('Copy Name', function() g_window.setClipboardText(widget:getText()) end)
|
||||
menu:display(mousePos)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
connect(g_game, { onGameStart = VipList.create,
|
||||
onGameEnd = VipList.destroy,
|
||||
onAddVip = VipList.onAddVip,
|
||||
onVipStateChange = VipList.onVipStateChange })
|
@@ -1,7 +0,0 @@
|
||||
Module
|
||||
name: game_viplist
|
||||
description: Manage vip list window
|
||||
author: OTClient team
|
||||
website: https://github.com/edubart/otclient
|
||||
onLoad: |
|
||||
dofile 'viplist'
|
@@ -1,15 +0,0 @@
|
||||
VipListLabel < GameLabel
|
||||
font: verdana-11px-monochrome
|
||||
phantom: false
|
||||
&onMousePress: VipList.onVipListLabelMousePress
|
||||
|
||||
MiniWindow
|
||||
id: vipWindow
|
||||
text: VIP List
|
||||
height: 100
|
||||
|
||||
UIWidget
|
||||
id: vipList
|
||||
layout: verticalBox
|
||||
anchors.fill: parent
|
||||
&onMousePress: VipList.onVipListMousePress
|
Binary file not shown.
Before Width: | Height: | Size: 928 B |
Reference in New Issue
Block a user