|
@@ -25,12 +25,13 @@ enum TransparencyOption {
|
|
|
TO_END,
|
|
|
};
|
|
|
|
|
|
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
|
|
|
* and if we aren't in the game menu (there's never transparency)
|
|
|
*
|
|
|
* @param to the structure which transparency option is ask for
|
|
@@ -38,22 +39,61 @@ extern TransparencyOptionBits _transpare
|
|
|
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
|
|
|
*
|
|
|
* @param to the transparency option to be toggled
|
|
|
*/
|
|
|
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
|
|
|
*
|
|
|
* @param to the transparency option to be locked or unlocked
|
|
|
*/
|
|
|
static inline void ToggleTransparencyLock(TransparencyOption to)
|
|
|
{
|