Fix to creature name formatting and scrollarea maximum option
This commit is contained in:
parent
96af3d3fcc
commit
47f0d7f3a6
|
@ -6,6 +6,7 @@ function UIScrollArea.create()
|
||||||
local scrollarea = UIScrollArea.internalCreate()
|
local scrollarea = UIScrollArea.internalCreate()
|
||||||
scrollarea:setClipping(true)
|
scrollarea:setClipping(true)
|
||||||
scrollarea.inverted = false
|
scrollarea.inverted = false
|
||||||
|
scrollarea.alwaysScrollMaximum = false
|
||||||
return scrollarea
|
return scrollarea
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -21,34 +22,45 @@ function UIScrollArea:onStyleApply(styleName, styleNode)
|
||||||
end)
|
end)
|
||||||
elseif name == 'inverted-scroll' then
|
elseif name == 'inverted-scroll' then
|
||||||
self:setInverted(value)
|
self:setInverted(value)
|
||||||
|
elseif name == 'always-scroll-maximum' then
|
||||||
|
self:setAlwaysScrollMaximum(value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function UIScrollArea:updateScrollBars()
|
function UIScrollArea:updateScrollBars()
|
||||||
local offset = { x = 0, y = 0 }
|
local scrollWidth = math.max(self:getChildrenRect().width - self:getPaddingRect().width, 0)
|
||||||
local scrollheight = math.max(self:getChildrenRect().height - self:getPaddingRect().height, 0)
|
local scrollHeight = math.max(self:getChildrenRect().height - self:getPaddingRect().height, 0)
|
||||||
local scrollwidth = math.max(self:getChildrenRect().width - self:getPaddingRect().width, 0)
|
|
||||||
|
|
||||||
local scrollbar = self.verticalScrollBar
|
local scrollbar = self.verticalScrollBar
|
||||||
if scrollbar then
|
if scrollbar then
|
||||||
if self.inverted then
|
if self.inverted then
|
||||||
scrollbar:setMinimum(-scrollheight)
|
scrollbar:setMinimum(-scrollHeight)
|
||||||
scrollbar:setMaximum(0)
|
scrollbar:setMaximum(0)
|
||||||
else
|
else
|
||||||
scrollbar:setMinimum(0)
|
scrollbar:setMinimum(0)
|
||||||
scrollbar:setMaximum(scrollheight)
|
scrollbar:setMaximum(scrollHeight)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local scrollbar = self.horizontalScrollBar
|
local scrollbar = self.horizontalScrollBar
|
||||||
if scrollbar then
|
if scrollbar then
|
||||||
if self.inverted then
|
if self.inverted then
|
||||||
scrollbar:setMinimum(-scrollwidth)
|
scrollbar:setMinimum(-scrollWidth)
|
||||||
else
|
else
|
||||||
scrollbar:setMaximum(scrollwidth)
|
scrollbar:setMaximum(scrollWidth)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.lastScrollWidth ~= scrollWidth then
|
||||||
|
self:onScrollWidthChange()
|
||||||
|
end
|
||||||
|
if self.lastScrollHeight ~= scrollHeight then
|
||||||
|
self:onScrollHeightChange()
|
||||||
|
end
|
||||||
|
|
||||||
|
self.lastScrollWidth = scrollWidth
|
||||||
|
self.lastScrollHeight = scrollHeight
|
||||||
end
|
end
|
||||||
|
|
||||||
function UIScrollArea:setVerticalScrollBar(scrollbar)
|
function UIScrollArea:setVerticalScrollBar(scrollbar)
|
||||||
|
@ -70,6 +82,10 @@ function UIScrollArea:setInverted(inverted)
|
||||||
self.inverted = inverted
|
self.inverted = inverted
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:setAlwaysScrollMaximum(value)
|
||||||
|
self.alwaysScrollMaximum = value
|
||||||
|
end
|
||||||
|
|
||||||
function UIScrollArea:onLayoutUpdate()
|
function UIScrollArea:onLayoutUpdate()
|
||||||
self:updateScrollBars()
|
self:updateScrollBars()
|
||||||
end
|
end
|
||||||
|
@ -99,3 +115,15 @@ function UIScrollArea:onChildFocusChange(focusedChild, oldFocused, reason)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:onScrollWidthChange()
|
||||||
|
if self.alwaysScrollMaximum and self.horizontalScrollBar then
|
||||||
|
self.horizontalScrollBar:setValue(self.horizontalScrollBar:getMaximum())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:onScrollHeightChange()
|
||||||
|
if self.alwaysScrollMaximum and self.verticalScrollBar then
|
||||||
|
self.verticalScrollBar:setValue(self.verticalScrollBar:getMaximum())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
local currentRsa
|
local currentRsa
|
||||||
|
local enableCreatureNameFormat = true
|
||||||
|
|
||||||
function g_game.getRsa()
|
function g_game.getRsa()
|
||||||
return currentRsa
|
return currentRsa
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function g_game.isCreatureNameFormatEnabled()
|
||||||
|
return enableCreatureNameFormat
|
||||||
|
end
|
||||||
|
|
||||||
function g_game.chooseRsa(host)
|
function g_game.chooseRsa(host)
|
||||||
if host:match('.*\.tibia\.com') or host:match('.*\.cipsoft\.com') then
|
if host:match('.*\.tibia\.com') or host:match('.*\.cipsoft\.com') then
|
||||||
g_game.setRsa(CIPSOFT_RSA)
|
g_game.setRsa(CIPSOFT_RSA)
|
||||||
|
|
|
@ -1199,3 +1199,11 @@ void Game::setFollowingCreature(const CreaturePtr& creature)
|
||||||
|
|
||||||
g_lua.callGlobalField("g_game", "onFollowingCreatureChange", creature, oldCreature);
|
g_lua.callGlobalField("g_game", "onFollowingCreatureChange", creature, oldCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Game::formatCreatureName(const std::string& name)
|
||||||
|
{
|
||||||
|
std::string formatedName = name;
|
||||||
|
if(g_lua.callGlobalField<bool>("g_game", "isCreatureNameFormatEnabled") && name.length() > 0)
|
||||||
|
formatedName[0] = stdext::upchar(formatedName[0]);
|
||||||
|
return formatedName;
|
||||||
|
}
|
||||||
|
|
|
@ -268,6 +268,8 @@ public:
|
||||||
std::string getWorldName() { return m_worldName; }
|
std::string getWorldName() { return m_worldName; }
|
||||||
std::vector<uint8> getGMActions() { return m_gmActions; }
|
std::vector<uint8> getGMActions() { return m_gmActions; }
|
||||||
|
|
||||||
|
std::string formatCreatureName(const std::string &name);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void enableBotCall() { m_denyBotCall = false; }
|
void enableBotCall() { m_denyBotCall = false; }
|
||||||
void disableBotCall() { m_denyBotCall = true; }
|
void disableBotCall() { m_denyBotCall = true; }
|
||||||
|
|
|
@ -626,7 +626,7 @@ void ProtocolGame::parseCloseNpcTrade(const InputMessagePtr&)
|
||||||
|
|
||||||
void ProtocolGame::parseOwnTrade(const InputMessagePtr& msg)
|
void ProtocolGame::parseOwnTrade(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
int count = msg->getU8();
|
int count = msg->getU8();
|
||||||
|
|
||||||
std::vector<ItemPtr> items(count);
|
std::vector<ItemPtr> items(count);
|
||||||
|
@ -638,7 +638,7 @@ void ProtocolGame::parseOwnTrade(const InputMessagePtr& msg)
|
||||||
|
|
||||||
void ProtocolGame::parseCounterTrade(const InputMessagePtr& msg)
|
void ProtocolGame::parseCounterTrade(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
int count = msg->getU8();
|
int count = msg->getU8();
|
||||||
|
|
||||||
std::vector<ItemPtr> items(count);
|
std::vector<ItemPtr> items(count);
|
||||||
|
@ -962,7 +962,7 @@ void ProtocolGame::parseTalk(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
msg->getU32(); // channel statement guid
|
msg->getU32(); // channel statement guid
|
||||||
|
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
int level = msg->getU16();
|
int level = msg->getU16();
|
||||||
Otc::MessageMode mode = Proto::translateMessageModeFromServer(msg->getU8());
|
Otc::MessageMode mode = Proto::translateMessageModeFromServer(msg->getU8());
|
||||||
int channelId = 0;
|
int channelId = 0;
|
||||||
|
@ -1025,10 +1025,10 @@ void ProtocolGame::parseOpenChannel(const InputMessagePtr& msg)
|
||||||
if(g_game.getFeature(Otc::GameChannelPlayerList)) {
|
if(g_game.getFeature(Otc::GameChannelPlayerList)) {
|
||||||
int joinedPlayers = msg->getU16();
|
int joinedPlayers = msg->getU16();
|
||||||
for(int i=0;i<joinedPlayers;++i)
|
for(int i=0;i<joinedPlayers;++i)
|
||||||
msg->getString(); // player name
|
g_game.formatCreatureName(msg->getString()); // player name
|
||||||
int invitedPlayers = msg->getU16();
|
int invitedPlayers = msg->getU16();
|
||||||
for(int i=0;i<invitedPlayers;++i)
|
for(int i=0;i<invitedPlayers;++i)
|
||||||
msg->getString(); // player name
|
g_game.formatCreatureName(msg->getString()); // player name
|
||||||
}
|
}
|
||||||
|
|
||||||
g_game.processOpenChannel(channelId, name);
|
g_game.processOpenChannel(channelId, name);
|
||||||
|
@ -1036,7 +1036,7 @@ void ProtocolGame::parseOpenChannel(const InputMessagePtr& msg)
|
||||||
|
|
||||||
void ProtocolGame::parseOpenPrivateChannel(const InputMessagePtr& msg)
|
void ProtocolGame::parseOpenPrivateChannel(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
|
|
||||||
g_game.processOpenPrivateChannel(name);
|
g_game.processOpenPrivateChannel(name);
|
||||||
}
|
}
|
||||||
|
@ -1226,7 +1226,7 @@ void ProtocolGame::parseOpenOutfitWindow(const InputMessagePtr& msg)
|
||||||
void ProtocolGame::parseVipAdd(const InputMessagePtr& msg)
|
void ProtocolGame::parseVipAdd(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
uint id = msg->getU32();
|
uint id = msg->getU32();
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
bool online = msg->getU8() != 0;
|
bool online = msg->getU8() != 0;
|
||||||
|
|
||||||
g_game.processVipAdd(id, name, online);
|
g_game.processVipAdd(id, name, online);
|
||||||
|
@ -1289,7 +1289,7 @@ void ProtocolGame::parseQuestLine(const InputMessagePtr& msg)
|
||||||
void ProtocolGame::parseChannelEvent(const InputMessagePtr& msg)
|
void ProtocolGame::parseChannelEvent(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
msg->getU16(); // channel id
|
msg->getU16(); // channel id
|
||||||
msg->getString(); // player name
|
g_game.formatCreatureName(msg->getString()); // player name
|
||||||
msg->getU8(); // event type
|
msg->getU8(); // event type
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1517,11 +1517,7 @@ CreaturePtr ProtocolGame::getCreature(const InputMessagePtr& msg, int type)
|
||||||
creatureType = Proto::CreatureTypeNpc;
|
creatureType = Proto::CreatureTypeNpc;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name = msg->getString();
|
std::string name = g_game.formatCreatureName(msg->getString());
|
||||||
|
|
||||||
// every creature name must start with a capital letter
|
|
||||||
if(name.length() > 0)
|
|
||||||
name[0] = toupper(name[0]);
|
|
||||||
|
|
||||||
if(id == m_localPlayer->getId())
|
if(id == m_localPlayer->getId())
|
||||||
creature = m_localPlayer;
|
creature = m_localPlayer;
|
||||||
|
|
Loading…
Reference in New Issue