From febc5150c9ee3f2df2a1cad8ef527d9541697b22 Mon Sep 17 00:00:00 2001 From: smatz Date: Thu, 3 Apr 2008 19:55:40 +0000 Subject: (svn r12547) -Feature: invisibility options to make objects invisible instead of transparent --- src/transparency.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/transparency.h') 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 @@ -40,6 +41,17 @@ static inline bool IsTransparencySet(TransparencyOption to) return (HasBit(_transparency_opt, to) && _game_mode != GM_MENU); } +/** + * 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 * @@ -50,6 +62,34 @@ static inline void ToggleTransparency(TransparencyOption to) ToggleBit(_transparency_opt, 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 * -- cgit v1.2.3-54-g00ecf