From c2e7807f99524a08885ea4addc89e49adc5d3c4e Mon Sep 17 00:00:00 2001 From: Sit Melai Date: Fri, 12 Jun 2020 00:30:03 +0200 Subject: [PATCH 1/5] Adapt action handler for editing phrases to handle second action bar --- .../interface_v3/action_handler_phrase.cpp | 87 +++++++++++-------- 1 file changed, 53 insertions(+), 34 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp index 0e5ba0c48..efe882b1d 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp @@ -1,9 +1,6 @@ // Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // -// This source file has been modified by the following contributors: -// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) -// // 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 @@ -136,7 +133,7 @@ public: if (pCSDst->isShortCut()) pPM->CompositionPhraseMemoryLineDest= pPM->getSelectedMemoryLineDB(); else - pPM->CompositionPhraseMemoryLineDest= 0; + pPM->CompositionPhraseMemoryLineDest= pPM->getSelectedMemoryAltLineDB(); pPM->CompositionPhraseMemorySlotDest= pCSDst->getIndexInDB(); } @@ -536,10 +533,8 @@ public: CInterfaceManager *pIM= CInterfaceManager::getInstance(); // Launch the modal to select the faber plan - extern void fillFaberPlanSelection(const std::string &brickDB, uint maxSelection, TOOL_TYPE::TCraftingToolType toolType); - // from sphrase_manager.cpp - extern TOOL_TYPE::TCraftingToolType getRightHandCraftToolType(); - fillFaberPlanSelection(CDBGroupBuildPhrase::BrickSelectionDB, CDBGroupBuildPhrase::MaxSelection, getRightHandCraftToolType()); + extern void fillFaberPlanSelection(const std::string &brickDB, uint maxSelection); + fillFaberPlanSelection(CDBGroupBuildPhrase::BrickSelectionDB, CDBGroupBuildPhrase::MaxSelection); // setup the validation CHandlerPhraseValidateBrick::BuildPhraseGroup= NULL; @@ -750,8 +745,8 @@ class CHandlerMemorizePhraseOrMacro : public IActionHandler { public: virtual void execute (CCtrlBase *pCaller, const string &Params); - void memorizePhraseOrMacro(uint dstMemoryIndex, bool isMacro, sint32 phraseId, sint32 macroId); - void memorizePhraseSheet(uint dstMemoryIndex, uint32 sheetId); + void memorizePhraseOrMacro(sint32 memoryLine, uint dstMemoryIndex, bool isMacro, sint32 phraseId, sint32 macroId); + void memorizePhraseSheet(sint32 memoryLine, uint dstMemoryIndex, uint32 sheetId); }; REGISTER_ACTION_HANDLER( CHandlerMemorizePhraseOrMacro, "memorize_phrase_or_macro"); @@ -771,7 +766,11 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P // The dest must be a memory or a macro memory if (!pCSDst->isSPhraseIdMemory() && !pCSDst->isMacroMemory()) return; // get the memory line and memory index - sint32 dstMemoryLine= pPM->getSelectedMemoryLineDB(); + sint32 dstMemoryLine; + if (pCSDst->isShortCut()) + dstMemoryLine = pPM->getSelectedMemoryLineDB(); + else + dstMemoryLine = pPM->getSelectedMemoryAltLineDB(); uint dstMemoryIndex= pCSDst->getIndexInDB(); bool srcIsMacro; @@ -806,7 +805,7 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P pPM->sendLearnToServer(newPhraseId); // memorize the new phrase - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, newPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, newPhraseId, srcMacroId); } } else @@ -833,7 +832,7 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P if(pCSSrc->isSPhrase()) { // learn and memorize this phrase - memorizePhraseSheet(dstMemoryIndex, pCSSrc->getSheetId()); + memorizePhraseSheet(dstMemoryLine, dstMemoryIndex, pCSSrc->getSheetId()); } else { @@ -842,7 +841,7 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P pPM->fullDeletePhraseIfLast(dstMemoryLine, dstMemoryIndex); // memorize the phrase or macro - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); } } // Else the src is a memory too @@ -868,7 +867,7 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P pPM->sendLearnToServer(newPhraseId); // memorize the new phrase - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, newPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, newPhraseId, srcMacroId); } else { @@ -876,7 +875,7 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P pPM->fullDeletePhraseIfLast(dstMemoryLine, dstMemoryIndex); // memorize the macro (still a reference) - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); } } // else this is a swap! @@ -887,17 +886,23 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P { // get the memory index for src uint srcMemoryIndex= pCSSrc->getIndexInDB(); - + // get the memory line for src + sint32 srcMemoryLine; + if (pCSSrc->isShortCut()) + srcMemoryLine = pPM->getSelectedMemoryLineDB(); + else + srcMemoryLine = pPM->getSelectedMemoryAltLineDB(); + // memorize dst into src - memorizePhraseOrMacro(srcMemoryIndex, dstIsMacro, dstPhraseId, dstMacroId); + memorizePhraseOrMacro(srcMemoryLine, srcMemoryIndex, dstIsMacro, dstPhraseId, dstMacroId); // memorize src into dst - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); } // else, it's a move else { // copy - memorizePhraseOrMacro(dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); + memorizePhraseOrMacro(dstMemoryLine, dstMemoryIndex, srcIsMacro, srcPhraseId, srcMacroId); // forget src (after shorctut change!) CAHManager::getInstance()->runActionHandler("forget_phrase_or_macro", pCSSrc); @@ -909,14 +914,13 @@ void CHandlerMemorizePhraseOrMacro::execute (CCtrlBase *pCaller, const string &P // memorize a spell -void CHandlerMemorizePhraseOrMacro::memorizePhraseOrMacro(uint memoryIndex, bool isMacro, sint32 phraseId, sint32 macroId) +void CHandlerMemorizePhraseOrMacro::memorizePhraseOrMacro(sint32 memoryLine, uint memoryIndex, bool isMacro, sint32 phraseId, sint32 macroId) { CSPhraseManager *pPM= CSPhraseManager::getInstance(); - sint32 memoryLine= pPM->getSelectedMemoryLineDB(); - if(memoryLine<0) - return; - + if (memoryLine<0) + return; + if(isMacro) { pPM->memorizeMacro(memoryLine, memoryIndex, macroId); @@ -931,11 +935,10 @@ void CHandlerMemorizePhraseOrMacro::memorizePhraseOrMacro(uint memoryIndex, bool } // memorize a default spell -void CHandlerMemorizePhraseOrMacro::memorizePhraseSheet(uint memoryIndex, uint32 sheetId) +void CHandlerMemorizePhraseOrMacro::memorizePhraseSheet(sint32 memoryLine, uint memoryIndex, uint32 sheetId) { CSPhraseManager *pPM= CSPhraseManager::getInstance(); - sint32 memoryLine= pPM->getSelectedMemoryLineDB(); if(memoryLine<0) return; @@ -989,7 +992,11 @@ public: return; // Ok, the user try to forget a phrase slot. - sint32 memoryLine= pPM->getSelectedMemoryLineDB(); + sint32 memoryLine; + if (pCSDst->isShortCut()) + memoryLine = pPM->getSelectedMemoryLineDB(); + else + memoryLine = pPM->getSelectedMemoryAltLineDB(); if(memoryLine<0) return; @@ -1026,6 +1033,9 @@ public: if (!pCSDst->isSPhraseIdMemory() && !pCSDst->isMacroMemory()) return; + // is alternative action bar + bool isMain = pCSDst->isShortCut(); + // get the memory index uint memoryIndex = pCSDst->getIndexInDB(); @@ -1034,7 +1044,9 @@ public: // build params string string sParams; - sParams.append("memoryIndex="); + sParams.append("isMain="); + sParams.append(toString(isMain)); + sParams.append("|memoryIndex="); sParams.append(toString(memoryIndex)); sParams.append("|isMacro="); sParams.append(toString(isMacro)); @@ -1066,11 +1078,10 @@ public: // Ok, the user try to forget a phrase slot CSPhraseManager *pPM = CSPhraseManager::getInstance(); - sint32 memoryLine = pPM->getSelectedMemoryLineDB(); - if (memoryLine<0) - return; - + // get params + bool isMain; + fromString(getParam(Params, "isMain"), isMain); uint memoryIndex; fromString(getParam(Params, "memoryIndex"), memoryIndex); bool isMacro; @@ -1078,6 +1089,14 @@ public: sint32 phraseId; fromString(getParam(Params, "phraseId"),phraseId); + sint32 memoryLine; + if (isMain) + memoryLine = pPM->getSelectedMemoryLineDB(); + else + memoryLine = pPM->getSelectedMemoryAltLineDB(); + if (memoryLine<0) + return; + if (isMacro) { pPM->forgetMacro(memoryLine, memoryIndex); @@ -1513,7 +1532,7 @@ public: if (pCSDst->isShortCut()) memoryLine = pPM->getSelectedMemoryLineDB(); else - memoryLine = 0; + memoryLine = pPM->getSelectedMemoryAltLineDB(); if(memoryLine<0) return; From 59c794f7166a23853c2db969d94d6aa5021d2a19 Mon Sep 17 00:00:00 2001 From: Sit Melai Date: Fri, 12 Jun 2020 02:24:37 +0200 Subject: [PATCH 2/5] Wrongly removed previous change --- .../ryzom/client/src/interface_v3/action_handler_phrase.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp index efe882b1d..f7ea71c33 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp @@ -533,8 +533,10 @@ public: CInterfaceManager *pIM= CInterfaceManager::getInstance(); // Launch the modal to select the faber plan - extern void fillFaberPlanSelection(const std::string &brickDB, uint maxSelection); - fillFaberPlanSelection(CDBGroupBuildPhrase::BrickSelectionDB, CDBGroupBuildPhrase::MaxSelection); + extern voidfillFaberPlanSelection(const std::string &brickDB, uint maxSelection, TOOL_TYPE::TCraftingToolType toolType); + // from sphrase_manager.cpp + extern TOOL_TYPE::TCraftingToolType getRightHandCraftToolType(); + fillFaberPlanSelection(CDBGroupBuildPhrase::BrickSelectionDB, CDBGroupBuildPhrase::MaxSelection, getRightHandCraftToolType()); // setup the validation CHandlerPhraseValidateBrick::BuildPhraseGroup= NULL; From 6c8aeb6ae33d1cd2c29d5d5858a56fcf50de6fee Mon Sep 17 00:00:00 2001 From: Sit Melai Date: Fri, 12 Jun 2020 02:31:46 +0200 Subject: [PATCH 3/5] Missed a whitespace --- code/ryzom/client/src/interface_v3/action_handler_phrase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp index f7ea71c33..56e3d4b1b 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp @@ -533,7 +533,7 @@ public: CInterfaceManager *pIM= CInterfaceManager::getInstance(); // Launch the modal to select the faber plan - extern voidfillFaberPlanSelection(const std::string &brickDB, uint maxSelection, TOOL_TYPE::TCraftingToolType toolType); + extern void fillFaberPlanSelection(const std::string &brickDB, uint maxSelection, TOOL_TYPE::TCraftingToolType toolType); // from sphrase_manager.cpp extern TOOL_TYPE::TCraftingToolType getRightHandCraftToolType(); fillFaberPlanSelection(CDBGroupBuildPhrase::BrickSelectionDB, CDBGroupBuildPhrase::MaxSelection, getRightHandCraftToolType()); From c06469b2a03c4bb919483f5693c949e4dfa42c52 Mon Sep 17 00:00:00 2001 From: Sit Melai Date: Sat, 15 Aug 2020 16:49:14 +0200 Subject: [PATCH 4/5] Fixed second action bar not updating after being changed --- code/ryzom/client/src/interface_v3/sphrase_manager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/sphrase_manager.cpp b/code/ryzom/client/src/interface_v3/sphrase_manager.cpp index 160010f3f..f9dd511d5 100644 --- a/code/ryzom/client/src/interface_v3/sphrase_manager.cpp +++ b/code/ryzom/client/src/interface_v3/sphrase_manager.cpp @@ -411,7 +411,7 @@ void CSPhraseManager::forgetPhrase(uint32 memoryLine, uint32 memorySlot) _Memories[memoryLine].Slot[memorySlot].Id= 0; // must update DB? - if((sint32)memoryLine==_SelectedMemoryDB) + if((sint32)memoryLine==_SelectedMemoryDB || (sint32)memoryLine==_SelectedMemoryDBalt) { // update the db updateMemoryDBSlot(memorySlot); @@ -465,7 +465,7 @@ void CSPhraseManager::memorizePhrase(uint32 memoryLine, uint32 memorySlot, ui _Memories[memoryLine].Slot[memorySlot].Id= slot; // must update DB? - if((sint32)memoryLine==_SelectedMemoryDB) + if((sint32)memoryLine==_SelectedMemoryDB || (sint32)memoryLine==_SelectedMemoryDBalt) { // update the DB updateMemoryDBSlot(memorySlot); @@ -3276,7 +3276,7 @@ void CSPhraseManager::memorizeMacro(uint32 memoryLine, uint32 memorySlot, uint32 _Memories[memoryLine].Slot[memorySlot].Id= macroId; // must update DB? - if((sint32)memoryLine==_SelectedMemoryDB) + if((sint32)memoryLine==_SelectedMemoryDB || (sint32)memoryLine==_SelectedMemoryDBalt) { // update the DB updateMemoryDBSlot(memorySlot); @@ -3302,7 +3302,7 @@ void CSPhraseManager::forgetMacro(uint32 memoryLine, uint32 memorySlot) _Memories[memoryLine].Slot[memorySlot].Id= 0; // must update DB? - if((sint32)memoryLine==_SelectedMemoryDB) + if((sint32)memoryLine==_SelectedMemoryDB || (sint32)memoryLine==_SelectedMemoryDBalt) { // update the db updateMemoryDBSlot(memorySlot); From e5b3b752d5743723f56fc7a457d92288f3396746 Mon Sep 17 00:00:00 2001 From: Sit Melai Date: Sat, 15 Aug 2020 15:01:09 +0000 Subject: [PATCH 5/5] Copyright somehow got lost --- code/ryzom/client/src/interface_v3/action_handler_phrase.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp index 56e3d4b1b..b18e348e5 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp @@ -1,6 +1,9 @@ // Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // +// This source file has been modified by the following contributors: +// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) +// // 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