Files
@ r17167:68f47a8db1b5
Branch filter:
Location: cpp/openttd-patchpack/source/src/transparency.h - annotation
r17167:68f47a8db1b5
3.9 KiB
text/x-c
(svn r21916) -Fix [FS#4442]: the minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to "fail". Make sure that the minimum speed always overrules the maximum speed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | r7849:cfd99cb69695 r7849:cfd99cb69695 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r7849:cfd99cb69695 r7849:cfd99cb69695 r7849:cfd99cb69695 r7849:cfd99cb69695 r8123:dde0a9a84019 r14201:353d41c4bde7 r14241:a73bb6773a2c 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 r15734:ae8e2e185874 r8528:2bfd692a054f r7849:cfd99cb69695 r7849:cfd99cb69695 r7849:cfd99cb69695 r7849:cfd99cb69695 r8528:2bfd692a054f r7849:cfd99cb69695 r8527:747e853197d7 r8806:1fc0d9e1c2bf r15520:98d968d59e96 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$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file transparency.h Functions related to transparency. */
#ifndef TRANSPARENCY_H
#define TRANSPARENCY_H
#include "gfx_func.h"
#include "openttd.h"
#include "core/bitmath_func.hpp"
/**
* 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, ///< other objects such as transmitters and lighthouses
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;
extern byte _display_opt; ///< What do we want to draw/do?
/**
* 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 */
|