Files
@ r5222:671cdc6f4c1e
Branch filter:
Location: cpp/openttd-patchpack/source/depot.h - annotation
r5222:671cdc6f4c1e
3.1 KiB
text/x-c
(svn r7337) -Feature: [win32] Add font selection by specifying a font-name, ala Fontconfig. Pretty
messy if you ask me, but this is what you get when MS hides the font API in the deepest
depths... thanks Rubidium for testing.
messy if you ask me, but this is what you get when MS hides the font API in the deepest
depths... thanks Rubidium for testing.
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 | r2186:5ee653b1b5e1 r2186:5ee653b1b5e1 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r2085:757cdc338c24 r4549:76b9213799ac r2085:757cdc338c24 r3147:5edf25fbd66a r5216:bdd3aa57475e r1330:62eaa061ec97 r2153:b45e3461c6c4 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r3346:134319cc6f99 r4388:6e13905f3259 r1313:da473558c9d7 r1313:da473558c9d7 r5216:bdd3aa57475e r1313:da473558c9d7 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4388:6e13905f3259 r4346:fa4ac6b6f852 r4388:6e13905f3259 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4388:6e13905f3259 r4638:2cf83a5d0131 r4638:2cf83a5d0131 r4973:3fee2a9483a0 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 r4388:6e13905f3259 r4388:6e13905f3259 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r4297:03b852eaea64 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r1790:aafbb2ff1ae7 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r4000:702cb45b8eab r1330:62eaa061ec97 r2049:7e26d55f0f4c r1959:c5a6f024dd5d r1330:62eaa061ec97 r2049:7e26d55f0f4c r1959:c5a6f024dd5d r1330:62eaa061ec97 r2049:7e26d55f0f4c r1959:c5a6f024dd5d r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1650:67d8c926c00b r2085:757cdc338c24 r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r2085:757cdc338c24 r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r4077:259c4c4aacad r3636:a8e0c73aca96 r2085:757cdc338c24 r3900:1c2675abec23 r2085:757cdc338c24 r2085:757cdc338c24 r1977:1f8b99c96041 r4347:7bff859eed04 r1313:da473558c9d7 r1313:da473558c9d7 r1313:da473558c9d7 | /* $Id$ */
#ifndef DEPOT_H
#define DEPOT_H
/** @file depot.h Header files for depots (not hangars)
* @see depot.c */
#include "direction.h"
#include "oldpool.h"
#include "tile.h"
#include "variables.h"
struct Depot {
TileIndex xy;
TownID town_index;
DepotID index;
};
DECLARE_OLD_POOL(Depot, Depot, 3, 8000)
/**
* Check if a depot really exists.
*/
static inline bool IsValidDepot(const Depot *depot)
{
return depot != NULL && depot->xy != 0;
}
static inline bool IsValidDepotID(uint index)
{
return index < GetDepotPoolSize() && IsValidDepot(GetDepot(index));
}
void DestroyDepot(Depot *depot);
static inline void DeleteDepot(Depot *depot)
{
DestroyDepot(depot);
depot->xy = 0;
}
void ShowDepotWindow(TileIndex tile, byte type);
#define FOR_ALL_DEPOTS_FROM(d, start) for (d = GetDepot(start); d != NULL; d = (d->index + 1U < GetDepotPoolSize()) ? GetDepot(d->index + 1U) : NULL) if (IsValidDepot(d))
#define FOR_ALL_DEPOTS(d) FOR_ALL_DEPOTS_FROM(d, 0)
#define MIN_SERVINT_PERCENT 5
#define MAX_SERVINT_PERCENT 90
#define MIN_SERVINT_DAYS 30
#define MAX_SERVINT_DAYS 800
/**
* Get the service interval domain.
* Get the new proposed service interval for the vehicle is indeed, clamped
* within the given bounds. @see MIN_SERVINT_PERCENT ,etc.
* @param index proposed service interval
*/
static inline Date GetServiceIntervalClamped(uint index)
{
return (_patches.servint_ispercent) ? clamp(index, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : clamp(index, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS);
}
/**
* Check if a tile is a depot of the given type.
*/
static inline bool IsTileDepotType(TileIndex tile, TransportType type)
{
switch (type) {
case TRANSPORT_RAIL:
return IsTileType(tile, MP_RAILWAY) && (_m[tile].m5 & 0xFC) == 0xC0;
case TRANSPORT_ROAD:
return IsTileType(tile, MP_STREET) && (_m[tile].m5 & 0xF0) == 0x20;
case TRANSPORT_WATER:
return IsTileType(tile, MP_WATER) && (_m[tile].m5 & ~3) == 0x80;
default:
assert(0);
return false;
}
}
/**
* Find out if the slope of the tile is suitable to build a depot of given direction
* @param direction The direction in which the depot's exit points. Starts with 0 as NE and goes Clockwise
* @param tileh The slope of the tile in question
* @return true if the construction is possible
* This is checked by the ugly 0x4C >> direction magic, which does the following:
* 0x4C is 0100 1100 and tileh has only bits 0..3 set (steep tiles are ruled out)
* So: for direction (only the significant bits are shown)<p>
* 00 (exit towards NE) we need either bit 2 or 3 set in tileh: 0x4C >> 0 = 1100<p>
* 01 (exit towards SE) we need either bit 1 or 2 set in tileh: 0x4C >> 1 = 0110<p>
* 02 (exit towards SW) we need either bit 0 or 1 set in tileh: 0x4C >> 2 = 0011<p>
* 03 (exit towards NW) we need either bit 0 or 4 set in tileh: 0x4C >> 3 = 1001<p>
* So ((0x4C >> direction) & tileh) determines whether the depot can be built on the current tileh
*/
static inline bool CanBuildDepotByTileh(uint32 direction, Slope tileh)
{
return ((0x4C >> direction) & tileh) != 0;
}
Depot *GetDepotByTile(TileIndex tile);
void InitializeDepots(void);
Depot *AllocateDepot(void);
#endif /* DEPOT_H */
|