Merge branch 'ryzomcore' into 'develop'

Merge Ryzomcore into Develop



See merge request !2
This commit is contained in:
Dremor 2016-05-02 08:01:47 +00:00
commit 159898b081
29 changed files with 404 additions and 310 deletions

View file

@ -328,13 +328,19 @@ IF(WITH_QT5)
ENDIF()
# freetype is needed since Qt 5.5
IF(UNIX)
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/libqtfreetype.a")
ELSEIF(WIN32)
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/qtfreetype.lib")
ENDIF()
IF(EXISTS ${FREETYPE_LIB})
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIB})
FIND_PACKAGE(FreeType)
IF(FREETYPE_FOUND)
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIBRARIES})
ELSE()
IF(UNIX)
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/libqtfreetype.a")
ELSEIF(WIN32)
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/qtfreetype.lib")
ENDIF()
IF(EXISTS ${FREETYPE_LIB})
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIB})
ENDIF()
ENDIF()
ADD_QT_PLUGIN(accessible qtaccessiblewidgets)
@ -348,7 +354,8 @@ IF(WITH_QT5)
IF(WIN32)
SET(QT_LIBRARIES ${QT_LIBRARIES}
${WINSDK_LIBRARY_DIR}/Crypt32.lib
${WINSDK_LIBRARY_DIR}/WS2_32.Lib)
${WINSDK_LIBRARY_DIR}/WS2_32.Lib
${WINSDK_LIBRARY_DIR}/IPHlpApi.Lib)
ENDIF()
# Core

View file

@ -29,7 +29,7 @@ namespace NLGUI
DECLARE_UI_CLASS( CCtrlDraggable )
CCtrlDraggable( const TCtorParam &param );
virtual ~CCtrlDraggable(){};
virtual ~CCtrlDraggable(){}
static CCtrlDraggable *getDraggedSheet(){ return _LastDraggedSheet; }
bool isDragged() const{ return dragged; }

View file

@ -72,10 +72,12 @@ namespace NLGUI
GroupChildren = 4 /// module can parse when parsing the group children
};
IParserModule(){
IParserModule()
{
parser = NULL;
parsingStage = None;
}
virtual ~IParserModule(){}
bool canParseInStage( ParsingStage stage )

View file

@ -71,7 +71,7 @@ namespace NLGUI
class IOnWidgetsDrawnHandler
{
public:
virtual ~IOnWidgetsDrawnHandler(){};
virtual ~IOnWidgetsDrawnHandler(){}
virtual void process() = 0;
};

View file

@ -32,6 +32,12 @@ struct in6_addr;
#ifdef NL_OS_WINDOWS
// automatically add the win socket library if you use nel network part
#pragma comment(lib, "ws2_32.lib")
// it seems that the default loop back address is not defined for ipv6
#ifndef IN6ADDR_LOOPBACK_INIT
#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
#endif
#endif
namespace NLMISC
@ -137,6 +143,9 @@ public:
/// Returns true if this CInetAddress is 127.0.0.1
bool is127001 () const;
/// Returns true if this CInetAddress is a loop back address
bool isLoopbackIPAddress () const;
/// Creates a CInetAddress object with local host address, port=0
static CInetAddress localHost();

View file

@ -40,7 +40,8 @@ namespace NLGUI
{
char c = toLower( s[ i ] );
switch( c ){
switch( c )
{
case 'l':
_Align &= ~1;
break;

View file

@ -5882,9 +5882,11 @@ namespace NLGUI
{
const char* digits = (Type == "I" ? upper : lower);
uint8 i, d=0;
do {
do
{
uint32 num = number % 10;
if (num % 5 < 4){
if (num % 5 < 4)
{
for (i = num % 5; i > 0; i--)
{
ret.insert(ret.begin(), digits[d]);
@ -5904,7 +5906,9 @@ namespace NLGUI
}
number /= 10;
d += 2;
} while (number > 0);
}
while (number > 0);
if (Type == "I")
{
ret = toUpper(ret);

View file

@ -121,69 +121,112 @@ namespace NLGUI
// ***************************************************************************
// http://stackoverflow.com/a/18335183
static std::string correct_non_utf_8(const std::string &str)
static std::string correctNonUtf8(const std::string &str)
{
int i,f_size=str.size();
int i, f_size=str.size();
unsigned char c,c2,c3,c4;
std::string to;
to.reserve(f_size);
for(i=0 ; i<f_size ; i++){
for(i=0 ; i<f_size ; i++)
{
c=(unsigned char)(str[i]);
if(c<32){//control char
if(c==9 || c==10 || c==13){//allow only \t \n \r
if (c<32)
{
//control char
if(c==9 || c==10 || c==13)
{
//allow only \t \n \r
to.append(1,c);
}
continue;
}else if(c<127){//normal ASCII
}
else if (c<127)
{
//normal ASCII
to.append(1,c);
continue;
}else if(c<160){//control char (nothing should be defined here either ASCI, ISO_8859-1 or UTF8, so skipping)
if(c==128){//fix microsoft mess, add euro
}
else if (c < 160)
{
//control char (nothing should be defined here either ASCI, ISO_8859-1 or UTF8, so skipping)
if (c == 128)
{
//fix microsoft mess, add euro
to.append(1,226);
to.append(1,130);
to.append(1,172);
}
if(c==133){//fix IBM mess, add NEL = \n\r
if (c == 133)
{
//fix IBM mess, add NEL = \n\r
to.append(1,10);
to.append(1,13);
}
continue;
}else if(c<192){//invalid for UTF8, converting ASCII
}
else if (c < 192)
{
//invalid for UTF8, converting ASCII
to.append(1,(unsigned char)194);
to.append(1,c);
continue;
}else if(c<194){//invalid for UTF8, converting ASCII
}
else if (c < 194)
{
//invalid for UTF8, converting ASCII
to.append(1,(unsigned char)195);
to.append(1,c-64);
continue;
}else if(c<224 && i+1<f_size){//possibly 2byte UTF8
c2=(unsigned char)(str[i+1]);
if(c2>127 && c2<192){//valid 2byte UTF8
if(c==194 && c2<160){//control char, skipping
}
else if (c < 224 && i + 1 < f_size)
{
//possibly 2byte UTF8
c2 = (unsigned char)(str[i+1]);
if (c2 > 127 && c2 < 192)
{
//valid 2byte UTF8
if (c == 194 && c2 < 160)
{
//control char, skipping
;
}else{
}
else
{
to.append(1,c);
to.append(1,c2);
}
i++;
continue;
}
}else if(c<240 && i+2<f_size){//possibly 3byte UTF8
c2=(unsigned char)(str[i+1]);
c3=(unsigned char)(str[i+2]);
if(c2>127 && c2<192 && c3>127 && c3<192){//valid 3byte UTF8
}
else if (c < 240 && i + 2 < f_size)
{
// possibly 3byte UTF8
c2 = (unsigned char)(str[i+1]);
c3 = (unsigned char)(str[i+2]);
if (c2 > 127 && c2 < 192 && c3 > 127 && c3 < 192)
{
// valid 3byte UTF8
to.append(1,c);
to.append(1,c2);
to.append(1,c3);
i+=2;
continue;
}
}else if(c<245 && i+3<f_size){//possibly 4byte UTF8
c2=(unsigned char)(str[i+1]);
c3=(unsigned char)(str[i+2]);
c4=(unsigned char)(str[i+3]);
if(c2>127 && c2<192 && c3>127 && c3<192 && c4>127 && c4<192){//valid 4byte UTF8
}
else if (c < 245 && i + 3 < f_size)
{
//possibly 4byte UTF8
c2 = (unsigned char)(str[i+1]);
c3 = (unsigned char)(str[i+2]);
c4 = (unsigned char)(str[i+3]);
if (c2 > 127 && c2 < 192 && c3 > 127 && c3 < 192 && c4 > 127 && c4 < 192)
{
//valid 4byte UTF8
to.append(1,c);
to.append(1,c2);
to.append(1,c3);
@ -192,6 +235,7 @@ namespace NLGUI
continue;
}
}
//invalid UTF8, converting ASCII (c>245 || string too short for multi-byte))
to.append(1,(unsigned char)195);
to.append(1,c-64);
@ -250,7 +294,7 @@ namespace NLGUI
}
// if there is invalid utf-8 chars, then libxml will break everything after first it finds.
htmlString = correct_non_utf_8(htmlString);
htmlString = correctNonUtf8(htmlString);
}
// ***************************************************************************

View file

@ -1258,7 +1258,7 @@ namespace NLGUI
getWindowForActiveMasterGroup(newCtrl->getContextHelpWindowName());
uint32 _ScreenH, _ScreenW;
CViewRenderer::getInstance()->getScreenSize( _ScreenH, _ScreenW );
CViewRenderer::getInstance()->getScreenSize( _ScreenW, _ScreenH );
if(ttPosRef==Hotspot_TTAuto || ttParentRef==Hotspot_TTAuto)
{

View file

@ -49,7 +49,8 @@ static uint8 INTERLACED_OFFSET[] = { 0, 4, 2, 1 };
static uint8 INTERLACED_JUMP[] = { 8, 8, 4, 2 };
#endif
static int readGIFData(GifFileType *gif, GifByteType *data, int length){
static int readGIFData(GifFileType *gif, GifByteType *data, int length)
{
NLMISC::IStream *f = static_cast<NLMISC::IStream *>(gif->UserData);
if(!f->isReading()) return 0;

View file

@ -220,6 +220,11 @@ bool CCmdArgs::parse(int argc, char **argv)
for(sint i = 0; i < argc; ++i)
{
#ifdef NL_OS_MAC
// get rid of -psn_* arguments under OS X
if (strncmp(argv[i], "-psn_", 5) == 0) continue;
#endif
args.push_back(argv[i]);
}
@ -245,7 +250,7 @@ bool CCmdArgs::parse(const std::vector<std::string> &argv)
uint argc = argv.size();
// process each argument
for (sint i = 1; i < argc; i++)
for (uint i = 1; i < argc; i++)
{
std::string name = argv[i];

View file

@ -92,18 +92,18 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size)
BOOLEAN IN6_IS_ADDR_UNSPECIFIED(CONST IN6_ADDR *a)
{
//
// We can't use the in6addr_any variable, since that would
// require existing callers to link with a specific library.
//
return (BOOLEAN)((a->s6_words[0] == 0) &&
(a->s6_words[1] == 0) &&
(a->s6_words[2] == 0) &&
(a->s6_words[3] == 0) &&
(a->s6_words[4] == 0) &&
(a->s6_words[5] == 0) &&
(a->s6_words[6] == 0) &&
(a->s6_words[7] == 0));
//
// We can't use the in6addr_any variable, since that would
// require existing callers to link with a specific library.
//
return (BOOLEAN)((a->s6_words[0] == 0) &&
(a->s6_words[1] == 0) &&
(a->s6_words[2] == 0) &&
(a->s6_words[3] == 0) &&
(a->s6_words[4] == 0) &&
(a->s6_words[5] == 0) &&
(a->s6_words[6] == 0) &&
(a->s6_words[7] == 0));
}
#endif
@ -714,25 +714,51 @@ std::vector<CInetAddress> CInetAddress::localAddresses()
if (status)
{
// will come here if the local hostname (/etc/hostname in Linux) is not the real name
throw ESocket( (string("Hostname resolution failed for ")+string(localhost)).c_str() );
throw ESocket( toString("Hostname resolution failed for %s", localhost).c_str() );
}
struct addrinfo *p = res;
// for loopback ipv4
bool IPv4LoopbackAdded = false;
// for loopback ipv6
bool IPv6LoopbackAdded = false;
// process all addresses
while (p != NULL)
{
// check address family
if (p->ai_family == AF_INET)
{
// ipv4
// loopback ipv4
if (!IPv4LoopbackAdded)
{
// add loopback address only once
struct in_addr psin_addrIPv4;
psin_addrIPv4.s_addr = htonl(INADDR_LOOPBACK);
vect.push_back(CInetAddress(&psin_addrIPv4, localhost));
IPv4LoopbackAdded = true;
}
struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr;
vect.push_back( CInetAddress( &ipv4->sin_addr, localhost ) );
}
else if (p->ai_family == AF_INET6)
{
// ipv6
// loopback ipv6
if (!IPv6LoopbackAdded)
{
// add loopback address only once
struct in6_addr psin_addrIPv6 = IN6ADDR_LOOPBACK_INIT;
vect.push_back(CInetAddress(&psin_addrIPv6, localhost));
IPv6LoopbackAdded = true;
}
struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr;
vect.push_back( CInetAddress( &ipv6->sin6_addr, localhost ) );
@ -747,7 +773,7 @@ std::vector<CInetAddress> CInetAddress::localAddresses()
if(vect.empty())
{
throw ESocket( (string("No network card detected for ")+string(localhost)).c_str() );
throw ESocket(toString("No network card detected for %s", localhost).c_str() );
}
return vect;
@ -758,6 +784,16 @@ bool CInetAddress::is127001 () const
return (internalIPAddress () == htonl(0x7F000001));
}
bool CInetAddress::isLoopbackIPAddress () const
{
std::string sIPAddress = ipAddress();
return (sIPAddress.compare("::") == 0) ||
(sIPAddress.compare("::1") == 0) ||
(sIPAddress.compare("127.0.0.1") == 0) ||
(sIPAddress.compare("0:0:0:0:0:0:0:1") == 0);
}
std::string vectorCInetAddressToString(const std::vector<CInetAddress> &addrs)
{

View file

@ -828,17 +828,17 @@ void CUnifiedNetwork::addService(const string &name, const vector<CInetAddress>
for (uint i = 0; i < addr.size(); i++)
{
// first we have to look if we have a network that can established the connection
uint j = 0;
// it s 127.0.0.1, it s ok
if (!addr[i].is127001 ())
if (!addr[i].isLoopbackIPAddress())
{
// it's loopback ip address, it's ok
for (j = 0; j < laddr.size (); j++)
{
if (laddr[j].internalNetAddress () == addr[i].internalNetAddress ())
{
// it's ok, we can try
break;
break; // it's ok, we can try
}
}
@ -1272,8 +1272,7 @@ uint8 CUnifiedNetwork::findConnectionId (TServiceId sid, uint8 nid)
uint8 connectionId = _IdCnx[sid.get()].DefaultNetwork;
if (nid == 0xFF)
{
// it s often happen because they didn't set a good network configuration, so it s in debug to disable it easily
{ // default network
//nldebug ("HNETL5: nid %hu, will use the default connection %hu", (uint16)nid, (uint16)connectionId);
}
else if (nid >= _IdCnx[sid.get()].NetworkConnectionAssociations.size())
@ -1294,8 +1293,12 @@ uint8 CUnifiedNetwork::findConnectionId (TServiceId sid, uint8 nid)
if (connectionId >= _IdCnx[sid.get()].Connections.size() || !_IdCnx[sid.get()].Connections[connectionId].valid() || !_IdCnx[sid.get()].Connections[connectionId].CbNetBase->connected())
{
// there's a problem with the selected connectionID, so try to find a valid one
nlwarning ("HNETL5: Can't find selected connection id %hu to send message to %s because connection is not valid or connected, find a valid connection id", (uint16)connectionId, _IdCnx[sid.get()].ServiceName.c_str ());
if (nid != 0xFF)
{
// not a default network. There's a problem with the selected connectionID, so try to find a valid one
nlwarning ("HNETL5: Can't find selected connection id %hu to send message to %s because connection is not valid or connected, find a valid connection id", (uint16)connectionId, _IdCnx[sid.get()].ServiceName.c_str ());
}
for (connectionId = 0; connectionId < _IdCnx[sid.get()].Connections.size(); connectionId++)
{
@ -1303,6 +1306,19 @@ uint8 CUnifiedNetwork::findConnectionId (TServiceId sid, uint8 nid)
{
// we found one at last, use this one
//nldebug ("HNETL5: Ok, we found a valid connectionid, use %hu", (uint16)connectionId);
if (nid < _IdCnx[sid.get()].NetworkConnectionAssociations.size())
{
_IdCnx[sid.get()].NetworkConnectionAssociations[nid] = connectionId; // we set the preferred networkConnectionAssociation
}
else
{
if (nid == 0xFF)
{
_IdCnx[sid.get()].DefaultNetwork = connectionId;
}
}
nlwarning ("HNETL5: selected connection id %hu from network %hu to send message to %s", (uint16)connectionId, (uint16)nid, _IdCnx[sid.get()].ServiceName.c_str ());
break;
}
}
@ -1782,7 +1798,7 @@ bool CUnifiedNetwork::isServiceLocal (TServiceId sid)
{
for (uint j = 0; j < _IdCnx[sid.get()].ExtAddress.size(); j++)
{
if (_IdCnx[sid.get()].ExtAddress[j].is127001 ())
if (_IdCnx[sid.get()].ExtAddress[j].isLoopbackIPAddress ())
return true;
if (_IdCnx[sid.get()].ExtAddress[j].internalIPAddress () == laddr[i].internalIPAddress ())

View file

@ -29,12 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#undef free
#endif
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QtCore/QtCore>
#include <QtGui/QtGui>

View file

@ -21,12 +21,6 @@
// STL includes
// Qt includes
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QMainWindow>
// NeL includes

View file

@ -21,12 +21,6 @@
// STL includes
// Qt includes
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QWidget>
#include <QTextEdit>
#include <QLineEdit>

View file

@ -34,12 +34,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// STL includes
// Qt includes
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QWidget>
#include <QTextEdit>
#include <QLineEdit>

View file

@ -26,12 +26,6 @@
#undef free
#endif
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QtCore/QtCore>
#include <QtGui/QtGui>

View file

@ -20,12 +20,6 @@
#ifndef RCERROR_DATA
#define RCERROR_DATA
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QString>
struct SCrashReportData

View file

@ -1,12 +1,6 @@
#ifndef WORDS_DICDLG_H
#define WORDS_DICDLG_H
#include <qglobal.h>
#ifdef Q_COMPILER_RVALUE_REFS
#undef Q_COMPILER_RVALUE_REFS
#endif
#include <QMainWindow>
#include "ui_words_dic_Qt.h"

View file

@ -161,7 +161,7 @@ end
------------------------------------------------------------------------------------------------------------
-- Compute the current Max Resist
function game:getMagicResistMaxLevel()
local mlvl= self:getMagicResistBaseLevel() + getDbProp(formatUI('%player_resist_maxratio'));
local mlvl= 25 + self:getMagicResistBaseLevel() + getDbProp(formatUI('%player_resist_maxratio'));
return math.max(0,mlvl);
end
@ -267,27 +267,27 @@ function game:onDrawNpcWebPage()
local available
if config.Local == 1 then
available = (NicoMagicURL ~= "")
else
available = isDynStringAvailable(self.NpcWebPage.UrlTextId)
else
available = isDynStringAvailable(self.NpcWebPage.UrlTextId)
end
if(available) then
if(available) then
local ucUrl
if config.Local == 1 then
ucUrl = ucstring(NicoMagicURL) -- for test in local mode
ucUrl = ucstring(NicoMagicURL) -- for test in local mode
else
ucUrl = getDynString(self.NpcWebPage.UrlTextId);
end
-- browse
local uiStr= getUIId(getUICaller());
-- if the url
-- if the url
local utf8Url = ucUrl:toUtf8()
local isRing = string.find(utf8Url, "ring_access_point=1") ~= nil
local isRing = string.find(utf8Url, "ring_access_point=1") ~= nil
if isRing then
getUI("ui:interface:npc_web_browser").active = false
runAH(nil, "context_ring_sessions", "")
return
else
local hideWindow = string.find(utf8Url, "_hideWindow=1") ~= nil
local hideWindow = string.find(utf8Url, "_hideWindow=1") ~= nil
if hideWindow then
getUI("ui:interface:npc_web_browser").active = false
end
@ -336,14 +336,14 @@ function game:startNpcWebPage()
end
------------------------------------------------------------------------------------------------------------
--
--
function game:closeNpcWebBrowserHeader()
local ui = getUI('ui:interface:npc_web_browser');
-- save size
ui_npc_web_browser_h = ui.h;
ui_npc_web_browser_w = ui.w;
-- reduce window size
ui.pop_min_h = 32;
ui.h = 0;
@ -351,7 +351,7 @@ function game:closeNpcWebBrowserHeader()
end
------------------------------------------------------------------------------------------------------------
--
--
function game:openNpcWebBrowserHeader()
local ui = getUI('ui:interface:npc_web_browser');
ui.pop_min_h = 96;
@ -360,7 +360,7 @@ function game:openNpcWebBrowserHeader()
if (ui_npc_web_browser_h ~= nil) then
ui.h = ui_npc_web_browser_h;
end
if (ui_npc_web_browser_w ~= nil) then
ui.w = ui_npc_web_browser_w;
end
@ -538,7 +538,7 @@ function game:updateFameBar(path)
uiMaxLimit.x = barX + barW * (fameMax + 100) / 200;
-- init bar3d
if (bar3dStart < bar3dLimit) then
if (bar3dStart < bar3dLimit) then
uiBar3d.x= bar3dStart;
uiBar3d.w= bar3dLimit-bar3dStart;
else
@ -553,7 +553,7 @@ function game:updateFameBarTT(path)
local fameMax = getDbProp(path .. ':THRESHOLD');
local text = i18n.get('uittFameMaxPossible');
text = findReplaceAll(text, '%famemax', tostring(fameMax));
text = findReplaceAll(text, '%famemax', tostring(fameMax));
setContextHelpText(text);
end
@ -564,12 +564,12 @@ function game:getPvpEffects()
local i;
local hasBonus = false;
local hasMalus = false;
local text = ''
local textBonus = '';
local textMalus = '';
local fmt;
-- check every malus and bonus
for i=0, n do
local path = formatUI('SERVER:PVP_EFFECTS:#1', i);
@ -611,7 +611,7 @@ function game:getPvpEffects()
end
------------------------------------------------------------------------------------------------------------
function game:getFactionName(id)
function game:getFactionName(id)
if (id == self.TPVPClan.Kami) then
return i18n.get('uiFameKami');
elseif (id == self.TPVPClan.Karavan) then
@ -636,10 +636,10 @@ function game:getAllegiancePoints()
local civPoints = getDbProp(path .. ':CIV_POINTS');
local cult = getDbProp(path .. ':CULT');
local cultPoints = getDbProp(path .. ':CULT_POINTS');
local text;
local uiGroup= getUICaller();
-- civ allegiance
if (civ == self.TPVPClan.None or civ == self.TPVPClan.Neutral) then
text = i18n.get('uiPvpFameNoCivAllegiance');
@ -647,9 +647,9 @@ function game:getAllegiancePoints()
text = i18n.get('uiPvpFameAllegiancePoints');
text = findReplaceAll(text, '%faction', self:getFactionName(civ));
text = findReplaceAll(text, '%points', tostring(civPoints));
end
end
uiGroup.civ_allegiance_pts.uc_hardtext_format = text;
-- cult allegiance
if (cult == self.TPVPClan.None or cult == self.TPVPClan.Neutral) then
text = i18n.get('uiPvpFameNoCultAllegiance');
@ -698,11 +698,11 @@ function game:fameAllegianceTooltipCultGuild()
end
------------------------------------------------------------------------------------------------------------
--
--
function game:tooltipDeltaValue(base, max)
-- Calculate delta
local val = max - base;
local text;
if (val == 0) then
text = concatUCString('@{FFFF}', tostring(max));
@ -729,37 +729,37 @@ function game:tooltipDeltaValue(base, max)
text = concatUCString(text, ')');
end
end
return text;
end
------------------------------------------------------------------------------------------------------------
--
--
function game:tooltipScore(dbBase, dbMax, ttFormat)
-- Get DB values
local base = getDbProp(dbBase);
local max = getDbProp(dbMax);
-- Tooltip text
local fmt = i18n.get(ttFormat);
local text = self:tooltipDeltaValue(base, max);
fmt = findReplaceAll(fmt, "%n", text );
-- Set tooltip
setContextHelpText(fmt);
end
------------------------------------------------------------------------------------------------------------
--
--
function game:tooltipScoreEP(dbBase, dbMax, ttFormat, dbLvl, dbMod)
-- Defender level
local defLvl= getDbProp(formatUI(dbLvl));
defLvl = math.max(0, defLvl);
-- Attacker level
local attLvl = getBaseSkillValueMaxChildren(getSkillIdFromName('SF'));
-- Get DB values
local base = getDbProp(dbBase);
local max = getDbProp(dbMax);
@ -774,7 +774,7 @@ function game:tooltipScoreEP(dbBase, dbMax, ttFormat, dbLvl, dbMod)
fmt = findReplaceAll(fmt, "%n", text );
fmt = findReplaceAll(fmt, "%l", tostring(attLvl));
fmt = findReplaceAll(fmt, "%p", textChance);
-- Set tooltip
setContextHelpText(fmt);
end
@ -786,7 +786,7 @@ end
---------------------------------- RING STATS ---------------------------------------------------
-------------------------------------------------------------------------------------------------------------
RingPlayerInfo =
RingPlayerInfo =
{
WaitingInfo = false,
LastRefreshTime = 0,
@ -810,7 +810,7 @@ end
--
function RingPlayerInfo:initRingStatPlayer()
setOnDraw(self:getWindow(), "RingPlayerInfo:onRingRatingPlayerDraw()")
setOnDraw(self:getWindow(), "RingPlayerInfo:onRingRatingPlayerDraw()")
end
--------------------------------------------------------------------------------------------------------------
@ -819,16 +819,16 @@ function RingPlayerInfo:onRingRatingPlayerDraw()
local timeInSec = nltime.getLocalTime() / 1000
if self.WaitingInfo then
if timeInSec - self.LastRefreshTime > self.WaitingPeriod then
if timeInSec - self.LastRefreshTime > self.WaitingPeriod then
self.WaitingInfo = false
self.LastRefreshTime = nltime.getLocalTime() / 1000
else
else
if not self.InfoReceived then
--debugInfo("No received info")
end
end
else
if timeInSec - self.LastRefreshTime > self.RefreshPeriod then
if timeInSec - self.LastRefreshTime > self.RefreshPeriod then
self:refresh()
else
--debugInfo("pas de refresh")
@ -844,7 +844,7 @@ function RingPlayerInfo:updatePendingRefresh()
if self.PendingRefresh then
local currTime = nltime.getLocalTime() / 1000
if currTime - self.LastRefreshQuerryTime > self.MinRefreshPeriod and game.getRingStats then
if currTime - self.LastRefreshQuerryTime > self.MinRefreshPeriod and game.getRingStats then
self.LastRefreshQuerryTime = currTime
self.PendingRefresh = false
game.getRingStats()
@ -924,10 +924,10 @@ end
--
function RingPlayerInfo:refresh()
self.PendingRefresh = true
self.PendingRefresh = true
self.LastRefreshTime = nltime.getLocalTime() / 1000
self.WaitingInfo = true
end
end
--------------------------------------------------------------------------------------------------------------
--
@ -937,7 +937,7 @@ function RingPlayerInfo:tooltipEcosystemPoints(rp, maxRp, ttFormat)
local fmt = i18n.get(ttFormat);
fmt = findReplaceAll(fmt, "%n", rp );
fmt = findReplaceAll(fmt, "%p", maxRp );
-- Set tooltip
return fmt;
end
@ -954,8 +954,8 @@ function RingPlayerInfo:updateRRPSLevel(dbVal, tooltip)
local ui= getUICaller();
local uiText= ui.val;
-- set the text
uiText.uc_hardtext= tostring(val)
-- set the text
uiText.uc_hardtext= tostring(val)
self:tooltipRRPs(dbVal, tooltip)
end
@ -970,7 +970,7 @@ function RingPlayerInfo:tooltipRRPs(dbBase, ttFormat)
local fmt = i18n.get(ttFormat);
local text = tostring(val)
fmt = findReplaceAll(fmt, "%n", text );
-- Set tooltip
setContextHelpText(fmt);
end
@ -1013,7 +1013,7 @@ end
--------------------------------------------------------------------------------------------------------------
--
function game:updateOrganization(path, uiOrgText, uiStatusText, uiPointsText)
local org = getDbProp(path.."1:VALUE")
getUICaller()[uiOrgText].uc_hardtext = i18n.get('uiOrganization_' .. org)
@ -1022,7 +1022,7 @@ function game:updateOrganization(path, uiOrgText, uiStatusText, uiPointsText)
local points = getDbProp(path.."3:VALUE")
getUICaller()[uiPointsText].uc_hardtext= points
end
------------------------------------------------------------------------------------------------------------
@ -1033,10 +1033,10 @@ end
--------------------------------------------------------------------------------------------------------------
function game:popMissionList()
local menu = getUI("ui:interface:mission_cb_menu")
function game:popMissionList()
local menu = getUI("ui:interface:mission_cb_menu")
enableModalWindow(getUICaller(), "ui:interface:mission_cb_menu")
self:updateMissionMenuSize()
self:updateMissionMenuSize()
end
@ -1053,12 +1053,12 @@ function game:getMissionDbPath(missionIndex)
return "SERVER:GROUP:MISSIONS:" .. tostring(missionIndex - numMissions)
else
return "SERVER:MISSIONS:" .. tostring(missionIndex)
end
end
end
--------------------------------------------------------------------------------------------------------------
function game:getCurrMissionIndex()
local result = getDbProp("UI:SAVE:MISSION_SELECTED")
function game:getCurrMissionIndex()
local result = getDbProp("UI:SAVE:MISSION_SELECTED")
return result
end
@ -1071,10 +1071,10 @@ end
function game:updateCurrMissionComboBox()
local numMissions = tonumber(getDefine("ipj_nb_mission"))
local missionFound = false
local cb = getUI("ui:interface:info_player_journal:content:mission_combo")
local missionList = getUI("ui:interface:info_player_journal:content:mission_list")
local cb = getUI("ui:interface:info_player_journal:content:mission_combo")
local missionList = getUI("ui:interface:info_player_journal:content:mission_list")
for i = 0, numMissions - 1 do
if getDbProp("SERVER:MISSIONS:" .. i .. ":TITLE") ~= 0
if getDbProp("SERVER:MISSIONS:" .. i .. ":TITLE") ~= 0
or getDbProp("SERVER:GROUP:MISSIONS:" .. i .. ":TITLE") ~= 0 then
missionFound = true
break
@ -1095,20 +1095,20 @@ function game:updateCurrMissionComboBox()
missionList.no_available_mission.active = false
cb.arrow.active = true
cb.select.active = true
local currMission = self:getCurrMissionIndex()
local currMission = self:getCurrMissionIndex()
local dbPath = self:getMissionDbPath(currMission)
--
local selected = (currMission ~= -1)
local dbPath = self:getMissionDbPath(currMission)
--
local selected = (currMission ~= -1)
if selected then
cb.mission_title.textid_dblink = dbPath .. ":TITLE"
selected = (tile ~= 0)
end
end
cb.mission_ico.active = selected
cb.mission_title.active = selected
cb.no_selected_mission.active = not selected
missionList.no_selected_mission.active = not selected
if selected then
if selected then
if getDbProp(dbPath .. ":FINISHED") == 0 then
cb.mission_ico.texture = runExpr("getMissionSmallIcon(" .. tostring(getDbProp(dbPath .. ":ICON") .. ")"))
elseif getDbProp(dbPath .. ":FINISHED") == 1 then
@ -1116,17 +1116,17 @@ function game:updateCurrMissionComboBox()
else
cb.mission_ico.texture = "Small_Task_Failed.tga"
end
end
end
end
--------------------------------------------------------------------------------------------------------------
function game:onMissionSelected(index)
function game:onMissionSelected(index)
disableModalWindow()
self:updateCurrMissionComboBox()
end
--------------------------------------------------------------------------------------------------------------
function game:onGroupMissionSelected(index)
function game:onGroupMissionSelected(index)
disableModalWindow()
self:updateCurrMissionComboBox()
end
@ -1138,33 +1138,33 @@ function game:onMissionDBIndexChanged()
-- if selection was made from the list, update the other list
if missionIndex >= self:getGroupMissionFirstIndex() then
local groupMissionIndex = missionIndex - self:getGroupMissionFirstIndex()
getUI("ui:interface:info_player_journal:content:mission_list:b_group_title" .. tostring(groupMissionIndex)).pushed = true
getUI("ui:interface:info_player_journal:content:mission_list:b_group_title" .. tostring(groupMissionIndex)).pushed = true
getUI("ui:interface:mission_cb_menu:mission_list:b_group_title" .. tostring(groupMissionIndex)).pushed = true
else
getUI("ui:interface:info_player_journal:content:mission_list:b_title" .. tostring(missionIndex)).pushed = true
getUI("ui:interface:info_player_journal:content:mission_list:b_title" .. tostring(missionIndex)).pushed = true
getUI("ui:interface:mission_cb_menu:mission_list:b_title" .. tostring(missionIndex)).pushed = true
end
end
--------------------------------------------------------------------------------------------------------------
function game:onMissionTitleChanged(index)
function game:onMissionTitleChanged(index)
-- if title is not nil then a new mission has been added -> if db initilization is over, then selected this new mission
if getDbProp(self:getMissionDbPath(index) .. ":TITLE") ~= 0 then
if game.InGameDbInitialized or config.Local then
if getDbProp(self:getMissionDbPath(index) .. ":TITLE") ~= 0 then
if game.InGameDbInitialized or config.Local then
self:setCurrentMission(index)
end
else
else
self:updateCurrMissionComboBox()
self:updateMissionMenuSize()
end
end
--------------------------------------------------------------------------------------------------------------
function game:onGroupMissionTitleChanged(index)
if getDbProp(self:getMissionDbPath(index + 15) .. ":TITLE") ~= 0 then
if game.InGameDbInitialized or config.Local then
function game:onGroupMissionTitleChanged(index)
if getDbProp(self:getMissionDbPath(index + 15) .. ":TITLE") ~= 0 then
if game.InGameDbInitialized or config.Local then
self:setCurrentMission(index + 15)
end
else
else
self:updateCurrMissionComboBox()
self:updateMissionMenuSize()
end
@ -1174,21 +1174,21 @@ end
function game:updateMissionMenuSize()
local parentCB = getUI("ui:interface:info_player_journal:content:mission_combo")
local menu = getUI("ui:interface:mission_cb_menu")
if not menu.active then return end
if not menu.active then return end
local maxNumMissions = 2 * self:getGroupMissionFirstIndex()
local missionCount = 0
local missionCount = 0
for k = 0, maxNumMissions - 1 do
if getDbProp(self:getMissionDbPath(k) .. ":TITLE") ~= 0 then
missionCount = missionCount + 1
missionCount = missionCount + 1
end
end
end
menu.h = 8 + missionCount * 18
menu.y = 0
menu:updateCoords()
local y = parentCB.y_real - menu.h_real - 1
if y < 0 then
y = parentCB.y_real + parentCB.h_real + 1
end
end
local scrW
local scrH
scrW, scrH = getWindowSize()
@ -1197,7 +1197,7 @@ function game:updateMissionMenuSize()
end
menu.w = parentCB.w_real
menu.y = y
menu.x = parentCB.x_real
menu.x = parentCB.x_real
menu.h = 8 + missionCount * 18
menu:invalidateCoords()
end
@ -1205,7 +1205,7 @@ end
--------------------------------------------------------------------------------------------------------------
--function game:updateMissionDescCloseButton(index)
-- local dbPath = self:getMissionDbPath(index)
-- if index == self:getCurrMissionIndex() then
-- if index == self:getCurrMissionIndex() then
-- local closeText = getUI("ui:interface:info_player_journal:content:desc:close")
-- local button = getUI("ui:interface:info_player_journal:content:desc:uppart:over_icon")
-- local finished = getDbProp(dbPath .. ":FINISHED")
@ -1224,29 +1224,29 @@ end
--end
--------------------------------------------------------------------------------------------------------------
function game:onMissionFinished(index)
self:updateCurrMissionComboBox()
function game:onMissionFinished(index)
self:updateCurrMissionComboBox()
--self:updateMissionDescCloseButton(index)
end
--------------------------------------------------------------------------------------------------------------
function game:onGroupMissionFinished(index)
function game:onGroupMissionFinished(index)
self:updateCurrMissionComboBox()
--self:updateMissionDescCloseButton(index + game:getGroupMissionFirstIndex())
end
--------------------------------------------------------------------------------------------------------------
function game:expandMissionList()
local missionCB = getUI("ui:interface:info_player_journal:content:mission_combo")
function game:expandMissionList()
local missionCB = getUI("ui:interface:info_player_journal:content:mission_combo")
missionCB.active = not missionCB.active
self:updateMissionWindowLayout()
end
--------------------------------------------------------------------------------------------------------------
function game:updateMissionWindowLayout()
function game:updateMissionWindowLayout()
if not isInRingMode() then
local missionCB = getUI("ui:interface:info_player_journal:content:mission_combo")
local missionList = getUI("ui:interface:info_player_journal:content:mission_list")
local missionList = getUI("ui:interface:info_player_journal:content:mission_list")
local fake = getUI("ui:interface:info_player_journal:content:fake")
local sepBis = getUI("ui:interface:info_player_journal:content:separator_bis")
local desc = getUI("ui:interface:info_player_journal:content:desc")
@ -1254,18 +1254,18 @@ function game:updateMissionWindowLayout()
local popMinH
local win = getUI("ui:interface:info_player_journal")
if missionCB.active then
sepBis.active = false
if missionCB.active then
sepBis.active = false
missionList.active = false
fake.sizeref=""
fake.y = -32
fake.h = 0
expanded = 0
expanded = 0
desc.max_sizeref ="wh"
desc.max_h= -42
win.pop_min_h = 152 - win.content_y_offset
else
sepBis.active = true
else
sepBis.active = true
missionList.active = true
fake.sizeref="wh5"
fake.y = -8
@ -1274,23 +1274,23 @@ function game:updateMissionWindowLayout()
desc.max_sizeref ="wh5"
desc.max_h=16
win.pop_min_h = 152 - win.content_y_offset
end
end
local fixedEntry = getUI("ui:interface:info_player_journal:content:mission_fixed_entry")
local fixedEntry = getUI("ui:interface:info_player_journal:content:mission_fixed_entry")
fixedEntry:updateCoords()
desc.max_h = desc.max_h - fixedEntry.h
setDbProp("UI:SAVE:EXPAND_MISSION_LIST", expanded)
getUI("ui:interface:info_player_journal"):invalidateCoords()
getUI("ui:interface:info_player_journal"):invalidateCoords()
end
end
--------------------------------------------------------------------------------------------------------------
function game:onMissionJournalOpened()
function game:onMissionJournalOpened()
local missionDesc = getUI("ui:interface:info_player_journal:content:desc")
missionDesc.active = getDbProp("UI:SAVE:MISSION_SELECTED") ~= -1
missionDesc.active = getDbProp("UI:SAVE:MISSION_SELECTED") ~= -1
local expandList = getDbProp("UI:SAVE:EXPAND_MISSION_LIST")
local expandList = getDbProp("UI:SAVE:EXPAND_MISSION_LIST")
self:updateMissionJournalMode()
if not isInRingMode() then
@ -1304,9 +1304,9 @@ function game:onMissionJournalOpened()
self:updateMissionJournalHeader()
self:updateMissionWindowLayout()
self:updateMissionJournalFixedEntry()
self:updateMissionJournalFixedEntry()
end
@ -1315,12 +1315,12 @@ function game:updateMissionJournalHeader()
local win = getUI("ui:interface:info_player_journal")
local headerActive = getDbProp("UI:SAVE:MISSION_JOURNAL_HEADER_ACTIVE") ~= 0
win.header_active = headerActive
win.right_button_enabled = headerActive
win.right_button_enabled = headerActive
if headerActive then
win.uc_title_opened = i18n.get("uiJournalTitle")
win.uc_title_opened = i18n.get("uiJournalTitle")
win.content_y_offset = 0