src/transparency.h
branchnoai
changeset 9869 6404afe43575
parent 9826 9707ad4c9b60
child 10455 22c441f5adf9
--- a/src/transparency.h	Sun Apr 06 14:12:19 2008 +0000
+++ b/src/transparency.h	Sun Apr 06 23:07:42 2008 +0000
@@ -28,6 +28,7 @@
 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 @@
 }
 
 /**
+ * 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 @@
 }
 
 /**
+ * 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