diff --git a/code/nel/src/gui/widget_manager.cpp b/code/nel/src/gui/widget_manager.cpp
index e1cd14ab0..95a63e5d4 100644
--- a/code/nel/src/gui/widget_manager.cpp
+++ b/code/nel/src/gui/widget_manager.cpp
@@ -433,6 +433,8 @@ namespace NLGUI
if (pIEL != NULL)
return pIEL;
}
+
+ nlwarning("Could not find UI element from Id '%s'", sEltId.c_str());
return NULL;
}
diff --git a/code/ryzom/client/data/fonts/LICENSE_OFL.txt b/code/ryzom/client/data/fonts/LICENSE_OFL.txt
new file mode 100644
index 000000000..d952d62c0
--- /dev/null
+++ b/code/ryzom/client/data/fonts/LICENSE_OFL.txt
@@ -0,0 +1,92 @@
+This Font Software is licensed under the SIL Open Font License,
+Version 1.1.
+
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font
+creation efforts of academic and linguistic communities, and to
+provide a free and open framework in which fonts may be shared and
+improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply to
+any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software
+components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to,
+deleting, or substituting -- in part or in whole -- any of the
+components of the Original Version, by changing formats or by porting
+the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed,
+modify, redistribute, and sell modified and unmodified copies of the
+Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in
+Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the
+corresponding Copyright Holder. This restriction only applies to the
+primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created using
+the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/code/ryzom/client/data/fonts/noto_mono.ttf b/code/ryzom/client/data/fonts/noto_mono.ttf
new file mode 100644
index 000000000..3560a3a0c
Binary files /dev/null and b/code/ryzom/client/data/fonts/noto_mono.ttf differ
diff --git a/code/ryzom/client/data/fonts/noto_sans_display.ttf b/code/ryzom/client/data/fonts/noto_sans_display.ttf
new file mode 100644
index 000000000..89b23f690
Binary files /dev/null and b/code/ryzom/client/data/fonts/noto_sans_display.ttf differ
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/config.xml b/code/ryzom/client/data/gamedev/interfaces_v3/config.xml
index ed126d58f..29c7c74aa 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/config.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/config.xml
@@ -919,9 +919,8 @@ This MUST follow the Enum MISSION_DESC::TIconId
-
-
-
+
+
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/info_player.lua b/code/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
index 64858c69c..bade5e356 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
@@ -283,14 +283,17 @@ function game:onDrawNpcWebPage()
local utf8Url = ucUrl:toUtf8()
local isRing = string.find(utf8Url, "ring_access_point=1") ~= nil
if isRing then
+ -- when in ring mode, add the parameters ourselves. 60 sec timeout because of zope...
+ -- browseNpcWebPage(uiStr, utf8Url .. game.RingAccessPointFilter:getURLParameters(), false, 60)
+ -- Use new window after revamp
+ --RingAccessPoint:getWindow().active = 1
+ --RingAccessPoint:getWindow():center()
+ --RingAccessPoint:getWindow():blink(1)
+ --RingAccessPoint:show()
getUI("ui:interface:npc_web_browser").active = false
runAH(nil, "context_ring_sessions", "")
return
else
- local hideWindow = string.find(utf8Url, "_hideWindow=1") ~= nil
- if hideWindow then
- getUI("ui:interface:npc_web_browser").active = false
- end
self.NpcWebPage.BrowseDone= true;
browseNpcWebPage(uiStr, utf8Url, true, 10); -- 'true' is for 'add parameters' here. 10 is standard timeout
end
@@ -299,9 +302,9 @@ function game:onDrawNpcWebPage()
-- if this is a ring window, then only the refresh button to access to filter will be available
local isRing = string.find(utf8Url, "ring_access_point=1") ~= nil
local browser = getUI("ui:interface:npc_web_browser")
- browser:find("browse_redo").active = true
- browser:find("browse_undo").active = true
- browser:find("browse_refresh").active = true
+ browser:find("browse_redo").active = not isRing
+ browser:find("browse_undo").active = not isRing
+ browser:find("browse_refresh").active = isRing
end
end
end
@@ -1010,27 +1013,6 @@ function RingPlayerInfo:getLevelRatingAndImprovementRate(val)
return level, progress
end
---------------------------------------------------------------------------------------------------------------
---
-function game:updateOrganization(path, uiOrgText, uiStatusText, uiPointsText)
-
- local org = getDbProp(path.."1:VALUE")
- getUICaller()[uiOrgText].uc_hardtext = i18n.get('uiOrganization_' .. org)
-
- local status = getDbProp(path.."2:VALUE")
- getUICaller()[uiStatusText].uc_hardtext= status
-
- local points = getDbProp(path.."3:VALUE")
- getUICaller()[uiPointsText].uc_hardtext= points
-
-end
-
-------------------------------------------------------------------------------------------------------------
-function game:organizationTooltip()
- -- set the tooltip in InterfaceManager
- setContextHelpText( i18n.get('uittOrganization') );
-end
-
--------------------------------------------------------------------------------------------------------------
function game:popMissionList()
@@ -1435,13 +1417,6 @@ function game:onInGameDbInitialized()
runAH(nil, "sort_tribefame", "")
end
-function game:onWebIgReady()
- -- Call init webig
- getUI("ui:interface:web_transactions:content:html"):browse("home")
- getUI("ui:interface:webig:content:html"):browse("home")
-
-end
-
--------------------------------------------------------------------------------------------------------------
-- handler called by C++ at the start of a far TP (log to char selection or far tp)
function game:onFarTpStart()
@@ -1602,164 +1577,3 @@ end
function game:onNewMissionAdded(missionIndex)
debugInfo("Mission " .. missionIndex .. " has been added")
end
-
---------------------------------------------------------------------------------------------------------------
--- RPJOBS
-
-function game:addRpJob(jobtype, id, value, rpjobs)
- local base_path = "ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id..":rpjob_"..jobtype.."_infos_"..id
-
- local group = getUI("ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id)
-
- if (value == nil) then
- group.active = false
- else
- local name = "rpjob_" .. string.format("%03d", value)
- local sitem = name..".sitem"
- if (rpjobs[sitem] == nil) then
- group.active = false
- else
- group.active = true
-
- local echelon_value = rpjobs[sitem][1]
- local quantity = rpjobs[sitem][2]
-
- local maxlevel = (echelon_value*6)-30
-
- if (quantity > maxlevel) then
- quantity = maxlevel
- end
-
- local base = getUI(base_path..":t")
- base.hardtext = i18n.get(name):toUtf8()
- local ui = getUI(base_path..":icon")
- ui.texture = name..".tga"
- local echelon = getUI(base_path..":echelon_value")
- echelon.hardtext = tostring(echelon_value/10)
- local bar = getUI(base_path..":bar3d:level")
- local t = getUI(base_path..":bar3d:t")
- if (echelon_value >= 60) then
- bar.color = "255 0 0 255"
- bar.w = "368"
- t.hardtext = i18n.get("uiRpjobMaxLevel"):toUtf8()
- t.color = "255 255 0 255"
- else
- bar.color = tostring(math.floor((105*quantity)/maxlevel)).." "..tostring(100+math.floor((155*quantity)/maxlevel)).." "..tostring(math.floor((105*quantity)/maxlevel)).." 255"
- bar.w = tostring((368*quantity)/maxlevel)
- t.hardtext = tostring(quantity).." / "..tostring(maxlevel)
- t.color = tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." 255"
- end
- end
- end
-end
-
-
-function game:getRPJobs()
- rpjobs_advanced = {}
- rpjobs_elementary = {}
- rpjobs_roleplay = {}
- rpjobs = {}
-
- for i = 0, 499, 1 do
- local sheet = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":SHEET")
- if (sheet ~= 0) then
- local name = getSheetName(sheet)
- if (string.sub(name, 0, 6) == "rpjob_") then
- local quality = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUALITY")
- local quantity = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUANTITY")
-
- if (name == "rpjob_advanced.sitem") then
- table.insert(rpjobs_advanced, quality)
- else
- if (name == "rpjob_elementary.sitem") then
- table.insert(rpjobs_elementary, quality)
- else
- if (name == "rpjob_roleplay.sitem") then
- table.insert(rpjobs_roleplay, quality)
- else
- if rpjobs[name] == nil then
- rpjobs[name] = {quality, quantity}
- else
- if rpjobs[name][1] < quality then
- rpjobs[name] = {quality, quantity}
- end
- end
- end
- end
- end
- end
- end
- end
-
- for id=1,2,1 do
- game:addRpJob("advanced", id, rpjobs_advanced[id], rpjobs)
- end
-
- for id=1,3,1 do
- game:addRpJob("elementary", id, rpjobs_elementary[id], rpjobs)
- end
-
-
-end
-
---------------------------------------------------------------------------------------------------------------
-function game:setInfoPlayerCharacterRace()
- getUI("ui:interface:info_player_skills:content:basics_skills:character_race_name").uc_hardtext = i18n.get("io"..getUserRace())
-end
-
-
--- --------------------------------------------------------------------------------------------------------------
--- game.preInitTimer = 0
--- function game:preInitWebIgAppsLoop()
- -- if game.preInitTimer == nil then game.preInitTimer = 0 end
-
- -- game.preInitTimer = game.preInitTimer - 1
- -- if (not game.preWebIgAppsInitialized) and game.preInitTimer < 0 then
- -- debugInfo("initWebIgAppsLoop(): calling app_ig_preinit.php")
- -- getUI("ui:interface:web_transactions:content:html"):browse("http://atys.ryzom.com/start/app_ig_preinit.php")
- -- game.preInitTimer = getDbProp("UI:SAVE:WEBIG_RETRY_DELAY")
- -- end
-
- -- if game.preWebIgAppsInitialized then
- -- debugInfo("preInitWebIgAppsLoop(): Calling removeOnDbChange()")
- -- removeOnDbChange(getUI("ui:interface"), "@UI:VARIABLES:CURRENT_SERVER_TICK")
- -- end
--- end
-
--- --------------------------------------------------------------------------------------------------------------
--- function game:preInitWebIgApps()
- -- debugInfo("game:preInitWebIgApps()")
- -- addOnDbChange(getUI("ui:interface"), "@UI:VARIABLES:CURRENT_SERVER_TICK", "game:preInitWebIgAppsLoop()")
--- end
-
--- --------------------------------------------------------------------------------------------------------------
--- game.postInitTimer = 0
--- function game:postInitWebIgAppsLoop()
- -- if game.postInitTimer == nil then game.postInitTimer = 0 end
-
- -- game.postInitTimer = game.postInitTimer - 1
- -- if game.postInitTimer < 0 then
- -- debugInfo("initWebIgAppsLoop(): calling app_ig_postinit.php")
- -- getUI("ui:interface:web_transactions:content:html"):browse("http://atys.ryzom.com/start/app_ig_postinit.php")
- -- game.postInitTimer = getDbProp("UI:SAVE:WEBIG_RETRY_DELAY")
- -- end
-
- -- if game.postWebIgAppsInitialized then
- -- debugInfo("postInitWebIgAppsLoop(): Calling removeOnDbChange()")
- -- removeOnDbChange(getUI("ui:interface:milko_pad"), "@UI:VARIABLES:CURRENT_SERVER_TICK")
- -- end
--- end
-
--- --------------------------------------------------------------------------------------------------------------
--- function game:postInitWebIgApps()
- -- debugInfo("game:postInitWebIgApps()")
- -- addOnDbChange(getUI("ui:interface:milko_pad"), "@UI:VARIABLES:CURRENT_SERVER_TICK", "game:postInitWebIgAppsLoop()")
--- end
-
--- --------------------------------------------------------------------------------------------------------------
--- function game:deinitWebIgApps()
- -- debugInfo("game:deinitWebIgApps()")
- -- game.preWebIgAppsInitialized = nil
- -- game.postWebIgAppsInitialized = nil
- -- titleSetted = nil
--- end
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/info_player.xml b/code/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
index 786182876..dd847d3e9 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
@@ -1,335 +1,511 @@
+
+
-
-
-
-
+
+
+
+
+
+
+ @UI:VARIABLES:TRACK_SKILL_CHANGE)"
+ action="lua:game:computeMagicProtectTotalAbsorb()" />
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
-
-
-
+
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/login_config.xml b/code/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
index 7b89efa66..844f98050 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
@@ -428,9 +428,8 @@ This MUST follow the Enum MISSION_DESC::TIconId
-
-
-
+
+
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
index c218fcbae..c16c96d72 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
@@ -1,259 +1,144 @@
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
index 8acbe7d4e..f4cb495d0 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
@@ -37,7 +37,7 @@
+ global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="launcher_bg.tga" />
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
index b69a5286f..1c07e5de3 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
@@ -10,7 +10,7 @@
+ global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="launcher_bg.tga" />
diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
index 04f75e771..c5dd6d50f 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
@@ -580,9 +580,12 @@
onclick_l="proc" params_l="proc_charsel_play"/>
-->
-
+
-
+
@@ -682,9 +685,15 @@
onclick_l="leave_modal" />
-
-
-
+
+
+ -->
@@ -778,7 +788,7 @@