Files @ r11049:6eb2c87ed64a
Branch filter:

Location: cpp/openttd-patchpack/source/src/transparency.h - annotation

peter1138
(svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
r7849:cfd99cb69695
r7849:cfd99cb69695
r9111:983de9c5a848
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r8123:dde0a9a84019
r8123:dde0a9a84019
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r10207:a1fc2f2a33db
r7849:cfd99cb69695
r7849:cfd99cb69695
r8528:2bfd692a054f
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r8528:2bfd692a054f
r7849:cfd99cb69695
r8527:747e853197d7
r8806:1fc0d9e1c2bf
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7928:a80e7e05d6c5
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r7849:cfd99cb69695
r7849:cfd99cb69695
r8527:747e853197d7
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7932:6b853bdb39ea
r7849:cfd99cb69695
r7849:cfd99cb69695
r8527:747e853197d7
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8806:1fc0d9e1c2bf
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r7849:cfd99cb69695
r7849:cfd99cb69695
r8527:747e853197d7
r8527:747e853197d7
r8527:747e853197d7
r8658:a4238b2050b2
r7849:cfd99cb69695
r8527:747e853197d7
r8527:747e853197d7
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
r7849:cfd99cb69695
/* $Id$ */

/** @file transparency.h Functions related to transparency. */

#ifndef TRANSPARENCY_H
#define TRANSPARENCY_H

#include "gfx_func.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.
 */
enum TransparencyOption {
	TO_SIGNS = 0,  ///< signs
	TO_TREES,      ///< trees
	TO_HOUSES,     ///< town buildings
	TO_INDUSTRIES, ///< industries
	TO_BUILDINGS,  ///< company buildings - depots, stations, HQ, ...
	TO_BRIDGES,    ///< bridges
	TO_STRUCTURES, ///< unmovable structures
	TO_CATENARY,   ///< catenary
	TO_LOADING,    ///< loading indicators
	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
 */
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)
{
	ToggleBit(_transparency_lock, to);
}

/** Set or clear all non-locked transparency options */
static inline void ResetRestoreAllTransparency()
{
	/* if none of the non-locked options are set */
	if ((_transparency_opt & ~_transparency_lock) == 0) {
		/* set all non-locked options */
		_transparency_opt |= GB(~_transparency_lock, 0, TO_END);
	} else {
		/* clear all non-locked options */
		_transparency_opt &= _transparency_lock;
	}

	MarkWholeScreenDirty();
}

#endif /* TRANSPARENCY_H */