summaryrefslogtreecommitdiff
path: root/src/transparency.h
diff options
context:
space:
mode:
authorbelugas <belugas@openttd.org>2007-11-10 01:17:15 +0000
committerbelugas <belugas@openttd.org>2007-11-10 01:17:15 +0000
commitf55fdfb7c42b2e2e39b165fd17f7671e14516303 (patch)
tree07b6a8f97a15f768d33fc0b7a3405373f3745b3b /src/transparency.h
parent3a84801f5563ca73c47c56f9682582abe990abb7 (diff)
downloadopenttd-f55fdfb7c42b2e2e39b165fd17f7671e14516303.tar.xz
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
-Codechange: Wrap all transparency settings in accessors, hiding the implementation -Change: Clicking "transparent building" menu will toggle Houses And Trees only. The other options can be used in the transparency gui. Initial patch by Smatz (FS#1349), with some rework by BigBB and your humble servant.
Diffstat (limited to 'src/transparency.h')
-rw-r--r--src/transparency.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/transparency.h b/src/transparency.h
new file mode 100644
index 000000000..3dae9cecc
--- /dev/null
+++ b/src/transparency.h
@@ -0,0 +1,69 @@
+/* $Id$ */
+
+/** @file transparency.h */
+
+#ifndef TRANSPARENCY_H
+#define TRANSPARENCY_H
+
+/**
+ * Transparency option bits: which position in _transparency_opt stands for which transparency.
+ * If you change the order, change the order of the ShowTransparencyToolbar() stuff in transparency_gui.cpp too.
+ * If you add or remove an option don't forget to change the transparency 'hot keys' in main_gui.cpp.
+ * If you add an option and have more then 8, change the typedef TransparencyOptionBits and
+ * the save stuff (e.g. SLE_UINT8 to SLE_UINT16) in settings.cpp .
+ */
+enum TransparencyOption {
+ TO_SIGNS = 0, ///< signs
+ TO_TREES, ///< trees
+ TO_HOUSES, ///< town buildings
+ TO_INDUSTRIES, ///< industries
+ TO_BUILDINGS, ///< player buildings - depots, stations, HQ, ...
+ TO_BRIDGES, ///< bridges
+ TO_STRUCTURES, ///< unmovable structures
+ TO_LOADING, ///< loading indicators
+ TO_END,
+};
+
+typedef byte TransparencyOptionBits; ///< transparency option bits
+extern TransparencyOptionBits _transparency_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
+ */
+static inline bool IsTransparencySet(TransparencyOption to)
+{
+ return (HASBIT(_transparency_opt, to) && _game_mode != GM_MENU);
+}
+
+/**
+ * Toggle the transparency option bit
+ *
+ * @param to the structure which transparency option is toggle
+ */
+static inline void ToggleTransparency(TransparencyOption to)
+{
+ TOGGLEBIT(_transparency_opt, to);
+}
+
+/** Toggle all transparency options (except signs) or restore the stored transparencies */
+static inline void ResetRestoreAllTransparency()
+{
+ /* backup of the original transparencies or if all transparencies false toggle them to true */
+ static TransparencyOptionBits trans_opt = ~0;
+
+ if (_transparency_opt == 0) {
+ /* no structure is transparent, so restore the old transparency if present otherwise set all true */
+ _transparency_opt = trans_opt;
+ } else {
+ /* any structure is transparent, so store current transparency settings and reset it */
+ trans_opt = _transparency_opt;
+ _transparency_opt = 0;
+ }
+
+ MarkWholeScreenDirty();
+}
+
+#endif /* TRANSPARENCY_H */