healthmana module
This commit is contained in:
parent
f444dc624c
commit
5d54971568
|
@ -0,0 +1,17 @@
|
||||||
|
Module
|
||||||
|
name: game
|
||||||
|
description: Create the game interface, where the ingame stuff starts
|
||||||
|
author: OTClient team
|
||||||
|
website: https://github.com/edubart/otclient
|
||||||
|
autoLoad: true
|
||||||
|
dependencies:
|
||||||
|
- core
|
||||||
|
- tibiafiles
|
||||||
|
- topmenu
|
||||||
|
- entergame
|
||||||
|
- background
|
||||||
|
|
||||||
|
onLoad: |
|
||||||
|
require 'game'
|
||||||
|
require 'textmessage'
|
||||||
|
return true
|
|
@ -0,0 +1,60 @@
|
||||||
|
TextMessage = {}
|
||||||
|
|
||||||
|
-- require styles
|
||||||
|
importStyles '/game/ui/textmessage.otui'
|
||||||
|
|
||||||
|
-- private variables
|
||||||
|
local bottomLabelWidget, centerLabelWidget
|
||||||
|
local messageTypes = {
|
||||||
|
first = 12,
|
||||||
|
{ type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false },
|
||||||
|
{ type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false },
|
||||||
|
{ type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||||
|
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||||
|
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||||
|
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||||
|
{ type = 'MessageGreen', color = '#3FBE32', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||||
|
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = false, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||||
|
{ type = 'MessageBlue', color = '#3264C8', showOnConsole = true, showOnWindow = false },
|
||||||
|
{ type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = false }
|
||||||
|
}
|
||||||
|
|
||||||
|
-- public functions
|
||||||
|
function TextMessage.create()
|
||||||
|
bottomLabelWidget = UILabel.create()
|
||||||
|
Game.gameMapPanel:addChild(bottomLabelWidget)
|
||||||
|
|
||||||
|
centerLabelWidget = UILabel.create()
|
||||||
|
Game.gameMapPanel:addChild(centerLabelWidget)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- hooked events
|
||||||
|
function Game.onTextMessage(type, message)
|
||||||
|
local messageType = messageTypes[type - messageTypes.first]
|
||||||
|
|
||||||
|
if messageType.showOnConsole then
|
||||||
|
-- TODO
|
||||||
|
end
|
||||||
|
|
||||||
|
if messageType.showOnWindow then
|
||||||
|
local label
|
||||||
|
if messageType.windowLocation == 'BottomLabel' then
|
||||||
|
label = bottomLabelWidget
|
||||||
|
elseif messageType.windowLocation == 'CenterLabel' then
|
||||||
|
label = centerLabelWidget
|
||||||
|
end
|
||||||
|
|
||||||
|
label:setVisible(true)
|
||||||
|
label:setForegroundColor(messageType.color)
|
||||||
|
label:setText(message)
|
||||||
|
|
||||||
|
label:setStyle(messageType.windowLocation)
|
||||||
|
|
||||||
|
time = #message * 75
|
||||||
|
scheduleEvent(function()
|
||||||
|
label:setVisible(false)
|
||||||
|
end, time)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
connect(Game, { onLogin = TextMessage.create })
|
|
@ -0,0 +1,14 @@
|
||||||
|
Module
|
||||||
|
name: health_mana
|
||||||
|
description: Displays health and mana points
|
||||||
|
author: OTClient team
|
||||||
|
website: https://github.com/edubart/otclient
|
||||||
|
autoLoad: true
|
||||||
|
dependencies:
|
||||||
|
- game
|
||||||
|
|
||||||
|
onLoad: |
|
||||||
|
require 'viplist'
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
HealthMana = {}
|
||||||
|
|
||||||
|
-- private variables
|
||||||
|
local healthManaPanel = nil
|
||||||
|
|
||||||
|
-- public functions
|
||||||
|
function HealthMana.create()
|
||||||
|
healthManaPanel = loadUI("/health_mana/health_mana.otui", Game.gameRightPanel)
|
||||||
|
|
||||||
|
local healthLabel = UILabel.create()
|
||||||
|
healthManaPanel:addChild(healthLabel)
|
||||||
|
healthLabel:setId('healthLabel')
|
||||||
|
healthLabel:setStyle('HealthLabel')
|
||||||
|
healthLabel:setText('0 / 0')
|
||||||
|
|
||||||
|
local manaLabel = UILabel.create()
|
||||||
|
healthManaPanel:addChild(manaLabel)
|
||||||
|
manaLabel:setId('manaLabel')
|
||||||
|
manaLabel:setStyle('ManaLabel')
|
||||||
|
manaLabel:setText('0 / 0')
|
||||||
|
|
||||||
|
healthManaPanel:setHeight(healthLabel:getHeight() + manaLabel:getHeight())
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealthMana.destroy()
|
||||||
|
healthManaPanel:destroy()
|
||||||
|
healthManaPanel = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- hooked events
|
||||||
|
function Game.onHealthChange(health, maxHealth)
|
||||||
|
local label = healthManaPanel:getChildById('healthLabel')
|
||||||
|
label:setText(health .. ' / ' .. maxHealth)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Game.onManaChange(mana, maxMana)
|
||||||
|
local label = healthManaPanel:getChildById('manaLabel')
|
||||||
|
label:setText(mana .. ' / ' .. maxMana)
|
||||||
|
end
|
||||||
|
|
||||||
|
connect(Game, { onLogin = HealthMana.create,
|
||||||
|
onLogout = HealthMana.destroy })
|
|
@ -0,0 +1,42 @@
|
||||||
|
HealthMana = {}
|
||||||
|
|
||||||
|
-- private variables
|
||||||
|
local healthManaPanel = nil
|
||||||
|
|
||||||
|
-- public functions
|
||||||
|
function HealthMana.create()
|
||||||
|
healthManaPanel = loadUI("/health_mana/health_mana.otui", Game.gameRightPanel)
|
||||||
|
|
||||||
|
local healthLabel = UILabel.create()
|
||||||
|
healthManaPanel:addChild(healthLabel)
|
||||||
|
healthLabel:setId('healthLabel')
|
||||||
|
healthLabel:setStyle('HealthLabel')
|
||||||
|
healthLabel:setText('0 / 0')
|
||||||
|
|
||||||
|
local manaLabel = UILabel.create()
|
||||||
|
healthManaPanel:addChild(manaLabel)
|
||||||
|
manaLabel:setId('manaLabel')
|
||||||
|
manaLabel:setStyle('ManaLabel')
|
||||||
|
manaLabel:setText('1 / 1')
|
||||||
|
|
||||||
|
healthManaPanel:setHeight(healthLabel:getHeight() + manaLabel:getHeight())
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealthMana.destroy()
|
||||||
|
healthManaPanel:destroy()
|
||||||
|
healthManaPanel = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- hooked events
|
||||||
|
function Game.onHealthChange(health, maxHealth)
|
||||||
|
local label = healthManaPanel:getChildById('healthLabel')
|
||||||
|
label:setText(health .. ' / ' .. maxHealth)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Game.onManaChange(mana, maxMana)
|
||||||
|
local label = healthManaPanel:getChildById('manaLabel')
|
||||||
|
label:setText(mana .. ' / ' .. maxMana)
|
||||||
|
end
|
||||||
|
|
||||||
|
connect(Game, { onLogin = HealthMana.create,
|
||||||
|
onLogout = HealthMana.destroy })
|
|
@ -0,0 +1,14 @@
|
||||||
|
Module
|
||||||
|
name: health_mana
|
||||||
|
description: Displays health and mana points
|
||||||
|
author: OTClient team
|
||||||
|
website: https://github.com/edubart/otclient
|
||||||
|
autoLoad: true
|
||||||
|
dependencies:
|
||||||
|
- game
|
||||||
|
|
||||||
|
onLoad: |
|
||||||
|
require 'health_mana'
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
HealthLabel < Label
|
||||||
|
color: white
|
||||||
|
background-color: red
|
||||||
|
align: center
|
||||||
|
font: verdana-11px-monochrome
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.top: parent.top
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
||||||
|
ManaLabel < Label
|
||||||
|
color: white
|
||||||
|
background-color: blue
|
||||||
|
align: center
|
||||||
|
font: verdana-11px-monochrome
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
||||||
|
UIWindow
|
||||||
|
id: healthManaPanel
|
||||||
|
width: 192
|
||||||
|
margin.top: 6
|
||||||
|
margin.left: 6
|
||||||
|
margin.right: 6
|
||||||
|
move policy: free updated
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
HealthLabel < Label
|
||||||
|
color: red
|
||||||
|
background-color: green
|
||||||
|
align: center
|
||||||
|
font: verdana-11px-monochrome
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.top: parent.top
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
||||||
|
ManaLabel < Label
|
||||||
|
color: blue
|
||||||
|
background-color: red
|
||||||
|
align: center
|
||||||
|
font: verdana-11px-monochrome
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
||||||
|
UIWindow
|
||||||
|
id: healthManaPanel
|
||||||
|
width: 192
|
||||||
|
margin.top: 6
|
||||||
|
margin.left: 6
|
||||||
|
margin.right: 6
|
||||||
|
move policy: free updated
|
||||||
|
image: /core_styles/images/empty_rect.png
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
Skills = {}
|
||||||
|
|
||||||
|
-- private variables
|
||||||
|
local skillWindow = nil
|
||||||
|
local skills = {"Fist Fighting", "Club Fighting", "Sword Fighting", "Axe Fighting", "Distance Fighting", "Shielding", "Fishing"}
|
||||||
|
|
||||||
|
-- public functions
|
||||||
|
function Skills.create()
|
||||||
|
skillWindow = loadUI("/skills/skills.otui", Game.gameRightPanel)
|
||||||
|
|
||||||
|
local skillPanel = skillWindow:getChildById('skillPanel')
|
||||||
|
|
||||||
|
-- create first widget cause of layout
|
||||||
|
local widget = UIWidget.create()
|
||||||
|
skillPanel:addChild(widget)
|
||||||
|
widget:setStyle('SkillFirstWidget')
|
||||||
|
|
||||||
|
-- create skills
|
||||||
|
for i=1,#skills,1 do
|
||||||
|
local nameLabel = UILabel.create()
|
||||||
|
skillPanel:addChild(nameLabel)
|
||||||
|
nameLabel:setStyle('SkillNameLabel')
|
||||||
|
nameLabel:setText(skills[i])
|
||||||
|
|
||||||
|
local levelLabel = UILabel.create()
|
||||||
|
skillPanel:addChild(levelLabel)
|
||||||
|
levelLabel:setStyle('SkillLevelLabel')
|
||||||
|
levelLabel:setId('skillLevelId' .. i)
|
||||||
|
levelLabel:setText('0')
|
||||||
|
|
||||||
|
local percentPanel = UIWidget.create()
|
||||||
|
skillPanel:addChild(percentPanel)
|
||||||
|
percentPanel:setStyle('SkillPercentPanel')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Skills.destroy()
|
||||||
|
skillWindow:destroy()
|
||||||
|
skillWindow = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- hooked events
|
||||||
|
function Game.setSkill(id, level, percent)
|
||||||
|
local skillPanel = skillWindow:getChildById('skillPanel')
|
||||||
|
|
||||||
|
local levelLabel = skillPanel:getChildById('skillLevelId' .. id)
|
||||||
|
levelLabel:setText(level)
|
||||||
|
|
||||||
|
--local percentLabel = skillPanel:getChildById('skillLevelId' .. id)
|
||||||
|
--levelLabel:setText(percent)
|
||||||
|
end
|
||||||
|
|
||||||
|
connect(Game, { onLogin = Skills.create,
|
||||||
|
onLogout = Skills.destroy })
|
|
@ -631,12 +631,22 @@ void ProtocolGame::parsePlayerStats(InputMessage& msg)
|
||||||
{
|
{
|
||||||
m_localPlayer->setStatistic(Otc::Health, msg.getU16());
|
m_localPlayer->setStatistic(Otc::Health, msg.getU16());
|
||||||
m_localPlayer->setStatistic(Otc::MaxHealth, msg.getU16());
|
m_localPlayer->setStatistic(Otc::MaxHealth, msg.getU16());
|
||||||
|
|
||||||
|
g_dispatcher.addEvent([=] {
|
||||||
|
g_lua.callGlobalField("Game", "onHealthChange", m_localPlayer->getStatistic(Otc::Health), m_localPlayer->getStatistic(Otc::MaxHealth));
|
||||||
|
});
|
||||||
|
|
||||||
m_localPlayer->setStatistic(Otc::FreeCapacity, msg.getU32());
|
m_localPlayer->setStatistic(Otc::FreeCapacity, msg.getU32());
|
||||||
m_localPlayer->setStatistic(Otc::Experience, msg.getU32());
|
m_localPlayer->setStatistic(Otc::Experience, msg.getU32());
|
||||||
m_localPlayer->setStatistic(Otc::Level, msg.getU16());
|
m_localPlayer->setStatistic(Otc::Level, msg.getU16());
|
||||||
m_localPlayer->setStatistic(Otc::LevelPercent, msg.getU8());
|
m_localPlayer->setStatistic(Otc::LevelPercent, msg.getU8());
|
||||||
m_localPlayer->setStatistic(Otc::Mana, msg.getU16());
|
m_localPlayer->setStatistic(Otc::Mana, msg.getU16());
|
||||||
m_localPlayer->setStatistic(Otc::MaxMana, msg.getU16());
|
m_localPlayer->setStatistic(Otc::MaxMana, msg.getU16());
|
||||||
|
|
||||||
|
g_dispatcher.addEvent([=] {
|
||||||
|
g_lua.callGlobalField("Game", "onManaChange", m_localPlayer->getStatistic(Otc::Mana), m_localPlayer->getStatistic(Otc::MaxMana));
|
||||||
|
});
|
||||||
|
|
||||||
m_localPlayer->setStatistic(Otc::MagicLevel, msg.getU8());
|
m_localPlayer->setStatistic(Otc::MagicLevel, msg.getU8());
|
||||||
m_localPlayer->setStatistic(Otc::MagicLevelPercent, msg.getU8());
|
m_localPlayer->setStatistic(Otc::MagicLevelPercent, msg.getU8());
|
||||||
m_localPlayer->setStatistic(Otc::Soul, msg.getU8());
|
m_localPlayer->setStatistic(Otc::Soul, msg.getU8());
|
||||||
|
|
Loading…
Reference in New Issue