CHANGED: #1471 CGroupContainer no longer depends on CInterfaceManager, CViewPointer and the Ryzom game client time values.

This commit is contained in:
dfighter1985 2012-06-23 06:24:09 +02:00
parent d7ea450e20
commit 2b4298b269
8 changed files with 144 additions and 121 deletions

View file

@ -55,6 +55,21 @@ namespace NLGUI
class CWidgetManager{ class CWidgetManager{
public: public:
struct SInterfaceTimes
{
public:
sint64 lastFrameMs;
sint64 thisFrameMs;
sint64 frameDiffMs;
SInterfaceTimes()
{
lastFrameMs = 0;
thisFrameMs = 0;
frameDiffMs = 0;
}
};
// Master groups encapsulate all windows // Master groups encapsulate all windows
struct SMasterGroup struct SMasterGroup
{ {
@ -341,6 +356,21 @@ namespace NLGUI
_OverExtendViewText = vt; _OverExtendViewText = vt;
_OverExtendViewTextBackColor = backGround; _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 &times ){ interfaceTimes = times; }
static IParser *parser; static IParser *parser;
@ -383,6 +413,13 @@ namespace NLGUI
NLMISC::CCDBNodeLeaf *_GProp; NLMISC::CCDBNodeLeaf *_GProp;
NLMISC::CCDBNodeLeaf *_BProp; NLMISC::CCDBNodeLeaf *_BProp;
NLMISC::CCDBNodeLeaf *_AProp; NLMISC::CCDBNodeLeaf *_AProp;
NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB;
uint8 _ContainerAlpha;
uint8 _GlobalContentAlpha;
uint8 _GlobalContainerAlpha;
uint8 _GlobalRolloverFactorContent;
uint8 _GlobalRolloverFactorContainer;
bool _MouseHandlingEnabled; bool _MouseHandlingEnabled;
@ -392,6 +429,8 @@ namespace NLGUI
// The next ViewText to draw for Over // The next ViewText to draw for Over
NLMISC::CRefPtr< CInterfaceElement > _OverExtendViewText; NLMISC::CRefPtr< CInterfaceElement > _OverExtendViewText;
NLMISC::CRGBA _OverExtendViewTextBackColor; NLMISC::CRGBA _OverExtendViewTextBackColor;
SInterfaceTimes interfaceTimes;
}; };
} }

View file

@ -293,7 +293,9 @@ namespace NLGUI
// Display the cursor if needed // Display the cursor if needed
if (CWidgetManager::getInstance()->getCaptureKeyboard () == this) if (CWidgetManager::getInstance()->getCaptureKeyboard () == this)
{ {
_BlinkTime += 0.0025f; const CWidgetManager::SInterfaceTimes &times = CWidgetManager::getInstance()->getInterfaceTimes();
_BlinkTime += ( static_cast< float >( times.frameDiffMs ) / 1000.0f );
if (_BlinkTime > 0.25f) if (_BlinkTime > 0.25f)
{ {
_BlinkTime = fmodf(_BlinkTime, 0.25f); _BlinkTime = fmodf(_BlinkTime, 0.25f);

View file

@ -29,6 +29,8 @@ namespace
{ {
const uint DOUBLE_CLICK_MIN = 50; const uint DOUBLE_CLICK_MIN = 50;
const uint DOUBLE_CLICK_MAX = 750; 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 namespace NLGUI
@ -960,6 +962,8 @@ namespace NLGUI
setCapturePointerRight(NULL); setCapturePointerRight(NULL);
resetColorProps(); 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() CWidgetManager::CWidgetManager()
{ {
@ -1456,6 +1491,12 @@ namespace NLGUI
_GlobalColor = NLMISC::CRGBA(255,255,255,255); _GlobalColor = NLMISC::CRGBA(255,255,255,255);
_GlobalColorForContent = _GlobalColor; _GlobalColorForContent = _GlobalColor;
_ContentAlpha = 255; _ContentAlpha = 255;
_ContainerAlpha = 255;
_GlobalContentAlpha = 255;
_GlobalContainerAlpha = 255;
_GlobalRolloverFactorContent = 255;
_GlobalRolloverFactorContainer = 255;
_AlphaRolloverSpeedDB = NULL;
_MouseHandlingEnabled = true; _MouseHandlingEnabled = true;
} }

View file

@ -14,28 +14,22 @@
// You should have received a copy of the GNU Affero General Public License // 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/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// ***************************************************************************
#include "stdpch.h"
#include "group_container.h" #include "group_container.h"
#include "interface_manager.h"
#include "nel/gui/interface_options.h" #include "nel/gui/interface_options.h"
#include "nel/misc/xml_auto_ptr.h" #include "nel/misc/xml_auto_ptr.h"
#include "nel/gui/action_handler.h" #include "nel/gui/action_handler.h"
#include "../time_client.h"
#include "nel/gui/group_editbox.h" #include "nel/gui/group_editbox.h"
#include "nel/gui/view_text_formated.h" #include "nel/gui/view_text_formated.h"
#include "nel/gui/view_text_id.h" #include "nel/gui/view_text_id.h"
#include "nel/gui/lua_ihm.h" #include "nel/gui/lua_ihm.h"
#include "nel/gui/group_list.h" #include "nel/gui/group_list.h"
#include "nel/gui/ctrl_button.h" #include "nel/gui/ctrl_button.h"
#include "nel/gui/ctrl_scroll.h" #include "nel/gui/ctrl_scroll.h"
#include "nel/gui/view_text.h" #include "nel/gui/view_text.h"
#include "nel/gui/view_bitmap.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 // call resize handler of parent container if any
if (gc && gc->getAHOnResizePtr() != NULL) if (gc && gc->getAHOnResizePtr() != NULL)
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(gc->getAHOnResize(), gc, gc->getAHOnResizeParams()); CAHManager::getInstance()->runActionHandler(gc->getAHOnResize(), gc, gc->getAHOnResizeParams());
} }
} }
@ -469,7 +462,6 @@ COptionsContainerInsertion *CCtrlMover::getInsertionOptions()
{ {
static NLMISC::CRefPtr<COptionsContainerInsertion> insertionOptions; static NLMISC::CRefPtr<COptionsContainerInsertion> insertionOptions;
if (insertionOptions) return insertionOptions; if (insertionOptions) return insertionOptions;
CInterfaceManager *im = CInterfaceManager::getInstance();
insertionOptions = (COptionsContainerInsertion *) CWidgetManager::getInstance()->getOptions("container_insertion_opt"); insertionOptions = (COptionsContainerInsertion *) CWidgetManager::getInstance()->getOptions("container_insertion_opt");
return insertionOptions; return insertionOptions;
} }
@ -483,7 +475,6 @@ void CCtrlMover::draw ()
#endif #endif
// No Op if window is minimized // No Op if window is minimized
CInterfaceManager *pIM= CInterfaceManager::getInstance();
if(CViewRenderer::getInstance()->isMinimized()) if(CViewRenderer::getInstance()->isMinimized())
return; return;
@ -498,7 +489,6 @@ void CCtrlMover::draw ()
uint32 sw, sh; uint32 sw, sh;
rVR.getScreenSize(sw, sh); rVR.getScreenSize(sw, sh);
rVR.setClipWindow (0, 0, (sint32) sw, (sint32) sh); rVR.setClipWindow (0, 0, (sint32) sw, (sint32) sh);
CInterfaceManager *im = CInterfaceManager::getInstance();
CViewRenderer &vr = *CViewRenderer::getInstance(); CViewRenderer &vr = *CViewRenderer::getInstance();
// //
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent); CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
@ -567,7 +557,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
if (!_Active) if (!_Active)
return false; return false;
CInterfaceManager *pIM= CInterfaceManager::getInstance(); const CWidgetManager::SInterfaceTimes &times = CWidgetManager::getInstance()->getInterfaceTimes();
if (event.getType() == NLGUI::CEventDescriptor::system) 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; const NLGUI::CEventDescriptorSetFocus &edsf = (const NLGUI::CEventDescriptorSetFocus &) eds;
if (edsf.hasFocus() == false && _Moving) if (edsf.hasFocus() == false && _Moving)
{ {
stopMove(pIM); stopMove();
return true; return true;
} }
} }
@ -664,7 +654,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
gc->setHighLighted(false); gc->setHighLighted(false);
if (_HasMoved || _MovingInParentList) if (_HasMoved || _MovingInParentList)
{ {
stopMove(pIM); stopMove();
return true; return true;
} }
if (isIn(eventDesc.getX(), eventDesc.getY())) if (isIn(eventDesc.getX(), eventDesc.getY()))
@ -674,7 +664,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
{ {
_WaitToOpenClose = true; _WaitToOpenClose = true;
CWidgetManager::getInstance()->registerClockMsgTarget(this); CWidgetManager::getInstance()->registerClockMsgTarget(this);
_WaitToOpenCloseDate = T1; _WaitToOpenCloseDate = times.thisFrameMs;
} }
else else
{ {
@ -716,7 +706,6 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
CWidgetManager::getInstance()->setTopWindow(_Parent); CWidgetManager::getInstance()->setTopWindow(_Parent);
if (gc->getAHOnBeginMovePtr()) if (gc->getAHOnBeginMovePtr())
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(gc->getAHOnBeginMove(), gc, gc->getAHOnBeginMoveParams()); CAHManager::getInstance()->runActionHandler(gc->getAHOnBeginMove(), gc, gc->getAHOnBeginMoveParams());
} }
return true; return true;
@ -728,7 +717,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
// Leave Moving? // Leave Moving?
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup ) if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup )
{ {
stopMove(pIM); stopMove();
return true; return true;
} }
// Move // Move
@ -753,7 +742,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
CGroupList *parentList = dynamic_cast<CGroupList *>(gc->getParent()); CGroupList *parentList = dynamic_cast<CGroupList *>(gc->getParent());
if (!parentList) return false; if (!parentList) return false;
if (parentList->getNbElement() == 1) return false; if (parentList->getNbElement() == 1) return false;
setMovingInParent(gc, x, y, pIM, eventDesc); setMovingInParent(gc, x, y, eventDesc);
updateInsertionIndex(parentList, eventDesc.getY()); updateInsertionIndex(parentList, eventDesc.getY());
return true; 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) 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; return true;
} }
} }
@ -777,7 +766,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
CGroupList *parentList = dynamic_cast<CGroupList *>(gc->getParent()); CGroupList *parentList = dynamic_cast<CGroupList *>(gc->getParent());
if (!parentList) return false; if (!parentList) return false;
if (parentList->getNbElement() == 1) return false; if (parentList->getNbElement() == 1) return false;
setMovingInParent(gc, x, y, pIM, eventDesc); setMovingInParent(gc, x, y, eventDesc);
updateInsertionIndex(parentList, eventDesc.getY()); updateInsertionIndex(parentList, eventDesc.getY());
return true; 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 (_Parent->getX() - x > DELTA_BEFORE_POPUP || x - (_Parent->getX() + _Parent->getWReal()) > DELTA_BEFORE_POPUP)
if (abs(x - _Parent->getX()) > DELTA_BEFORE_POPUP) if (abs(x - _Parent->getX()) > DELTA_BEFORE_POPUP)
{ {
setPoped(gc, x, y, pIM, eventDesc); setPoped(gc, x, y, eventDesc);
return true; return true;
} }
} }
@ -920,7 +909,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
if (_WaitToOpenClose) if (_WaitToOpenClose)
{ {
uint dbclickDelay = CWidgetManager::getInstance()->getUserDblClickDelay(); uint dbclickDelay = CWidgetManager::getInstance()->getUserDblClickDelay();
if ((T1 - _WaitToOpenCloseDate) > dbclickDelay) if ((times.thisFrameMs - _WaitToOpenCloseDate) > dbclickDelay)
{ {
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent); CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
if (!gc) return false; if (!gc) return false;
@ -951,18 +940,20 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
void CCtrlMover::handleScrolling() void CCtrlMover::handleScrolling()
{ {
const uint pixPerMS = 7; // the number of millisecond to move of one pixel in the parent scrollbar 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<CGroupContainer *>(_Parent); CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
if (!gc) return; if (!gc) return;
CGroupList *gl = gc->getPreviousParentList(); CGroupList *gl = gc->getPreviousParentList();
if (!gl) return; if (!gl) return;
const CWidgetManager::SInterfaceTimes &times = CWidgetManager::getInstance()->getInterfaceTimes();
if (_ParentScrollingUp) if (_ParentScrollingUp)
{ {
sint32 topPosY = gl->getChild(0)->getYReal(); 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 // 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) if (gc->getYReal() < topPosY)
{ {
_ScrollTime += DT64; _ScrollTime += times.frameDiffMs;
sint32 deltaY = (sint32) (_ScrollTime / pixPerMS); sint32 deltaY = (sint32) (_ScrollTime / pixPerMS);
if (deltaY != 0) if (deltaY != 0)
{ {
@ -996,7 +987,7 @@ void CCtrlMover::handleScrolling()
sint32 bottomPosY = gl->getChild(gl->getNumChildren() - 1)->getYReal() - gl->getChild(gl->getNumChildren() - 1)->getHReal(); sint32 bottomPosY = gl->getChild(gl->getNumChildren() - 1)->getYReal() - gl->getChild(gl->getNumChildren() - 1)->getHReal();
if (gc->getYReal() - gc->getHReal() > bottomPosY) if (gc->getYReal() - gc->getHReal() > bottomPosY)
{ {
_ScrollTime += DT64; _ScrollTime += times.frameDiffMs;
sint32 deltaY = - (sint32) (_ScrollTime / pixPerMS); sint32 deltaY = - (sint32) (_ScrollTime / pixPerMS);
if (deltaY != 0) if (deltaY != 0)
{ {
@ -1030,7 +1021,6 @@ bool CCtrlMover::runTitleActionHandler()
{ {
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent); CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
if (!gc) return false; if (!gc) return false;
CInterfaceManager *im = CInterfaceManager::getInstance();
CInterfaceGroup *gr = gc->isOpen() ? gc->getHeaderOpened() : gc->getHeaderClosed(); CInterfaceGroup *gr = gc->isOpen() ? gc->getHeaderOpened() : gc->getHeaderClosed();
if (gr && !gr->getLeftClickHandler().empty()) 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); gc->setHighLighted(false);
sint32 deltaX = x - _Parent->getX(); 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; if (!gc) return;
sint32 deltaY = y - gc->getY(); sint32 deltaY = y - gc->getY();
@ -1134,7 +1124,6 @@ void CCtrlMover::setMovingInParent(CGroupContainer *gc, sint32 /* x */, sint32 y
_MovingInParentList = true; _MovingInParentList = true;
// register to get time events // 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; _ParentScrollingUp = false;
_ParentScrollingDown = false; _ParentScrollingDown = false;
@ -1788,8 +1777,8 @@ void CGroupContainer::draw ()
if (_LayerSetup == -1) return; if (_LayerSetup == -1) return;
CInterfaceManager *pIM = CInterfaceManager::getInstance(); float speed = CWidgetManager::getInstance()->getAlphaRolloverSpeed();
float speed = pIM->getAlphaRolloverSpeed(); const CWidgetManager::SInterfaceTimes &times = CWidgetManager::getInstance()->getInterfaceTimes();
CRGBA oldGlobalColor = CWidgetManager::getInstance()->getGlobalColor(); CRGBA oldGlobalColor = CWidgetManager::getInstance()->getGlobalColor();
CRGBA oldGColForGrayed = CWidgetManager::getInstance()->getGlobalColor(); CRGBA oldGColForGrayed = CWidgetManager::getInstance()->getGlobalColor();
@ -1826,7 +1815,7 @@ void CGroupContainer::draw ()
} }
_BlinkState = false; _BlinkState = false;
} }
_BlinkDT += std::min((uint) DT64, blinkDuration); _BlinkDT += std::min((uint) times.frameDiffMs, blinkDuration);
} }
CGroupContainer *parentGC = NULL; CGroupContainer *parentGC = NULL;
@ -1870,7 +1859,7 @@ void CGroupContainer::draw ()
} }
else else
{ {
_CurrentContainerAlpha = _UseGlobalAlpha ? pIM->getGlobalContainerAlpha() : _ContainerAlpha; _CurrentContainerAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContainerAlpha() : _ContainerAlpha;
} }
// modulate by container alpha color // modulate by container alpha color
col.A = (uint8) (((uint16) _CurrentContainerAlpha * (uint16) col.A) >> 8); col.A = (uint8) (((uint16) _CurrentContainerAlpha * (uint16) col.A) >> 8);
@ -1883,9 +1872,9 @@ void CGroupContainer::draw ()
} }
else else
{ {
uint8 rolloverFactorContent = _UseGlobalAlpha ? (255 - pIM->getGlobalRolloverFactorContent()) : _RolloverAlphaContent; uint8 rolloverFactorContent = _UseGlobalAlpha ? (255 - CWidgetManager::getInstance()->getGlobalRolloverFactorContent()) : _RolloverAlphaContent;
_ICurrentRolloverAlphaContent = (uint8) (255 - rolloverFactorContent + rolloverFactorContent * _CurrentRolloverAlphaContent); _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); _ICurrentRolloverAlphaContainer = (uint8) (255 - rolloverFactorContainer + rolloverFactorContainer * _CurrentRolloverAlphaContainer);
} }
// Modulate alpha by rollover alpha // Modulate alpha by rollover alpha
@ -2120,8 +2109,8 @@ void CGroupContainer::draw ()
} }
else else
{ {
_CurrentContentAlpha = _UseGlobalAlpha ? pIM->getGlobalContentAlpha() : _ContentAlpha; _CurrentContentAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContentAlpha() : _ContentAlpha;
_CurrentContainerAlpha = _UseGlobalAlpha ? pIM->getGlobalContainerAlpha() : _ContainerAlpha; _CurrentContainerAlpha = _UseGlobalAlpha ? CWidgetManager::getInstance()->getGlobalContainerAlpha() : _ContainerAlpha;
} }
// set content alpha multiplied by rollover alpha // set content alpha multiplied by rollover alpha
CWidgetManager::getInstance()->setContentAlpha((uint8) (((uint16) _CurrentContentAlpha * (uint16) _ICurrentRolloverAlphaContent) >> 8)); CWidgetManager::getInstance()->setContentAlpha((uint8) (((uint16) _CurrentContentAlpha * (uint16) _ICurrentRolloverAlphaContent) >> 8));
@ -2187,7 +2176,7 @@ void CGroupContainer::draw ()
// manage rollover // manage rollover
CViewPointer *mousePointer = static_cast< CViewPointer* >( CWidgetManager::getInstance()->getPointer() ); CViewPointerBase *mousePointer = CWidgetManager::getInstance()->getPointer();
if (mousePointer) if (mousePointer)
{ {
bool dontFade = false; bool dontFade = false;
@ -2227,18 +2216,18 @@ void CGroupContainer::draw ()
} }
if (dontFade || isOver) if (dontFade || isOver)
{ {
_CurrentRolloverAlphaContent += (float) (speed * DT64); _CurrentRolloverAlphaContent += (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent); _CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent);
_CurrentRolloverAlphaContainer += (float) (speed * DT64); _CurrentRolloverAlphaContainer += (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer); _CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer);
} }
else else
{ {
_CurrentRolloverAlphaContent -= (float) (speed * DT64); _CurrentRolloverAlphaContent -= (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContent = std::max(0.f, _CurrentRolloverAlphaContent); _CurrentRolloverAlphaContent = std::max(0.f, _CurrentRolloverAlphaContent);
_CurrentRolloverAlphaContainer -= (float) (speed * DT64); _CurrentRolloverAlphaContainer -= (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContainer = std::max(0.f, _CurrentRolloverAlphaContainer); _CurrentRolloverAlphaContainer = std::max(0.f, _CurrentRolloverAlphaContainer);
} }
} }
@ -2322,7 +2311,6 @@ void CGroupContainer::open()
// call action handler if any // call action handler if any
if (_AHOnOpen != NULL) if (_AHOnOpen != NULL)
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(_AHOnOpen, this, _AHOnOpenParams); CAHManager::getInstance()->runActionHandler(_AHOnOpen, this, _AHOnOpenParams);
} }
@ -2350,7 +2338,6 @@ void CGroupContainer::close()
// call action handler if any // call action handler if any
if (_AHOnClose != NULL) if (_AHOnClose != NULL)
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(_AHOnClose, this, _AHOnCloseParams); CAHManager::getInstance()->runActionHandler(_AHOnClose, this, _AHOnCloseParams);
} }
} }
@ -3193,7 +3180,6 @@ void CGroupContainer::launch ()
// *************************************************************************** // ***************************************************************************
void CGroupContainer::setActive (bool state) void CGroupContainer::setActive (bool state)
{ {
CInterfaceManager *pIM = CInterfaceManager::getInstance();
if(state != getActive() && getLayer()==0) if(state != getActive() && getLayer()==0)
{ {
if (state) if (state)
@ -3281,7 +3267,6 @@ void CGroupContainer::popupCurrentPos()
_Parent = parent; _Parent = parent;
_ParentPos = parent; _ParentPos = parent;
CInterfaceManager *im = CInterfaceManager::getInstance();
CWidgetManager::getInstance()->makeWindow(this); CWidgetManager::getInstance()->makeWindow(this);
CWidgetManager::getInstance()->setTopWindow(this); CWidgetManager::getInstance()->setTopWindow(this);
CWidgetManager::getInstance()->clearViewUnders(); CWidgetManager::getInstance()->clearViewUnders();
@ -3338,7 +3323,6 @@ void CGroupContainer::popin(sint32 insertPos /* = -1 */, bool putBackInFatherCon
_List->setOfsY(0); _List->setOfsY(0);
_MovingInParentList = false; _MovingInParentList = false;
CInterfaceManager *im = CInterfaceManager::getInstance();
CWidgetManager::getInstance()->unMakeWindow(this); CWidgetManager::getInstance()->unMakeWindow(this);
CWidgetManager::getInstance()->clearViewUnders(); CWidgetManager::getInstance()->clearViewUnders();
CWidgetManager::getInstance()->clearCtrlsUnders(); CWidgetManager::getInstance()->clearCtrlsUnders();
@ -3437,7 +3421,6 @@ COptionsContainerMove *CGroupContainer::getMoveOptions()
{ {
static NLMISC::CRefPtr<COptionsContainerMove> moveOptions; static NLMISC::CRefPtr<COptionsContainerMove> moveOptions;
if (moveOptions) return moveOptions; if (moveOptions) return moveOptions;
CInterfaceManager *im = CInterfaceManager::getInstance();
moveOptions = (COptionsContainerMove *) CWidgetManager::getInstance()->getOptions("container_move_opt"); moveOptions = (COptionsContainerMove *) CWidgetManager::getInstance()->getOptions("container_move_opt");
return moveOptions; return moveOptions;
} }
@ -3489,8 +3472,6 @@ public:
if (pIC == NULL) return; if (pIC == NULL) return;
if (pIC->isLocked()) return; if (pIC->isLocked()) return;
CInterfaceManager *im = CInterfaceManager::getInstance();
// check if the window can be really closed // check if the window can be really closed
CGroupContainer::_ValidateCanDeactivate = true; CGroupContainer::_ValidateCanDeactivate = true;
if (!pIC->getAHOnDeactiveCheck().empty()) if (!pIC->getAHOnDeactiveCheck().empty())
@ -3526,7 +3507,7 @@ public:
// //
pIC->popup(); pIC->popup();
// //
CInterfaceManager *im = CInterfaceManager::getInstance();
CWidgetManager::getInstance()->setCapturePointerLeft(NULL); CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
CWidgetManager::getInstance()->setCapturePointerRight(NULL); CWidgetManager::getInstance()->setCapturePointerRight(NULL);
} }
@ -3551,7 +3532,7 @@ public:
pIC->setPopupH(pIC->getH()); pIC->setPopupH(pIC->getH());
// //
pIC->popin(); pIC->popin();
CInterfaceManager *im = CInterfaceManager::getInstance();
CWidgetManager::getInstance()->setCapturePointerLeft(NULL); CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
CWidgetManager::getInstance()->setCapturePointerRight(NULL); CWidgetManager::getInstance()->setCapturePointerRight(NULL);
} }
@ -3587,7 +3568,7 @@ class CICHelp : public IActionHandler
const std::string &helpPage= pIC->getHelpPage(); const std::string &helpPage= pIC->getHelpPage();
if(!helpPage.empty()) if(!helpPage.empty())
{ {
CInterfaceManager *pIM= CInterfaceManager::getInstance();
// open the web browser, and point to the page // open the web browser, and point to the page
CAHManager::getInstance()->runActionHandler("launch_help", NULL, "url=" + helpPage); CAHManager::getInstance()->runActionHandler("launch_help", NULL, "url=" + helpPage);
} }
@ -3633,15 +3614,17 @@ void CGroupContainer::setOpenable(bool openable)
// *************************************************************************** // ***************************************************************************
void CGroupContainer::rollOverAlphaUp() void CGroupContainer::rollOverAlphaUp()
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
CViewPointer *vp = static_cast< CViewPointer* >( CWidgetManager::getInstance()->getPointer() ); CViewPointerBase *vp = CWidgetManager::getInstance()->getPointer();
float speed = im->getAlphaRolloverSpeed(); float speed = CWidgetManager::getInstance()->getAlphaRolloverSpeed();
if (!isIn(vp->getX(), vp->getY())) if (!isIn(vp->getX(), vp->getY()))
{ {
_CurrentRolloverAlphaContainer += (float) (speed * DT64); const CWidgetManager::SInterfaceTimes &times = CWidgetManager::getInstance()->getInterfaceTimes();
_CurrentRolloverAlphaContainer += (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer); _CurrentRolloverAlphaContainer = std::min(1.f, _CurrentRolloverAlphaContainer);
_CurrentRolloverAlphaContent += (float) (speed * DT64); _CurrentRolloverAlphaContent += (float) (speed * times.frameDiffMs);
_CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent); _CurrentRolloverAlphaContent = std::min(1.f, _CurrentRolloverAlphaContent);
} }
} }
@ -3656,7 +3639,7 @@ void CGroupContainer::forceRolloverAlpha()
// *************************************************************************** // ***************************************************************************
bool CGroupContainer::hasKeyboardFocus() const bool CGroupContainer::hasKeyboardFocus() const
{ {
CInterfaceManager *im = CInterfaceManager::getInstance();
if (CWidgetManager::getInstance()->getCaptureKeyboard() != NULL) if (CWidgetManager::getInstance()->getCaptureKeyboard() != NULL)
{ {
const CGroupEditBox *geb = dynamic_cast<const CGroupEditBox *>(CWidgetManager::getInstance()->getCaptureKeyboard()); const CGroupEditBox *geb = dynamic_cast<const CGroupEditBox *>(CWidgetManager::getInstance()->getCaptureKeyboard());
@ -3725,7 +3708,6 @@ void CGroupContainer::setTitleColorAsString(const std::string &col)
// *************************************************************************** // ***************************************************************************
void CGroupContainer::setModalParentList (const std::string &name) void CGroupContainer::setModalParentList (const std::string &name)
{ {
CInterfaceManager *pIM = CInterfaceManager::getInstance();
_ModalParentNames = name; _ModalParentNames = name;
// can have multiple parent // can have multiple parent
@ -3933,7 +3915,6 @@ int CGroupContainer::luaSetHeaderColor(CLuaState &ls)
// *************************************************************************** // ***************************************************************************
CRGBA CGroupContainer::getDrawnHeaderColor () const CRGBA CGroupContainer::getDrawnHeaderColor () const
{ {
CInterfaceManager *pIM= CInterfaceManager::getInstance();
CRGBA c = CRGBA(255,255,255,255); CRGBA c = CRGBA(255,255,255,255);
// Display the header in white if we are the last clicked window // Display the header in white if we are the last clicked window

View file

@ -37,7 +37,6 @@ namespace NLGUI
} }
class CGroupContainer; class CGroupContainer;
class CInterfaceManager;
// *************************************************************************** // ***************************************************************************
/** /**
@ -136,10 +135,10 @@ private:
// //
static COptionsContainerInsertion *getInsertionOptions(); static COptionsContainerInsertion *getInsertionOptions();
private: private:
void setPoped(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, CInterfaceManager *pIM, const NLGUI::CEventDescriptorMouse &eventDesc); void setMovingInParent(CGroupContainer *gc, sint32 x, sint32 y, const NLGUI::CEventDescriptorMouse &eventDesc);
void updateInsertionIndex(const CGroupList *gl, sint32 posY); void updateInsertionIndex(const CGroupList *gl, sint32 posY);
void stopMove(CInterfaceManager *pIM); void stopMove();
bool runTitleActionHandler(); bool runTitleActionHandler();
void handleScrolling(); void handleScrolling();

View file

@ -410,17 +410,11 @@ CInterfaceManager::CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext
_ScreenW = _ScreenH = 0; _ScreenW = _ScreenH = 0;
_LastInGameScreenW = _LastInGameScreenH = 0; _LastInGameScreenW = _LastInGameScreenH = 0;
_DescTextTarget = NULL; _DescTextTarget = NULL;
_ContainerAlpha = 255;
_GlobalContentAlpha = 255;
_GlobalContainerAlpha = 255;
_GlobalRolloverFactorContent = 255;
_GlobalRolloverFactorContainer = 255;
_MouseOverWindow= false; _MouseOverWindow= false;
_ConfigLoaded = false; _ConfigLoaded = false;
_LogState = false; _LogState = false;
_KeysLoaded = false; _KeysLoaded = false;
CWidgetManager::getInstance()->resetColorProps(); CWidgetManager::getInstance()->resetColorProps();
_AlphaRolloverSpeedDB = NULL;
_NeutralColor = NULL; _NeutralColor = NULL;
_WarningColor = NULL; _WarningColor = NULL;
_ErrorColor = NULL; _ErrorColor = NULL;
@ -522,7 +516,7 @@ void CInterfaceManager::reset()
_NeutralColor = NULL; _NeutralColor = NULL;
_WarningColor = NULL; _WarningColor = NULL;
_ErrorColor = NULL; _ErrorColor = NULL;
_AlphaRolloverSpeedDB = NULL;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -1326,7 +1320,7 @@ void CInterfaceManager::uninitInGame1 ()
_NeutralColor = NULL; _NeutralColor = NULL;
_WarningColor = NULL; _WarningColor = NULL;
_ErrorColor = NULL; _ErrorColor = NULL;
_AlphaRolloverSpeedDB = NULL; CWidgetManager::getInstance()->resetAlphaRolloverSpeed();
CWidgetManager::getInstance()->resetColorProps(); CWidgetManager::getInstance()->resetColorProps();
#ifdef AJM_DEBUG_TRACK_INTERFACE_GROUPS #ifdef AJM_DEBUG_TRACK_INTERFACE_GROUPS
@ -1942,12 +1936,10 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera)
c.B = gc.B; c.B = gc.B;
c.A = (uint8) (( (uint16) c.A * (uint16) CWidgetManager::getInstance()->getContentAlpha() ) >> 8); c.A = (uint8) (( (uint16) c.A * (uint16) CWidgetManager::getInstance()->getContentAlpha() ) >> 8);
CWidgetManager::getInstance()->setGlobalColorForContent( c ); CWidgetManager::getInstance()->setGlobalColorForContent( c );
// Update global alphaS from database // Update global alphaS from database
_GlobalContentAlpha = (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CONTENT_ALPHA")->getValue32(); CWidgetManager::getInstance()->updateGlobalAlphas();
_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();
// Update Player characteristics (for Item carac requirement Redifying) // Update Player characteristics (for Item carac requirement Redifying)
nlctassert(CHARACTERISTICS::NUM_CHARACTERISTICS==8); 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) void CInterfaceManager::updateGroupContainerImage(CGroupContainer &gc, uint8 mode)

View file

@ -51,9 +51,6 @@
#include "../ingame_database_manager.h" #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 //the network database node
extern CCDBSynchronised IngameDbMngr; extern CCDBSynchronised IngameDbMngr;
@ -295,15 +292,6 @@ public:
void drawContextHelp (); void drawContextHelp ();
//void drawContextMenu (); //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 /// Update all the elements
void updateAllLocalisedElements (); 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 // Item Carac Test, get the value
bool isItemCaracRequirementMet(CHARACTERISTICS::TCharacteristics type, sint32 value) bool isItemCaracRequirementMet(CHARACTERISTICS::TCharacteristics type, sint32 value)
{ {
@ -649,13 +628,6 @@ private:
uint8 _LocalSyncActionCounterMask; uint8 _LocalSyncActionCounterMask;
uint8 _ContainerAlpha;
//
uint8 _GlobalContentAlpha;
uint8 _GlobalContainerAlpha;
uint8 _GlobalRolloverFactorContent;
uint8 _GlobalRolloverFactorContainer;
/// Constructor /// Constructor
CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext *textcontext ); CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext *textcontext );
@ -719,7 +691,6 @@ private:
NLMISC::CCDBNodeLeaf *_NeutralColor; NLMISC::CCDBNodeLeaf *_NeutralColor;
NLMISC::CCDBNodeLeaf *_WarningColor; NLMISC::CCDBNodeLeaf *_WarningColor;
NLMISC::CCDBNodeLeaf *_ErrorColor; NLMISC::CCDBNodeLeaf *_ErrorColor;
NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB;
void drawOverExtendViewText(); void drawOverExtendViewText();

View file

@ -381,6 +381,14 @@ void updateClientTime()
if(NetMngr.isReplayStarting()) if(NetMngr.isReplayStarting())
NetMngr.startReplay(); NetMngr.startReplay();
#endif #endif
CWidgetManager::SInterfaceTimes times;
times.lastFrameMs = T0;
times.thisFrameMs = T1;
times.frameDiffMs = DT64;
CWidgetManager::getInstance()->updateInterfaceTimes( times );
}// updateClientTime // }// updateClientTime //