diff options
Diffstat (limited to 'src/transparency.h')
-rw-r--r-- | src/transparency.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/transparency.h b/src/transparency.h index eb19d6938..35d8cbde7 100644 --- a/src/transparency.h +++ b/src/transparency.h @@ -28,6 +28,7 @@ enum TransparencyOption { typedef uint TransparencyOptionBits; ///< transparency option bits extern TransparencyOptionBits _transparency_opt; extern TransparencyOptionBits _transparency_lock; +extern TransparencyOptionBits _invisibility_opt; /** * Check if the transparency option bit is set @@ -41,6 +42,17 @@ static inline bool IsTransparencySet(TransparencyOption to) } /** + * Check if the invisibility option bit is set + * and if we aren't in the game menu (there's never transparency) + * + * @param to the structure which invisibility option is ask for + */ +static inline bool IsInvisibilitySet(TransparencyOption to) +{ + return (HasBit(_transparency_opt & _invisibility_opt, to) && _game_mode != GM_MENU); +} + +/** * Toggle the transparency option bit * * @param to the transparency option to be toggled @@ -51,6 +63,34 @@ static inline void ToggleTransparency(TransparencyOption to) } /** + * Toggle the invisibility option bit + * + * @param to the structure which invisibility option is toggle + */ +static inline void ToggleInvisibility(TransparencyOption to) +{ + ToggleBit(_invisibility_opt, to); +} + +/** + * Toggles between invisible and solid state. + * If object is transparent, then it is made invisible. + * Used by the keyboard shortcuts. + * + * @param to the object type which invisibility option to toggle + */ +static inline void ToggleInvisibilityWithTransparency(TransparencyOption to) +{ + if (IsInvisibilitySet(to)) { + ClrBit(_invisibility_opt, to); + ClrBit(_transparency_opt, to); + } else { + SetBit(_invisibility_opt, to); + SetBit(_transparency_opt, to); + } +} + +/** * Toggle the transparency lock bit * * @param to the transparency option to be locked or unlocked |