Skip to main content

TimeFormatterComponent Class

Component that formats elapsed or remaining time into a display string. More...

Declaration

class helios::engine::modules::ui::layout::components::TimeFormatterComponent { ... }

Public Member Functions Index

voidsetFormat (std::string format, const TimeDisplayMode displayMode=TimeDisplayMode::Elapsed)

Sets the format string and display mode. More...

std::stringformat (const float elapsed, const float duration=0) const

Formats the given time values into a display string. More...

Private Member Attributes Index

std::stringformat_

The format string used by std::vformat (expects minutes, seconds). More...

TimeDisplayModedisplayMode_ = TimeDisplayMode::Elapsed

The active display mode (elapsed or remaining). More...

Description

Component that formats elapsed or remaining time into a display string.

Holds a format string compatible with std::vformat and a TimeDisplayMode. The format string receives two integer arguments: minutes and seconds.

See Also

TimeDisplayMode

See Also

GameTimer2UiTextUpdateSystem

Definition at line 27 of file TimeFormatterComponent.ixx.

Public Member Functions

format()

std::string helios::engine::modules::ui::layout::components::TimeFormatterComponent::format (const float elapsed, const float duration=0)
inline

Formats the given time values into a display string.

If duration is zero, the display mode falls back to Elapsed.

Parameters
elapsed

Elapsed time in seconds.

duration

Total duration in seconds. Zero disables Remaining mode.

Returns

The formatted time string.

Definition at line 66 of file TimeFormatterComponent.ixx.

66 std::string format(const float elapsed, const float duration = 0) const {
67
68 if (duration == 0) {
69 displayMode_ = TimeDisplayMode::Elapsed;
70 }
71
72 switch (displayMode_) {
74 const auto minutes = static_cast<unsigned int>(std::max(0.0f, elapsed)) / 60;
75 const auto seconds = static_cast<unsigned int>(std::max(0.0f, elapsed)) % 60;
76 return std::vformat(format_, std::make_format_args(minutes, seconds));
77 }
78
80 const auto minutes = static_cast<unsigned int>(std::max(0.0f, duration - elapsed)) / 60;
81 const auto seconds = static_cast<unsigned int>(std::max(0.0f, duration - elapsed)) % 60;
82 return std::vformat(format_, std::make_format_args(minutes, seconds));
83 }
84 }
85
86 std::unreachable();
87 }

References helios::engine::modules::ui::layout::types::Elapsed and helios::engine::modules::ui::layout::types::Remaining.

Referenced by setFormat.

setFormat()

void helios::engine::modules::ui::layout::components::TimeFormatterComponent::setFormat (std::string format, const TimeDisplayMode displayMode=TimeDisplayMode::Elapsed)
inline

Sets the format string and display mode.

Parameters
format

A std::vformat-compatible string (e.g. "{:02d}:{:02d}").

displayMode

The display mode to use. Defaults to Elapsed.

Definition at line 51 of file TimeFormatterComponent.ixx.

51 void setFormat(std::string format, const TimeDisplayMode displayMode = TimeDisplayMode::Elapsed) {
52 format_ = std::move(format);
53 displayMode_ = displayMode;
54 }

References helios::engine::modules::ui::layout::types::Elapsed and format.

Private Member Attributes

displayMode_

TimeDisplayMode helios::engine::modules::ui::layout::components::TimeFormatterComponent::displayMode_ = TimeDisplayMode::Elapsed
mutable

The active display mode (elapsed or remaining).

Declared mutable because format() may fall back to Elapsed when duration is zero.

Definition at line 40 of file TimeFormatterComponent.ixx.

40 mutable TimeDisplayMode displayMode_ = TimeDisplayMode::Elapsed;

format_

std::string helios::engine::modules::ui::layout::components::TimeFormatterComponent::format_

The format string used by std::vformat (expects minutes, seconds).

Definition at line 32 of file TimeFormatterComponent.ixx.

32 std::string format_;

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


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.