diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-01-13 23:42:17 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-01-13 23:42:17 +0100 |
| commit | 5734a139d3f218972b5ebaff0e51167770352bcf (patch) | |
| tree | adae3fee4a9cca191bd6e5903067964841da99bf /src/nes/util/button-mask.hh | |
| parent | a2edbedb520f2ada936c00308cc6dfd75717b0d8 (diff) | |
finish ui
Diffstat (limited to 'src/nes/util/button-mask.hh')
| -rw-r--r-- | src/nes/util/button-mask.hh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/nes/util/button-mask.hh b/src/nes/util/button-mask.hh new file mode 100644 index 0000000..b010b9e --- /dev/null +++ b/src/nes/util/button-mask.hh @@ -0,0 +1,43 @@ +#pragma once + +#include <cstdint> + +namespace nes +{ + class button_mask + { + std::uint8_t raw_value_{ 0 }; + + public: + constexpr explicit button_mask() = default; + + static constexpr auto from_raw_value(std::uint8_t const raw_value) -> button_mask + { + return button_mask{ raw_value }; + } + + constexpr auto add(button_mask const other) -> void { raw_value_ |= other.raw_value_; } + constexpr auto remove(button_mask const other) -> void { raw_value_ ^= other.raw_value_; } + constexpr auto contains(button_mask const other) const -> bool { return (raw_value_ & other.raw_value_) == other.raw_value_; } + constexpr auto is_empty() const -> bool { return raw_value_ == 0; } + constexpr auto get_raw_value() const -> std::uint8_t { return raw_value_; } + + private: + constexpr explicit button_mask(std::uint8_t const raw_value) + : raw_value_{ raw_value } + { + } + }; + + namespace buttons + { + static constexpr auto a = button_mask::from_raw_value(1 << 0); + static constexpr auto b = button_mask::from_raw_value(1 << 1); + static constexpr auto select = button_mask::from_raw_value(1 << 2); + static constexpr auto start = button_mask::from_raw_value(1 << 3); + static constexpr auto up = button_mask::from_raw_value(1 << 4); + static constexpr auto down = button_mask::from_raw_value(1 << 5); + static constexpr auto left = button_mask::from_raw_value(1 << 6); + static constexpr auto right = button_mask::from_raw_value(1 << 7); + } // namespace buttons +} // namespace nes
\ No newline at end of file |
