From be382b36bee9a7055c605b0cb371326230e8804b Mon Sep 17 00:00:00 2001 From: dfighter1985 Date: Fri, 8 Jun 2012 02:43:20 +0200 Subject: [PATCH] CHANGED: #1471 Broke up CInterfaceOptions to two files, moved the options from CInterfaceParser to CWidgetManager, CGroupFrame no longer depends on CInterfaceManager. --- .../client/src/interface_v3/character_3d.cpp | 2 +- .../client/src/interface_v3/character_3d.h | 1 + .../client/src/interface_v3/ctrl_button.cpp | 2 +- .../client/src/interface_v3/ctrl_col_pick.cpp | 2 +- .../client/src/interface_v3/ctrl_polygon.cpp | 4 +- .../client/src/interface_v3/ctrl_quad.cpp | 4 +- .../client/src/interface_v3/ctrl_scroll.cpp | 2 +- .../src/interface_v3/ctrl_text_button.cpp | 2 +- .../client/src/interface_v3/dbctrl_sheet.cpp | 18 +- .../client/src/interface_v3/dbview_bar.cpp | 2 +- .../client/src/interface_v3/dbview_bar3.cpp | 2 +- .../src/interface_v3/group_container.cpp | 27 +- .../client/src/interface_v3/group_editbox.cpp | 4 +- .../client/src/interface_v3/group_frame.cpp | 14 +- .../client/src/interface_v3/group_list.cpp | 4 +- .../client/src/interface_v3/group_map.cpp | 2 +- .../client/src/interface_v3/group_menu.cpp | 4 +- .../client/src/interface_v3/group_modal.cpp | 2 +- .../src/interface_v3/group_paragraph.cpp | 4 +- .../client/src/interface_v3/group_table.cpp | 4 +- .../client/src/interface_v3/group_tree.cpp | 10 +- .../interface_expr_user_fct_game.cpp | 2 +- .../src/interface_v3/interface_manager.cpp | 79 +--- .../src/interface_v3/interface_manager.h | 16 +- .../src/interface_v3/interface_options.cpp | 386 +---------------- .../src/interface_v3/interface_options.h | 155 ------- .../interface_v3/interface_options_ryzom.cpp | 407 ++++++++++++++++++ .../interface_v3/interface_options_ryzom.h | 178 ++++++++ .../src/interface_v3/interface_parser.cpp | 21 +- .../src/interface_v3/interface_parser.h | 4 - .../src/interface_v3/macrocmd_manager.cpp | 2 +- .../src/interface_v3/task_bar_manager.cpp | 4 +- .../client/src/interface_v3/view_bitmap.cpp | 4 +- .../client/src/interface_v3/view_pointer.cpp | 2 +- .../client/src/interface_v3/view_polygon.cpp | 4 +- .../client/src/interface_v3/view_quad.cpp | 4 +- .../client/src/interface_v3/view_radar.cpp | 4 +- .../client/src/interface_v3/view_text.cpp | 6 +- .../src/interface_v3/widget_manager.cpp | 75 +++- .../client/src/interface_v3/widget_manager.h | 34 ++ 40 files changed, 795 insertions(+), 708 deletions(-) create mode 100644 code/ryzom/client/src/interface_v3/interface_options_ryzom.cpp create mode 100644 code/ryzom/client/src/interface_v3/interface_options_ryzom.h diff --git a/code/ryzom/client/src/interface_v3/character_3d.cpp b/code/ryzom/client/src/interface_v3/character_3d.cpp index 2f9d71b40..dd3a5b22e 100644 --- a/code/ryzom/client/src/interface_v3/character_3d.cpp +++ b/code/ryzom/client/src/interface_v3/character_3d.cpp @@ -630,7 +630,7 @@ bool CCharacter3D::init (UScene *pScene) // ANIMATIONS CInterfaceManager *pIM = CInterfaceManager::getInstance(); - COptionsAnimationSet *pOAS= dynamic_cast(pIM->getOptions("character_animations")); + COptionsAnimationSet *pOAS= dynamic_cast(CWidgetManager::getInstance()->getOptions("character_animations")); if(!pOAS || !pOAS->AnimationSet) { nlwarning("Not found 'character_animations', or not of type 'animation_set'"); diff --git a/code/ryzom/client/src/interface_v3/character_3d.h b/code/ryzom/client/src/interface_v3/character_3d.h index e7b189fb6..d5cc5d8b0 100644 --- a/code/ryzom/client/src/interface_v3/character_3d.h +++ b/code/ryzom/client/src/interface_v3/character_3d.h @@ -24,6 +24,7 @@ #include "game_share/slot_types.h" #include "nel/3d/u_skeleton.h" #include "interface_options.h" +#include "interface_options_ryzom.h" #include "interface_element.h" diff --git a/code/ryzom/client/src/interface_v3/ctrl_button.cpp b/code/ryzom/client/src/interface_v3/ctrl_button.cpp index 0dde15dc7..ec8db869d 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_button.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_button.cpp @@ -108,7 +108,7 @@ void CCtrlButton::draw () CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA globalColor= pIM->getGlobalColorForContent(); + CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent(); // *** Detect Over bool lastOver = false; diff --git a/code/ryzom/client/src/interface_v3/ctrl_col_pick.cpp b/code/ryzom/client/src/interface_v3/ctrl_col_pick.cpp index eb886c15d..b39c381a7 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_col_pick.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_col_pick.cpp @@ -98,7 +98,7 @@ void CCtrlColPick::draw() CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA col = CRGBA(255,255,255,(uint8)pIM->getGlobalColor().A); + CRGBA col = CRGBA(255,255,255,(uint8)CWidgetManager::getInstance()->getGlobalColor().A); rVR.drawRotFlipBitmap (_RenderLayer, _XReal, _YReal, _WReal, _HReal, diff --git a/code/ryzom/client/src/interface_v3/ctrl_polygon.cpp b/code/ryzom/client/src/interface_v3/ctrl_polygon.cpp index bf404259b..1b28fea13 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_polygon.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_polygon.cpp @@ -250,12 +250,12 @@ void CCtrlPolygon::draw() CRGBA col; if(getModulateGlobalColor()) { - col.modulateFromColor (_Color, im->getGlobalColorForContent()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _Color; - col.A = (uint8)(((sint32)col.A*((sint32)im->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } vr.drawUnclippedTriangles(_RenderLayer, _RealTris, col); } diff --git a/code/ryzom/client/src/interface_v3/ctrl_quad.cpp b/code/ryzom/client/src/interface_v3/ctrl_quad.cpp index 75886ef82..5269eaaf4 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_quad.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_quad.cpp @@ -66,12 +66,12 @@ void CCtrlQuad::draw() CRGBA col; if(getModulateGlobalColor()) { - col.modulateFromColor (_Color, pIM->getGlobalColorForContent()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _Color; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } /*if (_InheritGCAlpha) diff --git a/code/ryzom/client/src/interface_v3/ctrl_scroll.cpp b/code/ryzom/client/src/interface_v3/ctrl_scroll.cpp index dd25f3e28..58d099712 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_scroll.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_scroll.cpp @@ -405,7 +405,7 @@ void CCtrlScroll::updateCoords() void CCtrlScroll::draw() { CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA col = CInterfaceManager::getInstance()->getGlobalColorForContent(); + CRGBA col = CWidgetManager::getInstance()->getGlobalColorForContent(); if (_Target) { diff --git a/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp b/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp index d3067a81c..3e2fd0a92 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp @@ -274,7 +274,7 @@ void CCtrlTextButton::draw () CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA globalColor= pIM->getGlobalColorForContent(); + CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent(); // *** Detect Over bool lastOver = false; diff --git a/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index 74a5bb132..7159c3987 100644 --- a/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -1852,7 +1852,7 @@ void CDBCtrlSheet::draw() // Display slot if (_DrawSlot) - rVR.draw11RotFlipBitmap (_RenderLayer, _XReal, _YReal, 0, false, _DispSlotBmpId, pIM->getGlobalColorForContent()); + rVR.draw11RotFlipBitmap (_RenderLayer, _XReal, _YReal, 0, false, _DispSlotBmpId, CWidgetManager::getInstance()->getGlobalColorForContent()); // Drag'N'Drop : display the selected slot bitmap if this slot accept the currently dragged element _CanDrop = false; @@ -1893,7 +1893,7 @@ void CDBCtrlSheet::draw() if (_CanDrop) { // decal layer because must drawn after Items/Brick in DXTC - rVR.draw11RotFlipBitmap (_RenderLayer+1, _XReal, _YReal, 0, false, _DispSelSlotId, pIM->getGlobalColorForContent()); + rVR.draw11RotFlipBitmap (_RenderLayer+1, _XReal, _YReal, 0, false, _DispSelSlotId, CWidgetManager::getInstance()->getGlobalColorForContent()); } if (_RegenTickRange.EndTick != _RegenTickRange.StartTick) @@ -2099,13 +2099,13 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti // the sheet color is modulated by GlobalAlpha, but not by global RGB CRGBA curSheetColor= _SheetColor; - curSheetColor.A= ( (pIM->getGlobalColorForContent().A+1) * _SheetColor.A )>>8; + curSheetColor.A= ( (CWidgetManager::getInstance()->getGlobalColorForContent().A+1) * _SheetColor.A )>>8; // The "disp with no sheet" case is a bit different CRGBA curNoSheetColor; if(_InterfaceColor) - curNoSheetColor= pIM->getGlobalColorForContent(); + curNoSheetColor= CWidgetManager::getInstance()->getGlobalColorForContent(); else - curNoSheetColor= CRGBA(255,255,255, pIM->getGlobalColorForContent().A); + curNoSheetColor= CRGBA(255,255,255, CWidgetManager::getInstance()->getGlobalColorForContent().A); // The gray color CRGBA grayColor= pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetGrayColor).getValColor(); @@ -2117,12 +2117,12 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti { // do not modulate color for redifyed color numberColor= redifyColor; - numberColor.A= (uint8)(((uint32)redifyColor.A * (pIM->getGlobalColorForContent().A+1))>>8); + numberColor.A= (uint8)(((uint32)redifyColor.A * (CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } else if(_Grayed) - numberColor.modulateFromColor(grayColor, pIM->getGlobalColorForContent()); + numberColor.modulateFromColor(grayColor, CWidgetManager::getInstance()->getGlobalColorForContent()); else - numberColor= pIM->getGlobalColorForContent(); + numberColor= CWidgetManager::getInstance()->getGlobalColorForContent(); // Different draws according to Sheet Type. switch (_ActualType) @@ -2534,7 +2534,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti CRGBA color = ssg->getColor(); if (ssg->isGlobalColorEnabled()) { - color.modulateFromColor(color, pIM->getGlobalColorForContent()); + color.modulateFromColor(color, CWidgetManager::getInstance()->getGlobalColorForContent()); } // decal layer because must drawn after Items/Brick in DXTC rVR.draw11RotFlipBitmap (_RenderLayer+1, middleX - (tw >> 1), middleY - (th >> 1), 0, false, ssg->getTextureIndex(), color); diff --git a/code/ryzom/client/src/interface_v3/dbview_bar.cpp b/code/ryzom/client/src/interface_v3/dbview_bar.cpp index a9235b435..53984d0d1 100644 --- a/code/ryzom/client/src/interface_v3/dbview_bar.cpp +++ b/code/ryzom/client/src/interface_v3/dbview_bar.cpp @@ -182,7 +182,7 @@ void CDBViewBar::draw () CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - color.A = (uint8)(((sint32)color.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + color.A = (uint8)(((sint32)color.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); // compute the DeltaY: mean of dif. sint32 deltaY= (_H-_HBar)/2; diff --git a/code/ryzom/client/src/interface_v3/dbview_bar3.cpp b/code/ryzom/client/src/interface_v3/dbview_bar3.cpp index 73f261dde..9b40ba06d 100644 --- a/code/ryzom/client/src/interface_v3/dbview_bar3.cpp +++ b/code/ryzom/client/src/interface_v3/dbview_bar3.cpp @@ -163,7 +163,7 @@ void CDBViewBar3::draw () CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA gColor = pIM->getGlobalColorForContent(); + CRGBA gColor = CWidgetManager::getInstance()->getGlobalColorForContent(); if (_Mini) { diff --git a/code/ryzom/client/src/interface_v3/group_container.cpp b/code/ryzom/client/src/interface_v3/group_container.cpp index 989275c2f..f091df1e6 100644 --- a/code/ryzom/client/src/interface_v3/group_container.cpp +++ b/code/ryzom/client/src/interface_v3/group_container.cpp @@ -22,6 +22,7 @@ #include "group_container.h" #include "interface_manager.h" #include "interface_options.h" +#include "interface_options_ryzom.h" #include "nel/misc/xml_auto_ptr.h" #include "action_handler.h" #include "../time_client.h" @@ -469,7 +470,7 @@ COptionsContainerInsertion *CCtrlMover::getInsertionOptions() static NLMISC::CRefPtr insertionOptions; if (insertionOptions) return insertionOptions; CInterfaceManager *im = CInterfaceManager::getInstance(); - insertionOptions = (COptionsContainerInsertion *) im->getOptions("container_insertion_opt"); + insertionOptions = (COptionsContainerInsertion *) CWidgetManager::getInstance()->getOptions("container_insertion_opt"); return insertionOptions; } @@ -1798,8 +1799,8 @@ void CGroupContainer::draw () CInterfaceManager *pIM = CInterfaceManager::getInstance(); float speed = pIM->getAlphaRolloverSpeed(); - CRGBA oldGlobalColor = pIM->getGlobalColor(); - CRGBA oldGColForGrayed = pIM->getGlobalColor(); + CRGBA oldGlobalColor = CWidgetManager::getInstance()->getGlobalColor(); + CRGBA oldGColForGrayed = CWidgetManager::getInstance()->getGlobalColor(); if (_Blinking) { const uint blinkDuration = 300; @@ -1815,7 +1816,7 @@ void CGroupContainer::draw () if (abs(newCol.R - oldGlobalColor.R) < 64) newCol.R = 192; if (abs(newCol.G - oldGlobalColor.G) < 64) newCol.G = 192; if (abs(newCol.B - oldGlobalColor.B) < 64) newCol.B = 192; - pIM->setGlobalColor(newCol); + CWidgetManager::getInstance()->setGlobalColor(newCol); _BlinkState = true; } else @@ -1850,7 +1851,7 @@ void CGroupContainer::draw () // Draw the container CViewRenderer &rVR = *CViewRenderer::getInstance(); - CRGBA col = pIM->getGlobalColor(); + CRGBA col = CWidgetManager::getInstance()->getGlobalColor(); bool bGrayed = isGrayed(); if (bGrayed) @@ -1858,7 +1859,7 @@ void CGroupContainer::draw () col.R = col.R / 2; col.G = col.G / 2; col.B = col.B / 2; - pIM->setGlobalColor(col); + CWidgetManager::getInstance()->setGlobalColor(col); oldGlobalColor.R = oldGlobalColor.R / 2; oldGlobalColor.G = oldGlobalColor.G / 2; oldGlobalColor.B = oldGlobalColor.B / 2; @@ -2078,7 +2079,7 @@ void CGroupContainer::draw () if (_Blinking) { - pIM->setGlobalColor(oldGlobalColor); + CWidgetManager::getInstance()->setGlobalColor(oldGlobalColor); } // Top window : title is highlighted @@ -2117,7 +2118,7 @@ void CGroupContainer::draw () // Render inside window - uint8 oldAlphaContent = pIM->getContentAlpha(); + uint8 oldAlphaContent = CWidgetManager::getInstance()->getContentAlpha(); uint8 oldAlphaContainer = _CurrentContainerAlpha; if (parentGC) { @@ -2131,7 +2132,7 @@ void CGroupContainer::draw () _CurrentContainerAlpha = _UseGlobalAlpha ? pIM->getGlobalContainerAlpha() : _ContainerAlpha; } // set content alpha multiplied by rollover alpha - pIM->setContentAlpha((uint8) (((uint16) _CurrentContentAlpha * (uint16) _ICurrentRolloverAlphaContent) >> 8)); + CWidgetManager::getInstance()->setContentAlpha((uint8) (((uint16) _CurrentContentAlpha * (uint16) _ICurrentRolloverAlphaContent) >> 8)); // set content alpha multiplied by rollover alpha _CurrentContainerAlpha = (uint8) (((uint16) _CurrentContainerAlpha * (uint16) _ICurrentRolloverAlphaContainer) >> 8); @@ -2189,7 +2190,7 @@ void CGroupContainer::draw () } - pIM->setContentAlpha(oldAlphaContent); + CWidgetManager::getInstance()->setContentAlpha(oldAlphaContent); _CurrentContainerAlpha = oldAlphaContainer; @@ -2252,7 +2253,7 @@ void CGroupContainer::draw () if (bGrayed) { - pIM->setGlobalColor(oldGColForGrayed); + CWidgetManager::getInstance()->setGlobalColor(oldGColForGrayed); } @@ -3084,7 +3085,7 @@ COptionsLayer *CGroupContainer::getContainerOptions(sint32 ls) sLayerName = &sTmp; } - COptionsLayer *pLayer = (COptionsLayer*)CInterfaceManager::getInstance()->getOptions(*sLayerName); + COptionsLayer *pLayer = (COptionsLayer*)CWidgetManager::getInstance()->getOptions(*sLayerName); nlassert(pLayer != NULL); return pLayer; } @@ -3445,7 +3446,7 @@ COptionsContainerMove *CGroupContainer::getMoveOptions() static NLMISC::CRefPtr moveOptions; if (moveOptions) return moveOptions; CInterfaceManager *im = CInterfaceManager::getInstance(); - moveOptions = (COptionsContainerMove *) im->getOptions("container_move_opt"); + moveOptions = (COptionsContainerMove *) CWidgetManager::getInstance()->getOptions("container_move_opt"); return moveOptions; } diff --git a/code/ryzom/client/src/interface_v3/group_editbox.cpp b/code/ryzom/client/src/interface_v3/group_editbox.cpp index 83ca1231f..c49752dce 100644 --- a/code/ryzom/client/src/interface_v3/group_editbox.cpp +++ b/code/ryzom/client/src/interface_v3/group_editbox.cpp @@ -249,7 +249,7 @@ void CGroupEditBox::draw () { sint32 blankTextId= rVR.getBlankTextureId(); CRGBA col= _BackSelectColor; - col.A= pIM->getGlobalColorForContent().A; + col.A= CWidgetManager::getInstance()->getGlobalColorForContent().A; sint32 minPos= min(_CursorPos, _SelectCursorPos) + (sint32)_Prompt.length(); sint32 maxPos= max(_CursorPos, _SelectCursorPos) + (sint32)_Prompt.length(); @@ -1124,7 +1124,7 @@ void CGroupEditBox::setup() _ViewTextDeltaX= 0; // read options - CInterfaceOptions *pIO = CInterfaceManager::getInstance()->getOptions("text_selection"); + CInterfaceOptions *pIO = CWidgetManager::getInstance()->getOptions("text_selection"); if (pIO != NULL) { _BackSelectColor= pIO->getValColor("back_select_color"); diff --git a/code/ryzom/client/src/interface_v3/group_frame.cpp b/code/ryzom/client/src/interface_v3/group_frame.cpp index 6b4782dab..f6978a959 100644 --- a/code/ryzom/client/src/interface_v3/group_frame.cpp +++ b/code/ryzom/client/src/interface_v3/group_frame.cpp @@ -14,13 +14,11 @@ // 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_frame.h" -#include "interface_manager.h" +#include "widget_manager.h" +#include "interface_options.h" #include "interface_element.h" +#include "nel/gui/view_renderer.h" #include "nel/misc/xml_auto_ptr.h" using namespace std; @@ -71,14 +69,13 @@ bool CGroupFrame::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup) // Get the borders texture _DispTypeDefined= false; - CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); ptr = (char*) xmlGetProp( cur, (xmlChar*)"options" ); CInterfaceOptions *pIO = NULL; if (ptr) - pIO = pIM->getOptions(ptr); + pIO = CWidgetManager::getInstance()->getOptions(ptr); // The first type in display type struct is the default display type if (_DispTypes.size() == 0) @@ -159,13 +156,12 @@ void CGroupFrame::draw () { if (_DisplayFrame) { - CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); // get global color CRGBA col; if(getModulateGlobalColor()) - col.modulateFromColor (_Color, pIM->getGlobalColor()); + col.modulateFromColor( _Color, CWidgetManager::getInstance()->getGlobalColor() ); else col= _Color; diff --git a/code/ryzom/client/src/interface_v3/group_list.cpp b/code/ryzom/client/src/interface_v3/group_list.cpp index 756256dbd..b20f9d46e 100644 --- a/code/ryzom/client/src/interface_v3/group_list.cpp +++ b/code/ryzom/client/src/interface_v3/group_list.cpp @@ -643,12 +643,12 @@ void CGroupList::draw () CRGBA col = _OverColor; if(getModulateGlobalColor()) { - col.modulateFromColor (_OverColor, pIM->getGlobalColorForContent()); + col.modulateFromColor (_OverColor, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _OverColor; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } rVR.drawRotFlipBitmap (_RenderLayer, pVB->getXReal(), pVB->getYReal(), pVB->getWReal(), pVB->getHReal(), 0, false, rVR.getBlankTextureId(), diff --git a/code/ryzom/client/src/interface_v3/group_map.cpp b/code/ryzom/client/src/interface_v3/group_map.cpp index 13588c436..fa197ef51 100644 --- a/code/ryzom/client/src/interface_v3/group_map.cpp +++ b/code/ryzom/client/src/interface_v3/group_map.cpp @@ -1472,7 +1472,7 @@ void CGroupMap::draw() makeNewClip (oldSciX, oldSciY, oldSciW, oldSciH); CInterfaceManager *im = CInterfaceManager::getInstance(); CViewRenderer &vr = *CViewRenderer::getInstance(); - uint8 alpha = im->getGlobalColorForContent().A; + uint8 alpha = CWidgetManager::getInstance()->getGlobalColorForContent().A; updateScale(); // No Op if screen minimized diff --git a/code/ryzom/client/src/interface_v3/group_menu.cpp b/code/ryzom/client/src/interface_v3/group_menu.cpp index 2ffd1d95d..3ca9a7db3 100644 --- a/code/ryzom/client/src/interface_v3/group_menu.cpp +++ b/code/ryzom/client/src/interface_v3/group_menu.cpp @@ -75,7 +75,7 @@ void CViewTextMenu::setChecked(bool c) { if (_CheckBox) { - CInterfaceOptions *pIO = CInterfaceManager::getInstance()->getOptions("menu_checkbox"); + CInterfaceOptions *pIO = CWidgetManager::getInstance()->getOptions("menu_checkbox"); if (!pIO) return; _CheckBox->setTexture(pIO->getValStr(c ? "checked_bitmap" : "unchecked_bitmap")); } @@ -380,7 +380,7 @@ CViewBitmap *CGroupSubMenu::createCheckBox(bool checked) pVB->setParentPos (_GroupList); pVB->setParentPosRef (Hotspot_BR); pVB->setPosRef (Hotspot_BL); - CInterfaceOptions *pIO = CInterfaceManager::getInstance()->getOptions("menu_checkbox"); + CInterfaceOptions *pIO = CWidgetManager::getInstance()->getOptions("menu_checkbox"); if (pIO) { pVB->setTexture(pIO->getValStr(checked ? "checked_bitmap" : "unchecked_bitmap")); diff --git a/code/ryzom/client/src/interface_v3/group_modal.cpp b/code/ryzom/client/src/interface_v3/group_modal.cpp index 611544b01..555f6b4d5 100644 --- a/code/ryzom/client/src/interface_v3/group_modal.cpp +++ b/code/ryzom/client/src/interface_v3/group_modal.cpp @@ -17,9 +17,9 @@ #include "group_modal.h" -#include "interface_manager.h" #include "interface_element.h" #include "nel/misc/xml_auto_ptr.h" +#include "nel/gui/view_renderer.h" using namespace std; diff --git a/code/ryzom/client/src/interface_v3/group_paragraph.cpp b/code/ryzom/client/src/interface_v3/group_paragraph.cpp index 47791ed89..f75afccf0 100644 --- a/code/ryzom/client/src/interface_v3/group_paragraph.cpp +++ b/code/ryzom/client/src/interface_v3/group_paragraph.cpp @@ -823,12 +823,12 @@ void CGroupParagraph::draw () CRGBA col = _OverColor; if(getModulateGlobalColor()) { - col.modulateFromColor (_OverColor, pIM->getGlobalColorForContent()); + col.modulateFromColor (_OverColor, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _OverColor; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } rVR.drawRotFlipBitmap (_RenderLayer, pVB->getXReal(), pVB->getYReal(), pVB->getWReal(), pVB->getHReal(), 0, false, rVR.getBlankTextureId(), diff --git a/code/ryzom/client/src/interface_v3/group_table.cpp b/code/ryzom/client/src/interface_v3/group_table.cpp index 1ead5f87e..347f0373f 100644 --- a/code/ryzom/client/src/interface_v3/group_table.cpp +++ b/code/ryzom/client/src/interface_v3/group_table.cpp @@ -247,7 +247,7 @@ void CGroupCell::draw () else { CRGBA finalColor; - finalColor.modulateFromColor (BgColor, pIM->getGlobalColor()); + finalColor.modulateFromColor (BgColor, CWidgetManager::getInstance()->getGlobalColor()); // Get the parent table if (getParent ()) @@ -946,7 +946,7 @@ void CGroupTable::draw () { CInterfaceManager *pIM = CInterfaceManager::getInstance(); CRGBA finalColor; - finalColor.modulateFromColor (BgColor, pIM->getGlobalColor()); + finalColor.modulateFromColor (BgColor, CWidgetManager::getInstance()->getGlobalColor()); finalColor.A = CurrentAlpha; // Draw the top and bottom lines diff --git a/code/ryzom/client/src/interface_v3/group_tree.cpp b/code/ryzom/client/src/interface_v3/group_tree.cpp index 23c51c12d..46ce4434f 100644 --- a/code/ryzom/client/src/interface_v3/group_tree.cpp +++ b/code/ryzom/client/src/interface_v3/group_tree.cpp @@ -660,12 +660,12 @@ void CGroupTree::draw() CRGBA col = _OverColor; if(getModulateGlobalColor()) { - col.modulateFromColor (_OverColor, pIM->getGlobalColorForContent()); + col.modulateFromColor (_OverColor, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _OverColor; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } drawSelection( getHrcIconXEnd(_Lines[_OverLine].Depth + _Lines[_OverLine].getNumAdditionnalBitmap()), ((sint)_Lines.size()-_OverLine-1)*_BmpH, @@ -680,7 +680,7 @@ void CGroupTree::draw() { // simulate alpha blend of the selection bitmap CRGBA sel= _SelectedColor; - sel.A= (uint8)((sel.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + sel.A= (uint8)((sel.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); col.blendFromuiRGBOnly(col, sel, sel.A); } @@ -696,12 +696,12 @@ void CGroupTree::draw() CRGBA col = _SelectedColor; if(getModulateGlobalColor()) { - col.modulateFromColor (_SelectedColor, pIM->getGlobalColorForContent()); + col.modulateFromColor (_SelectedColor, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _SelectedColor; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } drawSelection( getHrcIconXEnd(_Lines[_SelectedLine].Depth + _Lines[_SelectedLine].getNumAdditionnalBitmap()), ((sint)_Lines.size()-_SelectedLine-1)*_BmpH, diff --git a/code/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp b/code/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp index 091c941cd..e2b782a1d 100644 --- a/code/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp +++ b/code/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp @@ -390,7 +390,7 @@ static DECLARE_INTERFACE_USER_FCT(getClientActionTypeColor) // To Color // Get the action_bar_color options - CInterfaceOptions *options= CInterfaceManager::getInstance()->getOptions("action_bar_color"); + CInterfaceOptions *options= CWidgetManager::getInstance()->getOptions("action_bar_color"); if(options) { const CInterfaceOptionValue &optVal= options->getValue(CLIENT_ACTION_TYPE::toString(actType)); diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index 961660c13..94b1bc3dd 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -271,9 +271,6 @@ CInterfaceManager::CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext _ScreenW = _ScreenH = 0; _LastInGameScreenW = _LastInGameScreenH = 0; _DescTextTarget = NULL; - _GlobalColor = CRGBA(255,255,255,255); - _GlobalColorForContent = _GlobalColor; - _ContentAlpha = 255; _ContainerAlpha = 255; _GlobalContentAlpha = 255; _GlobalContainerAlpha = 255; @@ -284,10 +281,7 @@ CInterfaceManager::CInterfaceManager( NL3D::UDriver *driver, NL3D::UTextContext _ConfigLoaded = false; _LogState = false; _KeysLoaded = false; - _RProp = NULL; - _GProp = NULL; - _BProp = NULL; - _AProp = NULL; + CWidgetManager::getInstance()->resetColorProps(); _AlphaRolloverSpeedDB = NULL; _NeutralColor = NULL; _WarningColor = NULL; @@ -388,10 +382,6 @@ void CInterfaceManager::reset() _NeutralColor = NULL; _WarningColor = NULL; _ErrorColor = NULL; - _RProp = NULL; - _GProp = NULL; - _BProp = NULL; - _AProp = NULL; _AlphaRolloverSpeedDB = NULL; } @@ -1197,10 +1187,7 @@ void CInterfaceManager::uninitInGame1 () _WarningColor = NULL; _ErrorColor = NULL; _AlphaRolloverSpeedDB = NULL; - _RProp = NULL; - _GProp = NULL; - _BProp = NULL; - _AProp = NULL; + CWidgetManager::getInstance()->resetColorProps(); #ifdef AJM_DEBUG_TRACK_INTERFACE_GROUPS CInterfaceManager::getInstance()->DebugTrackGroupsDump(); @@ -1360,21 +1347,11 @@ void CInterfaceManager::updateFrameViews(NL3D::UCamera camera) } -// ------------------------------------------------------------------------------------------------ -CInterfaceOptions *CInterfaceManager::getOptions(const string &name) -{ - map >::iterator it = _OptionsMap.find(name); - if (it == _OptionsMap.end()) - return NULL; - else - return it->second; -} - // ------------------------------------------------------------------------------------------------ void CInterfaceManager::setupOptions() { // After parsing options and templates node -> init system options. - CInterfaceOptions *opt= getOptions("system"); + CInterfaceOptions *opt= CWidgetManager::getInstance()->getOptions("system"); if(opt) { // List here all Special options @@ -1832,14 +1809,18 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera) } // Update global color from database - _GlobalColor = CRGBA ( (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:R")->getValue32(), + CWidgetManager::getInstance()->setGlobalColor( CRGBA ( (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:R")->getValue32(), (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:G")->getValue32(), (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:B")->getValue32(), - (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:A")->getValue32() ); - _GlobalColorForContent.R = _GlobalColor.R; - _GlobalColorForContent.G = _GlobalColor.G; - _GlobalColorForContent.B = _GlobalColor.B; - _GlobalColorForContent.A = (uint8) (( (uint16) _GlobalColor.A * (uint16) _ContentAlpha) >> 8); + (uint8)NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:A")->getValue32() ) ); + + CRGBA c = CWidgetManager::getInstance()->getGlobalColorForContent(); + CRGBA gc = CWidgetManager::getInstance()->getGlobalColor(); + c.R = gc.R; + c.G = gc.G; + 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(); @@ -2421,28 +2402,6 @@ uint CInterfaceManager::adjustTooltipPosition(CCtrlBase *newCtrl, return clampCount; } -// ------------------------------------------------------------------------------------------------ -void CInterfaceManager::setGlobalColor (NLMISC::CRGBA col) -{ - if (!_RProp) - { - _RProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:R"); - _GProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:G"); - _BProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:B"); - _AProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:A"); - } - _RProp ->setValue32 (col.R); - _GProp ->setValue32 (col.G); - _BProp ->setValue32 (col.B); - _AProp ->setValue32 (col.A); - - _GlobalColor = col; - - // set the global color for content (the same with modulated alpha) - _GlobalColorForContent = _GlobalColor; - _GlobalColorForContent.A = (uint8) (( (uint16) _GlobalColorForContent.A * (uint16) _ContentAlpha) >> 8); -} - // ------------------------------------------------------------------------------------------------ bool CInterfaceManager::isControlInWindow (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd) { @@ -3670,20 +3629,14 @@ void CInterfaceManager::launchContextMenuInGame (const std::string &nameOfCM) } } -// *************************************************************************** -void CInterfaceManager::setContentAlpha(uint8 alpha) -{ - _ContentAlpha = alpha; - // update alpha of global color - _GlobalColorForContent.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContentAlpha) >> 8);*/ -} - // *************************************************************************** void CInterfaceManager::setContainerAlpha(uint8 alpha) { _ContainerAlpha = alpha; // update alpha of global color - _GlobalColor.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContainerAlpha) >> 8); */ + CRGBA c = CWidgetManager::getInstance()->getGlobalColor(); + c.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContainerAlpha) >> 8); */ + CWidgetManager::getInstance()->setGlobalColor( c ); } diff --git a/code/ryzom/client/src/interface_v3/interface_manager.h b/code/ryzom/client/src/interface_v3/interface_manager.h index 20644ffd7..92e32b6d1 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.h +++ b/code/ryzom/client/src/interface_v3/interface_manager.h @@ -291,13 +291,9 @@ public: void drawContextHelp (); //void drawContextMenu (); - void setGlobalColor (NLMISC::CRGBA col); - NLMISC::CRGBA getGlobalColor() { return _GlobalColor; } - void setContentAlpha(uint8 alpha); - uint8 getContentAlpha() const { return _ContentAlpha; } void setContainerAlpha(uint8 alpha); uint8 getContainerAlpha() const { return _ContainerAlpha; } - NLMISC::CRGBA getGlobalColorForContent() { return _GlobalColorForContent; } + // these values are updated from the DB uint8 getGlobalContentAlpha() const { return _GlobalContentAlpha; } uint8 getGlobalContainerAlpha() const { return _GlobalContainerAlpha; } @@ -318,9 +314,6 @@ public: /// \name Global Interface Options // @{ - /// Get options by name - CInterfaceOptions *getOptions (const std::string &optName); - // List of system options enum TSystemOption { @@ -696,9 +689,7 @@ private: uint8 _LocalSyncActionCounterMask; - uint8 _ContentAlpha; uint8 _ContainerAlpha; - NLMISC::CRGBA _GlobalColorForContent; // uint8 _GlobalContentAlpha; uint8 _GlobalContainerAlpha; @@ -737,7 +728,6 @@ private: std::vector _IDStringWaiters; uint32 _ScreenW, _ScreenH; // Change res detection - NLMISC::CRGBA _GlobalColor; sint32 _LastInGameScreenW, _LastInGameScreenH; // Resolution used for last InGame interface // List of active Anims @@ -775,10 +765,6 @@ private: NLMISC::CCDBNodeLeaf *_NeutralColor; NLMISC::CCDBNodeLeaf *_WarningColor; NLMISC::CCDBNodeLeaf *_ErrorColor; - NLMISC::CCDBNodeLeaf *_RProp; - NLMISC::CCDBNodeLeaf *_GProp; - NLMISC::CCDBNodeLeaf *_BProp; - NLMISC::CCDBNodeLeaf *_AProp; NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB; // The next ViewText to draw for Over diff --git a/code/ryzom/client/src/interface_v3/interface_options.cpp b/code/ryzom/client/src/interface_v3/interface_options.cpp index eb85bdb42..a73d2c170 100644 --- a/code/ryzom/client/src/interface_v3/interface_options.cpp +++ b/code/ryzom/client/src/interface_v3/interface_options.cpp @@ -16,28 +16,13 @@ -// ---------------------------------------------------------------------------- -#include "stdpch.h" - -#include "interface_options.h" -#include "interface_manager.h" -#include "group_menu.h" #include "nel/misc/xml_auto_ptr.h" -#include "../net_manager.h" -#include "../sheet_manager.h" -#include "../entity_animation_manager.h" -#include "../client_sheets/animation_set_list_sheet.h" -#include "../client_sheets/emot_list_sheet.h" -#include "nel/3d/u_animation_set.h" -#include "nel/misc/algo.h" +#include "interface_options.h" +#include "interface_element.h" -// ---------------------------------------------------------------------------- using namespace std; -using namespace NL3D; using namespace NLMISC; -extern CEntityAnimationManager *EAM; - // *************************************************************************** const CInterfaceOptionValue CInterfaceOptionValue::NullValue; @@ -138,370 +123,3 @@ bool CInterfaceOptions::getValBool(const std::string &sParamName) const return getValue(sParamName).getValBool(); } - - -// ---------------------------------------------------------------------------- -// CInterfaceLayer -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -COptionsLayer::COptionsLayer() -{ - TxId_TL = TxId_T = TxId_TR = TxId_L = TxId_R = TxId_Blank = TxId_BL = TxId_B = -2; - TxId_BR = TxId_BL_Open = TxId_B_Open = TxId_BR_Open = TxId_EL_Open = TxId_EM_Open = TxId_ER_Open =-2; - Tile_Blank = 0; - Tile_M_Header = Tile_M_Scrollbar = 0; - Tile_T = Tile_B = Tile_L = Tile_R = 0; - Tile_B_Open = Tile_EM_Open = Tile_M_Open = 0; - Scrollbar_Offset_X = 4; - Scrollbar_W = 8; -} - -// ---------------------------------------------------------------------------- -COptionsLayer::~COptionsLayer() -{ -} - -// ---------------------------------------------------------------------------- -bool COptionsLayer::parse (xmlNodePtr cur) -{ - if (!CInterfaceOptions::parse (cur)) - return false; - - CInterfaceManager *pIM = CInterfaceManager::getInstance(); - CViewRenderer &rVR = *CViewRenderer::getInstance(); - - Tile_Blank = getValSInt32("tile_blank"); - Tile_M_Header = getValSInt32("tile_m_header"); - Tile_M_Scrollbar = getValSInt32("tile_m_scrollbar"); - Tile_T = getValSInt32("tile_t"); - Tile_B = getValSInt32("tile_b"); - Tile_L = getValSInt32("tile_l"); - Tile_R = getValSInt32("tile_r"); - Tile_B_Open = getValSInt32("tile_b_open"); - Tile_EM_Open = getValSInt32("tile_em_open"); - Tile_M_Open = getValSInt32("tile_m_open"); - - Scrollbar_Offset_X = getValSInt32("scrollbar_offset_x"); - Scrollbar_W = getValSInt32("scrollbar_size_w"); - TxId_B_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_b")); - rVR.getTextureSizeFromId(TxId_B_Scrollbar, W_B_Scrollbar, H_B_Scrollbar); - TxId_M_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_m")); - rVR.getTextureSizeFromId(TxId_M_Scrollbar, W_M_Scrollbar, H_M_Scrollbar); - TxId_T_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_t")); - rVR.getTextureSizeFromId(TxId_T_Scrollbar, W_T_Scrollbar, H_T_Scrollbar); - - TxId_L_Header = rVR.getTextureIdFromName (getValStr("tx_l_header")); - rVR.getTextureSizeFromId(TxId_L_Header, W_L_Header, H_L_Header); - TxId_M_Header = rVR.getTextureIdFromName (getValStr("tx_m_header")); - rVR.getTextureSizeFromId(TxId_M_Header, W_M_Header, H_M_Header); - TxId_R_Header = rVR.getTextureIdFromName (getValStr("tx_r_header")); - rVR.getTextureSizeFromId(TxId_R_Header, W_R_Header, H_R_Header); - - TxId_TL = rVR.getTextureIdFromName (getValStr("tx_tl")); - rVR.getTextureSizeFromId(TxId_TL, W_TL, H_TL); - TxId_T = rVR.getTextureIdFromName (getValStr("tx_t")); - rVR.getTextureSizeFromId(TxId_T, W_T, H_T); - TxId_TR = rVR.getTextureIdFromName (getValStr("tx_tr")); - rVR.getTextureSizeFromId(TxId_TR, W_TR, H_TR); - TxId_L = rVR.getTextureIdFromName (getValStr("tx_l")); - rVR.getTextureSizeFromId(TxId_L, W_L, H_L); - TxId_R = rVR.getTextureIdFromName (getValStr("tx_r")); - rVR.getTextureSizeFromId(TxId_R, W_R, H_R); - TxId_Blank = rVR.getTextureIdFromName (getValStr("tx_blank")); - rVR.getTextureSizeFromId(TxId_Blank, W_Blank, H_Blank); - TxId_BL = rVR.getTextureIdFromName (getValStr("tx_bl")); - rVR.getTextureSizeFromId(TxId_BL, W_BL, H_BL); - TxId_B = rVR.getTextureIdFromName (getValStr("tx_b")); - rVR.getTextureSizeFromId(TxId_B, W_B, H_B); - TxId_BR = rVR.getTextureIdFromName (getValStr("tx_br")); - rVR.getTextureSizeFromId(TxId_BR, W_BR, H_BR); - // - TxId_BL_Open = rVR.getTextureIdFromName (getValStr("tx_bl_open")); - rVR.getTextureSizeFromId(TxId_BL_Open, W_BL_Open, H_BL_Open); - TxId_B_Open = rVR.getTextureIdFromName (getValStr("tx_b_open")); - rVR.getTextureSizeFromId(TxId_B_Open, W_B_Open, H_B_Open); - TxId_BR_Open = rVR.getTextureIdFromName (getValStr("tx_br_open")); - rVR.getTextureSizeFromId(TxId_BR_Open, W_BR_Open, H_BR_Open); - TxId_EL_Open = rVR.getTextureIdFromName (getValStr("tx_el_open")); - rVR.getTextureSizeFromId(TxId_EL_Open, W_EL_Open, H_EL_Open); - TxId_EM_Open = rVR.getTextureIdFromName (getValStr("tx_em_open")); - rVR.getTextureSizeFromId(TxId_EM_Open, W_EM_Open, H_EM_Open); - TxId_ER_Open = rVR.getTextureIdFromName (getValStr("tx_er_open")); - rVR.getTextureSizeFromId(TxId_ER_Open, W_ER_Open, H_ER_Open); - TxId_M_Open = rVR.getTextureIdFromName (getValStr("tx_m_open")); - rVR.getTextureSizeFromId(TxId_M_Open, W_M_Open, H_M_Open); - TxId_E_Open = rVR.getTextureIdFromName (getValStr("tx_e_open")); - rVR.getTextureSizeFromId(TxId_E_Open, W_E_Open, H_E_Open); - // - - TxId_TL_HighLight = rVR.getTextureIdFromName (getValStr("tx_tl_highlight")); - TxId_T_HighLight = rVR.getTextureIdFromName (getValStr("tx_t_highlight")); - TxId_TR_HighLight = rVR.getTextureIdFromName (getValStr("tx_tr_highlight")); - TxId_L_HighLight = rVR.getTextureIdFromName (getValStr("tx_l_highlight")); - TxId_R_HighLight = rVR.getTextureIdFromName (getValStr("tx_r_highlight")); - TxId_BL_HighLight = rVR.getTextureIdFromName (getValStr("tx_bl_highlight")); - TxId_B_HighLight = rVR.getTextureIdFromName (getValStr("tx_b_highlight")); - TxId_BR_HighLight = rVR.getTextureIdFromName (getValStr("tx_br_highlight")); - - // - HeaderH = getValSInt32("header_h"); - - return true; -} - -// ---------------------------------------------------------------------------- -COptionsContainerInsertion::COptionsContainerInsertion() -{ - TxId_R_Arrow = -2; - TxId_L_Arrow = -2; - TxId_T_Arrow = -2; - TxId_B_Arrow = -2; - TxId_InsertionBar = -2; -} - -// ---------------------------------------------------------------------------- -bool COptionsContainerInsertion::parse(xmlNodePtr cur) -{ - if (!CInterfaceOptions::parse (cur)) - return false; - - CInterfaceManager *pIM = CInterfaceManager::getInstance(); - CViewRenderer &rVR = *CViewRenderer::getInstance(); - TxId_T_Arrow = rVR.getTextureIdFromName (getValStr("arrow_top")); - TxId_B_Arrow = rVR.getTextureIdFromName (getValStr("arrow_down")); - TxId_L_Arrow = rVR.getTextureIdFromName (getValStr("arrow_left")); - TxId_R_Arrow = rVR.getTextureIdFromName (getValStr("arrow_right")); - TxId_InsertionBar = rVR.getTextureIdFromName (getValStr("insertion_bar")); - - return true; -} - - -// *************************************************************************** -COptionsContainerMove::COptionsContainerMove() -{ - TrackW = -8; - TrackH = 22; - TrackY = -4; - TrackYWithTopResizer = -8; - TrackHWithTopResizer = 18; - ResizerSize = 8; -} - -// *************************************************************************** -bool COptionsContainerMove::parse(xmlNodePtr cur) -{ - if (!CInterfaceOptions::parse (cur)) - return false; - fromString(getValStr("track_w"), TrackW); - fromString(getValStr("track_h"), TrackH); - fromString(getValStr("track_y"), TrackY); - fromString(getValStr("track_y_with_top_resizer"), TrackYWithTopResizer); - fromString(getValStr("track_h_with_top_resizer"), TrackHWithTopResizer); - fromString(getValStr("resizer_size"), ResizerSize); - return true; -} - -// *************************************************************************** -COptionsList::COptionsList() -{ - _NumParams= 0; -} - -// *************************************************************************** -bool COptionsList::parse (xmlNodePtr cur) -{ - cur = cur->children; - bool ok = true; - uint id= 0; - while (cur) - { - if ( !stricmp((char*)cur->name,"param") ) - { - CXMLAutoPtr ptr, val; - val = xmlGetProp (cur, (xmlChar*)"value"); - if (!val) - { - nlinfo("param with no name or no value"); - ok = false; - } - else - { - string value = (string((const char*)val)); - _ParamValue[toString(id)].init(value); - id++; - } - } - cur = cur->next; - } - - _NumParams= id; - - return ok; -} - - -// *************************************************************************** -const CInterfaceOptionValue &COptionsList::getValue(uint paramId) const -{ - return CInterfaceOptions::getValue(toString(paramId)); -} - - -// *************************************************************************** -bool CMissionIconList::parse(xmlNodePtr cur) -{ - bool result = CInterfaceOptions::parse(cur); - if (!result) return false; - CInterfaceManager *im = CInterfaceManager::getInstance(); - CViewRenderer &vr = *CViewRenderer::getInstance(); - for(std::map::iterator it = _ParamValue.begin(); it != _ParamValue.end(); ++it) - { - int index; - if (fromString(it->first, index)) - { - if (index > 255) - { - nlwarning("bad index for texture"); - } - else - { - string sTmp = it->second.getValStr(); - string sBack, sIcon; - if (sTmp.find('|') != string::npos) - { - sBack = sTmp.substr(0,sTmp.find('|')); - sIcon = sTmp.substr(sTmp.find('|')+1,sTmp.size()); - } - else - { - sBack = sTmp; - } - - sint32 texID = vr.getTextureIdFromName(sBack); - if (texID != -1) - { - IconBackTexID.resize(std::max((int) IconBackTexID.size(), index + 1), -1); - IconBackTexID[index] = texID; - } - texID = vr.getTextureIdFromName(sIcon); - if (texID != -1) - { - IconTexID.resize(std::max((int) IconTexID.size(), index + 1), -1); - IconTexID[index] = texID; - } - } - } - } - NLMISC::contReset(_ParamValue); // not needed anymore - return true; -} - - -// *************************************************************************** -COptionsAnimationSet::COptionsAnimationSet() -{ - AnimationSet= NULL; -} - -// *************************************************************************** -COptionsAnimationSet::~COptionsAnimationSet() -{ - if(AnimationSet) - { - /* Important Note: this CInterfaceOptions is released BEFORE any CCharacter3d is released himself - BUT this is OK, since the actual animationSet is kept by SmartPtr through UPlayList - (see deleteAnimationSet() doc) - */ - CViewRenderer::getInstance()->getDriver()->deleteAnimationSet(AnimationSet); - AnimationSet= NULL; - } -} - -// *************************************************************************** -bool COptionsAnimationSet::parse (xmlNodePtr cur) -{ - bool result = CInterfaceOptions::parse(cur); - if (!result) return false; - nlassert( CViewRenderer::getInstance()->getDriver() ); - - // create the animation set - AnimationSet= CViewRenderer::getInstance()->getDriver()->createAnimationSet(); - nlassert(AnimationSet); - - AnimMale.clear(); - AnimFemale.clear(); - - // Add all male/female animations - string sTmp; - for(uint gender=0; gender<2; gender++) - { - string prefix= (gender==0)?"m":"f"; - - uint i = 0; - do - { - sTmp = getValStr(prefix+toString(i)); - if (!sTmp.empty()) - { - // get params - vector params; - splitString(sTmp, "|", params); - // if error or first param empty, abort all - if(params.empty() || params[0].empty()) - { - sTmp.clear(); - } - else - { - string animName= params[0]; - animName += ".anim"; - uint animID = AnimationSet->addAnimation (animName.c_str(), animName.c_str()); - if (animID == UAnimationSet::NotFound) - nlwarning ("Character3D : not found anim : %s", animName.c_str()); - // try to add the Face animation for this one (not important if failed) - string faceAnimName= getFaceAnimName(animName); - AnimationSet->addAnimation (faceAnimName.c_str(), faceAnimName.c_str()); - - // append the new anim desc - CAnim newAnim; - newAnim.AnimId= animID; - newAnim.ApplyRaceScalePos= true; - // parse param - for(uint p=1;pbuild (); - - return true; -} - -// *************************************************************************** -string COptionsAnimationSet::getFaceAnimName(const std::string &animName) -{ - string faceAnimName= animName; - string::size_type extPos= faceAnimName.find(".anim"); - if(extPos!=string::npos) - faceAnimName= faceAnimName.substr(0, extPos); - faceAnimName+= "_face"; - if(extPos!=string::npos) - faceAnimName+= ".anim"; - return faceAnimName; -} - - diff --git a/code/ryzom/client/src/interface_v3/interface_options.h b/code/ryzom/client/src/interface_v3/interface_options.h index 3fdb82a97..e05d390f8 100644 --- a/code/ryzom/client/src/interface_v3/interface_options.h +++ b/code/ryzom/client/src/interface_v3/interface_options.h @@ -92,161 +92,6 @@ protected: }; -// *************************************************************************** -class COptionsLayer : public CInterfaceOptions -{ - -public: - COptionsLayer(); - ~COptionsLayer(); - virtual bool parse (xmlNodePtr cur); - - // Container optimizer - - sint32 Tile_Blank; - sint32 Tile_M_Header, Tile_M_Scrollbar; - sint32 Tile_T, Tile_B, Tile_L, Tile_R; - sint32 Tile_B_Open, Tile_EM_Open, Tile_M_Open; - - sint32 Scrollbar_Offset_X; - sint32 Scrollbar_W; - sint32 TxId_B_Scrollbar, W_B_Scrollbar, H_B_Scrollbar; - sint32 TxId_M_Scrollbar, W_M_Scrollbar, H_M_Scrollbar; - sint32 TxId_T_Scrollbar, W_T_Scrollbar, H_T_Scrollbar; - - sint32 TxId_L_Header, W_L_Header, H_L_Header; - sint32 TxId_M_Header, W_M_Header, H_M_Header; - sint32 TxId_R_Header, W_R_Header, H_R_Header; - - sint32 TxId_TL, W_TL, H_TL; - sint32 TxId_T, W_T, H_T; - sint32 TxId_TR, W_TR, H_TR; - sint32 TxId_L, W_L, H_L; - sint32 TxId_R, W_R, H_R; - sint32 TxId_Blank, W_Blank, H_Blank; - sint32 TxId_BL, W_BL, H_BL; - sint32 TxId_B, W_B, H_B; - sint32 TxId_BR, W_BR, H_BR; - - sint32 TxId_BL_Open, W_BL_Open, H_BL_Open; - sint32 TxId_B_Open, W_B_Open, H_B_Open; - sint32 TxId_BR_Open, W_BR_Open, H_BR_Open; - sint32 TxId_EL_Open, W_EL_Open, H_EL_Open; - sint32 TxId_EM_Open, W_EM_Open, H_EM_Open; - sint32 TxId_ER_Open, W_ER_Open, H_ER_Open; - sint32 TxId_E_Open, W_E_Open, H_E_Open; - sint32 TxId_M_Open, W_M_Open, H_M_Open; - - sint32 TxId_TL_HighLight; - sint32 TxId_T_HighLight; - sint32 TxId_TR_HighLight; - sint32 TxId_L_HighLight; - sint32 TxId_R_HighLight; - sint32 TxId_BL_HighLight; - sint32 TxId_B_HighLight; - sint32 TxId_BR_HighLight; - - sint32 HeaderH; -}; - -// *************************************************************************** -class COptionsContainerInsertion : public CInterfaceOptions -{ -public: - COptionsContainerInsertion(); - virtual bool parse (xmlNodePtr cur); - - sint32 TxId_R_Arrow; - sint32 TxId_L_Arrow; - sint32 TxId_T_Arrow; - sint32 TxId_B_Arrow; - sint32 TxId_InsertionBar; -}; - -// *************************************************************************** -class COptionsContainerMove : public CInterfaceOptions -{ -public: - COptionsContainerMove(); - virtual bool parse (xmlNodePtr cur); - - sint32 TrackW; - sint32 TrackH; - sint32 TrackY; - sint32 TrackYWithTopResizer; - sint32 TrackHWithTopResizer; - sint32 ResizerSize; -}; - - - -// *************************************************************************** -/** - * read a list of with no name. id auto incremented - */ -class COptionsList : public CInterfaceOptions -{ -public: - COptionsList(); - virtual bool parse (xmlNodePtr cur); - - uint getNumParams() const {return _NumParams;} - - // get a value by its index (from 0 to numParams) - const CInterfaceOptionValue &getValue(uint paramId) const; - -private: - uint _NumParams; -}; - -// *************************************************************************** -class CMissionIconList : public CInterfaceOptions -{ -public: - virtual bool parse (xmlNodePtr cur); - sint32 getBackTexID(uint index) const { return index >= IconBackTexID.size() ? -1 : IconBackTexID[index]; } - sint32 getTexID(uint index) const { return index >= IconTexID.size() ? -1 : IconTexID[index]; } -private: - std::vector IconBackTexID; - std::vector IconTexID; -}; - -// *************************************************************************** -/** Describe an animation Set container, used for multiple CCharacter3d for instance - */ -class COptionsAnimationSet : public CInterfaceOptions -{ -public: - COptionsAnimationSet(); - // see code for important release note - virtual ~COptionsAnimationSet(); - virtual bool parse (xmlNodePtr cur); - - // tool fct to get the face anim name from a name (append "_face" before .anim) - static std::string getFaceAnimName(const std::string &animName); - -public: - NL3D::UAnimationSet *AnimationSet; - - struct CAnim - { - // Indexes in this animation set - uint AnimId; - // true if must apply the race/gender scale to the position (not in rare case) - bool ApplyRaceScalePos; - CAnim() - { - AnimId= -1; - ApplyRaceScalePos= true; - } - }; - - // Male and female Animation - std::vector AnimMale; - std::vector AnimFemale; - -}; - #endif // NL_INTERFACE_LAYER_H /* End of interface_layer.h */ diff --git a/code/ryzom/client/src/interface_v3/interface_options_ryzom.cpp b/code/ryzom/client/src/interface_v3/interface_options_ryzom.cpp new file mode 100644 index 000000000..9e9731c8c --- /dev/null +++ b/code/ryzom/client/src/interface_v3/interface_options_ryzom.cpp @@ -0,0 +1,407 @@ +// Ryzom - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + + +#include "interface_options_ryzom.h" + +#include "stdpch.h" + +#include "interface_options.h" +#include "interface_manager.h" +#include "group_menu.h" +#include "nel/misc/xml_auto_ptr.h" +#include "../net_manager.h" +#include "../sheet_manager.h" +#include "../entity_animation_manager.h" +#include "../client_sheets/animation_set_list_sheet.h" +#include "../client_sheets/emot_list_sheet.h" +#include "nel/3d/u_animation_set.h" +#include "nel/misc/algo.h" + +// ---------------------------------------------------------------------------- +using namespace std; +using namespace NL3D; +using namespace NLMISC; + +extern CEntityAnimationManager *EAM; + + +// ---------------------------------------------------------------------------- +// CInterfaceLayer +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +COptionsLayer::COptionsLayer() +{ + TxId_TL = TxId_T = TxId_TR = TxId_L = TxId_R = TxId_Blank = TxId_BL = TxId_B = -2; + TxId_BR = TxId_BL_Open = TxId_B_Open = TxId_BR_Open = TxId_EL_Open = TxId_EM_Open = TxId_ER_Open =-2; + Tile_Blank = 0; + Tile_M_Header = Tile_M_Scrollbar = 0; + Tile_T = Tile_B = Tile_L = Tile_R = 0; + Tile_B_Open = Tile_EM_Open = Tile_M_Open = 0; + Scrollbar_Offset_X = 4; + Scrollbar_W = 8; +} + +// ---------------------------------------------------------------------------- +COptionsLayer::~COptionsLayer() +{ +} + +// ---------------------------------------------------------------------------- +bool COptionsLayer::parse (xmlNodePtr cur) +{ + if (!CInterfaceOptions::parse (cur)) + return false; + + CInterfaceManager *pIM = CInterfaceManager::getInstance(); + CViewRenderer &rVR = *CViewRenderer::getInstance(); + + Tile_Blank = getValSInt32("tile_blank"); + Tile_M_Header = getValSInt32("tile_m_header"); + Tile_M_Scrollbar = getValSInt32("tile_m_scrollbar"); + Tile_T = getValSInt32("tile_t"); + Tile_B = getValSInt32("tile_b"); + Tile_L = getValSInt32("tile_l"); + Tile_R = getValSInt32("tile_r"); + Tile_B_Open = getValSInt32("tile_b_open"); + Tile_EM_Open = getValSInt32("tile_em_open"); + Tile_M_Open = getValSInt32("tile_m_open"); + + Scrollbar_Offset_X = getValSInt32("scrollbar_offset_x"); + Scrollbar_W = getValSInt32("scrollbar_size_w"); + TxId_B_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_b")); + rVR.getTextureSizeFromId(TxId_B_Scrollbar, W_B_Scrollbar, H_B_Scrollbar); + TxId_M_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_m")); + rVR.getTextureSizeFromId(TxId_M_Scrollbar, W_M_Scrollbar, H_M_Scrollbar); + TxId_T_Scrollbar = rVR.getTextureIdFromName (getValStr("scrollbar_tx_t")); + rVR.getTextureSizeFromId(TxId_T_Scrollbar, W_T_Scrollbar, H_T_Scrollbar); + + TxId_L_Header = rVR.getTextureIdFromName (getValStr("tx_l_header")); + rVR.getTextureSizeFromId(TxId_L_Header, W_L_Header, H_L_Header); + TxId_M_Header = rVR.getTextureIdFromName (getValStr("tx_m_header")); + rVR.getTextureSizeFromId(TxId_M_Header, W_M_Header, H_M_Header); + TxId_R_Header = rVR.getTextureIdFromName (getValStr("tx_r_header")); + rVR.getTextureSizeFromId(TxId_R_Header, W_R_Header, H_R_Header); + + TxId_TL = rVR.getTextureIdFromName (getValStr("tx_tl")); + rVR.getTextureSizeFromId(TxId_TL, W_TL, H_TL); + TxId_T = rVR.getTextureIdFromName (getValStr("tx_t")); + rVR.getTextureSizeFromId(TxId_T, W_T, H_T); + TxId_TR = rVR.getTextureIdFromName (getValStr("tx_tr")); + rVR.getTextureSizeFromId(TxId_TR, W_TR, H_TR); + TxId_L = rVR.getTextureIdFromName (getValStr("tx_l")); + rVR.getTextureSizeFromId(TxId_L, W_L, H_L); + TxId_R = rVR.getTextureIdFromName (getValStr("tx_r")); + rVR.getTextureSizeFromId(TxId_R, W_R, H_R); + TxId_Blank = rVR.getTextureIdFromName (getValStr("tx_blank")); + rVR.getTextureSizeFromId(TxId_Blank, W_Blank, H_Blank); + TxId_BL = rVR.getTextureIdFromName (getValStr("tx_bl")); + rVR.getTextureSizeFromId(TxId_BL, W_BL, H_BL); + TxId_B = rVR.getTextureIdFromName (getValStr("tx_b")); + rVR.getTextureSizeFromId(TxId_B, W_B, H_B); + TxId_BR = rVR.getTextureIdFromName (getValStr("tx_br")); + rVR.getTextureSizeFromId(TxId_BR, W_BR, H_BR); + // + TxId_BL_Open = rVR.getTextureIdFromName (getValStr("tx_bl_open")); + rVR.getTextureSizeFromId(TxId_BL_Open, W_BL_Open, H_BL_Open); + TxId_B_Open = rVR.getTextureIdFromName (getValStr("tx_b_open")); + rVR.getTextureSizeFromId(TxId_B_Open, W_B_Open, H_B_Open); + TxId_BR_Open = rVR.getTextureIdFromName (getValStr("tx_br_open")); + rVR.getTextureSizeFromId(TxId_BR_Open, W_BR_Open, H_BR_Open); + TxId_EL_Open = rVR.getTextureIdFromName (getValStr("tx_el_open")); + rVR.getTextureSizeFromId(TxId_EL_Open, W_EL_Open, H_EL_Open); + TxId_EM_Open = rVR.getTextureIdFromName (getValStr("tx_em_open")); + rVR.getTextureSizeFromId(TxId_EM_Open, W_EM_Open, H_EM_Open); + TxId_ER_Open = rVR.getTextureIdFromName (getValStr("tx_er_open")); + rVR.getTextureSizeFromId(TxId_ER_Open, W_ER_Open, H_ER_Open); + TxId_M_Open = rVR.getTextureIdFromName (getValStr("tx_m_open")); + rVR.getTextureSizeFromId(TxId_M_Open, W_M_Open, H_M_Open); + TxId_E_Open = rVR.getTextureIdFromName (getValStr("tx_e_open")); + rVR.getTextureSizeFromId(TxId_E_Open, W_E_Open, H_E_Open); + // + + TxId_TL_HighLight = rVR.getTextureIdFromName (getValStr("tx_tl_highlight")); + TxId_T_HighLight = rVR.getTextureIdFromName (getValStr("tx_t_highlight")); + TxId_TR_HighLight = rVR.getTextureIdFromName (getValStr("tx_tr_highlight")); + TxId_L_HighLight = rVR.getTextureIdFromName (getValStr("tx_l_highlight")); + TxId_R_HighLight = rVR.getTextureIdFromName (getValStr("tx_r_highlight")); + TxId_BL_HighLight = rVR.getTextureIdFromName (getValStr("tx_bl_highlight")); + TxId_B_HighLight = rVR.getTextureIdFromName (getValStr("tx_b_highlight")); + TxId_BR_HighLight = rVR.getTextureIdFromName (getValStr("tx_br_highlight")); + + // + HeaderH = getValSInt32("header_h"); + + return true; +} + +// ---------------------------------------------------------------------------- +COptionsContainerInsertion::COptionsContainerInsertion() +{ + TxId_R_Arrow = -2; + TxId_L_Arrow = -2; + TxId_T_Arrow = -2; + TxId_B_Arrow = -2; + TxId_InsertionBar = -2; +} + +// ---------------------------------------------------------------------------- +bool COptionsContainerInsertion::parse(xmlNodePtr cur) +{ + if (!CInterfaceOptions::parse (cur)) + return false; + + CInterfaceManager *pIM = CInterfaceManager::getInstance(); + CViewRenderer &rVR = *CViewRenderer::getInstance(); + TxId_T_Arrow = rVR.getTextureIdFromName (getValStr("arrow_top")); + TxId_B_Arrow = rVR.getTextureIdFromName (getValStr("arrow_down")); + TxId_L_Arrow = rVR.getTextureIdFromName (getValStr("arrow_left")); + TxId_R_Arrow = rVR.getTextureIdFromName (getValStr("arrow_right")); + TxId_InsertionBar = rVR.getTextureIdFromName (getValStr("insertion_bar")); + + return true; +} + + +// *************************************************************************** +COptionsContainerMove::COptionsContainerMove() +{ + TrackW = -8; + TrackH = 22; + TrackY = -4; + TrackYWithTopResizer = -8; + TrackHWithTopResizer = 18; + ResizerSize = 8; +} + +// *************************************************************************** +bool COptionsContainerMove::parse(xmlNodePtr cur) +{ + if (!CInterfaceOptions::parse (cur)) + return false; + fromString(getValStr("track_w"), TrackW); + fromString(getValStr("track_h"), TrackH); + fromString(getValStr("track_y"), TrackY); + fromString(getValStr("track_y_with_top_resizer"), TrackYWithTopResizer); + fromString(getValStr("track_h_with_top_resizer"), TrackHWithTopResizer); + fromString(getValStr("resizer_size"), ResizerSize); + return true; +} + +// *************************************************************************** +COptionsList::COptionsList() +{ + _NumParams= 0; +} + +// *************************************************************************** +bool COptionsList::parse (xmlNodePtr cur) +{ + cur = cur->children; + bool ok = true; + uint id= 0; + while (cur) + { + if ( !stricmp((char*)cur->name,"param") ) + { + CXMLAutoPtr ptr, val; + val = xmlGetProp (cur, (xmlChar*)"value"); + if (!val) + { + nlinfo("param with no name or no value"); + ok = false; + } + else + { + string value = (string((const char*)val)); + _ParamValue[toString(id)].init(value); + id++; + } + } + cur = cur->next; + } + + _NumParams= id; + + return ok; +} + + +// *************************************************************************** +const CInterfaceOptionValue &COptionsList::getValue(uint paramId) const +{ + return CInterfaceOptions::getValue(toString(paramId)); +} + + +// *************************************************************************** +bool CMissionIconList::parse(xmlNodePtr cur) +{ + bool result = CInterfaceOptions::parse(cur); + if (!result) return false; + CInterfaceManager *im = CInterfaceManager::getInstance(); + CViewRenderer &vr = *CViewRenderer::getInstance(); + for(std::map::iterator it = _ParamValue.begin(); it != _ParamValue.end(); ++it) + { + int index; + if (fromString(it->first, index)) + { + if (index > 255) + { + nlwarning("bad index for texture"); + } + else + { + string sTmp = it->second.getValStr(); + string sBack, sIcon; + if (sTmp.find('|') != string::npos) + { + sBack = sTmp.substr(0,sTmp.find('|')); + sIcon = sTmp.substr(sTmp.find('|')+1,sTmp.size()); + } + else + { + sBack = sTmp; + } + + sint32 texID = vr.getTextureIdFromName(sBack); + if (texID != -1) + { + IconBackTexID.resize(std::max((int) IconBackTexID.size(), index + 1), -1); + IconBackTexID[index] = texID; + } + texID = vr.getTextureIdFromName(sIcon); + if (texID != -1) + { + IconTexID.resize(std::max((int) IconTexID.size(), index + 1), -1); + IconTexID[index] = texID; + } + } + } + } + NLMISC::contReset(_ParamValue); // not needed anymore + return true; +} + + +// *************************************************************************** +COptionsAnimationSet::COptionsAnimationSet() +{ + AnimationSet= NULL; +} + +// *************************************************************************** +COptionsAnimationSet::~COptionsAnimationSet() +{ + if(AnimationSet) + { + /* Important Note: this CInterfaceOptions is released BEFORE any CCharacter3d is released himself + BUT this is OK, since the actual animationSet is kept by SmartPtr through UPlayList + (see deleteAnimationSet() doc) + */ + CViewRenderer::getInstance()->getDriver()->deleteAnimationSet(AnimationSet); + AnimationSet= NULL; + } +} + +// *************************************************************************** +bool COptionsAnimationSet::parse (xmlNodePtr cur) +{ + bool result = CInterfaceOptions::parse(cur); + if (!result) return false; + nlassert( CViewRenderer::getInstance()->getDriver() ); + + // create the animation set + AnimationSet= CViewRenderer::getInstance()->getDriver()->createAnimationSet(); + nlassert(AnimationSet); + + AnimMale.clear(); + AnimFemale.clear(); + + // Add all male/female animations + string sTmp; + for(uint gender=0; gender<2; gender++) + { + string prefix= (gender==0)?"m":"f"; + + uint i = 0; + do + { + sTmp = getValStr(prefix+toString(i)); + if (!sTmp.empty()) + { + // get params + vector params; + splitString(sTmp, "|", params); + // if error or first param empty, abort all + if(params.empty() || params[0].empty()) + { + sTmp.clear(); + } + else + { + string animName= params[0]; + animName += ".anim"; + uint animID = AnimationSet->addAnimation (animName.c_str(), animName.c_str()); + if (animID == UAnimationSet::NotFound) + nlwarning ("Character3D : not found anim : %s", animName.c_str()); + // try to add the Face animation for this one (not important if failed) + string faceAnimName= getFaceAnimName(animName); + AnimationSet->addAnimation (faceAnimName.c_str(), faceAnimName.c_str()); + + // append the new anim desc + CAnim newAnim; + newAnim.AnimId= animID; + newAnim.ApplyRaceScalePos= true; + // parse param + for(uint p=1;pbuild (); + + return true; +} + +// *************************************************************************** +string COptionsAnimationSet::getFaceAnimName(const std::string &animName) +{ + string faceAnimName= animName; + string::size_type extPos= faceAnimName.find(".anim"); + if(extPos!=string::npos) + faceAnimName= faceAnimName.substr(0, extPos); + faceAnimName+= "_face"; + if(extPos!=string::npos) + faceAnimName+= ".anim"; + return faceAnimName; +} + + + diff --git a/code/ryzom/client/src/interface_v3/interface_options_ryzom.h b/code/ryzom/client/src/interface_v3/interface_options_ryzom.h new file mode 100644 index 000000000..f5bf6bc97 --- /dev/null +++ b/code/ryzom/client/src/interface_v3/interface_options_ryzom.h @@ -0,0 +1,178 @@ +// Ryzom - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + + +#ifndef IF_OPTIONS_RZ +#define IP_OPTIONS_RZ + +#include "interface_options.h" + +// *************************************************************************** +class COptionsLayer : public CInterfaceOptions +{ + +public: + COptionsLayer(); + ~COptionsLayer(); + virtual bool parse (xmlNodePtr cur); + + // Container optimizer + + sint32 Tile_Blank; + sint32 Tile_M_Header, Tile_M_Scrollbar; + sint32 Tile_T, Tile_B, Tile_L, Tile_R; + sint32 Tile_B_Open, Tile_EM_Open, Tile_M_Open; + + sint32 Scrollbar_Offset_X; + sint32 Scrollbar_W; + sint32 TxId_B_Scrollbar, W_B_Scrollbar, H_B_Scrollbar; + sint32 TxId_M_Scrollbar, W_M_Scrollbar, H_M_Scrollbar; + sint32 TxId_T_Scrollbar, W_T_Scrollbar, H_T_Scrollbar; + + sint32 TxId_L_Header, W_L_Header, H_L_Header; + sint32 TxId_M_Header, W_M_Header, H_M_Header; + sint32 TxId_R_Header, W_R_Header, H_R_Header; + + sint32 TxId_TL, W_TL, H_TL; + sint32 TxId_T, W_T, H_T; + sint32 TxId_TR, W_TR, H_TR; + sint32 TxId_L, W_L, H_L; + sint32 TxId_R, W_R, H_R; + sint32 TxId_Blank, W_Blank, H_Blank; + sint32 TxId_BL, W_BL, H_BL; + sint32 TxId_B, W_B, H_B; + sint32 TxId_BR, W_BR, H_BR; + + sint32 TxId_BL_Open, W_BL_Open, H_BL_Open; + sint32 TxId_B_Open, W_B_Open, H_B_Open; + sint32 TxId_BR_Open, W_BR_Open, H_BR_Open; + sint32 TxId_EL_Open, W_EL_Open, H_EL_Open; + sint32 TxId_EM_Open, W_EM_Open, H_EM_Open; + sint32 TxId_ER_Open, W_ER_Open, H_ER_Open; + sint32 TxId_E_Open, W_E_Open, H_E_Open; + sint32 TxId_M_Open, W_M_Open, H_M_Open; + + sint32 TxId_TL_HighLight; + sint32 TxId_T_HighLight; + sint32 TxId_TR_HighLight; + sint32 TxId_L_HighLight; + sint32 TxId_R_HighLight; + sint32 TxId_BL_HighLight; + sint32 TxId_B_HighLight; + sint32 TxId_BR_HighLight; + + sint32 HeaderH; +}; + +// *************************************************************************** +class COptionsContainerInsertion : public CInterfaceOptions +{ +public: + COptionsContainerInsertion(); + virtual bool parse (xmlNodePtr cur); + + sint32 TxId_R_Arrow; + sint32 TxId_L_Arrow; + sint32 TxId_T_Arrow; + sint32 TxId_B_Arrow; + sint32 TxId_InsertionBar; +}; + +// *************************************************************************** +class COptionsContainerMove : public CInterfaceOptions +{ +public: + COptionsContainerMove(); + virtual bool parse (xmlNodePtr cur); + + sint32 TrackW; + sint32 TrackH; + sint32 TrackY; + sint32 TrackYWithTopResizer; + sint32 TrackHWithTopResizer; + sint32 ResizerSize; +}; + + + +// *************************************************************************** +/** + * read a list of with no name. id auto incremented + */ +class COptionsList : public CInterfaceOptions +{ +public: + COptionsList(); + virtual bool parse (xmlNodePtr cur); + + uint getNumParams() const {return _NumParams;} + + // get a value by its index (from 0 to numParams) + const CInterfaceOptionValue &getValue(uint paramId) const; + +private: + uint _NumParams; +}; + +// *************************************************************************** +class CMissionIconList : public CInterfaceOptions +{ +public: + virtual bool parse (xmlNodePtr cur); + sint32 getBackTexID(uint index) const { return index >= IconBackTexID.size() ? -1 : IconBackTexID[index]; } + sint32 getTexID(uint index) const { return index >= IconTexID.size() ? -1 : IconTexID[index]; } +private: + std::vector IconBackTexID; + std::vector IconTexID; +}; + +// *************************************************************************** +/** Describe an animation Set container, used for multiple CCharacter3d for instance + */ +class COptionsAnimationSet : public CInterfaceOptions +{ +public: + COptionsAnimationSet(); + // see code for important release note + virtual ~COptionsAnimationSet(); + virtual bool parse (xmlNodePtr cur); + + // tool fct to get the face anim name from a name (append "_face" before .anim) + static std::string getFaceAnimName(const std::string &animName); + +public: + NL3D::UAnimationSet *AnimationSet; + + struct CAnim + { + // Indexes in this animation set + uint AnimId; + // true if must apply the race/gender scale to the position (not in rare case) + bool ApplyRaceScalePos; + CAnim() + { + AnimId= -1; + ApplyRaceScalePos= true; + } + }; + + // Male and female Animation + std::vector AnimMale; + std::vector AnimFemale; + +}; + +#endif diff --git a/code/ryzom/client/src/interface_v3/interface_parser.cpp b/code/ryzom/client/src/interface_v3/interface_parser.cpp index 7ca6c77a6..1539a2d29 100644 --- a/code/ryzom/client/src/interface_v3/interface_parser.cpp +++ b/code/ryzom/client/src/interface_v3/interface_parser.cpp @@ -32,6 +32,7 @@ #include "interface_parser.h" #include "interface_observer.h" #include "interface_options.h" +#include "interface_options_ryzom.h" #include "interface_anim.h" #include "interface_3d_scene.h" // View @@ -1353,6 +1354,8 @@ bool CInterfaceParser::parseOptions (xmlNodePtr cur, CInterfaceGroup * /* parent options = new CInterfaceOptions; } + CWidgetManager *wm = CWidgetManager::getInstance(); + // get the name ptr = (char*) xmlGetProp( cur, (xmlChar*)"name" ); if (!ptr) @@ -1368,17 +1371,17 @@ bool CInterfaceParser::parseOptions (xmlNodePtr cur, CInterfaceGroup * /* parent if (ptr) { string optionsParentName = ptr; - std::map >::iterator it= _OptionsMap.find(optionsParentName); - if(it!=_OptionsMap.end()) - options->copyBasicMap(*it->second); + CInterfaceOptions *io = wm->getOptions( optionsParentName ); + if( io != NULL ) + options->copyBasicMap( *io ); } // parse parameters if (options->parse (cur)) { // Remove old one - _OptionsMap.erase(optionsName); - _OptionsMap.insert(map::value_type(optionsName,options)); + wm->removeOptions( optionsName ); + wm->addOptions( optionsName, options ); } else { @@ -3549,12 +3552,6 @@ void CInterfaceParser::removeAllLinks() _LinkMap.clear(); } -// *************************************************************************** -void CInterfaceParser::removeAllOptions() -{ - _OptionsMap.clear(); // options are holded by smart pointers .. -} - // *************************************************************************** void CInterfaceParser::removeAllProcedures() { @@ -3599,7 +3596,7 @@ void CInterfaceParser::removeAll() removeAllLinks(); //nlinfo ("%d seconds for removeAllLinks", (uint32)(ryzomGetLocalTime ()-initStart)/1000); initStart = ryzomGetLocalTime (); - removeAllOptions(); + CWidgetManager::getInstance()->removeAllOptions(); //nlinfo ("%d seconds for removeAllOptions", (uint32)(ryzomGetLocalTime ()-initStart)/1000); initStart = ryzomGetLocalTime (); removeAllProcedures(); diff --git a/code/ryzom/client/src/interface_v3/interface_parser.h b/code/ryzom/client/src/interface_v3/interface_parser.h index 70cf5a200..135483d5c 100644 --- a/code/ryzom/client/src/interface_v3/interface_parser.h +++ b/code/ryzom/client/src/interface_v3/interface_parser.h @@ -218,7 +218,6 @@ public: /// \name Clearing mgt // @{ void removeAllLinks(); - void removeAllOptions(); void removeAllProcedures(); void removeAllDefines(); void removeAllTemplates(); @@ -248,9 +247,6 @@ protected: * Data of initialized interface */ - // Options description - std::map > _OptionsMap; - /// Define Variable list typedef std::map TVarMap; typedef TVarMap::iterator ItVarMap; diff --git a/code/ryzom/client/src/interface_v3/macrocmd_manager.cpp b/code/ryzom/client/src/interface_v3/macrocmd_manager.cpp index b87ecafda..b1b0d9e12 100644 --- a/code/ryzom/client/src/interface_v3/macrocmd_manager.cpp +++ b/code/ryzom/client/src/interface_v3/macrocmd_manager.cpp @@ -205,7 +205,7 @@ void CMacroCmdManager::initInGame() // Get all custom icon bitmaps CInterfaceManager *pIM = CInterfaceManager::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance(); - CInterfaceOptions *pIO = pIM->getOptions("macro_custom_icon"); + CInterfaceOptions *pIO = CWidgetManager::getInstance()->getOptions("macro_custom_icon"); if (pIO != NULL) { string sTmp; diff --git a/code/ryzom/client/src/interface_v3/task_bar_manager.cpp b/code/ryzom/client/src/interface_v3/task_bar_manager.cpp index de19fbdca..aa76e0fa8 100644 --- a/code/ryzom/client/src/interface_v3/task_bar_manager.cpp +++ b/code/ryzom/client/src/interface_v3/task_bar_manager.cpp @@ -29,6 +29,8 @@ #include "../actions_client.h" #include "ctrl_button.h" +#include "interface_options_ryzom.h" + using namespace std; using namespace NLMISC; @@ -160,7 +162,7 @@ public: const CActionsManager::TActionComboMap &acmap = pAM->getActionComboMap(); - COptionsList *pOL = dynamic_cast(pIM->getOptions("gestion_windows_key_binding")); + COptionsList *pOL = dynamic_cast(CWidgetManager::getInstance()->getOptions("gestion_windows_key_binding")); if (pOL == NULL) return; for (uint i = 0; i < pOL->getNumParams(); ++i) diff --git a/code/ryzom/client/src/interface_v3/view_bitmap.cpp b/code/ryzom/client/src/interface_v3/view_bitmap.cpp index 7372f9401..c2266bb3a 100644 --- a/code/ryzom/client/src/interface_v3/view_bitmap.cpp +++ b/code/ryzom/client/src/interface_v3/view_bitmap.cpp @@ -150,12 +150,12 @@ void CViewBitmap::draw () CRGBA col; if(getModulateGlobalColor()) { - col.modulateFromColor (_Color, pIM->getGlobalColorForContent()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _Color; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } if (_InheritGCAlpha) diff --git a/code/ryzom/client/src/interface_v3/view_pointer.cpp b/code/ryzom/client/src/interface_v3/view_pointer.cpp index 27966ffc3..ebfdafe1b 100644 --- a/code/ryzom/client/src/interface_v3/view_pointer.cpp +++ b/code/ryzom/client/src/interface_v3/view_pointer.cpp @@ -186,7 +186,7 @@ void CViewPointer::draw () CRGBA col; if(getModulateGlobalColor()) - col.modulateFromColor (_Color, pIM->getGlobalColor()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColor()); else col= _Color; diff --git a/code/ryzom/client/src/interface_v3/view_polygon.cpp b/code/ryzom/client/src/interface_v3/view_polygon.cpp index 06c34025d..089b6614e 100644 --- a/code/ryzom/client/src/interface_v3/view_polygon.cpp +++ b/code/ryzom/client/src/interface_v3/view_polygon.cpp @@ -168,12 +168,12 @@ void CViewPolygon::draw() CRGBA col; if(getModulateGlobalColor()) { - col.modulateFromColor (_Color, im->getGlobalColorForContent()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _Color; - col.A = (uint8)(((sint32)col.A*((sint32)im->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } vr.drawUnclippedTriangles(_RenderLayer, _RealTris, col); } diff --git a/code/ryzom/client/src/interface_v3/view_quad.cpp b/code/ryzom/client/src/interface_v3/view_quad.cpp index 296643a2d..ca983cb92 100644 --- a/code/ryzom/client/src/interface_v3/view_quad.cpp +++ b/code/ryzom/client/src/interface_v3/view_quad.cpp @@ -63,12 +63,12 @@ void CViewQuad::draw() CRGBA col; if(getModulateGlobalColor()) { - col.modulateFromColor (_Color, pIM->getGlobalColorForContent()); + col.modulateFromColor (_Color, CWidgetManager::getInstance()->getGlobalColorForContent()); } else { col= _Color; - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } /*if (_InheritGCAlpha) diff --git a/code/ryzom/client/src/interface_v3/view_radar.cpp b/code/ryzom/client/src/interface_v3/view_radar.cpp index 06382059d..0a4ee8113 100644 --- a/code/ryzom/client/src/interface_v3/view_radar.cpp +++ b/code/ryzom/client/src/interface_v3/view_radar.cpp @@ -153,9 +153,9 @@ void CViewRadar::draw () CRGBA col = entity->getColor(); if(getModulateGlobalColor()) - col.modulateFromColor (col, pIM->getGlobalColorForContent()); + col.modulateFromColor (col, CWidgetManager::getInstance()->getGlobalColorForContent()); else - col.A = (uint8)(((sint32)col.A*((sint32)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint32)col.A*((sint32)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); // Select the icon to display and draw it uint spotId = CNPCIconCache::getInstance().getNPCIcon(entity).getSpotId(); diff --git a/code/ryzom/client/src/interface_v3/view_text.cpp b/code/ryzom/client/src/interface_v3/view_text.cpp index 5563b3799..895aadda6 100644 --- a/code/ryzom/client/src/interface_v3/view_text.cpp +++ b/code/ryzom/client/src/interface_v3/view_text.cpp @@ -442,7 +442,7 @@ void CViewText::draw () CRGBA col, shcol; if(getModulateGlobalColor()) { - CRGBA gcfc = pIM->getGlobalColorForContent(); + CRGBA gcfc = CWidgetManager::getInstance()->getGlobalColorForContent(); col.modulateFromColor (_Color, gcfc); shcol.modulateFromColor (_ShadowColor, gcfc); } @@ -450,8 +450,8 @@ void CViewText::draw () { col = _Color; shcol = _ShadowColor; - col.A = (uint8)(((sint)col.A*((sint)pIM->getGlobalColorForContent().A+1))>>8); - shcol.A = (uint8)(((sint)shcol.A*((sint)pIM->getGlobalColorForContent().A+1))>>8); + col.A = (uint8)(((sint)col.A*((sint)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); + shcol.A = (uint8)(((sint)shcol.A*((sint)CWidgetManager::getInstance()->getGlobalColorForContent().A+1))>>8); } diff --git a/code/ryzom/client/src/interface_v3/widget_manager.cpp b/code/ryzom/client/src/interface_v3/widget_manager.cpp index 01b10580b..47b1166ff 100644 --- a/code/ryzom/client/src/interface_v3/widget_manager.cpp +++ b/code/ryzom/client/src/interface_v3/widget_manager.cpp @@ -16,13 +16,16 @@ #include "widget_manager.h" #include "interface_group.h" -#include "group_container.h" #include "group_modal.h" +#include "group_container.h" + +#include "nel/gui/db_manager.h" #include "nel/gui/view_renderer.h" #include "view_pointer_base.h" #include "group_editbox_base.h" #include "ctrl_draggable.h" +#include "interface_options.h" CWidgetManager* CWidgetManager::instance = NULL; std::string CWidgetManager::_CtrlLaunchingModalId= "ctrl_launch_modal"; @@ -948,6 +951,8 @@ void CWidgetManager::reset() _OldCaptureKeyboard = NULL; setCapturePointerLeft(NULL); setCapturePointerRight(NULL); + + resetColorProps(); } @@ -1310,11 +1315,79 @@ void CWidgetManager::unMakeWindow(CInterfaceGroup *group, bool noWarning) } } +// ------------------------------------------------------------------------------------------------ +void CWidgetManager::setGlobalColor (NLMISC::CRGBA col) +{ + if (!_RProp) + { + _RProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:R"); + _GProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:G"); + _BProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:B"); + _AProp = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:COLOR:A"); + } + _RProp ->setValue32 (col.R); + _GProp ->setValue32 (col.G); + _BProp ->setValue32 (col.B); + _AProp ->setValue32 (col.A); + + _GlobalColor = col; + + // set the global color for content (the same with modulated alpha) + _GlobalColorForContent = _GlobalColor; + _GlobalColorForContent.A = (uint8) (( (uint16) _GlobalColorForContent.A * (uint16) _ContentAlpha) >> 8); +} + +// *************************************************************************** +void CWidgetManager::setContentAlpha(uint8 alpha) +{ + _ContentAlpha = alpha; + // update alpha of global color + _GlobalColorForContent.A = alpha;/*(uint8) (( (uint16) _GlobalColor.A * (uint16) _ContentAlpha) >> 8);*/ +} + +void CWidgetManager::resetColorProps() +{ + _RProp = NULL; + _GProp = NULL; + _BProp = NULL; + _AProp = NULL; +} + +// ------------------------------------------------------------------------------------------------ +CInterfaceOptions* CWidgetManager::getOptions( const std::string &name ) +{ + std::map< std::string, NLMISC::CSmartPtr< CInterfaceOptions > >::iterator it = _OptionsMap.find( name ); + if( it == _OptionsMap.end() ) + return NULL; + else + return it->second; +} + +void CWidgetManager::addOptions( std::string name, CInterfaceOptions *options ) +{ + _OptionsMap.insert( std::map< std::string, CInterfaceOptions* >::value_type( name, options ) ); +} + +void CWidgetManager::removeOptions( std::string name ) +{ + _OptionsMap.erase( name ); +} + +void CWidgetManager::removeAllOptions() +{ + _OptionsMap.clear(); +} CWidgetManager::CWidgetManager() { _Pointer = NULL; curContextHelp = NULL; + + resetColorProps(); + + _GlobalColor = NLMISC::CRGBA(255,255,255,255); + _GlobalColorForContent = _GlobalColor; + _ContentAlpha = 255; } CWidgetManager::~CWidgetManager() diff --git a/code/ryzom/client/src/interface_v3/widget_manager.h b/code/ryzom/client/src/interface_v3/widget_manager.h index 998709032..cf2716eed 100644 --- a/code/ryzom/client/src/interface_v3/widget_manager.h +++ b/code/ryzom/client/src/interface_v3/widget_manager.h @@ -28,6 +28,12 @@ class CCtrlBase; class CViewBase; class CInterfaceGroup; class CViewPointerBase; +class CInterfaceOptions; + +namespace NLMISC +{ + class CCDBNodeLeaf; +} class IParser { @@ -267,6 +273,22 @@ public: // Remove a group from the windows list of its master group void unMakeWindow( CInterfaceGroup *group, bool noWarning = false ); + void setGlobalColor( NLMISC::CRGBA col ); + NLMISC::CRGBA getGlobalColor() const{ return _GlobalColor; } + + void setContentAlpha( uint8 alpha ); + uint8 getContentAlpha() const{ return _ContentAlpha; } + + NLMISC::CRGBA getGlobalColorForContent() const { return _GlobalColorForContent; } + void setGlobalColorForContent( NLMISC::CRGBA col ){ _GlobalColorForContent = col; } + void resetColorProps(); + + /// Get options by name + CInterfaceOptions* getOptions( const std::string &optName ); + void addOptions( std::string name, CInterfaceOptions *options ); + void removeOptions( std::string name ); + void removeAllOptions(); + static IParser *parser; private: @@ -280,6 +302,9 @@ private: NLMISC::CRefPtr< CCtrlBase > curContextHelp; CViewPointerBase *_Pointer; + // Options description + std::map< std::string, NLMISC::CSmartPtr< CInterfaceOptions > > _OptionsMap; + NLMISC::CRefPtr< CInterfaceGroup > _WindowUnder; // Capture @@ -296,6 +321,15 @@ private: // view that should be notified from clock msg std::vector _ClockMsgTargets; + + NLMISC::CRGBA _GlobalColor; + NLMISC::CRGBA _GlobalColorForContent; + uint8 _ContentAlpha; + + NLMISC::CCDBNodeLeaf *_RProp; + NLMISC::CCDBNodeLeaf *_GProp; + NLMISC::CCDBNodeLeaf *_BProp; + NLMISC::CCDBNodeLeaf *_AProp; }; #endif