From 344eddae41a4655d7b76fdc423aaf0272194915d Mon Sep 17 00:00:00 2001 From: Erusman Date: Fri, 17 Sep 2021 06:18:48 -0700 Subject: [PATCH] Add functionality to datapad City and Guild waypoints buttons --- .../src/shared/object/ClientWaypointObject.h | 24 ++++++++++- .../src/shared/page/SwgCuiDataStorage.cpp | 42 ++++++++++++++++--- .../src/shared/page/SwgCuiDataStorage.h | 2 + 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/src/engine/client/library/clientGame/src/shared/object/ClientWaypointObject.h b/src/engine/client/library/clientGame/src/shared/object/ClientWaypointObject.h index a8ebf4af5..c409ad86f 100644 --- a/src/engine/client/library/clientGame/src/shared/object/ClientWaypointObject.h +++ b/src/engine/client/library/clientGame/src/shared/object/ClientWaypointObject.h @@ -76,6 +76,8 @@ public: static const ConstWaypointVector & getRegularWaypoints (); static const ConstWaypointVector & getPoiWaypoints (); static const ConstWaypointVector & getGroupWaypoints (); + static const ConstWaypointVector & getCityWaypoints (); + static const ConstWaypointVector & getGuildWaypoints (); static void checkWaypoints (float const deltaTime); @@ -90,6 +92,8 @@ public: bool equals (const WaypointDataBase & wd) const; bool isPoi () const; bool isGroupWaypoint () const; + bool isCityWaypoint () const; + bool isGuildWaypoint () const; bool isEntranceUsed () const; bool isEntrance () const; bool isSmallWaypoint () const; @@ -153,8 +157,10 @@ private: std::string m_appearance; StringId m_description; bool m_isPoi : 1, - m_isGroupWaypoint : 1, - m_isBuildoutWaypoint : 1; + m_isGroupWaypoint : 1, + m_isCityWaypoint : 1, + m_isGuildWaypoint : 1, + m_isBuildoutWaypoint : 1; Vector m_relativeWaypointPosition; }; @@ -201,6 +207,20 @@ inline bool ClientWaypointObject::isGroupWaypoint () const return m_isGroupWaypoint; } +//----------------------------------------------------------------------- + +inline bool ClientWaypointObject::isCityWaypoint() const +{ + return m_isCityWaypoint; +} + +//----------------------------------------------------------------------- + +inline bool ClientWaypointObject::isGuildWaypoint() const +{ + return m_isGuildWaypoint; +} + //---------------------------------------------------------------------- inline Vector const ClientWaypointObject::getWorldWaypointLocation_w() const diff --git a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.cpp b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.cpp index c4c77bdd4..5c55b7a1b 100644 --- a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.cpp +++ b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.cpp @@ -229,6 +229,8 @@ public SwgCuiContainerProviderFilter bool showObject (const ClientObject & obj) const; void setShowCurrentPlanetOnly(bool currentOnly) {m_currentPlanetOnly = currentOnly;} void setShowGroupWaypoints(bool enable) {m_showGroupWaypoints = enable;} + void setShowCityWaypoints(bool enable) {m_showCityWaypoints = enable;} + void setShowGuildWaypoints(bool enable) {m_showGuildWaypoints = enable;} void setSingleWaypointMode(bool enable) {m_singleWaypointMode = enable;} Tabs::Id m_id; @@ -236,15 +238,19 @@ public SwgCuiContainerProviderFilter private: bool m_currentPlanetOnly; bool m_showGroupWaypoints; + bool m_showCityWaypoints; + bool m_showGuildWaypoints; bool m_singleWaypointMode; }; //---------------------------------------------------------------------- -SwgCuiDataStorage::FilterWps::FilterWps () : +SwgCuiDataStorage::FilterWps::FilterWps() : m_id(Tabs::I_count), m_currentPlanetOnly(false), m_showGroupWaypoints(false), + m_showCityWaypoints(false), + m_showGuildWaypoints(false), m_singleWaypointMode(true) { } @@ -254,10 +260,7 @@ SwgCuiDataStorage::FilterWps::FilterWps () : bool SwgCuiDataStorage::FilterWps::showObject (const ClientObject & obj) const { ClientWaypointObject const * const wp = dynamic_cast(&obj); - if ( wp - && wp->isGroupWaypoint() == m_showGroupWaypoints - && ( !m_currentPlanetOnly - || wp->getPlanetName () == Game::getNonInstanceSceneId())) + if (wp && (wp->isGroupWaypoint() == m_showGroupWaypoints) && wp->isCityWaypoint() == m_showCityWaypoints && wp->isGuildWaypoint() == m_showGuildWaypoints && (!m_currentPlanetOnly || wp->getPlanetName () == Game::getNonInstanceSceneId())) return true; return false; } @@ -366,6 +369,8 @@ m_capacityBar (0), m_capacityLabel (0), m_capacityBarWp (0), m_capacityLabelWp (0), +m_buttonCityWaypoint(0), +m_buttonGuildWaypoint(0), m_buttonNewWaypoint (0), m_tabs (0), m_waypointsCurrentPlanetOnly(0), @@ -394,7 +399,8 @@ m_callbackReceiverShowGroupWaypoints(0) getCodeDataObject (TUICheckbox, m_waypointsCurrentPlanetOnly, "checkWaypointCurrentPlanetOnly"); getCodeDataObject (TUICheckbox, m_waypointsSingleWaypointMode, "checkWaypointSingleWaypointMode"); getCodeDataObject (TUICheckbox, m_waypointsOnScreen, "checkWaypointShowWaypointIndicators"); - + getCodeDataObject (TUIButton, m_buttonGuildWaypoint, "buttonGuildWaypoint"); + getCodeDataObject (TUIButton, m_buttonCityWaypoint, "buttonCityWaypoint"); m_waypointsCurrentPlanetOnly->SetChecked(false); m_waypointsSingleWaypointMode->SetChecked(false); @@ -449,6 +455,8 @@ m_callbackReceiverShowGroupWaypoints(0) registerMediatorObject (*m_waypointsCurrentPlanetOnly, true); registerMediatorObject (*m_waypointsSingleWaypointMode, true); registerMediatorObject (*m_waypointsOnScreen, true); + registerMediatorObject (*m_buttonGuildWaypoint, true); + registerMediatorObject (*m_buttonCityWaypoint, true); setState (MS_closeable); setState (MS_closeDeactivates); @@ -470,6 +478,8 @@ SwgCuiDataStorage::~SwgCuiDataStorage () m_capacityBarWp = 0; m_capacityLabelWp = 0; m_tabs = 0; + m_buttonCityWaypoint = 0; + m_buttonGuildWaypoint = 0; m_buttonNewWaypoint = 0; m_waypointsCurrentPlanetOnly = 0; m_waypointsSingleWaypointMode = 0; @@ -600,6 +610,7 @@ void SwgCuiDataStorage::performDeactivate () void SwgCuiDataStorage::OnButtonPressed( UIWidget *context ) { + bool updateContainer = false; if(context == m_buttonNewWaypoint) { ClientObject * const player = Game::getClientPlayer (); @@ -608,6 +619,24 @@ void SwgCuiDataStorage::OnButtonPressed( UIWidget *context ) ClientWaypointObject::requestWaypoint (Unicode::emptyString, player->getPosition_w ()); } } + else if (context == m_buttonCityWaypoint) + { + m_filterWps->setShowCityWaypoints(true); + updateContainer = true; + + } + else if (context == m_buttonGuildWaypoint) + { + m_filterWps->setShowGuildWaypoints(true); + updateContainer = true; + } + + if (updateContainer) + { + m_containerProviderWaypoints->updateObjectVector(); + m_containerProviderWaypoints->setContentDirty(true); + m_containerProviderWaypoints->setProviderDirty(true); + } } //---------------------------------------------------------------------- @@ -649,6 +678,7 @@ void SwgCuiDataStorage::OnCheckboxUnset (UIWidget * context) if (context == m_waypointsCurrentPlanetOnly) { m_filterWps->setShowCurrentPlanetOnly(m_waypointsCurrentPlanetOnly->IsChecked()); + updateContainer = true; } else if (context == m_waypointsSingleWaypointMode) { diff --git a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.h b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.h index e6c5ebd9b..36c107334 100644 --- a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.h +++ b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiDataStorage.h @@ -83,6 +83,8 @@ private: UIText * m_capacityLabel; UIPage * m_capacityBarWp; UIText * m_capacityLabelWp; + UIButton * m_buttonCityWaypoint; + UIButton * m_buttonGuildWaypoint; UIButton * m_buttonNewWaypoint; UITabbedPane * m_tabs; UICheckbox * m_waypointsCurrentPlanetOnly;