From c616010246d9105aec7005833744f57c621ddd3f Mon Sep 17 00:00:00 2001 From: Nuno Date: Mon, 13 Dec 2021 14:49:42 +0100 Subject: [PATCH 01/10] Remove nlerror in getCurrentWindowUnder (useless) Add debug when lua error --- nel/src/gui/lua_ihm.cpp | 3 +-- nel/src/gui/lua_manager.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/nel/src/gui/lua_ihm.cpp b/nel/src/gui/lua_ihm.cpp index 229cd1f0f..8d4d64b88 100644 --- a/nel/src/gui/lua_ihm.cpp +++ b/nel/src/gui/lua_ihm.cpp @@ -1123,7 +1123,6 @@ namespace NLGUI if(!pIE) { ls.pushNil(); - nlerror("getCurrentWindowUnder(): No UICaller found. return Nil"); } else { @@ -1672,7 +1671,7 @@ namespace NLGUI ls.registerFunc("runFct", runFct); ls.registerFunc("runCommand", runCommand); ls.registerFunc("getPathContent", getPathContent); - + // Through LUABind API lua_State *L= ls.getStatePointer(); diff --git a/nel/src/gui/lua_manager.cpp b/nel/src/gui/lua_manager.cpp index 31f2a4450..7034f6b7e 100644 --- a/nel/src/gui/lua_manager.cpp +++ b/nel/src/gui/lua_manager.cpp @@ -70,7 +70,17 @@ namespace NLGUI } catch( const ELuaError &e ) { - nlwarning( e.luaWhat().c_str() ); + #if !FINAL_VERSION + nlwarning("--- LUA ERROR ---"); + nlwarning(e.luaWhat().c_str()); + std::vector res; + NLMISC::explode(luaScript, std::string("\n"), res); + for(uint k = 0; k < res.size(); ++k) + { + nlwarning("%.05u %s", k, res[k].c_str()); + } + nlwarning("--- ********* ---"); + #endif return false; } From aa34e88101fc6cacabd5a01d46d821f6acb78ebd Mon Sep 17 00:00:00 2001 From: Nimetu Date: Fri, 17 Dec 2021 15:32:06 +0200 Subject: [PATCH 02/10] Fix crash when --nopatch is used without argument --- ryzom/client/src/far_tp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryzom/client/src/far_tp.cpp b/ryzom/client/src/far_tp.cpp index 6bd05172a..3461c824f 100644 --- a/ryzom/client/src/far_tp.cpp +++ b/ryzom/client/src/far_tp.cpp @@ -466,7 +466,7 @@ void CLoginStateMachine::run() /// check the data to check if patch needed CLoginProgressPostThread::getInstance().step(CLoginStep(LoginStep_PostLogin, "login_step_post_login")); - if (!ClientCfg.PatchWanted || (Args.haveArg("n") && Args.getLongArg("nopatch").front() == "1")) + if (!ClientCfg.PatchWanted || Args.haveLongArg("nopatch")) { // client don't want to be patched ! _CurrentState = st_display_eula; From 35a7a6628b212661afb70e23233a3b8cbb2cb975 Mon Sep 17 00:00:00 2001 From: Nuno Date: Tue, 14 Dec 2021 20:23:43 +0100 Subject: [PATCH 03/10] Adde default value to _HeadPitch. Change bounds --- ryzom/client/src/user_entity.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ryzom/client/src/user_entity.cpp b/ryzom/client/src/user_entity.cpp index 90d4b28b6..aed5ca413 100644 --- a/ryzom/client/src/user_entity.cpp +++ b/ryzom/client/src/user_entity.cpp @@ -153,7 +153,7 @@ CUserEntity::CUserEntity() _LateralVelocity = 0.0f; _SpeedServerAdjust = 1.0f; - + // \todo GUIGUI : do it more generic. _First_Pos = false; @@ -186,7 +186,7 @@ CUserEntity::CUserEntity() _MoveToAction= CUserEntity::None; _MoveToDist= 0.0; _MoveToColStartTime= 0; - + _HeadPitch = Pi/2; _FollowForceHeadPitch= false; _ForceLookSlot= CLFECOMMON::INVALID_SLOT; @@ -209,7 +209,7 @@ CUserEntity::~CUserEntity() _MountSpeeds.release(); CInterfaceManager *pIM = CInterfaceManager::getInstance(); - + { CCDBNodeLeaf *node = NLGUI::CDBManager::getInstance()->getDbProp("SERVER:USER:IS_INVISIBLE", false); if (node) @@ -1220,7 +1220,7 @@ void CUserEntity::applyMotion(CEntityCL *target) speed = getVelocity()*_SpeedFactor.getValue(); _SpeedFactor.addFactorValue(0.005f); } - + // SPEED VECTOR NULL -> NO MOVE if(speed == CVectorD::Null) return; @@ -1674,11 +1674,11 @@ void CUserEntity::moveToAction(CEntityCL *ent) case CUserEntity::Outpost: CLuaManager::getInstance().executeLuaScript("game:outpostBCOpenStateWindow()", 0); break; - // BuildTotem + // BuildTotem case CUserEntity::BuildTotem: buildTotem(); break; - // openArkUrl + // openArkUrl case CUserEntity::OpenArkUrl: CLuaManager::getInstance().executeLuaScript("getUI('ui:interface:web_transactions'):find('html'):browse(ArkTargetUrl)", 0); break; @@ -2552,9 +2552,9 @@ void CUserEntity::rotHeadVertically(float ang) //----------------------------------------------- void CUserEntity::setHeadPitch(double hp) { - _HeadPitch= hp; - const double bound= Pi/2 - 0.01; // epsilon to avoid gimbal lock - clamp(_HeadPitch, -bound, bound); + _HeadPitch = hp; + // epsilon to avoid gimbal lock + clamp(_HeadPitch, -Pi/2 + 0.01, Pi/2 - 0.5); } //--------------------------------------------------- @@ -3616,7 +3616,7 @@ void CUserEntity::CSpeedFactor::update(ICDBNode *node) // virtual CCDBNodeLeaf *leaf = safe_cast(node); _Value = ((float)leaf->getValue64())/100.0f; //nlinfo("SpeedFactor changed to %f / %" NL_I64 "u", _Value, leaf->getValue64()); - + // clamp the value (2.0 is the egg item or the level 6 speed up power up, nothing should be faster) // commented because ring editor speed is in fact faster //if(_Value > 2.0f) From b325126b20d61b1d2fb62cbfd19068cdb6677b6d Mon Sep 17 00:00:00 2001 From: Nimetu Date: Fri, 10 Dec 2021 23:44:09 +0200 Subject: [PATCH 04/10] Fixed cleanup of html downloads --- nel/include/nel/gui/group_html.h | 1 + nel/src/gui/group_html.cpp | 25 +++++++++++++++---------- nel/src/gui/view_bitmap.cpp | 8 +++++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/nel/include/nel/gui/group_html.h b/nel/include/nel/gui/group_html.h index 8b6ad19b6..4f972b191 100644 --- a/nel/include/nel/gui/group_html.h +++ b/nel/include/nel/gui/group_html.h @@ -969,6 +969,7 @@ namespace NLGUI // stop all curl downalods (html and data) void releaseDownloads(); + void releaseDataDownloads(); void checkDownloads(); // _CurlWWW download finished diff --git a/nel/src/gui/group_html.cpp b/nel/src/gui/group_html.cpp index 107ab107a..de7e6effe 100644 --- a/nel/src/gui/group_html.cpp +++ b/nel/src/gui/group_html.cpp @@ -299,6 +299,11 @@ namespace NLGUI void CGroupHTML::ImageDownloadCB::finish() { + // Image setTexture will remove itself from Images while iterating over it. + // Do the swap to keep iterator safe. + std::vector vec; + vec.swap(Images); + // tmpdest file does not exist if download skipped (ie cache was used) if (CFile::fileExists(tmpdest) || CFile::getFileSize(tmpdest) == 0) { @@ -322,7 +327,7 @@ namespace NLGUI // to temp file temporarily. that forces driver to reload texture from disk // ITexture::touch() seem not to do this. // cache was updated, first set texture as temp file - for(std::vector::iterator it = Images.begin(); it != Images.end(); ++it) + for(std::vector::iterator it = vec.begin(); it != vec.end(); ++it) { SImageInfo &img = *it; Parent->setImage(img.Image, tmpdest, img.Type); @@ -339,7 +344,7 @@ namespace NLGUI } // even if image was cached, incase there was 'http://' image set to CViewBitmap - for(std::vector::iterator it = Images.begin(); it != Images.end(); ++it) + for(std::vector::iterator it = vec.begin(); it != vec.end(); ++it) { SImageInfo &img = *it; Parent->setImage(img.Image, dest, img.Type); @@ -1053,6 +1058,13 @@ namespace NLGUI _CurlWWW = NULL; } + releaseDataDownloads(); + } + + void CGroupHTML::releaseDataDownloads() + { + LOG_DL("Clear pointers to %d curls", Curls.size()); + // remove all queued and already started downloads for(std::list::iterator it = Curls.begin(); it != Curls.end(); ++it) { @@ -3080,14 +3092,7 @@ namespace NLGUI paragraphChange (); - // clear the pointer to the current image download since all the button are deleted - LOG_DL("Clear pointers to %d curls", Curls.size()); - - // remove image refs from downloads - /*for(std::list::iterator it = Curls.begin(); it != Curls.end(); ++it) - { - it->imgs.clear(); - }*/ + releaseDataDownloads(); } // *************************************************************************** diff --git a/nel/src/gui/view_bitmap.cpp b/nel/src/gui/view_bitmap.cpp index 89c944a18..1896ced40 100644 --- a/nel/src/gui/view_bitmap.cpp +++ b/nel/src/gui/view_bitmap.cpp @@ -481,7 +481,13 @@ namespace NLGUI } else { - _HtmlDownload = NULL; + if (_HtmlDownload) + { + CGroupHTML *groupHtml = dynamic_cast(CWidgetManager::getInstance()->getElementFromId("ui:interface:webig:content:html")); + if (groupHtml) + groupHtml->removeImageDownload(_HtmlDownload, dynamic_cast(this)); + _HtmlDownload = NULL; + } _TextureId.setTexture (TxName.c_str (), _TxtOffsetX, _TxtOffsetY, _TxtWidth, _TxtHeight, false); } } From c47db9bf943d113c21c8287c0b72f40f9f2ae411 Mon Sep 17 00:00:00 2001 From: Nimetu Date: Wed, 1 Dec 2021 22:55:27 +0200 Subject: [PATCH 05/10] Fix utf8 encoding on sphrase info window --- ryzom/client/src/interface_v3/sphrase_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryzom/client/src/interface_v3/sphrase_manager.cpp b/ryzom/client/src/interface_v3/sphrase_manager.cpp index 7e2585eb4..639e8b426 100644 --- a/ryzom/client/src/interface_v3/sphrase_manager.cpp +++ b/ryzom/client/src/interface_v3/sphrase_manager.cpp @@ -798,7 +798,7 @@ void CSPhraseManager::buildPhraseFromSheet(CSPhraseCom &phrase, sint32 sheetI if(phraseSheet) { // get localized Name - phrase.Name= STRING_MANAGER::CStringManagerClient::getSPhraseLocalizedName(CSheetId(sheetId)); + phrase.Name.fromUtf8(STRING_MANAGER::CStringManagerClient::getSPhraseLocalizedName(CSheetId(sheetId))); // Build bricks phrase.Bricks.clear(); for(uint i=0;iBricks.size();i++) From e43515e88af1509c96b829ac52b2459425bf0921 Mon Sep 17 00:00:00 2001 From: Nuno Date: Fri, 17 Dec 2021 16:11:13 +0100 Subject: [PATCH 06/10] Fix generate_module_interface.xslt used to server shard_unifier_service/nel_database_mapping.xml file --- .../game_share/generate_module_interface.xslt | 127 ++++++++++-------- 1 file changed, 74 insertions(+), 53 deletions(-) diff --git a/ryzom/common/src/game_share/generate_module_interface.xslt b/ryzom/common/src/game_share/generate_module_interface.xslt index ee87f6ae4..94750a59e 100644 --- a/ryzom/common/src/game_share/generate_module_interface.xslt +++ b/ryzom/common/src/game_share/generate_module_interface.xslt @@ -19,7 +19,22 @@ - +// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> +// Copyright (C) 2010-2021 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 <http://www.gnu.org/licenses/>. + ///////////////////////////////////////////////////////////////// // WARNING : this is a generated file, don't change it ! ///////////////////////////////////////////////////////////////// @@ -1676,13 +1691,14 @@ namespace { // cascading deletion for vector child - nlassert(load(connection, __FILE__, __LINE__)); - - const std::vector < Ptr > & childs = get(); - - while (!childs.empty()) + if (load(connection, __FILE__, __LINE__)) { - getByIndex(childs.size()-1)->remove(connection); + const std::vector < Ptr > & childs = get(); + + while (!childs.empty()) + { + getByIndex((uint32)childs.size()-1)->remove(connection); + } } } @@ -1690,72 +1706,77 @@ namespace { // cascading deletion for map child - nlassert(load(connection, __FILE__, __LINE__)); - - const std::map < uint32, Ptr > & childs = get(); - - while (!childs.empty()) + if (load(connection, __FILE__, __LINE__)) { - getById(childs.begin()->first)->remove(connection); + const std::map < uint32, Ptr > & childs = get(); + + while (!childs.empty()) + { + getById(childs.begin()->first)->remove(connection); + } } } { // cascading deletion for single child - nlassert(load(connection, __FILE__, __LINE__)); - - if (get() != NULL) - get()->remove(connection); + if (load(connection, __FILE__, __LINE__)) + { + if (get() != NULL) + get()->remove(connection); + } } { // unreference (and update) for vector child - nlassert(load(connection, __FILE__, __LINE__)); - - const std::vector < Ptr > & childs = get(); - - for (uint i=0; i < childs.size(); ++i) + if (load(connection, __FILE__, __LINE__)) { - - - - getByIndex(i)->set(0); - getByIndex(i)->update(connection); + const std::vector < Ptr > & childs = get(); + + for (uint i=0; i < childs.size(); ++i) + { + + + + getByIndex(i)->set(0); + getByIndex(i)->update(connection); + } } } { // unreference (and update) for map child - nlassert(load(connection, __FILE__, __LINE__)); + if (load(connection, __FILE__, __LINE__)) { - const std::map < uint32, Ptr > & childs = get(); - std::map< uint32, Ptr >::const_iterator first(childs.begin()), last(childs.end()); + const std::map < uint32, Ptr > & childs = get(); + std::map< uint32, Ptr >::const_iterator first(childs.begin()), last(childs.end()); - for (; first != last; ++first) - { - - - - getById(it->first)->set(0); - getById(it->first)->update(connection); + for (; first != last; ++first) + { + + + + getById(it->first)->set(0); + getById(it->first)->update(connection); + } } } { // unreference (and update) for single child - nlassert(load(connection, __FILE__, __LINE__)); - - - - - if (get() != NULL) + if (load(connection, __FILE__, __LINE__)) { - get()->set(0); - get()->update(connection); + + + + if (get() != NULL) + { + get()->set(0); + get()->update(connection); + } } } @@ -1886,7 +1907,7 @@ namespace } else if (cmd == NOPE::cc_instance_count) { - return _ObjectCache.size(); + return (uint32)_ObjectCache.size(); } // default return value @@ -1904,7 +1925,7 @@ namespace TReleasedObject::iterator first(_ReleasedObject.begin()), last(_ReleasedObject.end()); for (; first != last; ++first) { - nbReleased += first->second.size(); + nbReleased += (uint32)first->second.size(); } nlinfo(" There are %u object instances in cache not referenced (waiting deletion or re-use))", nbReleased); @@ -2117,7 +2138,7 @@ ERROR : parent/child relation support only 'map' or 'vector' cont specification return false; } - std::auto_ptr<MSW::CStoreResult> result = connection.storeResult(); + CUniquePtr<MSW::CStoreResult> result(connection.storeResult()); for (uint i=0; i<result->getNumRows(); ++i) { @@ -2195,7 +2216,7 @@ ERROR : parent/child relation support only 'map' or 'vector' cont specification return false; } - std::auto_ptr<MSW::CStoreResult> result = connection.storeResult(); + CUniquePtr<MSW::CStoreResult> result(connection.storeResult()); // check that the data description is consistent with database content nlassert(result->getNumRows() <= 1); @@ -2300,9 +2321,9 @@ ERROR : parent/child relation support only 'map' or 'vector' cont specification } // no object with this id, return a null pointer - static Ptr nil; + static Ptr nilPtr; - return nil; + return nilPtr; } @@ -2321,8 +2342,8 @@ ERROR : parent/child relation support only 'map' or 'vector' cont specification if (it == _->end()) { // no object with this id, return a null pointer - static Ptr nil; - return nil; + static Ptr nilPtr; + return nilPtr; } return const_cast< Ptr & >(it->second); From 574efe0c36595f10a5bd0b31620a4e867f95c7dd Mon Sep 17 00:00:00 2001 From: Nuno Date: Sat, 18 Dec 2021 11:05:54 +0100 Subject: [PATCH 07/10] Remove fmod option --- ryzom/client/src/client_cfg.cpp | 1 - ryzom/client/src/client_cfg.h | 2 +- ryzom/client/src/sound_manager.cpp | 4 +--- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ryzom/client/src/client_cfg.cpp b/ryzom/client/src/client_cfg.cpp index 7491e9413..98ad5b9bc 100644 --- a/ryzom/client/src/client_cfg.cpp +++ b/ryzom/client/src/client_cfg.cpp @@ -1297,7 +1297,6 @@ void CClientConfig::setValues() if (varPtr) { if (nlstricmp(varPtr->asString(), "Auto") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvAuto; - else if (nlstricmp(varPtr->asString(), "FMod") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvFMod; else if (nlstricmp(varPtr->asString(), "OpenAL") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvOpenAL; else if (nlstricmp(varPtr->asString(), "DirectSound") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvDirectSound; else if (nlstricmp(varPtr->asString(), "XAudio2") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvXAudio2; diff --git a/ryzom/client/src/client_cfg.h b/ryzom/client/src/client_cfg.h index 8c0c299b4..0cf859721 100644 --- a/ryzom/client/src/client_cfg.h +++ b/ryzom/client/src/client_cfg.h @@ -58,7 +58,7 @@ using std::string; struct CClientConfig { enum TDriver3D { DrvAuto = 0, OpenGL, Direct3D, OpenGLES }; - enum TDriverSound { SoundDrvAuto = 0, SoundDrvFMod, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; + enum TDriverSound { SoundDrvAuto = 0, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; enum TStageLCTUsage { StageUseNoLCT = 0, StageUseAllLCT, StageUsePosOnlyLCT }; // the config file must be always be available diff --git a/ryzom/client/src/sound_manager.cpp b/ryzom/client/src/sound_manager.cpp index 572bf2c07..3253aedec 100644 --- a/ryzom/client/src/sound_manager.cpp +++ b/ryzom/client/src/sound_manager.cpp @@ -468,9 +468,7 @@ void CSoundManager::init(IProgressCallback *progressCallBack) _AudioMixer->setPackedSheetOption("", false); UAudioMixer::TDriver driverType= UAudioMixer::DriverAuto; - if(ClientCfg.DriverSound==CClientConfig::SoundDrvFMod) - driverType= UAudioMixer::DriverFMod; - else if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) + if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) driverType= UAudioMixer::DriverOpenAl; else if(ClientCfg.DriverSound==CClientConfig::SoundDrvDirectSound) driverType= UAudioMixer::DriverDSound; From 177e2395a5b179925c472eb05d95df644ee92c75 Mon Sep 17 00:00:00 2001 From: Nuno Date: Sat, 18 Dec 2021 11:05:59 +0100 Subject: [PATCH 08/10] Revert "Merge branch '32-remove-fmod-option-not-used-or-client-crash' into main/atys-live" This reverts commit 0e2ec103ab74c81e2f9347d20514140f128d19e7. --- ryzom/client/src/client_cfg.cpp | 1 + ryzom/client/src/client_cfg.h | 2 +- ryzom/client/src/commands.cpp | 12 ------ .../src/interface_v3/action_handler_game.cpp | 24 +++-------- .../src/interface_v3/action_handler_item.cpp | 28 ++++++------- .../src/interface_v3/action_phrase_faber.cpp | 42 ------------------- .../client/src/interface_v3/dbctrl_sheet.cpp | 3 +- .../interface_expr_user_fct_game.cpp | 6 +-- ryzom/client/src/sound_manager.cpp | 4 +- 9 files changed, 26 insertions(+), 96 deletions(-) diff --git a/ryzom/client/src/client_cfg.cpp b/ryzom/client/src/client_cfg.cpp index 98ad5b9bc..7491e9413 100644 --- a/ryzom/client/src/client_cfg.cpp +++ b/ryzom/client/src/client_cfg.cpp @@ -1297,6 +1297,7 @@ void CClientConfig::setValues() if (varPtr) { if (nlstricmp(varPtr->asString(), "Auto") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvAuto; + else if (nlstricmp(varPtr->asString(), "FMod") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvFMod; else if (nlstricmp(varPtr->asString(), "OpenAL") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvOpenAL; else if (nlstricmp(varPtr->asString(), "DirectSound") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvDirectSound; else if (nlstricmp(varPtr->asString(), "XAudio2") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvXAudio2; diff --git a/ryzom/client/src/client_cfg.h b/ryzom/client/src/client_cfg.h index 0cf859721..8c0c299b4 100644 --- a/ryzom/client/src/client_cfg.h +++ b/ryzom/client/src/client_cfg.h @@ -58,7 +58,7 @@ using std::string; struct CClientConfig { enum TDriver3D { DrvAuto = 0, OpenGL, Direct3D, OpenGLES }; - enum TDriverSound { SoundDrvAuto = 0, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; + enum TDriverSound { SoundDrvAuto = 0, SoundDrvFMod, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; enum TStageLCTUsage { StageUseNoLCT = 0, StageUseAllLCT, StageUsePosOnlyLCT }; // the config file must be always be available diff --git a/ryzom/client/src/commands.cpp b/ryzom/client/src/commands.cpp index 18f2eb779..00d2b9e4f 100644 --- a/ryzom/client/src/commands.cpp +++ b/ryzom/client/src/commands.cpp @@ -408,18 +408,6 @@ NLMISC_COMMAND(afk, "Set the player as 'away from keyboard'","[]") return true; } -NLMISC_COMMAND(selfkill, "Kill the player ","") -{ - CBitMemStream out; - if(!GenericMsgHeaderMngr.pushNameToStream("COMMAND:SELFKILL", out)) - { - nlwarning("Unknown message name COMMAND:SELFKILL"); - return false; - } - NetMngr.push(out); - return true; -} - bool randomCheckCharset(std::string const& str) { std::string::const_iterator it, itEnd = str.end(); diff --git a/ryzom/client/src/interface_v3/action_handler_game.cpp b/ryzom/client/src/interface_v3/action_handler_game.cpp index 06a97671d..f05ffb271 100644 --- a/ryzom/client/src/interface_v3/action_handler_game.cpp +++ b/ryzom/client/src/interface_v3/action_handler_game.cpp @@ -1095,20 +1095,6 @@ public: REGISTER_ACTION_HANDLER( CHandlerContextWebPage, "context_web_page"); -// *************************************************************************** -class CHandlerFullMap : public IActionHandler -{ -public: - void execute (CCtrlBase * /* pCaller */, const std::string &/* sParams */) - { - CInterfaceManager *pIM= CInterfaceManager::getInstance(); - - CLuaManager::getInstance().executeLuaScript("game:openFullMap()", true); - } -}; -REGISTER_ACTION_HANDLER( CHandlerFullMap, "fullmap"); - - // *************************************************************************** @@ -1972,7 +1958,7 @@ public: bool womanTitle = false; if (pChar != NULL) womanTitle = pChar->getGender() == GSGENDER::female; - + copyInout = STRING_MANAGER::CStringManagerClient::getTitleLocalizedName(CEntityCL::getTitleFromName(copyInout), womanTitle); // Sometimes translation contains another title @@ -2679,9 +2665,9 @@ class CAHAddShape : public IActionHandler instance.setPos(CVector((float)x, (float)y, (float)z)); instance.setRotQuat(dir.getRot()); } - + instance.setTransformMode(UTransformable::RotEuler); - + // if the shape is a particle system, additionnal parameters are user params UParticleSystemInstance psi; psi.cast (instance); @@ -3416,7 +3402,7 @@ class CHandlerGameConfigVREnable : public IActionHandler // VR_CONFIG CCtrlBaseButton *pBut = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(GAME_CONFIG_VR_ENABLE_BUTTON)); - if (pBut) + if (pBut) { // hide or show device list depending on enabled or not updateVRDevicesComboUI(pBut->getPushed()); @@ -3555,7 +3541,7 @@ class CHandlerGameConfigApply : public IActionHandler NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:AUTO_CHANNEL")->setValue32(pCS->getPushed()); CCtrlBaseButton *pBut = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(GAME_CONFIG_VR_ENABLE_BUTTON)); - if (pBut) + if (pBut) { // store the new config variables ClientCfg.VREnable = pBut->getPushed(); diff --git a/ryzom/client/src/interface_v3/action_handler_item.cpp b/ryzom/client/src/interface_v3/action_handler_item.cpp index da7e95fd8..9bbf9fbc8 100644 --- a/ryzom/client/src/interface_v3/action_handler_item.cpp +++ b/ryzom/client/src/interface_v3/action_handler_item.cpp @@ -208,7 +208,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin() { if(_CurrItemSheet && !WindowName.empty()) { - + const CItemSheet *pIS = _CurrItemSheet->asItemSheet(); if ((pIS != NULL) && ITEMFAMILY::isTextCustomizable(pIS->Family) ) { @@ -342,7 +342,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin() // ******************************************************************************************** void CInterfaceItemEdition::CItemEditionWindow::end() { - + CDBCtrlSheet *pCSItem = _CurrItemSheet; std::string windowName = WindowName; if(pCSItem && !windowName.empty()) @@ -371,7 +371,7 @@ void CInterfaceItemEdition::CItemEditionWindow::end() editBoxShort->setActive(false); editShort->setActive(false); editBoxLarge->setActive(false); - editLarge->setActive(false); + editLarge->setActive(false); display->setActive(false); editButtons->setActive(false); closeButton->setActive(false); @@ -413,7 +413,7 @@ void CInterfaceItemEdition::CItemEditionWindow::validate() textValid = editLarge->getActive(); text = editBoxLarge->getInputString(); } - + if (textValid) { CBitMemStream out; @@ -1722,7 +1722,7 @@ void CItemMenuInBagInfoWaiter::infoReceived() void CItemMenuInBagInfoWaiter::infoValidated(CDBCtrlSheet* ctrlSheet) { CInterfaceManager *pIM = CInterfaceManager::getInstance(); - + // get the dialog stack CInterfaceGroup* pMenu = dynamic_cast( CWidgetManager::getInstance()->getElementFromId("ui:interface:item_menu_in_bag") ); if(!pMenu) return; @@ -1960,15 +1960,16 @@ class CHandlerItemMenuCheck : public IActionHandler for(i=0;isetActive((uint)invId!=INVENTORIES::pet_animal+i && + pMoveToPa[i]->setActive(invId!=INVENTORIES::guild && + (uint)invId!=INVENTORIES::pet_animal+i && invMngr.isInventoryPresent((INVENTORIES::TInventory)(INVENTORIES::pet_animal+i)) ); } if (pMoveToGuild) - pMoveToGuild->setActive(invId!=INVENTORIES::guild && invMngr.isInventoryPresent(INVENTORIES::guild)); + pMoveToGuild->setActive(invId==INVENTORIES::bag && invMngr.isInventoryPresent(INVENTORIES::guild)); if (pMoveToRoom) - pMoveToRoom->setActive(invId!=INVENTORIES::player_room && invMngr.isInventoryPresent(INVENTORIES::player_room)); + pMoveToRoom->setActive(invId==INVENTORIES::bag && invMngr.isInventoryPresent(INVENTORIES::player_room)); // std case: can drop / destroy if(pDrop) pDrop->setActive(invId!=INVENTORIES::guild); @@ -2036,7 +2037,7 @@ class CHandlerItemMenuCheck : public IActionHandler if (pMoveSubMenu) pMoveSubMenu->setActive(false); } - if (bIsLockedByOwner) + if (bIsLockedByOwner) { if (pLockUnlock) pLockUnlock->setHardText("uimUnlockItem"); // Cannot drop/destroy if locked by owner @@ -2049,8 +2050,7 @@ class CHandlerItemMenuCheck : public IActionHandler } // Only show lock menu item if inventory contains the info - if (invId!=INVENTORIES::guild) - if (pLockUnlock) pLockUnlock->setActive(pCS->canOwnerLock()); + if (pLockUnlock) pLockUnlock->setActive(pCS->canOwnerLock()); // **** Gray Entries @@ -2207,7 +2207,7 @@ class CHandlerItemMenuBaseCheck : public IActionHandler CViewTextMenu *pDestroy = dynamic_cast(pMenu->getView("destroy")); CViewTextMenu *pLockUnlock = dynamic_cast(pMenu->getView("lockunlock")); - if (pCS->getLockedByOwner()) + if (pCS->getLockedByOwner()) { pLockUnlock->setHardText("uimUnlockItem"); // Cannot destroy if locked by owner @@ -2364,7 +2364,7 @@ class CHandlerItemTextDisplay : public IActionHandler std::string const& windowName = sParams; CInterfaceManager *pIM = CInterfaceManager::getInstance(); CDBCtrlSheet *pCSItem = dynamic_cast(CWidgetManager::getInstance()->getCtrlLaunchingModal()); - if (pCSItem == NULL || windowName.empty()) + if (pCSItem == NULL || windowName.empty()) return; const CItemSheet *pIS = pCSItem->asItemSheet(); @@ -2385,7 +2385,7 @@ class CHandlerItemTextEdition : public IActionHandler std::string const& windowName = sParams; CInterfaceManager *pIM = CInterfaceManager::getInstance(); CDBCtrlSheet *pCSItem = dynamic_cast(CWidgetManager::getInstance()->getCtrlLaunchingModal()); - if (pCSItem == NULL || windowName.empty()) + if (pCSItem == NULL || windowName.empty()) return; CInterfaceItemEdition::getInstance()->setCurrWindow(pCSItem, windowName, true); diff --git a/ryzom/client/src/interface_v3/action_phrase_faber.cpp b/ryzom/client/src/interface_v3/action_phrase_faber.cpp index 05e5735e1..7625be010 100644 --- a/ryzom/client/src/interface_v3/action_phrase_faber.cpp +++ b/ryzom/client/src/interface_v3/action_phrase_faber.cpp @@ -50,10 +50,6 @@ using namespace NLMISC; // *************************************************************************** const std::string FaberPlanDB= "UI:PHRASE:FABER:FABER_PLAN:SHEET"; -const std::string FaberPlanHpBuffDB= "UI:PHRASE:FABER:FABER_PLAN:HP_BUFF"; -const std::string FaberPlanSapBuffDB= "UI:PHRASE:FABER:FABER_PLAN:SAP_BUFF"; -const std::string FaberPlanStaBuffDB= "UI:PHRASE:FABER:FABER_PLAN:STA_BUFF"; -const std::string FaberPlanFocusBuffDB= "UI:PHRASE:FABER:FABER_PLAN:FOCUS_BUFF"; const std::string MPFaberDB= "UI:PHRASE:FABER:MP_BUILD"; const std::string MPSelectionDB= "UI:PHRASE:FABER:MP_SELECT"; const std::string MPQuantityDb= "UI:PHRASE:FABER:MP_QUANTITY"; @@ -174,16 +170,6 @@ void CActionPhraseFaber::launchFaberCastWindow(sint32 memoryLine, uint memoryIn if(node) node->setValue32(0); - // Reset buff values - node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanHpBuffDB, false); - if (node) node->setValue32(0); - node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanSapBuffDB, false); - if (node) node->setValue32(0); - node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanStaBuffDB, false); - if (node) node->setValue32(0); - node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanFocusBuffDB, false); - if (node) node->setValue32(0); - // Reset the result item node= NLGUI::CDBManager::getInstance()->getDbProp(ItemResultSheetDB, false); if(node) @@ -1579,14 +1565,6 @@ void CActionPhraseFaber::updateItemResult() uint phraseSlot= pPM->getMemorizedPhrase(_ExecuteFromMemoryLine, _ExecuteFromMemoryIndex); const CSPhraseCom &phrase= pPM->getPhrase(phraseSlot); uint32 recommendedPropId= pBM->getBrickPropId("cr_recommended"); - uint32 crHp = pBM->getBrickPropId("cr_hp"); - uint32 crSap = pBM->getBrickPropId("cr_sap"); - uint32 crSta = pBM->getBrickPropId("cr_sta"); - uint32 crFocus = pBM->getBrickPropId("cr_focus"); - sint32 hpBuff = 0; - sint32 sapBuff = 0; - sint32 staBuff = 0; - sint32 focusBuff = 0; for(i=0;igetBrick(phrase.Bricks[i]); @@ -1600,30 +1578,10 @@ void CActionPhraseFaber::updateItemResult() // minimze the level minLevel= min(minLevel, sint32(brick->Properties[j].Value)); } - - if (brick->Properties[j].PropId == crHp) - hpBuff = sint32(brick->Properties[j].Value); - if (brick->Properties[j].PropId == crSap) - sapBuff = sint32(brick->Properties[j].Value); - if (brick->Properties[j].PropId == crSta) - staBuff = sint32(brick->Properties[j].Value); - if (brick->Properties[j].PropId == crFocus) - focusBuff = sint32(brick->Properties[j].Value); } } } - { - NLGUI::CDBManager *cdb = NLGUI::CDBManager::getInstance(); - NLMISC::CCDBNodeLeaf *node = cdb->getDbProp(FaberPlanHpBuffDB, false); - if (node) node->setValue32(hpBuff); - node = cdb->getDbProp(FaberPlanSapBuffDB, false); - if (node) node->setValue32(sapBuff); - node = cdb->getDbProp(FaberPlanStaBuffDB, false); - if (node) node->setValue32(staBuff); - node = cdb->getDbProp(FaberPlanFocusBuffDB, false); - if (node) node->setValue32(focusBuff); - } // **** Parse all MPs setuped, to compute level and stats uint totalItemPartMPReq= 0; diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index 0b8cda2ee..599e99716 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -2534,8 +2534,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti // there is max 4 icons sint32 hArea = (hSheet / 4); sint32 xIcon = x; - // move buff icons up a row, quantity text is displayed on bottom-left corner - sint32 yIcon = y + hArea; + sint32 yIcon = y; for (uint i = 0; i < _BuffIcons.size(); ++i) { sint32 wIcon = _BuffIcons[i].IconW; diff --git a/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp b/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp index b6dde9379..4c21fee47 100644 --- a/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp +++ b/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp @@ -799,11 +799,7 @@ static DECLARE_INTERFACE_USER_FCT(getAnimalInventoryStateText) // According to server status, change the inventory text uint status= (uint)args[0].getInteger(); - if(ANIMAL_STATUS::isInBag((ANIMAL_STATUS::EAnimalStatus)status)) - { - result.setString("uiAnimalInBag"); - } - else if(ANIMAL_STATUS::isInStable((ANIMAL_STATUS::EAnimalStatus)status)) + if(ANIMAL_STATUS::isInStable((ANIMAL_STATUS::EAnimalStatus)status)) { result.setString("uiAnimalInStable"); } diff --git a/ryzom/client/src/sound_manager.cpp b/ryzom/client/src/sound_manager.cpp index 3253aedec..572bf2c07 100644 --- a/ryzom/client/src/sound_manager.cpp +++ b/ryzom/client/src/sound_manager.cpp @@ -468,7 +468,9 @@ void CSoundManager::init(IProgressCallback *progressCallBack) _AudioMixer->setPackedSheetOption("", false); UAudioMixer::TDriver driverType= UAudioMixer::DriverAuto; - if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) + if(ClientCfg.DriverSound==CClientConfig::SoundDrvFMod) + driverType= UAudioMixer::DriverFMod; + else if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) driverType= UAudioMixer::DriverOpenAl; else if(ClientCfg.DriverSound==CClientConfig::SoundDrvDirectSound) driverType= UAudioMixer::DriverDSound; From de638dfe6cd055db8ce265614b14d448d642156a Mon Sep 17 00:00:00 2001 From: Nuno Date: Sat, 18 Dec 2021 11:05:54 +0100 Subject: [PATCH 09/10] Remove fmod option --- ryzom/client/src/client_cfg.cpp | 1 - ryzom/client/src/client_cfg.h | 2 +- ryzom/client/src/sound_manager.cpp | 4 +--- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ryzom/client/src/client_cfg.cpp b/ryzom/client/src/client_cfg.cpp index 7491e9413..98ad5b9bc 100644 --- a/ryzom/client/src/client_cfg.cpp +++ b/ryzom/client/src/client_cfg.cpp @@ -1297,7 +1297,6 @@ void CClientConfig::setValues() if (varPtr) { if (nlstricmp(varPtr->asString(), "Auto") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvAuto; - else if (nlstricmp(varPtr->asString(), "FMod") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvFMod; else if (nlstricmp(varPtr->asString(), "OpenAL") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvOpenAL; else if (nlstricmp(varPtr->asString(), "DirectSound") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvDirectSound; else if (nlstricmp(varPtr->asString(), "XAudio2") == 0) ClientCfg.DriverSound = CClientConfig::SoundDrvXAudio2; diff --git a/ryzom/client/src/client_cfg.h b/ryzom/client/src/client_cfg.h index 8c0c299b4..0cf859721 100644 --- a/ryzom/client/src/client_cfg.h +++ b/ryzom/client/src/client_cfg.h @@ -58,7 +58,7 @@ using std::string; struct CClientConfig { enum TDriver3D { DrvAuto = 0, OpenGL, Direct3D, OpenGLES }; - enum TDriverSound { SoundDrvAuto = 0, SoundDrvFMod, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; + enum TDriverSound { SoundDrvAuto = 0, SoundDrvOpenAL, SoundDrvDirectSound, SoundDrvXAudio2 }; enum TStageLCTUsage { StageUseNoLCT = 0, StageUseAllLCT, StageUsePosOnlyLCT }; // the config file must be always be available diff --git a/ryzom/client/src/sound_manager.cpp b/ryzom/client/src/sound_manager.cpp index 572bf2c07..3253aedec 100644 --- a/ryzom/client/src/sound_manager.cpp +++ b/ryzom/client/src/sound_manager.cpp @@ -468,9 +468,7 @@ void CSoundManager::init(IProgressCallback *progressCallBack) _AudioMixer->setPackedSheetOption("", false); UAudioMixer::TDriver driverType= UAudioMixer::DriverAuto; - if(ClientCfg.DriverSound==CClientConfig::SoundDrvFMod) - driverType= UAudioMixer::DriverFMod; - else if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) + if(ClientCfg.DriverSound==CClientConfig::SoundDrvOpenAL) driverType= UAudioMixer::DriverOpenAl; else if(ClientCfg.DriverSound==CClientConfig::SoundDrvDirectSound) driverType= UAudioMixer::DriverDSound; From 80623a20ccc231d16744691833ae10e935b8cb98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20Gon=C3=A7alves=20=28Ulukyn=29?= Date: Sat, 18 Dec 2021 20:35:23 +0000 Subject: [PATCH 10/10] Merge branch '31-wrong-fullscreen-resolution-in-opengl-win' into 'main/gingo-test' Fix initial fullscreen window on OpenGL/Windows See merge request ryzom/ryzom-core!31 --- .../3d/driver/opengl/driver_opengl_window.cpp | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/nel/src/3d/driver/opengl/driver_opengl_window.cpp b/nel/src/3d/driver/opengl/driver_opengl_window.cpp index 35dc433a8..68ad77a6a 100644 --- a/nel/src/3d/driver/opengl/driver_opengl_window.cpp +++ b/nel/src/3d/driver/opengl/driver_opengl_window.cpp @@ -3105,13 +3105,24 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height) SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags); // init window width and height - RECT clientRect; - GetClientRect(_win, &clientRect); - _CurrentMode.Width = uint16(clientRect.right-clientRect.left); - _CurrentMode.Height = uint16(clientRect.bottom-clientRect.top); - GetWindowRect(_win, &clientRect); - _WindowX = clientRect.left; - _WindowY = clientRect.top; + if (_CurrentMode.Windowed) + { + // TODO: this gives wrong info for initial fullscreen window so limit for windowed only for now + RECT clientRect; + GetClientRect(_win, &clientRect); + _CurrentMode.Width = uint16(clientRect.right-clientRect.left); + _CurrentMode.Height = uint16(clientRect.bottom-clientRect.top); + GetWindowRect(_win, &clientRect); + _WindowX = clientRect.left; + _WindowY = clientRect.top; + } + else + { + _CurrentMode.Width = width; + _CurrentMode.Height = height; + _WindowX = 0; + _WindowY = 0; + } #elif defined(NL_OS_MAC)