(svn r12547) -Feature: invisibility options to make objects invisible instead of transparent

This commit is contained in:
smatz
2008-04-03 19:55:40 +00:00
parent 83f9e141e0
commit febc5150c9
21 changed files with 189 additions and 31 deletions

View File

@@ -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
*