HoverRace  2.0
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Attributes | List of all members
HoverRace::Display::HudDecor Class Reference

Base view model for elements of the heads-up display. More...

#include <HudDecor.h>

+ Inheritance diagram for HoverRace::Display::HudDecor:

Classes

struct  Props
 

Public Types

using sizeChangedSignal_t = boost::signals2::signal< void(const Vec2 &)>
 
- Public Types inherited from HoverRace::Display::UiViewModel
enum  Alignment {
  Alignment::NW, Alignment::N, Alignment::NE, Alignment::E,
  Alignment::SE, Alignment::S, Alignment::SW, Alignment::W,
  Alignment::CENTER
}
 Imagine the component pinned to the container with a thumbtack. More...
 
using focusRelinquishedSignal_t = boost::signals2::signal< void(UiViewModel &, const Control::Nav &)>
 
using focusRequestedSignal_t = boost::signals2::signal< void(UiViewModel &)>
 

Public Member Functions

 HudDecor (Display &display)
 Constructor. More...
 
virtual ~HudDecor ()
 
virtual void Advance (Util::OS::timestamp_t)
 
const Vec2GetHudScale () const
 
Player::PlayerGetPlayer () const
 
sizeChangedSignal_tGetSizeChangedSignal ()
 
Model::TrackGetTrack () const
 
void SetHudScale (const Vec2 &hudScale)
 Sets HUD scale factor. More...
 
void SetPlayer (std::shared_ptr< Player::Player > player)
 Change the target player for this HUD element. More...
 
void SetTrack (std::shared_ptr< Model::Track > track)
 Change the track currently being played. More...
 
std::shared_ptr< Player::PlayerSharePlayer () const
 
std::shared_ptr< Model::TrackShareTrack () const
 
- Public Member Functions inherited from HoverRace::Display::Container
 Container (Display &display, uiLayoutFlags_t layoutFlags=0)
 
 Container (Display &display, const Vec2 &size, bool clip=true, uiLayoutFlags_t layoutFlags=0)
 
virtual ~Container ()
 
void Clear () override
 Remove all child elements. More...
 
void DropFocus () override
 Force this widget to give up focus, if it is currently focused. More...
 
template<class T , class... Args>
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type NewChild (Args &&...args)
 Create and append a new child widget to the end of the list. More...
 
bool OnAction () override
 
bool OnNavigate (const Control::Nav &nav) override
 
template<class T >
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type RemoveChild (const std::shared_ptr< T > &child)
 Remove a child element. More...
 
template<class T >
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type ReorderChild (const std::shared_ptr< T > &child, size_t idx)
 Move a widget to a different position in the list. More...
 
void Reserve (size_t capacity) override
 Increase the capacity of the of this container. More...
 
bool TryFocus (const Control::Nav &nav=Control::Nav::NEUTRAL) override
 Attempts to give this widget focus. More...
 
- Public Member Functions inherited from HoverRace::Display::BaseContainer
 BaseContainer (Display &display, uiLayoutFlags_t layoutFlags=0)
 Constructor for an unsized container without clipping. More...
 
 BaseContainer (Display &display, const Vec2 &size, bool clip=true, uiLayoutFlags_t layoutFlags=0)
 Constructor for a sized container. More...
 
virtual ~BaseContainer ()
 
void AttachView (Display &disp) override
 
template<class Fn >
void ForEachChild (Fn fn) const
 Iterate over each child widget. More...
 
template<class Fn >
void ForEachVisibleChild (Fn fn) const
 Iterate over each visible child widget. More...
 
const Vec2GetChildOffset () const
 Retrieve the offset to the position of the child widgets. More...
 
double GetOpacity () const
 Retrieve the opacity. More...
 
const Vec2GetSize () const
 Retrieve the size of the container. More...
 
bool IsClip () const
 Check if child elements are clipped to the container bounds. More...
 
bool IsEmpty () const
 Check if this container is devoid of child widgets. More...
 
bool IsVisible () const
 Check if the children of this container are shown. More...
 
Vec3 Measure () override
 Calculate the size of the component. More...
 
bool OnMouseMoved (const Vec2 &pos) override
 
bool OnMousePressed (const Control::Mouse::Click &click) override
 
bool OnMouseReleased (const Control::Mouse::Click &click) override
 
bool OnMouseScrolled (const Control::Mouse::Scroll &scroll) override
 
void SetClip (bool clip)
 Set whether child elements are clipped to the container bounds. More...
 
void SetOpacity (double opacity)
 Set the opacity of the container. More...
 
void SetSize (const Vec2 &size)
 Set the size of the container. More...
 
void SetSize (double w, double h)
 Convenience function for SetSize(const Vec2&). More...
 
void SetVisible (bool visible)
 Sets whether the widgets in this container are visible. More...
 
void ShrinkWrap ()
 Resize the container to the minimum size that will fit all of the child elements. More...
 
- Public Member Functions inherited from HoverRace::Display::UiViewModel
 UiViewModel (uiLayoutFlags_t layoutFlags=0)
 
virtual ~UiViewModel ()
 
Vec2 GetAlignedPos (const Vec2 &pos, double w, double h) const
 Retrieve an arbitrary position adjusted by the current alignment. More...
 
Vec2 GetAlignedPos (double w, double h) const
 Retrieve the position adjusted by the current alignment. More...
 
Alignment GetAlignment () const
 Retrieve the alignment of the component. More...
 
focusRelinquishedSignal_tGetFocusRelinquishedSignal ()
 
focusRequestedSignal_tGetFocusRequestedSignal ()
 
uiLayoutFlags_t GetLayoutFlags () const
 Retrieve the layout flags. More...
 
const Vec2GetPos () const
 Get the position of the component. More...
 
const Vec2GetTranslation () const
 Retrieves the position translation. More...
 
bool IsFocused () const
 Check if this widget currently has input focus. More...
 
uiLayoutFlags_t IsLayoutFloating () const
 
uiLayoutFlags_t IsLayoutUnscaled () const
 
void RequestFocus ()
 Attempt to hand over the input focus to this widget. More...
 
void SetAlignment (Alignment alignment)
 Set the alignment of the component. More...
 
void SetPos (const Vec2 &pos)
 Set the position of the component. More...
 
void SetPos (double x, double y)
 Convenience function for SetPos(const Vec2&). More...
 
void SetTranslation (const Vec2 &translation)
 Sets the position translation. More...
 
void SetTranslation (double x, double y)
 Convenience function for SetTranslation(const Vec2&). More...
 
- Public Member Functions inherited from HoverRace::Display::ViewModel
 ViewModel ()
 
virtual ~ViewModel ()
 
ViewGetView () const
 
void PrepareRender ()
 
void Render ()
 
void SetView (std::unique_ptr< View > &&view)
 

Protected Member Functions

void FireModelUpdate (int prop) override
 Indicate that a model property has changed. More...
 
virtual void OnHudRescaled (const Vec2 &hudScale)
 Called when the containing HUD changes the scaling factor (that is, when the viewport changes). More...
 
- Protected Member Functions inherited from HoverRace::Display::Container
void OnChildRelinquishedFocus (UiViewModel &child, const Control::Nav &nav) override
 Called when a child widget passes input focus to another widget. More...
 
void OnChildRequestedFocus (UiViewModel &child) override
 Called when a child widget requests input focus. More...
 
- Protected Member Functions inherited from HoverRace::Display::BaseContainer
children_tGetChildren ()
 
template<class T , class... Args>
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type NewChild (Args &&...args)
 Create and append a new child widget to the end of the list. More...
 
template<typename T >
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type RemoveChild (const std::shared_ptr< T > &child)
 Remove a child element. More...
 
template<class T >
std::enable_if< std::is_base_of< UiViewModel, T >::value, std::shared_ptr< T > >::type ReorderChild (const std::shared_ptr< T > &child, size_t idx)
 Move a widget to a different position in the list. More...
 
void SetChildOffset (const Vec2 &offset)
 Sets the position offset of child widgets. More...
 
bool TestHit (const Vec2 &pos)
 Check if the coordinates of an event are within the bounds of this component. More...
 
- Protected Member Functions inherited from HoverRace::Display::UiViewModel
void RelinquishFocus (const Control::Nav &nav)
 Voluntarily give up input focus, passing it on to the next widget. More...
 
void SetFocused (bool focused)
 Set the focused state. More...
 
- Protected Member Functions inherited from HoverRace::Display::ViewModel
template<class T >
void AttachViewDynamic (Display &disp, T *self)
 
virtual void Layout ()
 Adjust the size and position of any child elements. More...
 
void RequestLayout ()
 Indicate that the current layout is out-of-date and needs to be adjusted. More...
 

Private Types

using SUPER = Container
 

Private Attributes

Vec2 hudScale
 
std::shared_ptr< Player::Playerplayer
 
sizeChangedSignal_t sizeChangedSignal
 
std::shared_ptr< Model::Tracktrack
 

Additional Inherited Members

- Protected Types inherited from HoverRace::Display::BaseContainer
using children_t = std::vector< std::unique_ptr< Child >>
 
- Protected Attributes inherited from HoverRace::Display::BaseContainer
Displaydisplay
 

Detailed Description

Base view model for elements of the heads-up display.

Author
Michael Imamura
See also
Hud

Member Typedef Documentation

using HoverRace::Display::HudDecor::sizeChangedSignal_t = boost::signals2::signal<void(const Vec2&)>

Constructor & Destructor Documentation

HoverRace::Display::HudDecor::HudDecor ( Display display)

Constructor.

Parameters
displayThe display child elements will be attached to.
virtual HoverRace::Display::HudDecor::~HudDecor ( )
inlinevirtual

Member Function Documentation

virtual void HoverRace::Display::HudDecor::Advance ( Util::OS::timestamp_t  )
inlinevirtual
void HoverRace::Display::HudDecor::FireModelUpdate ( int  prop)
overrideprotectedvirtual

Indicate that a model property has changed.

If a view is attached, it will be notified.

Parameters
propThe model-specific ID of the property that changed.

Reimplemented from HoverRace::Display::ViewModel.

Reimplemented in HoverRace::Display::Minimap.

const Vec2& HoverRace::Display::HudDecor::GetHudScale ( ) const
inline
Player::Player* HoverRace::Display::HudDecor::GetPlayer ( ) const
inline
sizeChangedSignal_t& HoverRace::Display::HudDecor::GetSizeChangedSignal ( )
inline
Model::Track* HoverRace::Display::HudDecor::GetTrack ( ) const
inline
virtual void HoverRace::Display::HudDecor::OnHudRescaled ( const Vec2 hudScale)
inlineprotectedvirtual

Called when the containing HUD changes the scaling factor (that is, when the viewport changes).

Each HUD element should initially assume (in the constructor) that there is no scaling factor. It is up to each HUD element to decide whether it should be scaled when the viewport changes, and by how much in relation to the scaling factor.

Parameters
hudScaleThe new scaling factor.

Reimplemented in HoverRace::Display::Counter, HoverRace::Display::Chronometer, HoverRace::Display::Minimap, HoverRace::Display::FuelGauge, HoverRace::Display::Speedometer, and HoverRace::Display::HudText.

void HoverRace::Display::HudDecor::SetHudScale ( const Vec2 hudScale)

Sets HUD scale factor.

Parameters
hudScaleThe HUD scale.
void HoverRace::Display::HudDecor::SetPlayer ( std::shared_ptr< Player::Player player)

Change the target player for this HUD element.

Parameters
playerThe player (may be nullptr).
void HoverRace::Display::HudDecor::SetTrack ( std::shared_ptr< Model::Track track)

Change the track currently being played.

Parameters
trackThe track (may not be nullptr).
std::shared_ptr<Player::Player> HoverRace::Display::HudDecor::SharePlayer ( ) const
inline
std::shared_ptr<Model::Track> HoverRace::Display::HudDecor::ShareTrack ( ) const
inline

Member Data Documentation

Vec2 HoverRace::Display::HudDecor::hudScale
private
std::shared_ptr<Player::Player> HoverRace::Display::HudDecor::player
private
sizeChangedSignal_t HoverRace::Display::HudDecor::sizeChangedSignal
private
std::shared_ptr<Model::Track> HoverRace::Display::HudDecor::track
private

The documentation for this class was generated from the following files: