summaryrefslogtreecommitdiff
path: root/src/transparency.h
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2008-04-03 19:55:40 +0000
committersmatz <smatz@openttd.org>2008-04-03 19:55:40 +0000
commitfebc5150c9ee3f2df2a1cad8ef527d9541697b22 (patch)
tree6e5ae7f6b1b5f40dbc7a0e75f50db327a96a8b37 /src/transparency.h
parent83f9e141e038d1564ca2ed9d2ff034afbc948dbc (diff)
downloadopenttd-febc5150c9ee3f2df2a1cad8ef527d9541697b22.tar.xz
(svn r12547) -Feature: invisibility options to make objects invisible instead of transparent
Diffstat (limited to 'src/transparency.h')
-rw-r--r--src/transparency.h40
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