diff --git a/nel/include/nel/misc/debug.h b/nel/include/nel/misc/debug.h
index 1d533c149..a8c23eced 100644
--- a/nel/include/nel/misc/debug.h
+++ b/nel/include/nel/misc/debug.h
@@ -89,9 +89,6 @@ void createDebug (const char *logPath = NULL, bool logInFile = true, bool eraseL
/// Do not call this, unless you know what you're trying to do (it kills debug)!
void destroyDebug();
-/// Attach exception handler, for new threads and fibers
-void attachExceptionHandler();
-
// call this if you want to change the dir of the log.log file
void changeLogDirectory(const std::string &dir);
@@ -355,7 +352,7 @@ void setCrashAlreadyReported(bool state);
* Same as nlassertex(false,exp);
*/
-#if defined(NL_DEBUG) /* Debug break is only useful in debug builds */
+// removed because we always check assert (even in release mode) #if defined (NL_OS_WINDOWS) && defined (NL_DEBUG)
#if defined(NL_OS_WINDOWS)
#define NLMISC_BREAKPOINT __debugbreak()
#elif defined(NL_OS_UNIX) && defined(NL_COMP_GCC)
@@ -363,9 +360,6 @@ void setCrashAlreadyReported(bool state);
#else
#define NLMISC_BREAKPOINT abort()
#endif
-#else
-#define NLMISC_BREAKPOINT do { } while (0)
-#endif
// Internal, don't use it (make smaller assert code)
extern bool _assert_stop(bool &ignoreNextTime, sint line, const char *file, const char *funcName, const char *exp);
diff --git a/nel/include/nel/misc/sha1.h b/nel/include/nel/misc/sha1.h
index d458c6f8f..87edba44c 100644
--- a/nel/include/nel/misc/sha1.h
+++ b/nel/include/nel/misc/sha1.h
@@ -30,19 +30,19 @@ namespace NLMISC {
struct CHashKey
{
- CHashKey() { HashKeyString.resize(20); }
+ CHashKey () { HashKeyString.resize(20); }
- CHashKey(const unsigned char Message_Digest[20])
+ CHashKey (const unsigned char Message_Digest[20])
{
HashKeyString.clear();
- for (sint i = 0; i < 20; ++i)
+ for(sint i = 0; i < 20 ; ++i)
{
HashKeyString += Message_Digest[i];
}
}
// Init the hash key with a binary key format or a text key format
- CHashKey(const std::string &str)
+ CHashKey (const std::string &str)
{
if (str.size() == 20)
{
@@ -51,25 +51,25 @@ struct CHashKey
else if (str.size() == 40)
{
HashKeyString.clear();
- for (size_t i = 0; i < str.size(); i += 2)
+ for(uint i = 0; i < str.size(); i+=2)
{
uint8 val;
- if (isdigit((unsigned char)str[i + 0]))
- val = str[i + 0] - '0';
+ if (isdigit((unsigned char)str[i+0]))
+ val = str[i+0]-'0';
else
- val = 10 + tolower(str[i + 0]) - 'a';
+ val = 10+tolower(str[i+0])-'a';
val *= 16;
- if (isdigit((unsigned char)str[i + 1]))
- val += str[i + 1] - '0';
+ if (isdigit((unsigned char)str[i+1]))
+ val += str[i+1]-'0';
else
- val += 10 + tolower(str[i + 1]) - 'a';
+ val += 10+tolower(str[i+1])-'a';
HashKeyString += val;
}
}
else
{
- nlwarning("SHA: Bad hash key format");
+ nlwarning ("SHA: Bad hash key format");
}
}
@@ -85,28 +85,23 @@ struct CHashKey
}
// serial the hash key in binary format
- void serial(NLMISC::IStream &stream)
+ void serial (NLMISC::IStream &stream)
{
- stream.serial(HashKeyString);
+ stream.serial (HashKeyString);
}
- bool operator==(const CHashKey &v) const
+ bool operator==(const CHashKey &v) const
{
return HashKeyString == v.HashKeyString;
}
- bool operator!=(const CHashKey &v) const
- {
- return !(*this == v);
- }
-
// this string is always 20 bytes long and is the code in binary format (can't print it directly)
std::string HashKeyString;
};
-inline bool operator<(const struct CHashKey &a, const struct CHashKey &b)
+inline bool operator <(const struct CHashKey &a,const struct CHashKey &b)
{
- return a.HashKeyString < b.HashKeyString;
+ return a.HashKeyString
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+
+
+#ifndef XML_MACROS_H
+#define XML_MACROS_H
+
+//
+// xmlNodePtr cur;
+// CXMLAutoPtr prop;
+//
+// sint i;
+// XML_READ_SINT(cur, "prop_name", i, -1);
+//
+
+#define XML_READ_UINT(node, name, var, def) { \
+ uint tmp; \
+ prop = (char *) xmlGetProp(node, (xmlChar*)name); \
+ if (prop && fromString((const char*)prop, tmp)) \
+ var = tmp; \
+ else \
+ var = def; \
+}
+
+#define XML_READ_SINT(node, name, var, def) { \
+ sint tmp; \
+ prop = (char *) xmlGetProp(node, (xmlChar*)name); \
+ if (prop && fromString((const char*)prop, tmp)) \
+ var = tmp; \
+ else \
+ var = def; \
+}
+
+#define XML_READ_BOOL(node, name, var, def) { \
+ prop = (char *) xmlGetProp(node, (xmlChar*)name); \
+ if (prop) \
+ var = NLMISC::toBool((const char*)prop); \
+ else \
+ var = def; \
+}
+
+#define XML_READ_COLOR(node, name, var, def) { \
+ NLMISC::CRGBA tmp; \
+ prop = (char *) xmlGetProp(node, (xmlChar*)name); \
+ if (prop && fromString((const char*)prop, tmp)) \
+ var = tmp; \
+ else \
+ var = def; \
+}
+
+#define XML_READ_STRING(node, name, var, def) { \
+ prop = (char *) xmlGetProp(node, (xmlChar*)name); \
+ if (prop) \
+ var = (const char*)prop; \
+ else \
+ var = def; \
+}
+
+#endif // XML_MACROS_H
+
diff --git a/nel/include/nel/sound/music_channel_fader.h b/nel/include/nel/sound/music_channel_fader.h
index 577d23949..6bb5677f9 100644
--- a/nel/include/nel/sound/music_channel_fader.h
+++ b/nel/include/nel/sound/music_channel_fader.h
@@ -108,7 +108,7 @@ public:
bool play(const std::string &filepath, uint xFadeTime = 0, bool async = true, bool loop = true);
/// Stop the music previously loaded and played (the Memory is also freed)
- bool stop(uint xFadeTime = 0);
+ void stop(uint xFadeTime = 0);
/// Pause the music previously loaded and played (the Memory is not freed)
void pause();
diff --git a/nel/include/nel/sound/stream_file_source.h b/nel/include/nel/sound/stream_file_source.h
index c8cf91cf5..4069a2f58 100644
--- a/nel/include/nel/sound/stream_file_source.h
+++ b/nel/include/nel/sound/stream_file_source.h
@@ -96,8 +96,6 @@ private:
IAudioDecoder *m_AudioDecoder;
- std::string m_LookupPath;
-
bool m_Paused;
bool m_DecodingEnded;
diff --git a/nel/include/nel/web/http_client_curl.h b/nel/include/nel/web/http_client_curl.h
index e130cd768..77cf335ca 100644
--- a/nel/include/nel/web/http_client_curl.h
+++ b/nel/include/nel/web/http_client_curl.h
@@ -34,7 +34,7 @@ class CCurlHttpClient
public:
/// Constructor
- CCurlHttpClient() : _CurlStruct(NULL) {}
+ CCurlHttpClient() {}
/// Connect to an http server (string by val is intended). If you specify a whole URL, an attempt will be made to determine the server.
bool connect(const std::string &server);
diff --git a/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/nel/src/3d/driver/direct3d/driver_direct3d.cpp
index 3a4f67aee..1ab29c3a0 100644
--- a/nel/src/3d/driver/direct3d/driver_direct3d.cpp
+++ b/nel/src/3d/driver/direct3d/driver_direct3d.cpp
@@ -3830,15 +3830,9 @@ void CDriverD3D::CLightState::apply(CDriverD3D *driver)
void CDriverD3D::CRenderTargetState::apply(CDriverD3D *driver)
{
H_AUTO_D3D(CDriverD3D_CRenderTargetState);
- nlassert(TargetOwned); // Can only apply once!
- driver->_DeviceInterface->SetRenderTarget(0, Target);
+ driver->_DeviceInterface->SetRenderTarget (0, Target);
driver->setupViewport(driver->_Viewport);
driver->setupScissor(driver->_Scissor);
- if (TargetOwned)
- {
- Target->Release();
- TargetOwned = false;
- }
}
// ***************************************************************************
diff --git a/nel/src/3d/driver/direct3d/driver_direct3d.h b/nel/src/3d/driver/direct3d/driver_direct3d.h
index c021f052d..636695670 100644
--- a/nel/src/3d/driver/direct3d/driver_direct3d.h
+++ b/nel/src/3d/driver/direct3d/driver_direct3d.h
@@ -1546,13 +1546,11 @@ public:
Texture = NULL;
Level = 0;
CubeFace = 0;
- TargetOwned = false;
}
IDirect3DSurface9 *Target;
ITexture *Texture;
uint8 Level;
uint8 CubeFace;
- bool TargetOwned;
virtual void apply(CDriverD3D *driver);
};
@@ -2078,17 +2076,10 @@ public:
NL_D3D_CACHE_TEST(CacheTest_RenderTarget, _RenderTarget.Target != target)
#endif // NL_D3D_USE_RENDER_STATE_CACHE
{
- if (_RenderTarget.TargetOwned)
- {
- nlassert(_RenderTarget.Target);
- _RenderTarget.Target->Release();
- }
_RenderTarget.Target = target;
_RenderTarget.Texture = texture;
_RenderTarget.Level = level;
_RenderTarget.CubeFace = cubeFace;
- _RenderTarget.TargetOwned = target;
- target->AddRef();
touchRenderVariable (&_RenderTarget);
diff --git a/nel/src/3d/driver/direct3d/driver_direct3d_material.cpp b/nel/src/3d/driver/direct3d/driver_direct3d_material.cpp
index 2285688d4..f902e9fb0 100644
--- a/nel/src/3d/driver/direct3d/driver_direct3d_material.cpp
+++ b/nel/src/3d/driver/direct3d/driver_direct3d_material.cpp
@@ -706,13 +706,9 @@ bool CDriverD3D::setupMaterial(CMaterial &mat)
// Set the texture states
if (text || (stage == 0))
{
- if (matShader == CMaterial::Program)
+ // Doesn't use a pixel shader ? Set the textures stages
+ if (pShader->PixelShader == NULL)
{
- // Do nothing for user pixel shader
- }
- else if (!pShader->PixelShader)
- {
- // Doesn't use a pixel shader ? Set the textures stages
if (pShader->RGBPipe[stage])
{
setTextureState (stage, D3DTSS_COLOROP, pShader->ColorOp[stage]);
@@ -1149,7 +1145,7 @@ bool CDriverD3D::setupMaterial(CMaterial &mat)
}
break;
- case CMaterial::Cloud:
+ case CMaterial::Cloud:
{
H_AUTO_D3D(CDriverD3D_setupMaterial_setupCloudShader)
activeShader (&_ShaderCloud);
@@ -1171,7 +1167,7 @@ bool CDriverD3D::setupMaterial(CMaterial &mat)
return false;
}
break;
- case CMaterial::Water:
+ case CMaterial::Water:
{
H_AUTO_D3D(CDriverD3D_setupMaterial_setupWaterShader)
activeShader(mat.getTexture(3) ? &_ShaderWaterDiffuse : &_ShaderWaterNoDiffuse);
@@ -1300,14 +1296,7 @@ bool CDriverD3D::setupMaterial(CMaterial &mat)
}
}
}
- break; // CMaterial::Water
- case CMaterial::Program:
- {
- H_AUTO_D3D(CDriverD3D_setupMaterial_setupProgramshader)
- // No material shader
- activeShader(NULL);
- }
- break;
+ // CMaterial::Water
}
// New material setuped
diff --git a/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp b/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp
index 15dcb7768..f45663f1b 100644
--- a/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp
+++ b/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp
@@ -1084,7 +1084,6 @@ void CDriverD3D::swapTextureHandle(ITexture &tex0, ITexture &tex1)
swap(t0->Height, t1->Height);
swap(t0->SrcCompressed, t1->SrcCompressed);
swap(t0->IsCube, t1->IsCube);
- swap(t0->RenderTarget, t1->RenderTarget);
swap(t0->Levels, t1->Levels);
swap(t0->FirstMipMap, t1->FirstMipMap);
swap(t0->TextureMemory, t1->TextureMemory);
diff --git a/nel/src/3d/fxaa.cpp b/nel/src/3d/fxaa.cpp
index 6478abf8e..255f0234d 100644
--- a/nel/src/3d/fxaa.cpp
+++ b/nel/src/3d/fxaa.cpp
@@ -246,7 +246,6 @@ void CFXAA::applyEffect()
// create render target
CTextureUser *otherRenderTarget = m_Driver->getRenderTargetManager().getRenderTarget(width, height, mode2D);
- nlassert(otherRenderTarget);
// swap render target
CTextureUser texNull;
diff --git a/nel/src/3d/lod_character_manager.cpp b/nel/src/3d/lod_character_manager.cpp
index f5d6a23c5..92dee846a 100644
--- a/nel/src/3d/lod_character_manager.cpp
+++ b/nel/src/3d/lod_character_manager.cpp
@@ -979,9 +979,6 @@ void CLodCharacterManager::addTextureCompute(CLodCharacterInstance &instance,
// get lookup ptr.
nlassert(lodTexture.Texture.size()==NL3D_CLOD_TEXT_SIZE);
- if (lodTexture.Texture.size() < NL3D_CLOD_TEXT_SIZE)
- return;
-
const CLodCharacterTexture::CTUVQ *lookUpPtr= &lodTexture.Texture[0];
// apply the lodTexture, taking only better quality (ie nearer 0)
diff --git a/nel/src/misc/co_task.cpp b/nel/src/misc/co_task.cpp
index 4548fbe86..524cc69c6 100644
--- a/nel/src/misc/co_task.cpp
+++ b/nel/src/misc/co_task.cpp
@@ -143,9 +143,6 @@ namespace NLMISC
NL_CT_DEBUG("CoTask : task %p start func called", task);
- // Attach exception handler
- attachExceptionHandler();
-
try
{
// run the task
@@ -154,7 +151,6 @@ namespace NLMISC
catch(...)
{
nlwarning("CCoTask::startFunc : the task has generated an unhandled exeption and will terminate");
- NLMISC_BREAKPOINT;
}
task->_Finished = true;
diff --git a/nel/src/misc/debug.cpp b/nel/src/misc/debug.cpp
index 1f7cf38db..cc3203a14 100644
--- a/nel/src/misc/debug.cpp
+++ b/nel/src/misc/debug.cpp
@@ -1157,15 +1157,6 @@ void destroyDebug()
}
}
-void attachExceptionHandler()
-{
-#ifndef NL_COMP_MINGW
-# ifdef NL_OS_WINDOWS
- _set_se_translator(exceptionTranslator);
-# endif // NL_OS_WINDOWS
-#endif //!NL_COMP_MINGW
-}
-
void createDebug (const char *logPath, bool logInFile, bool eraseLastLog)
{
// Do some basic compiler time check on type size
diff --git a/nel/src/misc/file.cpp b/nel/src/misc/file.cpp
index 24222bdfe..89af07129 100644
--- a/nel/src/misc/file.cpp
+++ b/nel/src/misc/file.cpp
@@ -558,7 +558,7 @@ bool CIFile::seek (sint32 offset, IStream::TSeekOrigin origin) const
return true;
// seek in the file. NB: if not in bigfile, _BigFileOffset==0.
- if (nlfseek64(_F, (sint64)_BigFileOffset + _ReadPos, SEEK_SET) != 0)
+ if (nlfseek64(_F, _BigFileOffset+_ReadPos, SEEK_SET) != 0)
return false;
return true;
}
diff --git a/nel/src/misc/i_xml.cpp b/nel/src/misc/i_xml.cpp
index 24a2b7910..87f848ab9 100644
--- a/nel/src/misc/i_xml.cpp
+++ b/nel/src/misc/i_xml.cpp
@@ -171,16 +171,15 @@ bool CIXml::init (IStream &stream)
// Try binary mode
if (_TryBinaryMode)
{
- char header[5];
+ char header[4];
header[0] = buffer[0];
header[1] = buffer[1];
header[2] = buffer[2];
header[3] = buffer[3];
- header[4] = '\0';
toLower(header);
// Does it a xml stream ?
- if (strcmp(header, "Runnable->run();
diff --git a/nel/src/sound/audio_decoder.cpp b/nel/src/sound/audio_decoder.cpp
index db87bd990..1314cd448 100644
--- a/nel/src/sound/audio_decoder.cpp
+++ b/nel/src/sound/audio_decoder.cpp
@@ -56,12 +56,18 @@ IAudioDecoder::~IAudioDecoder()
IAudioDecoder *IAudioDecoder::createAudioDecoder(const std::string &filepath, bool async, bool loop)
{
+ std::string lookup = CPath::lookup(filepath, false);
+ if (lookup.empty())
+ {
+ nlwarning("Music file %s does not exist!", filepath.c_str());
+ return NULL;
+ }
std::string type = CFile::getExtension(filepath);
CIFile *ifile = new CIFile();
ifile->setCacheFileOnOpen(!async);
ifile->allowBNPCacheFileOnOpen(!async);
- ifile->open(filepath);
+ ifile->open(lookup);
IAudioDecoder *mb = createAudioDecoder(type, ifile, loop);
diff --git a/nel/src/sound/music_channel_fader.cpp b/nel/src/sound/music_channel_fader.cpp
index 70ab890d2..ea2cc6341 100644
--- a/nel/src/sound/music_channel_fader.cpp
+++ b/nel/src/sound/music_channel_fader.cpp
@@ -147,7 +147,7 @@ void CMusicChannelFader::updateVolume()
*/
bool CMusicChannelFader::play(const std::string &filepath, uint xFadeTime, bool async, bool loop)
{
- bool stopped = stop(xFadeTime);
+ stop(xFadeTime);
// Find the next best free music channel
uint nextFader = _MaxMusicFader;
@@ -164,7 +164,7 @@ bool CMusicChannelFader::play(const std::string &filepath, uint xFadeTime, bool
// Play a song in it :)
_CMusicFader &fader = _MusicFader[_ActiveMusicFader];
- if (xFadeTime && !stopped) fader.fadeIn(xFadeTime); // only fade in when fading out
+ if (xFadeTime) fader.fadeIn(xFadeTime);
else fader.XFadeVolume = 1.0f;
fader.Playing = true;
updateVolume(); // make sure at ok volume to start :)
@@ -173,17 +173,12 @@ bool CMusicChannelFader::play(const std::string &filepath, uint xFadeTime, bool
}
/// Stop the music previously loaded and played (the Memory is also freed)
-bool CMusicChannelFader::stop(uint xFadeTime)
+void CMusicChannelFader::stop(uint xFadeTime)
{
if (xFadeTime)
{
- bool stopped = true;
for (uint i = 0; i < _MaxMusicFader; ++i) if (_MusicFader[i].Playing)
- {
_MusicFader[i].fadeOut(xFadeTime);
- stopped = false; // fading
- }
- return stopped;
}
else
{
@@ -193,7 +188,6 @@ bool CMusicChannelFader::stop(uint xFadeTime)
_MusicFader[i].Fade = false;
_MusicFader[i].Playing = false;
}
- return true;
}
}
diff --git a/nel/src/sound/stream_file_source.cpp b/nel/src/sound/stream_file_source.cpp
index 50d9bda97..fbd720a89 100644
--- a/nel/src/sound/stream_file_source.cpp
+++ b/nel/src/sound/stream_file_source.cpp
@@ -108,13 +108,6 @@ void CStreamFileSource::play()
//{
// nlwarning("Already waiting for play");
//}
- std::string filepath = getStreamFileSound()->getFilePath();
- m_LookupPath = NLMISC::CPath::lookup(filepath, false, false);
- if (m_LookupPath.empty())
- {
- nlwarning("Music file %s does not exist!", filepath.c_str());
- return;
- }
if (!getStreamFileSound()->getAsync())
{
if (!prepareDecoder())
@@ -279,8 +272,7 @@ bool CStreamFileSource::prepareDecoder()
if (!m_AudioDecoder)
{
// load the file
- nlassert(!m_LookupPath.empty());
- m_AudioDecoder = IAudioDecoder::createAudioDecoder(m_LookupPath, getStreamFileSound()->getAsync(), getStreamFileSound()->getLooping());
+ m_AudioDecoder = IAudioDecoder::createAudioDecoder(getStreamFileSound()->getFilePath(), getStreamFileSound()->getAsync(), getStreamFileSound()->getLooping());
if (!m_AudioDecoder)
{
nlwarning("Failed to create IAudioDecoder, likely invalid format");
diff --git a/nel/src/web/http_client_curl.cpp b/nel/src/web/http_client_curl.cpp
index e61baa89f..1ec244cd2 100644
--- a/nel/src/web/http_client_curl.cpp
+++ b/nel/src/web/http_client_curl.cpp
@@ -192,7 +192,6 @@ bool CCurlHttpClient::receive(string &res, bool verbose)
void CCurlHttpClient::disconnect()
{
curl_easy_cleanup(_Curl);
- _CurlStruct = NULL;
curl_global_cleanup();
}
diff --git a/ryzom/client/src/client_cfg.cpp b/ryzom/client/src/client_cfg.cpp
index 9d030cdca..055260673 100644
--- a/ryzom/client/src/client_cfg.cpp
+++ b/ryzom/client/src/client_cfg.cpp
@@ -326,8 +326,8 @@ CClientConfig::CClientConfig()
Local = false; // Default is Net Mode.
FSHost = ""; // Default Host.
- TexturesInterface.push_back("texture_interfaces_v3");
- TexturesInterfaceDXTC.push_back("texture_interfaces_dxtc");
+ TexturesInterface.push_back("texture_interfaces_v3_2x");
+ TexturesInterfaceDXTC.push_back("texture_interfaces_dxtc_2x");
TexturesOutGameInterface.push_back("texture_interfaces_v3_outgame_ui");
@@ -456,13 +456,7 @@ CClientConfig::CClientConfig()
SoundOn = true; // Default is with sound.
DriverSound = SoundDrvAuto;
SoundForceSoftwareBuffer = true;
- StartMusic = "main theme air.ogg"; // Use at game startup (originally no music)
- EmptySlotMusic = "loading music loop.ogg"; // Use in character selection for empty slots
- LoadingMusic = "main menu loop.ogg"; // Main loading used after leaving character selection, and when going back to character selection
- KamiTeleportMusic = "kami teleport.ogg"; // Kami teleport
- KaravanTeleportMusic = "karavan teleport.ogg"; // Karavan teleport
- TeleportLoadingMusic = "loading music loop.ogg"; // Use for generic teleportations
- DeathMusic = "death.ogg"; // Player death
+ SoundOutGameMusic = "main menu loop.ogg";
SoundSFXVolume = 1.f;
SoundGameMusicVolume = 1.f;
SoundTPFade = 500;
@@ -473,7 +467,7 @@ CClientConfig::CClientConfig()
UserEntitySoundLevel = 0.5f; // Default volume for sound in 1st person
UseEax = true; // Default to use EAX;
UseADPCM = false; // Defualt to PCM sample, NO ADPCM
- MaxTrack = 32; // Default to 32 track
+ MaxTrack = 32; // DEfault to 32 track
ColorShout = CRGBA(150,0,0,255); // Default Shout color.
ColorTalk = CRGBA(255,255,255,255); // Default Talk color.
@@ -788,8 +782,8 @@ void CClientConfig::setValues()
READ_STRINGVECTOR_FV(TexturesOutGameInterfaceDXTC);
// interface textures ingame and r2
- READ_STRINGVECTOR_FV(TexturesInterface);
- READ_STRINGVECTOR_FV(TexturesInterfaceDXTC);
+ //READ_STRINGVECTOR_FV(TexturesInterface);
+ //READ_STRINGVECTOR_FV(TexturesInterfaceDXTC);
// interface files login menus
READ_STRINGVECTOR_FV(XMLLoginInterfaceFiles);
@@ -909,16 +903,76 @@ void CClientConfig::setValues()
READ_STRING_FV(FSHost)
READ_BOOL_DEV(DisplayAccountButtons)
- READ_STRING_DEV(CreateAccountURL)
- READ_STRING_DEV(EditAccountURL)
- READ_STRING_DEV(ForgetPwdURL)
+
+
+ READ_STRING_FV(CreateAccountURL)
+ READ_STRING_FV(EditAccountURL)
+ READ_STRING_FV(ForgetPwdURL)
+
READ_STRING_DEV(BetaAccountURL)
READ_STRING_DEV(FreeTrialURL)
// defined in client_default.cfg
- READ_STRING_FV(ConditionsTermsURL)
- READ_STRING_FV(NamingPolicyURL)
READ_STRING_FV(LoginSupportURL)
+
+ // read NamingPolicyURL from client_default.cfg
+ //READ_STRING_FV(NamingPolicyURL)
+
+ std::string languageCo = "wk";
+ CConfigFile::CVar *languageCodeVarPtr = ClientCfg.ConfigFile.getVarPtr("LanguageCode");
+
+ if (languageCodeVarPtr)
+ {
+ languageCo = languageCodeVarPtr->asString();
+ }
+
+ CConfigFile::CVar *policyurl = ClientCfg.ConfigFile.getVarPtr("NamingPolicyURL");
+
+ if (policyurl)
+ {
+ for (uint i = 0; i < policyurl->size(); ++i)
+ {
+ std::string entry = policyurl->asString(i);
+ if (entry.size() >= languageCo.size())
+ {
+ if (nlstricmp(entry.substr(0, languageCo.size()), languageCo) == 0)
+ {
+ std::string::size_type pos = entry.find("=");
+
+ if (pos != std::string::npos)
+ {
+ ClientCfg.NamingPolicyURL = entry.substr(pos + 1);
+ }
+ }
+ }
+ }
+ }
+
+ // read NamingPolicyURL from client_default.cfg
+ //READ_STRING_FV(ConditionsTermsURL)
+ CConfigFile::CVar *coturl = ClientCfg.ConfigFile.getVarPtr("ConditionsTermsURL");
+
+ if (coturl)
+ {
+ for (uint i = 0; i < coturl->size(); ++i)
+ {
+ std::string entry = coturl->asString(i);
+
+ if (entry.size() >= languageCo.size())
+ {
+ if (nlstricmp(entry.substr(0, languageCo.size()), languageCo) == 0)
+ {
+ std::string::size_type pos = entry.find("=");
+
+ if (pos != std::string::npos)
+ {
+ ClientCfg.ConditionsTermsURL = entry.substr(pos + 1);
+ }
+ }
+ }
+ }
+ }
+
#ifndef RZ_NO_CLIENT
// if cookie is not empty, it means that the client was launch
@@ -1244,13 +1298,7 @@ void CClientConfig::setValues()
// SoundForceSoftwareBuffer
READ_BOOL_FV(SoundForceSoftwareBuffer);
// SoundOutGameMusic
- READ_STRING_DEV(StartMusic)
- READ_STRING_DEV(EmptySlotMusic)
- READ_STRING_DEV(LoadingMusic)
- READ_STRING_DEV(KamiTeleportMusic)
- READ_STRING_DEV(KaravanTeleportMusic)
- READ_STRING_DEV(TeleportLoadingMusic)
- READ_STRING_DEV(DeathMusic)
+ READ_STRING_DEV(SoundOutGameMusic)
// SoundSFXVolume
READ_FLOAT_FV(SoundSFXVolume);
// SoundGameMusicVolume
diff --git a/ryzom/client/src/client_cfg.h b/ryzom/client/src/client_cfg.h
index 16a1e9e0c..2b79dbf05 100644
--- a/ryzom/client/src/client_cfg.h
+++ b/ryzom/client/src/client_cfg.h
@@ -348,14 +348,8 @@ struct CClientConfig
/// SoundForceSoftwareBuffer
bool SoundForceSoftwareBuffer;
- /// Music files
- string StartMusic;
- string EmptySlotMusic;
- string LoadingMusic;
- string KamiTeleportMusic;
- string KaravanTeleportMusic;
- string TeleportLoadingMusic;
- string DeathMusic;
+ /// The outgame music file
+ string SoundOutGameMusic;
/// The Sound SFX Volume (0-1) (ie all but music)
float SoundSFXVolume;
diff --git a/ryzom/client/src/connection.cpp b/ryzom/client/src/connection.cpp
index ee1be3318..f57238991 100644
--- a/ryzom/client/src/connection.cpp
+++ b/ryzom/client/src/connection.cpp
@@ -193,6 +193,7 @@ bool hasPrivilegeG() { return (UserPrivileges.find(":G:") != std::string::npos);
bool hasPrivilegeEM() { return (UserPrivileges.find(":EM:") != std::string::npos); }
bool hasPrivilegeEG() { return (UserPrivileges.find(":EG:") != std::string::npos); }
bool hasPrivilegeOBSERVER() { return (UserPrivileges.find(":OBSERVER:") != std::string::npos); }
+bool hasPrivilegeTESTER() { return (UserPrivileges.find(":TESTER:") != std::string::npos); }
// Restore the video mode (fullscreen for example) after the connection (done in a window)
@@ -278,73 +279,6 @@ void setOutGameFullScreen()
CViewRenderer::getInstance()->setInterfaceScale(1.0f, 1024, 768);
}
-// ------------------------------------------------------------------------------------------------
-class CSoundGlobalMenu
-{
-public:
- CSoundGlobalMenu()
- {
- _MusicWantedAsync= false;
- _NbFrameBeforeChange= NbFrameBeforeChangeMax;
- }
- void reset();
- void setMusic(const string &music, bool async);
- void updateSound();
-private:
- string _MusicPlayed;
- string _MusicWanted;
- bool _MusicWantedAsync;
- sint _NbFrameBeforeChange;
- enum {NbFrameBeforeChangeMax= 10};
-};
-
-void CSoundGlobalMenu::reset()
-{
- _MusicPlayed.clear();
- _MusicWanted.clear();
-}
-
-void CSoundGlobalMenu::updateSound()
-{
- // **** update the music played
- // The first music played is the music played at loading, before select char
- if (_MusicPlayed.empty())
- _MusicPlayed = toLower(LoadingMusic.empty() ? ClientCfg.StartMusic : LoadingMusic);
- if (_MusicWanted.empty())
- _MusicWanted = toLower(LoadingMusic.empty() ? ClientCfg.StartMusic : LoadingMusic);
-
- // because music is changed when the player select other race for instance,
- // wait the 3D to load (stall some secs)
-
- // if the wanted music is the same as the one currently playing, just continue playing
- if(_MusicPlayed!=_MusicWanted)
- {
- // wait nbFrameBeforeChangeMax before actually changing the music
- _NbFrameBeforeChange--;
- if(_NbFrameBeforeChange<=0)
- {
- _MusicPlayed= _MusicWanted;
- // play the music
- if (SoundMngr != NULL)
- SoundMngr->playMusic(_MusicPlayed, 500, _MusicWantedAsync, true, true);
- }
- }
-
-
- // **** update mngr
- if (SoundMngr != NULL)
- SoundMngr->update();
-}
-
-void CSoundGlobalMenu::setMusic(const string &music, bool async)
-{
- _MusicWanted= toLower(music);
- _MusicWantedAsync= async;
- // reset the counter
- _NbFrameBeforeChange= NbFrameBeforeChangeMax;
-}
-static CSoundGlobalMenu SoundGlobalMenu;
-
// New version of the menu after the server connection
//
@@ -477,8 +411,6 @@ bool connection (const string &cookie, const string &fsaddr)
InterfaceState = GLOBAL_MENU;
}
- // No loading music here, this is right before character selection, using the existing music
-
// Create the loading texture. We can't do that before because we need to add search path first.
beginLoading (LoadBackground);
UseEscapeDuringLoading = USE_ESCAPE_DURING_LOADING;
@@ -581,7 +513,6 @@ bool reconnection()
ProgressBar.setFontFactor(1.0f);
// Init out game
- SoundGlobalMenu.reset();
pIM->initOutGame();
// Hide cursor for interface
@@ -597,9 +528,6 @@ bool reconnection()
FarTP.setOutgame();
- if (SoundMngr)
- SoundMngr->setupFadeSound(1.0f, 1.0f);
-
// these two globals sequence GlobalMenu to display the character select dialog
WaitServerAnswer = true;
userChar = true;
@@ -634,8 +562,6 @@ bool reconnection()
// this also kicks the state machine to sendReady() so we stop spinning in farTPmainLoop
FarTP.setIngame();
- // Not loading music here, this is before character selection, keep existing music
-
// Create the loading texture. We can't do that before because we need to add search path first.
beginLoading (LoadBackground);
UseEscapeDuringLoading = USE_ESCAPE_DURING_LOADING;
@@ -811,6 +737,66 @@ std::string buildPlayerNameForSaveFile(const ucstring &playerNameIn)
return ret;
}
+// ------------------------------------------------------------------------------------------------
+class CSoundGlobalMenu
+{
+public:
+ CSoundGlobalMenu()
+ {
+ _MusicWantedAsync= false;
+ _NbFrameBeforeChange= NbFrameBeforeChangeMax;
+ }
+ void setMusic(const string &music, bool async);
+ void updateSound();
+private:
+ string _MusicPlayed;
+ string _MusicWanted;
+ bool _MusicWantedAsync;
+ sint _NbFrameBeforeChange;
+ enum {NbFrameBeforeChangeMax= 10};
+};
+
+void CSoundGlobalMenu::updateSound()
+{
+ // **** update the music played
+ // The first music played is the music played at loading, before select char
+ if(_MusicPlayed.empty())
+ _MusicPlayed= toLower(ClientCfg.SoundOutGameMusic);
+ if(_MusicWanted.empty())
+ _MusicWanted= toLower(ClientCfg.SoundOutGameMusic);
+
+ // because music is changed when the player select other race for instance,
+ // wait the 3D to load (stall some secs)
+
+ // if the wanted music is the same as the one currently playing, just continue playing
+ if(_MusicPlayed!=_MusicWanted)
+ {
+ // wait nbFrameBeforeChangeMax before actually changing the music
+ _NbFrameBeforeChange--;
+ if(_NbFrameBeforeChange<=0)
+ {
+ _MusicPlayed= _MusicWanted;
+ // play the music
+ if (SoundMngr != NULL)
+ SoundMngr->playMusic(_MusicPlayed, 500, _MusicWantedAsync, true, true);
+ }
+ }
+
+
+ // **** update mngr
+ if (SoundMngr != NULL)
+ SoundMngr->update();
+}
+
+void CSoundGlobalMenu::setMusic(const string &music, bool async)
+{
+ _MusicWanted= toLower(music);
+ _MusicWantedAsync= async;
+ // reset the counter
+ _NbFrameBeforeChange= NbFrameBeforeChangeMax;
+}
+static CSoundGlobalMenu SoundGlobalMenu;
+
static bool LuaBGDSuccessFlag = true; // tmp, for debug
@@ -1127,7 +1113,7 @@ TInterfaceState globalMenu()
charSelect = LoginCharsel;
WaitServerAnswer = false;
- if (charSelect == -1)
+ if (charSelect == -1 || FarTP.isReselectingChar())
{
CCDBNodeLeaf *pNL = NLGUI::CDBManager::getInstance()->getDbProp("UI:SERVER_RECEIVED_CHARS", false);
if (pNL != NULL)
@@ -2061,8 +2047,8 @@ public:
fromString(getParam(Params, "async"), async);
// if empty name, return to default mode
- if (sName.empty())
- sName = ClientCfg.EmptySlotMusic;
+ if(sName.empty())
+ sName= ClientCfg.SoundOutGameMusic;
// change the music
SoundGlobalMenu.setMusic(sName, async);
diff --git a/ryzom/client/src/far_tp.cpp b/ryzom/client/src/far_tp.cpp
index 80134f26b..1c2a6e612 100644
--- a/ryzom/client/src/far_tp.cpp
+++ b/ryzom/client/src/far_tp.cpp
@@ -49,12 +49,12 @@
#include "login_progress_post_thread.h"
#include "interface_v3/action_handler_base.h"
#include "item_group_manager.h"
+#include "nel/misc/cmd_args.h"
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
-
using namespace NLMISC;
using namespace NLNET;
using namespace NL3D;
@@ -210,6 +210,7 @@ extern bool IsInRingSession;
extern void selectTipsOfTheDay (uint tips);
#define BAR_STEP_TP 2
+extern NLMISC::CCmdArgs Args;
CLoginStateMachine::TEvent CLoginStateMachine::waitEvent()
{
@@ -462,12 +463,14 @@ void CLoginStateMachine::run()
case st_check_patch:
/// check the data to check if patch needed
CLoginProgressPostThread::getInstance().step(CLoginStep(LoginStep_PostLogin, "login_step_post_login"));
- if (!ClientCfg.PatchWanted)
+
+ if (!ClientCfg.PatchWanted || (Args.haveArg("n") && Args.getLongArg("nopatch").front() == "1"))
{
// client don't want to be patched !
_CurrentState = st_display_eula;
break;
}
+
initPatchCheck();
SM_BEGIN_EVENT_TABLE
if (isBGDownloadEnabled())
@@ -1112,6 +1115,15 @@ void CFarTP::disconnectFromPreviousShard()
beginLoading (StartBackground);
UseEscapeDuringLoading = false;
+ // Play music and fade out the Game Sound
+ if (SoundMngr)
+ {
+ // Loading Music Loop.ogg
+ LoadingMusic = ClientCfg.SoundOutGameMusic;
+ SoundMngr->playEventMusic(LoadingMusic, CSoundManager::LoadingMusicXFade, true);
+ SoundMngr->fadeOutGameSound(ClientCfg.SoundTPFade);
+ }
+
// Change the tips
selectTipsOfTheDay (rand());
@@ -1120,21 +1132,6 @@ void CFarTP::disconnectFromPreviousShard()
ucstring nmsg("Loading...");
ProgressBar.newMessage ( ClientCfg.buildLoadingString(nmsg) );
ProgressBar.progress(0);
-
- // Play music and fade out the Game Sound
- if (SoundMngr)
- {
- SoundMngr->fadeOutGameSound(ClientCfg.SoundTPFade);
-
- // Stop and enable music
- SoundMngr->stopMusic(0);
- SoundMngr->setupFadeSound(0.0f, 1.0f);
-
- // Loading Music Loop.ogg
- LoadingMusic = ClientCfg.LoadingMusic;
- // SoundMngr->playEventMusic(LoadingMusic, CSoundManager::LoadingMusicXFade, true);
- SoundMngr->playMusic(LoadingMusic, 0, false, true, true);
- }
}
// Disconnect from the FS
@@ -1523,4 +1520,3 @@ void CFarTP::farTPmainLoop()
if(welcomeWindow)
initWelcomeWindow();
}
-
diff --git a/ryzom/client/src/init.cpp b/ryzom/client/src/init.cpp
index 5e7b03549..efc137ee6 100644
--- a/ryzom/client/src/init.cpp
+++ b/ryzom/client/src/init.cpp
@@ -1410,42 +1410,6 @@ void prelogInit()
StereoDisplay->setDriver(Driver); // VR_DRIVER
}
- {
- H_AUTO(InitRZSound)
-
- // Init the sound manager
- nmsg = "Initializing sound manager...";
- ProgressBar.newMessage(ClientCfg.buildLoadingString(nmsg));
- if (ClientCfg.SoundOn)
- {
- nlassert(!SoundMngr);
- SoundMngr = new CSoundManager(&ProgressBar);
- try
- {
- SoundMngr->init(&ProgressBar);
- }
- catch(const Exception &e)
- {
- nlwarning("init : Error when creating 'SoundMngr' : %s", e.what());
- delete SoundMngr;
- SoundMngr = NULL;
- }
-
- // Play Music just after the SoundMngr is inited
- if (SoundMngr)
- {
- // init the SoundMngr with backuped volume
- SoundMngr->setSFXVolume(ClientCfg.SoundSFXVolume);
- SoundMngr->setGameMusicVolume(ClientCfg.SoundGameMusicVolume);
-
- // Play the login screen music
- SoundMngr->playMusic(ClientCfg.StartMusic, 0, true, true, true);
- }
- }
-
- CPath::memoryCompress(); // Because sound calls addSearchPath
- }
-
nlinfo ("PROFILE: %d seconds for prelogInit", (uint32)(ryzomGetLocalTime ()-initStart)/1000);
FPU_CHECKER_ONCE
@@ -1588,6 +1552,55 @@ void postlogInit()
// set the primitive context
CPrimitiveContext::instance().CurrentLigoConfig = &LigoConfig;
+ {
+ H_AUTO(InitRZSound)
+
+ // Init the sound manager
+ nmsg = "Initializing sound manager...";
+ ProgressBar.newMessage ( ClientCfg.buildLoadingString(nmsg) );
+ if(ClientCfg.SoundOn)
+ {
+ SoundMngr = new CSoundManager(&ProgressBar);
+ try
+ {
+ SoundMngr->init(&ProgressBar);
+ }
+ catch(const Exception &e)
+ {
+ nlwarning("init : Error when creating 'SoundMngr' : %s", e.what());
+ delete SoundMngr;
+ SoundMngr = NULL;
+ }
+
+ // Play Music just after the SoundMngr is inited
+ if(SoundMngr)
+ {
+ // init the SoundMngr with backuped volume
+ SoundMngr->setSFXVolume(ClientCfg.SoundSFXVolume);
+ SoundMngr->setGameMusicVolume(ClientCfg.SoundGameMusicVolume);
+
+ // no fadein, and not async because don't work well because of loading in the main thread
+ // Force use GameMusic volume
+ const uint fadeInTime= 500;
+ SoundMngr->playMusic(ClientCfg.SoundOutGameMusic, fadeInTime, false, true, true);
+ // Because of blocking loading, force the fadeIn
+ TTime t0= ryzomGetLocalTime();
+ TTime t1;
+ while((t1=ryzomGetLocalTime())updateAudioMixerOnly();
+ }
+ }
+ }
+
+ CPath::memoryCompress(); // Because sound call addSearchPath
+
+ initLast = initCurrent;
+ initCurrent = ryzomGetLocalTime();
+ //nlinfo ("PROFILE: %d seconds (%d total) for Initializing sound manager", (uint32)(initCurrent-initLast)/1000, (uint32)(initCurrent-initStart)/1000);
+ }
+
{
H_AUTO(InitRZShIdI)
diff --git a/ryzom/client/src/init_main_loop.cpp b/ryzom/client/src/init_main_loop.cpp
index deeda2149..2b391114c 100644
--- a/ryzom/client/src/init_main_loop.cpp
+++ b/ryzom/client/src/init_main_loop.cpp
@@ -473,27 +473,6 @@ void initMainLoop()
FPU_CHECKER_ONCE
- if (SoundMngr)
- {
- // Loading Music
- LoadingMusic = ClientCfg.LoadingMusic;
-
- // SoundMngr->playEventMusic(LoadingMusic, CSoundManager::LoadingMusicXFade, true);
- // no fadein, and not async because don't work well because of loading in the main thread
- // Force use GameMusic volume
- const uint fadeInTime = 500;
- SoundMngr->playMusic(LoadingMusic, fadeInTime, false, true, true);
- // Because of blocking loading, force the fadeIn
- TTime t0 = ryzomGetLocalTime();
- TTime t1;
- do
- {
- ProgressBar.progress(0);
- SoundMngr->updateAudioMixerOnly();
- nlSleep(10);
- } while ((t1 = ryzomGetLocalTime()) < t0 + fadeInTime);
- }
-
// Get the interface manager
CInterfaceManager *pIM = CInterfaceManager::getInstance();
diff --git a/ryzom/client/src/interface_v3/input_handler_manager.cpp b/ryzom/client/src/interface_v3/input_handler_manager.cpp
index 67a1b2350..9d1e9292d 100644
--- a/ryzom/client/src/interface_v3/input_handler_manager.cpp
+++ b/ryzom/client/src/interface_v3/input_handler_manager.cpp
@@ -271,16 +271,16 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
{
- CViewPointer &rIP = *static_cast(CWidgetManager::getInstance()->getPointer());
+ CViewPointer &rIP = *static_cast< CViewPointer* >( CWidgetManager::getInstance()->getPointer() );
NLGUI::CEventDescriptorMouse eventDesc;
- sint32 x, y;
- rIP.getPointerDispPos(x, y);
- eventDesc.setX(x);
- eventDesc.setY(y);
+ sint32 x,y;
+ rIP.getPointerDispPos (x, y);
+ eventDesc.setX (x);
+ eventDesc.setY (y);
- bool handled = false;
+ bool handled= false;
// button down ?
static volatile bool doTest = false;
@@ -291,7 +291,7 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
{
if (_RecoverFocusLost)
{
- handled |= updateMousePos((CEventMouse&)event); // must update mouse pos here,
+ handled |= updateMousePos((CEventMouse&)event, eventDesc); // must update mouse pos here,
// because when app window focus is gained by a mouse click, this is
// the only place where we can retrieve mouse pos before a mouse move
_RecoverFocusLost = false;
@@ -299,19 +299,10 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
if (!handled)
{
if (R2::getEditor().isInitialized()
- && (R2::isEditionCurrent() || R2::getEditor().getCurrentTool()))
+ && (R2::isEditionCurrent() || R2::getEditor().getCurrentTool())
+ )
{
- const NLMISC::CEventMouseDown *mouseDownEvent = static_cast(&event);
- if (mouseDownEvent->Button & NLMISC::leftButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouseleftdown);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- if (mouseDownEvent->Button & NLMISC::rightButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouserightdown);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
+ handled |= R2::getEditor().handleEvent(eventDesc);
}
}
handled |= inputHandler.handleMouseButtonDownEvent( event );
@@ -330,7 +321,7 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
// mouse move?
else if(event == EventMouseMoveId)
{
- handled |= updateMousePos((CEventMouse&)event);
+ handled |= updateMousePos((CEventMouse&)event, eventDesc);
}
else if (event == EventMouseWheelId)
{
@@ -339,77 +330,19 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
}
// if Event not handled, post to Action Manager
- if (!handled)
+ if( !handled )
{
+ bool handled = false;
if (R2::getEditor().isInitialized()
- && (R2::isEditionCurrent() || R2::getEditor().getCurrentTool()))
+ && (R2::isEditionCurrent() || R2::getEditor().getCurrentTool())
+ )
{
- if (event == EventMouseDownId)
- {
- const NLMISC::CEventMouseDown *mouseDownEvent = static_cast(&event);
- if (mouseDownEvent->Button & NLMISC::leftButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouseleftdown);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- if (mouseDownEvent->Button & NLMISC::rightButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouserightdown);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- }
- else if (event == EventMouseUpId)
- {
- const NLMISC::CEventMouseUp *mouseUpEvent = static_cast(&event);
- if (mouseUpEvent->Button & NLMISC::leftButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouseleftup);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- if (mouseUpEvent->Button & NLMISC::rightButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouserightup);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- }
- else if (event == EventMouseDblClkId)
- {
- const NLMISC::CEventMouseDblClk *mouseDblClkEvent = static_cast(&event);
- if (mouseDblClkEvent->Button & NLMISC::leftButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouseleftdblclk);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- if (mouseDblClkEvent->Button & NLMISC::rightButton)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mouserightdblclk);
- handled |= R2::getEditor().handleEvent(eventDesc);
- }
- }
- else
- {
- if (event == EventMouseWheelId)
- {
- const NLMISC::CEventMouseWheel *wheelEvent = static_cast(&event);
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mousewheel);
- eventDesc.setWheel(wheelEvent->Direction ? 1 : -1);
- handled = R2::getEditor().handleEvent(eventDesc);
- }
- else if (event == EventMouseMoveId)
- {
- eventDesc.setEventTypeExtended(CEventDescriptorMouse::mousemove);
- handled = R2::getEditor().handleEvent(eventDesc);
- }
- else
- {
- nlwarning("R2 unknown mouse event '%s'", event.toString().c_str());
- }
- }
+ handled = R2::getEditor().handleEvent(eventDesc);
}
if (!handled)
{
// post to Action Manager
- FilteredEventServer.postEvent(event.clone());
+ FilteredEventServer.postEvent( event.clone() );
}
}
}
@@ -422,7 +355,7 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
// ***************************************************************************
-bool CInputHandlerManager::updateMousePos(NLMISC::CEventMouse &event)
+bool CInputHandlerManager::updateMousePos(NLMISC::CEventMouse &event, NLGUI::CEventDescriptorMouse &eventDesc)
{
if (!IsMouseFreeLook())
return inputHandler.handleMouseMoveEvent( event );
diff --git a/ryzom/client/src/interface_v3/input_handler_manager.h b/ryzom/client/src/interface_v3/input_handler_manager.h
index 4b078ee84..7971ef9a8 100644
--- a/ryzom/client/src/interface_v3/input_handler_manager.h
+++ b/ryzom/client/src/interface_v3/input_handler_manager.h
@@ -181,7 +181,7 @@ private:
void parseKey(xmlNodePtr cur, std::vector &out);
// return true if handled
- bool updateMousePos(NLMISC::CEventMouse &event);
+ bool updateMousePos(NLMISC::CEventMouse &event, NLGUI::CEventDescriptorMouse &eventDesc);
NLGUI::CInputHandler inputHandler;
diff --git a/ryzom/client/src/interface_v3/inventory_manager.cpp b/ryzom/client/src/interface_v3/inventory_manager.cpp
index 5c4799fe4..20480dc38 100644
--- a/ryzom/client/src/interface_v3/inventory_manager.cpp
+++ b/ryzom/client/src/interface_v3/inventory_manager.cpp
@@ -3648,23 +3648,19 @@ void CInventoryManager::onTradeChangeSession()
// ***************************************************************************
void CInventoryManager::updateItemInfoQueue()
{
- if (!ConnectionReadySent) // CONNECTION:READY not yet sent, so we cannot send requests yet!
- {
- // Caused by CNetworkConnection::reinit, and NLMISC::CCDBNodeBranch::resetData
- // TODO: Item sheets are effectively being set to 0, any way to detect this in particular?
- // Slots with sheet 0 won't have any info to request anyway!
- // Remove this check in favour of the assert lower down when properly implemented.
- nlwarning("Update item info queue (%i), but connection not ready", (int)_ItemInfoWaiters.size());
- return;
- }
-
- // CONNECTION:READY not yet sent, so we cannot send requests yet!
- nlassert(ConnectionReadySent || !_ItemInfoWaiters.size());
-
// For All waiters, look if one need update.
TItemInfoWaiters::iterator it;
for(it= _ItemInfoWaiters.begin();it!=_ItemInfoWaiters.end();it++)
{
+ /* yoyo remove: temp patch to be sure that the client does not send messages before the
+ CONNECTION:READY is sent
+ Ulukyn: this only happens if player ask to reselect a char before end of update items.
+ On this case, skip it...
+ */
+
+ if (!ConnectionReadySent)
+ continue;
+
IItemInfoWaiter *waiter=*it;
uint itemSlotId= waiter->ItemSlotId;
TItemInfoMap::iterator it= _ItemInfoMap.find(itemSlotId);
diff --git a/ryzom/client/src/login.cpp b/ryzom/client/src/login.cpp
index 9eb9688ae..244bb593c 100644
--- a/ryzom/client/src/login.cpp
+++ b/ryzom/client/src/login.cpp
@@ -1932,8 +1932,11 @@ class CAHOpenURL : public IActionHandler
#else
// TODO: for Linux and Mac OS
#endif
-
- if (sParams == "cfg_EditAccountURL")
+ if (sParams == "cfg_CreateAccountURL")
+ {
+ url = ClientCfg.CreateAccountURL;
+ }
+ else if (sParams == "cfg_EditAccountURL")
{
url = ClientCfg.EditAccountURL;
}
@@ -1971,32 +1974,35 @@ class CAHOpenURL : public IActionHandler
nlwarning("no URL found");
return;
}
+
+ if(sParams != "cfg_ConditionsTermsURL" && sParams != "cfg_NamingPolicyURL")
+ {
+ // modify existing languages
- // modify existing languages
-
- // old site
- string::size_type pos_lang = url.find("/en/");
+ // old site
+ string::size_type pos_lang = url.find("/en/");
- // or new forums
- if (pos_lang == string::npos)
- pos_lang = url.find("=en#");
+ // or new forums
+ if (pos_lang == string::npos)
+ pos_lang = url.find("=en#");
- if (pos_lang != string::npos)
- {
- url.replace(pos_lang + 1, 2, ClientCfg.getHtmlLanguageCode());
- }
- else
- {
- // append language
- if (url.find('?') != string::npos)
- url += "&";
+ if (pos_lang != string::npos)
+ {
+ url.replace(pos_lang + 1, 2, ClientCfg.getHtmlLanguageCode());
+ }
else
- url += "?";
+ {
+ // append language
+ if (url.find('?') != string::npos)
+ url += "&";
+ else
+ url += "?";
- url += "language=" + ClientCfg.LanguageCode;
+ url += "language=" + ClientCfg.LanguageCode;
- if (!LoginCustomParameters.empty())
- url += LoginCustomParameters;
+ if (!LoginCustomParameters.empty())
+ url += LoginCustomParameters;
+ }
}
openURL(url);
@@ -3283,7 +3289,6 @@ bool loginIntroSkip;
void loginIntro()
{
// Display of nevrax logo is done at init time (see init.cpp) just before addSearchPath (second one)
-#if 0
for (uint i = 0; i < 1; i++) // previously display nevrax then nvidia
{
if (i != 0)
@@ -3321,7 +3326,6 @@ void loginIntro()
NLGUI::CDBManager::getInstance()->flushObserverCalls();
}
}
-#endif
beginLoading(StartBackground);
ProgressBar.finish();
}
diff --git a/ryzom/client/src/main_loop.cpp b/ryzom/client/src/main_loop.cpp
index a62b72e73..5c4f99446 100644
--- a/ryzom/client/src/main_loop.cpp
+++ b/ryzom/client/src/main_loop.cpp
@@ -2255,21 +2255,19 @@ bool mainLoop()
{
StartPlayTime = NLMISC::CTime::getLocalTime();
}
-
// Start background sound play now ! (nb: restarted if load just ended, or if sound re-enabled)
if (SoundMngr)
{
H_AUTO_USE ( RZ_Client_Main_Loop_Sound )
+ SoundMngr->playBackgroundSound();
+ }
+ // Fade in Game Sound now (before endLoading)
+ if(SoundMngr)
+ {
// fade out loading music
- if (SoundMngr->getEventMusicPlayed() == LoadingMusic)
- {
+ if(LoadingMusic==SoundMngr->getEventMusicPlayed())
SoundMngr->stopEventMusic(LoadingMusic, CSoundManager::LoadingMusicXFade);
- }
-
- SoundMngr->playBackgroundSound();
-
- // Fade in Game Sound now (before endLoading)
// fade in game sound
SoundMngr->fadeInGameSound(ClientCfg.SoundTPFade);
}
@@ -2533,7 +2531,7 @@ bool mainLoop()
EditActions.enable(true);
// For stoping the outgame music, start after 30 frames, and duration of 3 seconds
- outgameFader = CMusicFader(60, 3);
+// CMusicFader outgameFader(60, 3);
// check for banned player
if (testPermanentBanMarkers())
diff --git a/ryzom/client/src/net_manager.cpp b/ryzom/client/src/net_manager.cpp
index c6da153bc..ada437ec7 100644
--- a/ryzom/client/src/net_manager.cpp
+++ b/ryzom/client/src/net_manager.cpp
@@ -33,6 +33,7 @@
#include "game_share/chat_group.h"
#include "game_share/character_summary.h"
#include "game_share/sphrase_com.h"
+#include "game_share/outpost.h"
#include "game_share/msg_client_server.h"
#include "game_share/ryzom_database_banks.h"
#include "game_share/msg_encyclopedia.h"
@@ -1488,33 +1489,32 @@ void impulseTPCommon(NLMISC::CBitMemStream &impulse, bool hasSeason)
void impulseTPCommon2(NLMISC::CBitMemStream &impulse, bool hasSeason)
{
// choose a default screen if not setuped
- if (LoadingBackground != ResurectKamiBackground && LoadingBackground != ResurectKaravanBackground
- && LoadingBackground != TeleportKamiBackground && LoadingBackground != TeleportKaravanBackground)
- LoadingBackground = ElevatorBackground;
+ if( LoadingBackground!=ResurectKamiBackground && LoadingBackground!=ResurectKaravanBackground &&
+ LoadingBackground!=TeleportKamiBackground && LoadingBackground!=TeleportKaravanBackground)
+ LoadingBackground= TeleportKaravanBackground;
// if resurect but user not dead, choose default. NB: this is a bug, the tp impulse should tell
// which background to choose. \todo yoyo: this is a temp fix
- if (UserEntity && !UserEntity->isDead() && (LoadingBackground == ResurectKamiBackground || LoadingBackground == ResurectKaravanBackground))
- LoadingBackground = ElevatorBackground;
+ if( UserEntity && !UserEntity->isDead() &&
+ (LoadingBackground==ResurectKamiBackground || LoadingBackground==ResurectKaravanBackground) )
+ LoadingBackground= TeleportKaravanBackground;
// Play music according to the background
- if (SoundMngr)
+ if(SoundMngr)
{
LoadingMusic.clear();
- switch (LoadingBackground)
+ if(LoadingBackground==TeleportKamiBackground)
+ LoadingMusic= "Kami Teleport.ogg";
+ else if(LoadingBackground==TeleportKaravanBackground)
+ LoadingMusic= "Karavan Teleport.ogg";
+ // if resurection, continue to play death music
+ else if(LoadingBackground==ResurectKamiBackground || LoadingBackground==ResurectKaravanBackground)
{
- case TeleportKamiBackground:
- LoadingMusic = ClientCfg.KamiTeleportMusic;
- break;
- case TeleportKaravanBackground:
- LoadingMusic = ClientCfg.KaravanTeleportMusic;
- break;
- case ResurectKamiBackground:
- case ResurectKaravanBackground:
- // TODO: Resurrect music
- break;
- default:
- LoadingMusic = ClientCfg.TeleportLoadingMusic;
- break;
+ // noop
+ }
+ // default: loading music
+ else
+ {
+ LoadingMusic= "Loading Music Loop.ogg";
}
// start to play
@@ -3206,9 +3206,11 @@ void impulseUserBars(NLMISC::CBitMemStream &impulse)
void impulseOutpostChooseSide(NLMISC::CBitMemStream &impulse)
{
// read message
+ uint8 type;
bool outpostInFire;
bool playerGuildInConflict;
bool playerGuildIsAttacker;
+ impulse.serial(type);
impulse.serial(outpostInFire);
impulse.serial(playerGuildInConflict);
impulse.serial(playerGuildIsAttacker);
@@ -3220,7 +3222,7 @@ void impulseOutpostChooseSide(NLMISC::CBitMemStream &impulse)
impulse.serial( declTimer );
// start
- OutpostManager.startPvpJoinProposal(outpostInFire, playerGuildInConflict, playerGuildIsAttacker,
+ OutpostManager.startPvpJoinProposal((OUTPOSTENUMS::TPVPType)type, outpostInFire, playerGuildInConflict, playerGuildIsAttacker,
ownerGuildNameId, attackerGuildNameId, declTimer);
}
diff --git a/ryzom/client/src/user_entity.cpp b/ryzom/client/src/user_entity.cpp
index 312fffca8..0ddd61c41 100644
--- a/ryzom/client/src/user_entity.cpp
+++ b/ryzom/client/src/user_entity.cpp
@@ -2674,17 +2674,6 @@ void CUserEntity::selection(const CLFECOMMON::TCLEntityId &slot) // virtual
{
playerGiftNeeded->setValue32(0);
}
- //
- missionOption = NLGUI::CDBManager::getInstance()->getDbProp(toString("SERVER:TARGET:CONTEXT_MENU:MISSIONS_OPTIONS:%d:TITLE", (int) k), false);
- if (missionOption)
- {
- missionOption->setValue32(0);
- }
- playerGiftNeeded = NLGUI::CDBManager::getInstance()->getDbProp(toString("SERVER:TARGET:CONTEXT_MENU:MISSIONS_OPTIONS:%d:PLAYER_GIFT_NEEDED", (int) k), false);
- if (playerGiftNeeded)
- {
- playerGiftNeeded->setValue32(0);
- }
}
/* TODO ULU : Add RP tags */
@@ -4313,19 +4302,20 @@ void CUserEntity::updatePreCollision(const NLMISC::TTime &time, CEntityCL *targe
// test each frame if the mode has changed
if(SoundMngr)
{
+ string deadMusic= "death.ogg";
// Play/stop music if comes from or goes to dead
- bool isDead = _Mode == MBEHAV::DEATH || _Mode == MBEHAV::SWIM_DEATH;
+ bool isDead= _Mode==MBEHAV::DEATH || _Mode==MBEHAV::SWIM_DEATH;
// must start music?
- if (isDead && SoundMngr->getEventMusicPlayed() != ClientCfg.DeathMusic)
+ if( isDead && SoundMngr->getEventMusicPlayed()!=deadMusic )
{
- SoundMngr->playEventMusic(ClientCfg.DeathMusic, 0, true);
+ SoundMngr->playEventMusic(deadMusic, 0, true);
}
// must end music?
- if (!isDead && SoundMngr->getEventMusicPlayed() == ClientCfg.DeathMusic)
+ if( !isDead && SoundMngr->getEventMusicPlayed()==deadMusic )
{
- SoundMngr->stopEventMusic(ClientCfg.DeathMusic, CSoundManager::LoadingMusicXFade);
+ SoundMngr->stopEventMusic(deadMusic, CSoundManager::LoadingMusicXFade);
}
}
}