tibia-client/modules/game_skills/skills.lua

131 lines
3.5 KiB
Lua
Raw Normal View History

Skills = {}
2011-09-13 23:54:23 +02:00
-- private variables
2012-01-14 20:31:20 +01:00
local skillWindow
local skillsButton
2011-09-13 23:54:23 +02:00
2011-12-22 05:06:00 +01:00
-- private functions
local function getNumberString(number)
local out = ''
number = tostring(number):reverse()
for i=1,#number do
out = out .. number:sub(i, i)
if i % 3 == 0 and i ~= #number then
out = out .. ','
end
end
out = out:reverse()
return out
end
2011-12-22 05:06:00 +01:00
local function setSkillValue(id, value)
local skill = skillWindow:recursiveGetChildById(id)
2012-01-06 09:48:59 +01:00
2011-12-22 05:06:00 +01:00
if skill then
local widget = skill:getChildById('value')
widget:setText(value)
end
end
local function setSkillPercent(id, percent, tooltip)
local skill = skillWindow:recursiveGetChildById(id)
2012-01-06 09:48:59 +01:00
2011-12-22 05:06:00 +01:00
if skill then
local widget = skill:getChildById('percent')
widget:setPercent(percent)
2012-01-06 09:48:59 +01:00
2011-12-22 05:06:00 +01:00
if tooltip then
widget:setTooltip(tooltip)
2011-11-14 09:46:27 +01:00
end
2011-09-13 23:54:23 +02:00
end
end
2011-12-22 05:06:00 +01:00
-- public functions
function Skills.create()
skillWindow = displayUI('skills.otui', { parent = Game.gameRightPanel })
skillsButton = TopMenu.addGameButton('skillsButton', 'Skills (Ctrl+S)', '/core_styles/icons/skills.png', Skills.toggle)
2011-12-22 05:06:00 +01:00
end
function Skills.destroy()
2012-01-14 20:31:20 +01:00
--skillsButton:destroy()
--skillsButton = nil
skillWindow:destroy()
skillWindow = nil
end
2012-01-14 20:31:20 +01:00
function Skills.toggle()
end
2012-01-06 09:48:59 +01:00
function Skills.onSkillButtonClick(button)
local percentBar = button:getChildById('percent')
if percentBar then
percentBar:setVisible(not percentBar:isVisible())
if percentBar:isVisible() then
button:setHeight(21)
else
button:setHeight(21 - 6)
end
end
end
-- hooked events
2011-12-22 05:06:00 +01:00
function Skills.onExperienceChange(value)
setSkillValue('experience', getNumberString(value))
end
2011-11-03 23:14:56 +01:00
2011-12-22 05:06:00 +01:00
function Skills.onLevelChange(value, percent)
setSkillValue('level', getNumberString(value))
setSkillPercent('level', percent, 'You have ' .. (100 - percent) .. ' percent to go')
end
function Skills.onHealthChange(health, maxHealth)
setSkillValue('health', getNumberString(health))
end
function Skills.onManaChange(mana, maxMana)
setSkillValue('mana', getNumberString(mana))
end
function Skills.onSoulChange(soul)
setSkillValue('soul', soul)
end
function Skills.onFreeCapacityChange(freeCapacity)
setSkillValue('capacity', freeCapacity)
end
function Skills.onStaminaChange(stamina)
local hours = math.floor(stamina / 60)
local minutes = stamina % 60
if minutes < 10 then
minutes = '0' .. minutes
end
local percent = 100 * stamina / (42 * 60) -- max is 42 hours
2012-01-06 09:48:59 +01:00
2011-12-22 05:06:00 +01:00
setSkillValue('stamina', hours .. ":" .. minutes)
setSkillPercent('stamina', percent, 'You have ' .. percent .. ' percent')
end
function Skills.onMagicLevelChange(value, percent)
setSkillValue('magiclevel', value)
setSkillPercent('magiclevel', percent, 'You have ' .. (100 - percent) .. ' percent to go')
end
2011-11-03 23:14:56 +01:00
2011-12-22 05:06:00 +01:00
function Skills.onSkillChange(id, level, percent)
setSkillValue('skillId' .. id, level)
setSkillPercent('skillId' .. id, percent, 'You have ' .. (100 - percent) .. ' percent to go')
end
connect(Game, { onLogin = Skills.create,
2011-12-22 05:06:00 +01:00
onLogout = Skills.destroy,
onExperienceChange = Skills.onExperienceChange,
onLevelChange = Skills.onLevelChange,
onHealthChange = Skills.onHealthChange,
onManaChange = Skills.onManaChange,
onSoulChange = Skills.onSoulChange,
onFreeCapacityChange = Skills.onFreeCapacityChange,
onStaminaChange = Skills.onStaminaChange,
onMagicLevelChange = Skills.onMagicLevelChange,
onSkillChange = Skills.onSkillChange })