Files @ r6454:106dbc6c677f
Branch filter:

Location: cpp/openttd-patchpack/source/src/slope.h

maedhros
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
default rate is TTD's original rate, and to approximate OpenTTD's previous
behaviour the rate should be set to "Fast" or "Very Fast". Town growth can be
switched off entirely, and if so, buildings will not be rebuilt. It is also
possible to specify a proportion of towns that grow twice as fast as the
others.
/* $Id$ */

/** @file slope.h */

#ifndef SLOPE_H
#define SLOPE_H

enum Slope {
	SLOPE_FLAT     = 0x00,
	SLOPE_W        = 0x01,
	SLOPE_S        = 0x02,
	SLOPE_E        = 0x04,
	SLOPE_N        = 0x08,
	SLOPE_STEEP    = 0x10,
	SLOPE_NW       = SLOPE_N | SLOPE_W,
	SLOPE_SW       = SLOPE_S | SLOPE_W,
	SLOPE_SE       = SLOPE_S | SLOPE_E,
	SLOPE_NE       = SLOPE_N | SLOPE_E,
	SLOPE_EW       = SLOPE_E | SLOPE_W,
	SLOPE_NS       = SLOPE_N | SLOPE_S,
	SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W,
	SLOPE_NWS      = SLOPE_N | SLOPE_W | SLOPE_S,
	SLOPE_WSE      = SLOPE_W | SLOPE_S | SLOPE_E,
	SLOPE_SEN      = SLOPE_S | SLOPE_E | SLOPE_N,
	SLOPE_ENW      = SLOPE_E | SLOPE_N | SLOPE_W,
	SLOPE_STEEP_W  = SLOPE_STEEP | SLOPE_NWS,
	SLOPE_STEEP_S  = SLOPE_STEEP | SLOPE_WSE,
	SLOPE_STEEP_E  = SLOPE_STEEP | SLOPE_SEN,
	SLOPE_STEEP_N  = SLOPE_STEEP | SLOPE_ENW
};

static inline bool IsSteepSlope(Slope s)
{
	return (s & SLOPE_STEEP) != 0;
}

static inline Slope ComplementSlope(Slope s)
{
	assert(!IsSteepSlope(s));
	return (Slope)(0xF ^ s);
}

#endif /* SLOPE_H */