From aa5562b16688b38edc1dbe1e6b17e2ee4f08d912 Mon Sep 17 00:00:00 2001 From: dfighter1985 Date: Sat, 23 Jun 2012 06:24:09 +0200 Subject: [PATCH] CHANGED: #1471 CGroupContainer no longer depends on CInterfaceManager, CViewPointer and the Ryzom game client time values. --HG-- branch : gui-refactoring --- code/nel/include/nel/gui/widget_manager.h | 39 +++++++ code/nel/src/gui/group_editbox.cpp | 4 +- code/nel/src/gui/widget_manager.cpp | 41 +++++++ .../src/interface_v3/group_container.cpp | 109 ++++++++---------- .../client/src/interface_v3/group_container.h | 7 +- .../src/interface_v3/interface_manager.cpp | 28 +---- .../src/interface_v3/interface_manager.h | 29 ----- code/ryzom/client/src/time_client.cpp | 8 ++ 8 files changed, 144 insertions(+), 121 deletions(-) diff --git a/code/nel/include/nel/gui/widget_manager.h b/code/nel/include/nel/gui/widget_manager.h index 8188a68cb..9f6f685c9 100644 --- a/code/nel/include/nel/gui/widget_manager.h +++ b/code/nel/include/nel/gui/widget_manager.h @@ -55,6 +55,21 @@ namespace NLGUI class CWidgetManager{ public: + struct SInterfaceTimes + { + public: + sint64 lastFrameMs; + sint64 thisFrameMs; + sint64 frameDiffMs; + + SInterfaceTimes() + { + lastFrameMs = 0; + thisFrameMs = 0; + frameDiffMs = 0; + } + }; + // Master groups encapsulate all windows struct SMasterGroup { @@ -341,6 +356,21 @@ namespace NLGUI _OverExtendViewText = vt; _OverExtendViewTextBackColor = backGround; } + + float getAlphaRolloverSpeed(); + void resetAlphaRolloverSpeed(); + + void setContainerAlpha( uint8 alpha ); + uint8 getContainerAlpha() const { return _ContainerAlpha; } + uint8 getGlobalContentAlpha() const { return _GlobalContentAlpha; } + uint8 getGlobalContainerAlpha() const { return _GlobalContainerAlpha; } + uint8 getGlobalRolloverFactorContent() const { return _GlobalRolloverFactorContent; } + uint8 getGlobalRolloverFactorContainer() const { return _GlobalRolloverFactorContainer; } + + void updateGlobalAlphas(); + + const SInterfaceTimes& getInterfaceTimes() const{ return interfaceTimes; } + void updateInterfaceTimes( const SInterfaceTimes × ){ interfaceTimes = times; } static IParser *parser; @@ -383,6 +413,13 @@ namespace NLGUI NLMISC::CCDBNodeLeaf *_GProp; NLMISC::CCDBNodeLeaf *_BProp; NLMISC::CCDBNodeLeaf *_AProp; + NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB; + + uint8 _ContainerAlpha; + uint8 _GlobalContentAlpha; + uint8 _GlobalContainerAlpha; + uint8 _GlobalRolloverFactorContent; + uint8 _GlobalRolloverFactorContainer; bool _MouseHandlingEnabled; @@ -392,6 +429,8 @@ namespace NLGUI // The next ViewText to draw for Over NLMISC::CRefPtr< CInterfaceElement > _OverExtendViewText; NLMISC::CRGBA _OverExtendViewTextBackColor; + + SInterfaceTimes interfaceTimes; }; } diff --git a/code/nel/src/gui/group_editbox.cpp b/code/nel/src/gui/group_editbox.cpp index 062981568..e24649f3c 100644 --- a/code/nel/src/gui/group_editbox.cpp +++ b/code/nel/src/gui/group_editbox.cpp @@ -293,7 +293,9 @@ namespace NLGUI // Display the cursor if needed if (CWidgetManager::getInstance()->getCaptureKeyboard () == this) { - _BlinkTime += 0.0025f; + const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); + + _BlinkTime += ( static_cast< float >( times.frameDiffMs ) / 1000.0f ); if (_BlinkTime > 0.25f) { _BlinkTime = fmodf(_BlinkTime, 0.25f); diff --git a/code/nel/src/gui/widget_manager.cpp b/code/nel/src/gui/widget_manager.cpp index 483df5887..f60349a69 100644 --- a/code/nel/src/gui/widget_manager.cpp +++ b/code/nel/src/gui/widget_manager.cpp @@ -29,6 +29,8 @@ namespace { const uint DOUBLE_CLICK_MIN = 50; const uint DOUBLE_CLICK_MAX = 750; + const float ROLLOVER_MIN_DELTA_PER_MS = 0.28f; + const float ROLLOVER_MAX_DELTA_PER_MS = 0.12f; } namespace NLGUI @@ -960,6 +962,8 @@ namespace NLGUI setCapturePointerRight(NULL); resetColorProps(); + + _AlphaRolloverSpeedDB = NULL; } @@ -1445,6 +1449,37 @@ namespace NLGUI } } + + // Get the alpha roll over speed + float CWidgetManager::getAlphaRolloverSpeed() + { + if( _AlphaRolloverSpeedDB == NULL ) + _AlphaRolloverSpeedDB = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:ALPHA_ROLLOVER_SPEED"); + float fTmp = ROLLOVER_MIN_DELTA_PER_MS + (ROLLOVER_MAX_DELTA_PER_MS - ROLLOVER_MIN_DELTA_PER_MS) * 0.01f * (100 - _AlphaRolloverSpeedDB->getValue32()); + return fTmp*fTmp*fTmp; + } + + void CWidgetManager::resetAlphaRolloverSpeed() + { + _AlphaRolloverSpeedDB = NULL; + } + + void CWidgetManager::setContainerAlpha(uint8 alpha) + { + _ContainerAlpha = alpha; + // update alpha of global color + NLMISC::CRGBA c = getGlobalColor(); + c.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContainerAlpha) >> 8); */ + setGlobalColor( c ); + } + + void CWidgetManager::updateGlobalAlphas() + { + _GlobalContentAlpha = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTENT_ALPHA")->getValue32(); + _GlobalContainerAlpha = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTAINER_ALPHA")->getValue32(); + _GlobalRolloverFactorContent = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTENT_ROLLOVER_FACTOR")->getValue32(); + _GlobalRolloverFactorContainer = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTAINER_ROLLOVER_FACTOR")->getValue32(); + } CWidgetManager::CWidgetManager() { @@ -1456,6 +1491,12 @@ namespace NLGUI _GlobalColor = NLMISC::CRGBA(255,255,255,255); _GlobalColorForContent = _GlobalColor; _ContentAlpha = 255; + _ContainerAlpha = 255; + _GlobalContentAlpha = 255; + _GlobalContainerAlpha = 255; + _GlobalRolloverFactorContent = 255; + _GlobalRolloverFactorContainer = 255; + _AlphaRolloverSpeedDB = NULL; _MouseHandlingEnabled = true; } diff --git a/code/ryzom/client/src/interface_v3/group_container.cpp b/code/ryzom/client/src/interface_v3/group_container.cpp index f787a4f9a..d101e968b 100644 --- a/code/ryzom/client/src/interface_v3/group_container.cpp +++ b/code/ryzom/client/src/interface_v3/group_container.cpp @@ -14,28 +14,22 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . - - -// *************************************************************************** -#include "stdpch.h" - #include "group_container.h" -#include "interface_manager.h" #include "nel/gui/interface_options.h" #include "nel/misc/xml_auto_ptr.h" #include "nel/gui/action_handler.h" -#include "../time_client.h" #include "nel/gui/group_editbox.h" #include "nel/gui/view_text_formated.h" #include "nel/gui/view_text_id.h" #include "nel/gui/lua_ihm.h" - #include "nel/gui/group_list.h" #include "nel/gui/ctrl_button.h" #include "nel/gui/ctrl_scroll.h" #include "nel/gui/view_text.h" #include "nel/gui/view_bitmap.h" -#include "../time_client.h" +#include "nel/gui/view_renderer.h" +#include "nel/gui/widget_manager.h" +#include "nel/gui/view_pointer_base.h" // *************************************************************************** @@ -330,7 +324,6 @@ bool CCtrlResizer::handleEvent (const NLGUI::CEventDescriptor &event) // call resize handler of parent container if any if (gc && gc->getAHOnResizePtr() != NULL) { - CInterfaceManager *im = CInterfaceManager::getInstance(); CAHManager::getInstance()->runActionHandler(gc->getAHOnResize(), gc, gc->getAHOnResizeParams()); } } @@ -469,7 +462,6 @@ COptionsContainerInsertion *CCtrlMover::getInsertionOptions() { static NLMISC::CRefPtr insertionOptions; if (insertionOptions) return insertionOptions; - CInterfaceManager *im = CInterfaceManager::getInstance(); insertionOptions = (COptionsContainerInsertion *) CWidgetManager::getInstance()->getOptions("container_insertion_opt"); return insertionOptions; } @@ -483,7 +475,6 @@ void CCtrlMover::draw () #endif // No Op if window is minimized - CInterfaceManager *pIM= CInterfaceManager::getInstance(); if(CViewRenderer::getInstance()->isMinimized()) return; @@ -498,7 +489,6 @@ void CCtrlMover::draw () uint32 sw, sh; rVR.getScreenSize(sw, sh); rVR.setClipWindow (0, 0, (sint32) sw, (sint32) sh); - CInterfaceManager *im = CInterfaceManager::getInstance(); CViewRenderer &vr = *CViewRenderer::getInstance(); // CGroupContainer *gc = dynamic_cast(_Parent); @@ -567,7 +557,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) if (!_Active) return false; - CInterfaceManager *pIM= CInterfaceManager::getInstance(); + const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); if (event.getType() == NLGUI::CEventDescriptor::system) { @@ -577,7 +567,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) const NLGUI::CEventDescriptorSetFocus &edsf = (const NLGUI::CEventDescriptorSetFocus &) eds; if (edsf.hasFocus() == false && _Moving) { - stopMove(pIM); + stopMove(); return true; } } @@ -664,7 +654,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) gc->setHighLighted(false); if (_HasMoved || _MovingInParentList) { - stopMove(pIM); + stopMove(); return true; } if (isIn(eventDesc.getX(), eventDesc.getY())) @@ -674,7 +664,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) { _WaitToOpenClose = true; CWidgetManager::getInstance()->registerClockMsgTarget(this); - _WaitToOpenCloseDate = T1; + _WaitToOpenCloseDate = times.thisFrameMs; } else { @@ -716,7 +706,6 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) CWidgetManager::getInstance()->setTopWindow(_Parent); if (gc->getAHOnBeginMovePtr()) { - CInterfaceManager *im = CInterfaceManager::getInstance(); CAHManager::getInstance()->runActionHandler(gc->getAHOnBeginMove(), gc, gc->getAHOnBeginMoveParams()); } return true; @@ -728,7 +717,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) // Leave Moving? if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup ) { - stopMove(pIM); + stopMove(); return true; } // Move @@ -753,7 +742,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) CGroupList *parentList = dynamic_cast(gc->getParent()); if (!parentList) return false; if (parentList->getNbElement() == 1) return false; - setMovingInParent(gc, x, y, pIM, eventDesc); + setMovingInParent(gc, x, y, eventDesc); updateInsertionIndex(parentList, eventDesc.getY()); return true; } @@ -765,7 +754,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) { if (abs(x - _Parent->getX()) > DELTA_BEFORE_POPUP || abs(y - _Parent->getY()) > DELTA_BEFORE_POPUP) { - setPoped(gc, x, y, pIM, eventDesc); + setPoped(gc, x, y, eventDesc); return true; } } @@ -777,7 +766,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) CGroupList *parentList = dynamic_cast(gc->getParent()); if (!parentList) return false; if (parentList->getNbElement() == 1) return false; - setMovingInParent(gc, x, y, pIM, eventDesc); + setMovingInParent(gc, x, y, eventDesc); updateInsertionIndex(parentList, eventDesc.getY()); return true; } @@ -785,7 +774,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) //if (_Parent->getX() - x > DELTA_BEFORE_POPUP || x - (_Parent->getX() + _Parent->getWReal()) > DELTA_BEFORE_POPUP) if (abs(x - _Parent->getX()) > DELTA_BEFORE_POPUP) { - setPoped(gc, x, y, pIM, eventDesc); + setPoped(gc, x, y, eventDesc); return true; } } @@ -920,7 +909,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) if (_WaitToOpenClose) { uint dbclickDelay = CWidgetManager::getInstance()->getUserDblClickDelay(); - if ((T1 - _WaitToOpenCloseDate) > dbclickDelay) + if ((times.thisFrameMs - _WaitToOpenCloseDate) > dbclickDelay) { CGroupContainer *gc = dynamic_cast(_Parent); if (!gc) return false; @@ -951,18 +940,20 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event) void CCtrlMover::handleScrolling() { const uint pixPerMS = 7; // the number of millisecond to move of one pixel in the parent scrollbar - CInterfaceManager *im = CInterfaceManager::getInstance(); CGroupContainer *gc = dynamic_cast(_Parent); if (!gc) return; CGroupList *gl = gc->getPreviousParentList(); if (!gl) return; + + const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); + if (_ParentScrollingUp) { sint32 topPosY = gl->getChild(0)->getYReal(); // check if we are really at the end of the list, if this is not the case, we should perform scroll on parent container with a scroll bar if (gc->getYReal() < topPosY) { - _ScrollTime += DT64; + _ScrollTime += times.frameDiffMs; sint32 deltaY = (sint32) (_ScrollTime / pixPerMS); if (deltaY != 0) { @@ -996,7 +987,7 @@ void CCtrlMover::handleScrolling() sint32 bottomPosY = gl->getChild(gl->getNumChildren() - 1)->getYReal() - gl->getChild(gl->getNumChildren() - 1)->getHReal(); if (gc->getYReal() - gc->getHReal() > bottomPosY) { - _ScrollTime += DT64; + _ScrollTime += times.frameDiffMs; sint32 deltaY = - (sint32) (_ScrollTime / pixPerMS); if (deltaY != 0) { @@ -1030,7 +1021,6 @@ bool CCtrlMover::runTitleActionHandler() { CGroupContainer *gc = dynamic_cast(_Parent); if (!gc) return false; - CInterfaceManager *im = CInterfaceManager::getInstance(); CInterfaceGroup *gr = gc->isOpen() ? gc->getHeaderOpened() : gc->getHeaderClosed(); if (gr && !gr->getLeftClickHandler().empty()) { @@ -1047,7 +1037,7 @@ bool CCtrlMover::runTitleActionHandler() } // *************************************************************************** -void CCtrlMover::setPoped(CGroupContainer *gc, sint32 x, sint32 y, CInterfaceManager *pIM, const NLGUI::CEventDescriptorMouse &eventDesc) +void CCtrlMover::setPoped(CGroupContainer *gc, sint32 x, sint32 y, const NLGUI::CEventDescriptorMouse &eventDesc) { gc->setHighLighted(false); sint32 deltaX = x - _Parent->getX(); @@ -1089,7 +1079,7 @@ void CCtrlMover::setPoped(CGroupContainer *gc, sint32 x, sint32 y, CInterfaceMan } // *************************************************************************** -void CCtrlMover::setMovingInParent(CGroupContainer *gc, sint32 /* x */, sint32 y, CInterfaceManager *pIM, const NLGUI::CEventDescriptorMouse &eventDesc) +void CCtrlMover::setMovingInParent(CGroupContainer *gc, sint32 /* x */, sint32 y, const NLGUI::CEventDescriptorMouse &eventDesc) { if (!gc) return; sint32 deltaY = y - gc->getY(); @@ -1134,7 +1124,6 @@ void CCtrlMover::setMovingInParent(CGroupContainer *gc, sint32 /* x */, sint32 y _MovingInParentList = true; // register to get time events -// CInterfaceManager *im = CInterfaceManager::getInstance(); } // *************************************************************************** @@ -1162,7 +1151,7 @@ void CCtrlMover::updateInsertionIndex(const CGroupList *gl, sint32 posY) } // *************************************************************************** -void CCtrlMover::stopMove(CInterfaceManager *pIM) +void CCtrlMover::stopMove() { _ParentScrollingUp = false; _ParentScrollingDown = false; @@ -1788,8 +1777,8 @@ void CGroupContainer::draw () if (_LayerSetup == -1) return; - CInterfaceManager *pIM = CInterfaceManager::getInstance(); - float speed = pIM->getAlphaRolloverSpeed(); + float speed = CWidgetManager::getInstance()->getAlphaRolloverSpeed(); + const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); CRGBA oldGlobalColor = CWidgetManager::getInstance()->getGlobalColor(); CRGBA oldGColForGrayed = CWidgetManager::getInstance()->getGlobalColor(); @@ -1826,7 +1815,7 @@ void CGroupContainer::draw () } _BlinkState = false; } - _BlinkDT += std::min((uint) DT64, blinkDuration); + _BlinkDT += std::min((uint) times.frameDiffMs, blinkDuration); } CGroupContainer *parentGC = NULL; @@ -1870,7 +1859,7 @@ void CGroupContainer::draw () } else { - _CurrentContainerAlpha = _UseGlobalAlpha ? pIM->getGlobalContainerAlpha() : _ContainerAlpha; + _CurrentContainerAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContainerAlpha() : _ContainerAlpha; } // modulate by container alpha color col.A = (uint8) (((uint16) _CurrentContainerAlpha * (uint16) col.A) >> 8); @@ -1883,9 +1872,9 @@ void CGroupContainer::draw () } else { - uint8 rolloverFactorContent = _UseGlobalAlpha ? (255 - pIM->getGlobalRolloverFactorContent()) : _RolloverAlphaContent; + uint8 rolloverFactorContent = _UseGlobalAlpha ? (255 - CWidgetManager::getInstance()->getGlobalRolloverFactorContent()) : _RolloverAlphaContent; _ICurrentRolloverAlphaContent = (uint8) (255 - rolloverFactorContent + rolloverFactorContent * _CurrentRolloverAlphaContent); - uint8 rolloverFactorContainer = _UseGlobalAlpha ? (255 - pIM->getGlobalRolloverFactorContainer()) : _RolloverAlphaContainer; + uint8 rolloverFactorContainer = _UseGlobalAlpha ? (255 - CWidgetManager::getInstance()->getGlobalRolloverFactorContainer()) : _RolloverAlphaContainer; _ICurrentRolloverAlphaContainer = (uint8) (255 - rolloverFactorContainer + rolloverFactorContainer * _CurrentRolloverAlphaContainer); } // Modulate alpha by rollover alpha @@ -2120,8 +2109,8 @@ void CGroupContainer::draw () } else { - _CurrentContentAlpha = _UseGlobalAlpha ? pIM->getGlobalContentAlpha() : _ContentAlpha; - _CurrentContainerAlpha = _UseGlobalAlpha ? pIM->getGlobalContainerAlpha() : _ContainerAlpha; + _CurrentContentAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContentAlpha() : _ContentAlpha; + _CurrentContainerAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContainerAlpha() : _ContainerAlpha; } // set content alpha multiplied by rollover alpha CWidgetManager::getInstance()->setContentAlpha((uint8) (((uint16) _CurrentContentAlpha * (uint16) _ICurrentRolloverAlphaContent) >> 8)); @@ -2187,7 +2176,7 @@ void CGroupContainer::draw () // manage rollover - CViewPointer *mousePointer = static_cast< CViewPointer* >( CWidgetManager::getInstance()->getPointer() ); + CViewPointerBase *mousePointer = CWidgetManager::getInstance()->getPointer(); if (mousePointer) { bool dontFade = false; @@ -2227,18 +2216,18 @@ void CGroupContainer::draw () } if (dontFade || isOver) { - _CurrentRolloverAlphaContent += (float) (speed * DT64); + _CurrentRolloverAlphaContent += (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent); - _CurrentRolloverAlphaContainer += (float) (speed * DT64); + _CurrentRolloverAlphaContainer += (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer); } else { - _CurrentRolloverAlphaContent -= (float) (speed * DT64); + _CurrentRolloverAlphaContent -= (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContent = std::max(0.f, _CurrentRolloverAlphaContent); - _CurrentRolloverAlphaContainer -= (float) (speed * DT64); + _CurrentRolloverAlphaContainer -= (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContainer = std::max(0.f, _CurrentRolloverAlphaContainer); } } @@ -2322,7 +2311,6 @@ void CGroupContainer::open() // call action handler if any if (_AHOnOpen != NULL) { - CInterfaceManager *im = CInterfaceManager::getInstance(); CAHManager::getInstance()->runActionHandler(_AHOnOpen, this, _AHOnOpenParams); } @@ -2350,7 +2338,6 @@ void CGroupContainer::close() // call action handler if any if (_AHOnClose != NULL) { - CInterfaceManager *im = CInterfaceManager::getInstance(); CAHManager::getInstance()->runActionHandler(_AHOnClose, this, _AHOnCloseParams); } } @@ -3193,7 +3180,6 @@ void CGroupContainer::launch () // *************************************************************************** void CGroupContainer::setActive (bool state) { - CInterfaceManager *pIM = CInterfaceManager::getInstance(); if(state != getActive() && getLayer()==0) { if (state) @@ -3281,7 +3267,6 @@ void CGroupContainer::popupCurrentPos() _Parent = parent; _ParentPos = parent; - CInterfaceManager *im = CInterfaceManager::getInstance(); CWidgetManager::getInstance()->makeWindow(this); CWidgetManager::getInstance()->setTopWindow(this); CWidgetManager::getInstance()->clearViewUnders(); @@ -3338,7 +3323,6 @@ void CGroupContainer::popin(sint32 insertPos /* = -1 */, bool putBackInFatherCon _List->setOfsY(0); _MovingInParentList = false; - CInterfaceManager *im = CInterfaceManager::getInstance(); CWidgetManager::getInstance()->unMakeWindow(this); CWidgetManager::getInstance()->clearViewUnders(); CWidgetManager::getInstance()->clearCtrlsUnders(); @@ -3437,7 +3421,6 @@ COptionsContainerMove *CGroupContainer::getMoveOptions() { static NLMISC::CRefPtr moveOptions; if (moveOptions) return moveOptions; - CInterfaceManager *im = CInterfaceManager::getInstance(); moveOptions = (COptionsContainerMove *) CWidgetManager::getInstance()->getOptions("container_move_opt"); return moveOptions; } @@ -3489,8 +3472,6 @@ public: if (pIC == NULL) return; if (pIC->isLocked()) return; - CInterfaceManager *im = CInterfaceManager::getInstance(); - // check if the window can be really closed CGroupContainer::_ValidateCanDeactivate = true; if (!pIC->getAHOnDeactiveCheck().empty()) @@ -3526,7 +3507,7 @@ public: // pIC->popup(); // - CInterfaceManager *im = CInterfaceManager::getInstance(); + CWidgetManager::getInstance()->setCapturePointerLeft(NULL); CWidgetManager::getInstance()->setCapturePointerRight(NULL); } @@ -3551,7 +3532,7 @@ public: pIC->setPopupH(pIC->getH()); // pIC->popin(); - CInterfaceManager *im = CInterfaceManager::getInstance(); + CWidgetManager::getInstance()->setCapturePointerLeft(NULL); CWidgetManager::getInstance()->setCapturePointerRight(NULL); } @@ -3587,7 +3568,7 @@ class CICHelp : public IActionHandler const std::string &helpPage= pIC->getHelpPage(); if(!helpPage.empty()) { - CInterfaceManager *pIM= CInterfaceManager::getInstance(); + // open the web browser, and point to the page CAHManager::getInstance()->runActionHandler("launch_help", NULL, "url=" + helpPage); } @@ -3633,15 +3614,17 @@ void CGroupContainer::setOpenable(bool openable) // *************************************************************************** void CGroupContainer::rollOverAlphaUp() { - CInterfaceManager *im = CInterfaceManager::getInstance(); - CViewPointer *vp = static_cast< CViewPointer* >( CWidgetManager::getInstance()->getPointer() ); - float speed = im->getAlphaRolloverSpeed(); + + CViewPointerBase *vp = CWidgetManager::getInstance()->getPointer(); + float speed = CWidgetManager::getInstance()->getAlphaRolloverSpeed(); if (!isIn(vp->getX(), vp->getY())) { - _CurrentRolloverAlphaContainer += (float) (speed * DT64); + const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); + + _CurrentRolloverAlphaContainer += (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer); - _CurrentRolloverAlphaContent += (float) (speed * DT64); + _CurrentRolloverAlphaContent += (float) (speed * times.frameDiffMs); _CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent); } } @@ -3656,7 +3639,7 @@ void CGroupContainer::forceRolloverAlpha() // *************************************************************************** bool CGroupContainer::hasKeyboardFocus() const { - CInterfaceManager *im = CInterfaceManager::getInstance(); + if (CWidgetManager::getInstance()->getCaptureKeyboard() != NULL) { const CGroupEditBox *geb = dynamic_cast(CWidgetManager::getInstance()->getCaptureKeyboard()); @@ -3725,7 +3708,6 @@ void CGroupContainer::setTitleColorAsString(const std::string &col) // *************************************************************************** void CGroupContainer::setModalParentList (const std::string &name) { - CInterfaceManager *pIM = CInterfaceManager::getInstance(); _ModalParentNames = name; // can have multiple parent @@ -3933,7 +3915,6 @@ int CGroupContainer::luaSetHeaderColor(CLuaState &ls) // *************************************************************************** CRGBA CGroupContainer::getDrawnHeaderColor () const { - CInterfaceManager *pIM= CInterfaceManager::getInstance(); CRGBA c = CRGBA(255,255,255,255); // Display the header in white if we are the last clicked window diff --git a/code/ryzom/client/src/interface_v3/group_container.h b/code/ryzom/client/src/interface_v3/group_container.h index 07e2f95ec..fd966aadf 100644 --- a/code/ryzom/client/src/interface_v3/group_container.h +++ b/code/ryzom/client/src/interface_v3/group_container.h @@ -37,7 +37,6 @@ namespace NLGUI } class CGroupContainer; -class CInterfaceManager; // *************************************************************************** /** @@ -136,10 +135,10 @@ private: // static COptionsContainerInsertion *getInsertionOptions(); private: - void setPoped(CGroupContainer *gc, sint32 x, sint32 y, CInterfaceManager *pIM, const NLGUI::CEventDescriptorMouse &eventDesc); - void setMovingInParent(CGroupContainer *gc, sint32 x, sint32 y, CInterfaceManager *pIM, const NLGUI::CEventDescriptorMouse &eventDesc); + void setPoped(CGroupContainer *gc, sint32 x, sint32 y, const NLGUI::CEventDescriptorMouse &eventDesc); + void setMovingInParent(CGroupContainer *gc, sint32 x, sint32 y, const NLGUI::CEventDescriptorMouse &eventDesc); void updateInsertionIndex(const CGroupList *gl, sint32 posY); - void stopMove(CInterfaceManager *pIM); + void stopMove(); bool runTitleActionHandler(); void handleScrolling(); diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index a3535a109..b7b7e0958 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -410,17 +410,11 @@ CInterfaceManager::CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext _ScreenW = _ScreenH = 0; _LastInGameScreenW = _LastInGameScreenH = 0; _DescTextTarget = NULL; - _ContainerAlpha = 255; - _GlobalContentAlpha = 255; - _GlobalContainerAlpha = 255; - _GlobalRolloverFactorContent = 255; - _GlobalRolloverFactorContainer = 255; _MouseOverWindow= false; _ConfigLoaded = false; _LogState = false; _KeysLoaded = false; CWidgetManager::getInstance()->resetColorProps(); - _AlphaRolloverSpeedDB = NULL; _NeutralColor = NULL; _WarningColor = NULL; _ErrorColor = NULL; @@ -522,7 +516,7 @@ void CInterfaceManager::reset() _NeutralColor = NULL; _WarningColor = NULL; _ErrorColor = NULL; - _AlphaRolloverSpeedDB = NULL; + } // ------------------------------------------------------------------------------------------------ @@ -1326,7 +1320,7 @@ void CInterfaceManager::uninitInGame1 () _NeutralColor = NULL; _WarningColor = NULL; _ErrorColor = NULL; - _AlphaRolloverSpeedDB = NULL; + CWidgetManager::getInstance()->resetAlphaRolloverSpeed(); CWidgetManager::getInstance()->resetColorProps(); #ifdef AJM_DEBUG_TRACK_INTERFACE_GROUPS @@ -1942,12 +1936,10 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera) c.B = gc.B; c.A = (uint8) (( (uint16) c.A * (uint16) CWidgetManager::getInstance()->getContentAlpha() ) >> 8); CWidgetManager::getInstance()->setGlobalColorForContent( c ); - + // Update global alphaS from database - _GlobalContentAlpha = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTENT_ALPHA")->getValue32(); - _GlobalContainerAlpha = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTAINER_ALPHA")->getValue32(); - _GlobalRolloverFactorContent = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTENT_ROLLOVER_FACTOR")->getValue32(); - _GlobalRolloverFactorContainer = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTAINER_ROLLOVER_FACTOR")->getValue32(); + CWidgetManager::getInstance()->updateGlobalAlphas(); + // Update Player characteristics (for Item carac requirement Redifying) nlctassert(CHARACTERISTICS::NUM_CHARACTERISTICS==8); @@ -3724,16 +3716,6 @@ void CInterfaceManager::launchContextMenuInGame (const std::string &nameOfCM) } } -// *************************************************************************** -void CInterfaceManager::setContainerAlpha(uint8 alpha) -{ - _ContainerAlpha = alpha; - // update alpha of global color - CRGBA c = CWidgetManager::getInstance()->getGlobalColor(); - c.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContainerAlpha) >> 8); */ - CWidgetManager::getInstance()->setGlobalColor( c ); -} - // *************************************************************************** void CInterfaceManager::updateGroupContainerImage(CGroupContainer &gc, uint8 mode) diff --git a/code/ryzom/client/src/interface_v3/interface_manager.h b/code/ryzom/client/src/interface_v3/interface_manager.h index f0099a46b..507bcb855 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.h +++ b/code/ryzom/client/src/interface_v3/interface_manager.h @@ -51,9 +51,6 @@ #include "../ingame_database_manager.h" -static const float ROLLOVER_MIN_DELTA_PER_MS = 0.28f; -static const float ROLLOVER_MAX_DELTA_PER_MS = 0.12f; - //the network database node extern CCDBSynchronised IngameDbMngr; @@ -295,15 +292,6 @@ public: void drawContextHelp (); //void drawContextMenu (); - void setContainerAlpha(uint8 alpha); - uint8 getContainerAlpha() const { return _ContainerAlpha; } - - // these values are updated from the DB - uint8 getGlobalContentAlpha() const { return _GlobalContentAlpha; } - uint8 getGlobalContainerAlpha() const { return _GlobalContainerAlpha; } - uint8 getGlobalRolloverFactorContent() const { return _GlobalRolloverFactorContent; } - uint8 getGlobalRolloverFactorContainer() const { return _GlobalRolloverFactorContainer; } - /// Update all the elements void updateAllLocalisedElements (); @@ -453,15 +441,6 @@ public: // @} - // Get the alpha roll over speed - float getAlphaRolloverSpeed() - { - if (!_AlphaRolloverSpeedDB) - _AlphaRolloverSpeedDB = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:ALPHA_ROLLOVER_SPEED"); - float fTmp = ROLLOVER_MIN_DELTA_PER_MS + (ROLLOVER_MAX_DELTA_PER_MS - ROLLOVER_MIN_DELTA_PER_MS) * 0.01f * (100 - _AlphaRolloverSpeedDB->getValue32()); - return fTmp*fTmp*fTmp; - } - // Item Carac Test, get the value bool isItemCaracRequirementMet(CHARACTERISTICS::TCharacteristics type, sint32 value) { @@ -649,13 +628,6 @@ private: uint8 _LocalSyncActionCounterMask; - uint8 _ContainerAlpha; - // - uint8 _GlobalContentAlpha; - uint8 _GlobalContainerAlpha; - uint8 _GlobalRolloverFactorContent; - uint8 _GlobalRolloverFactorContainer; - /// Constructor CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext *textcontext ); @@ -719,7 +691,6 @@ private: NLMISC::CCDBNodeLeaf *_NeutralColor; NLMISC::CCDBNodeLeaf *_WarningColor; NLMISC::CCDBNodeLeaf *_ErrorColor; - NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB; void drawOverExtendViewText(); diff --git a/code/ryzom/client/src/time_client.cpp b/code/ryzom/client/src/time_client.cpp index f07bfbf49..710edf78a 100644 --- a/code/ryzom/client/src/time_client.cpp +++ b/code/ryzom/client/src/time_client.cpp @@ -381,6 +381,14 @@ void updateClientTime() if(NetMngr.isReplayStarting()) NetMngr.startReplay(); #endif + + CWidgetManager::SInterfaceTimes times; + times.lastFrameMs = T0; + times.thisFrameMs = T1; + times.frameDiffMs = DT64; + + CWidgetManager::getInstance()->updateInterfaceTimes( times ); + }// updateClientTime //