Changeset - r6201:2e76eb9a1d7a
[Not reviewed]
master
0 30 0
belugas - 18 years ago 2007-03-03 04:04:22
belugas@openttd.org
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
28 files changed with 363 insertions and 282 deletions:
0 comments (0 inline, 0 general)
src/industry.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file industry.h */
 

	
 
#ifndef INDUSTRY_H
 
#define INDUSTRY_H
 

	
 
@@ -18,30 +20,33 @@ typedef enum IndustryLifeTypes {
 
	INDUSTRYLIFE_CLOSABLE,         ///< Industry can only close (no production change)
 
} IndustryLifeType;
 

	
 
/**
 
 * Defines the internal data of a functionnal industry
 
 */
 
struct Industry {
 
	TileIndex xy;
 
	byte width; /* swapped order of w/h with town */
 
	TileIndex xy;                   ///< coordinates of the primary tile the industry is built one
 
	byte width;
 
	byte height;
 
	const Town* town;
 
	CargoID produced_cargo[2];
 
	uint16 cargo_waiting[2];
 
	byte production_rate[2];
 
	CargoID accepts_cargo[3];
 
	byte prod_level;
 
	uint16 last_mo_production[2];
 
	uint16 last_mo_transported[2];
 
	byte pct_transported[2];
 
	uint16 total_production[2];
 
	uint16 total_transported[2];
 
	uint16 counter;
 
	const Town* town;               ///< Nearest town
 
	CargoID produced_cargo[2];      ///< 2 production cargo slots
 
	uint16 cargo_waiting[2];        ///< amount of cargo produced per cargo
 
	byte production_rate[2];        ///< production rate for each cargo
 
	CargoID accepts_cargo[3];       ///< 3 input cargo slots
 
	byte prod_level;                ///< general production level
 
	uint16 last_mo_production[2];   ///< stats of last month production per cargo
 
	uint16 last_mo_transported[2];  ///< stats of last month transport per cargo
 
	byte pct_transported[2];        ///< percentage transported per cargo
 
	uint16 total_production[2];     ///< total units produced per cargo
 
	uint16 total_transported[2];    ///< total units transported per cargo
 
	uint16 counter;                 ///< used for animation and/or production (if available cargo)
 

	
 
	byte type;
 
	OwnerByte owner;
 
	byte random_color;
 
	Year last_prod_year;
 
	byte was_cargo_delivered;
 
	byte type;                      ///< type of industry. see IT_COAL_MINE and others
 
	OwnerByte owner;                ///< owner of the industry.  Which SHOULD always be (imho) OWNER_NONE
 
	byte random_color;              ///< randomized colour of the industry, for display purpose
 
	Year last_prod_year;            ///< last year of production
 
	byte was_cargo_delivered;       ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
 

	
 
	IndustryID index;
 
	IndustryID index;               ///< index of the industry in the pool of industries
 
};
 

	
 
typedef struct IndustryTileTable {
 
@@ -49,59 +54,62 @@ typedef struct IndustryTileTable {
 
	IndustryGfx gfx;
 
} IndustryTileTable;
 

	
 
/**
 
 * Defines the data structure for constructing industry.
 
 */
 
typedef struct IndustrySpec {
 
	/** Tables with the 'layout' of different composition of GFXes */
 
	const IndustryTileTable *const *table;
 
	/** Number of elements in the table */
 
	byte num_table;
 
	/** Base cost multiplier*/
 
	byte cost_multiplier;
 
	/** Industries this industry cannot be close to */
 
	IndustryType conflicting[3];
 
	/** index to a procedure to check for conflicting circumstances */
 
	byte check_proc;
 

	
 
	const IndustryTileTable *const *table;///< List of the tiles composing the industry
 
	byte num_table;                       ///< Number of elements in the table
 
	byte cost_multiplier;                 ///< Base cost multiplier*/
 
	IndustryType conflicting[3];          ///< Industries this industry cannot be close to
 
	byte check_proc;                      ///< Index to a procedure to check for conflicting circumstances
 
	CargoID produced_cargo[2];
 
	byte production_rate[2];
 
	/** The minimum amount of cargo transported to the stations; if the
 
	 * waiting cargo is less than this number, no cargo is moved to it*/
 
	byte minimal_cargo;
 
	CargoID accepts_cargo[3];
 

	
 
	byte minimal_cargo;                   ///< minimum amount of cargo transported to the stations
 
	                                      ///< If the waiting cargo is less than this number, no cargo is moved to it
 
	CargoID accepts_cargo[3];             ///< 3 accepted cargos
 
	IndustryLifeType life_type;  ///< This is also known as Industry production flag, in newgrf specs
 

	
 
	byte climate_availability;  ///< Bitmask, giving landscape enums as bit position
 

	
 
	StringID name;
 
	StringID closure_text;
 
	StringID production_up_text;
 
	StringID production_down_text;
 
	StringID name;                        ///< Displayed name of the industry
 
	StringID closure_text;                ///< Message appearing when the industry closes
 
	StringID production_up_text;          ///< Message appearing when the industry's production is increasing
 
	StringID production_down_text;        ///< Message appearing when the industry's production is decreasing
 
} IndustrySpec;
 

	
 
/**
 
 * Defines the data structure of each indivudual tile of an industry.
 
 */
 
typedef struct IndustryTileSpec {
 
	CargoID accepts_cargo[3];
 
	Slope slopes_refused;
 
	CargoID accepts_cargo[3];             ///< Cargo accepted by this tile
 
	Slope slopes_refused;                 ///< slope pattern on which this tile cannot be built
 
} IndustryTileSpec;
 

	
 
const IndustrySpec *GetIndustrySpec(IndustryType thistype);
 
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);
 
const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries default data
 
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles default data
 

	
 
DECLARE_OLD_POOL(Industry, Industry, 3, 8000)
 

	
 
/**
 
 * Check if an Industry really exists.
 
 * @param industry to check
 
 * @return true if position is a valid one
 
 */
 
static inline bool IsValidIndustry(const Industry *industry)
 
{
 
	return industry->xy != 0;
 
}
 

	
 
/**
 
 * Check if an Industry exists whithin the pool of industries
 
 * @param index of the desired industry
 
 * @return true if it is inside the pool
 
 */
 
static inline bool IsValidIndustryID(IndustryID index)
 
{
 
	return index < GetIndustryPoolSize() && IsValidIndustry(GetIndustry(index));
 
}
 

	
 
VARDEF int _total_industries;
 
VARDEF int _total_industries; //general counter
 

	
 
static inline IndustryID GetMaxIndustryIndex(void)
 
{
src/industry_cmd.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file industry_cmd.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "clear_map.h"
 
@@ -80,6 +82,7 @@ IndustryType GetIndustryType(TileIndex t
 
 * not allowing modifications of it.
 
 * @param thistype of industry (which is the index in _industry_specs)
 
 * @pre thistype < IT_END
 
 * @return a pointer to the corresponding industry spec
 
 **/
 
const IndustrySpec *GetIndustrySpec(IndustryType thistype)
 
{
 
@@ -87,6 +90,14 @@ const IndustrySpec *GetIndustrySpec(Indu
 
	return &_industry_specs[thistype];
 
}
 

	
 
/**
 
 * Accessor for array _industry_tile_specs.
 
 * This will ensure at once : proper access and
 
 * not allowing modifications of it.
 
 * @param gfx of industrytile (which is the index in _industry_specs)
 
 * @pre gfx < NUM_INDUSTRY_GFXES
 
 * @return a pointer to the corresponding industrytile spec
 
 **/
 
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx)
 
{
 
	assert(gfx < NUM_INDUSTRY_GFXES);
 
@@ -427,7 +438,7 @@ static void AnimateTile_Industry(TileInd
 
		}
 
		break;
 

	
 
	// Sparks on a coal plant
 
	/* Sparks on a coal plant */
 
	case GFX_POWERPLANT_SPARKS:
 
		if ((_tick_counter & 3) == 0) {
 
			m = GetIndustryAnimationState(tile);
 
@@ -869,7 +880,7 @@ static void MaybePlantFarmField(const In
 
 * Search callback function for ChopLumberMillTrees
 
 * @param tile to test
 
 * @param data that is passed by the caller.  In this case, nothing
 
 * @result of the test
 
 * @return the result of the test
 
 */
 
static bool SearchLumberMillTrees(TileIndex tile, uint32 data)
 
{
 
@@ -1317,12 +1328,12 @@ static bool CheckIfTooCloseToIndustry(Ti
 
	const IndustrySpec *indspec = GetIndustrySpec(type);
 
	const Industry *i;
 

	
 
	// accepting industries won't be close, not even with patch
 
	/* accepting industries won't be close, not even with patch */
 
	if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID)
 
		return true;
 

	
 
	FOR_ALL_INDUSTRIES(i) {
 
		// check if an industry that accepts the same goods is nearby
 
		/* check if an industry that accepts the same goods is nearby */
 
		if (DistanceMax(tile, i->xy) <= 14 &&
 
				indspec->accepts_cargo[0] != CT_INVALID &&
 
				indspec->accepts_cargo[0] == i->accepts_cargo[0] && (
 
@@ -1334,7 +1345,7 @@ static bool CheckIfTooCloseToIndustry(Ti
 
			return false;
 
		}
 

	
 
		// check "not close to" field.
 
		/* check "not close to" field. */
 
		if ((i->type == indspec->conflicting[0] || i->type == indspec->conflicting[1] || i->type == indspec->conflicting[2]) &&
 
				DistanceMax(tile, i->xy) <= 14) {
 
			_error_message = STR_INDUSTRY_TOO_CLOSE;
 
@@ -1445,6 +1456,14 @@ static void DoCreateNewIndustry(Industry
 
	InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
 
}
 

	
 
/** Helper function for Build/Fund an industry
 
 * @param tile tile where industry is built
 
 * @param type of industry to build
 
 * @param flags of operations to conduct
 
 * @param indspec pointer to industry specifications
 
 * @param it pointer to list of tile type to build
 
 * @return the pointer of the newly created industry, or NULL if it failed
 
 */
 
static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, const IndustryTileTable *it)
 
{
 
	const Town *t;
 
@@ -1474,8 +1493,10 @@ static Industry *CreateNewIndustryHelper
 

	
 
/** Build/Fund an industry
 
 * @param tile tile where industry is built
 
 * @param p1 industry type @see build_industry.h and @see industry.h
 
 * @param flags of operations to conduct
 
 * @param p1 industry type see build_industry.h and see industry.h
 
 * @param p2 unused
 
 * @return index of the newly create industry, or CMD_ERROR if it failed
 
 */
 
int32 CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 
{
 
@@ -1524,7 +1545,7 @@ Industry *CreateNewIndustry(TileIndex ti
 
}
 

	
 
static const byte _numof_industry_table[4][12] = {
 
	// difficulty settings for number of industries
 
	/* difficulty settings for number of industries */
 
	{0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0},   //none
 
	{0, 1, 1, 1, 2, 2, 3, 3,  4,  4,  5},   //low
 
	{0, 1, 2, 3, 4, 5, 6, 7,  8,  9, 10},   //normal
 
@@ -1536,7 +1557,7 @@ static void PlaceInitialIndustry(Industr
 
	int num = _numof_industry_table[_opt.diff.number_industries][amount];
 

	
 
	if (type == IT_OIL_REFINERY || type == IT_OIL_RIG) {
 
		// These are always placed next to the coastline, so we scale by the perimeter instead.
 
		/* These are always placed next to the coastline, so we scale by the perimeter instead. */
 
		num = ScaleByMapSize1D(num);
 
	} else {
 
		num = ScaleByMapSize(num);
 
@@ -1823,7 +1844,7 @@ void IndustryMonthlyLoop(void)
 

	
 
	_current_player = old_player;
 

	
 
	// production-change
 
	/* production-change */
 
	_industry_sort_dirty = true;
 
	InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
 
}
 
@@ -1881,7 +1902,7 @@ static const SaveLoad _industry_desc[] =
 
	SLE_CONDVAR(Industry, last_prod_year,      SLE_INT32,                 31, SL_MAX_VERSION),
 
	    SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8),
 

	
 
	// reserve extra space in savegame here. (currently 32 bytes)
 
	/* reserve extra space in savegame here. (currently 32 bytes) */
 
	SLE_CONDNULL(32, 2, SL_MAX_VERSION),
 

	
 
	SLE_END()
 
@@ -1891,7 +1912,7 @@ static void Save_INDY(void)
 
{
 
	Industry *ind;
 

	
 
	// Write the vehicles
 
	/* Write the vehicles */
 
	FOR_ALL_INDUSTRIES(ind) {
 
		SlSetArrayIndex(ind->index);
 
		SlObject(ind, _industry_desc);
src/industry_gui.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file industry_gui.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "debug.h"
 
@@ -19,6 +21,7 @@
 
#include "helpers.hpp"
 
#include "cargotype.h"
 

	
 
/* industries per climate, according to the different construction windows */
 
const byte _build_industry_types[4][12] = {
 
	{  1,  2,  4,  6,  8,  0,  3,  5,  9, 11, 18 },
 
	{  1, 14,  4, 13,  7,  0,  3,  9, 11, 15 },
 
@@ -290,9 +293,9 @@ static inline bool IsProductionAlterable
 

	
 
static void IndustryViewWndProc(Window *w, WindowEvent *e)
 
{
 
	// WP(w,vp2_d).data_1 is for the editbox line
 
	// WP(w,vp2_d).data_2 is for the clickline
 
	// WP(w,vp2_d).data_3 is for the click pos (left or right)
 
	/* WP(w,vp2_d).data_1 is for the editbox line
 
	 * WP(w,vp2_d).data_2 is for the clickline
 
	 * WP(w,vp2_d).data_3 is for the click pos (left or right) */
 

	
 
	switch (e->event) {
 
	case WE_PAINT: {
 
@@ -325,7 +328,7 @@ static void IndustryViewWndProc(Window *
 

	
 
			SetDParam(2, i->pct_transported[0] * 100 >> 8);
 
			DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
 
			// Let's put out those buttons..
 
			/* Let's put out those buttons.. */
 
			if (IsProductionAlterable(i)) {
 
				DrawArrowButtons(5, 127, 3, (WP(w,vp2_d).data_2 == 1) ? WP(w,vp2_d).data_3 : 0,
 
						!isProductionMinimum(i, 0), !isProductionMaximum(i, 0));
 
@@ -336,7 +339,7 @@ static void IndustryViewWndProc(Window *
 
				SetDParam(1, i->total_production[1]);
 
				SetDParam(2, i->pct_transported[1] * 100 >> 8);
 
				DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
 
				// Let's put out those buttons..
 
				/* Let's put out those buttons.. */
 
				if (IsProductionAlterable(i)) {
 
					DrawArrowButtons(5, 137, 3, (WP(w,vp2_d).data_2 == 2) ? WP(w,vp2_d).data_3 : 0,
 
						!isProductionMinimum(i, 1), !isProductionMaximum(i, 1));
 
@@ -357,7 +360,7 @@ static void IndustryViewWndProc(Window *
 

	
 
			i = GetIndustry(w->window_number);
 

	
 
			// We should work if needed..
 
			/* We should work if needed.. */
 
			if (!IsProductionAlterable(i)) return;
 

	
 
			x = e->we.click.pt.x;
 
@@ -379,7 +382,7 @@ static void IndustryViewWndProc(Window *
 
					WP(w,vp2_d).data_2 = line+1;
 
					WP(w,vp2_d).data_3 = (x < 15 ? 1 : 2);
 
				} else if (IS_INT_INSIDE(x, 34, 160)) {
 
					// clicked the text
 
					/* clicked the text */
 
					WP(w,vp2_d).data_1 = line;
 
					SetDParam(0, i->production_rate[line] * 8);
 
					ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_CONFIG_GAME_PRODUCTION, 10, 100, w, CS_ALPHANUMERAL);
 
@@ -533,7 +536,7 @@ static int CDECL GeneralIndustrySorter(c
 
			break;
 
	}
 

	
 
	// default to string sorting if they are otherwise equal
 
	/* default to string sorting if they are otherwise equal */
 
	if (r == 0) {
 
		char buf1[96];
 

	
src/industry_map.h
Show inline comments
 
@@ -172,42 +172,42 @@ typedef struct IndustryTypeSolver {
 
} IndustryTypeSolver;
 

	
 
static const IndustryTypeSolver industry_gfx_Solver [IT_END] = {
 
	{  0,   6}, //IT_COAL_MINE
 
	{  7,  10}, //IT_POWER_STATION,
 
	{ 11,  15}, //IT_SAWMILL,
 
	{ 16,  17}, //IT_FOREST,
 
	{ 18,  23}, //IT_OIL_REFINERY,
 
	{ 24,  28}, //IT_OIL_RIG,
 
	{ 29,  31}, //IT_OIL_WELL,
 
	{ 32,  38}, //IT_FARM,
 
	{ 39,  42}, //IT_FACTORY,
 
	{ 43,  46}, //IT_PRINTING_WORKS,
 
	{ 47,  51}, //IT_COPPER_MINE,
 
	{ 52,  57}, //IT_STEEL_MILL,
 
	{ 58,  59}, //IT_BANK_TEMP,
 
	{ 60,  63}, //IT_FOOD_PROCESS,
 
	{ 64,  71}, //IT_PAPER_MILL,
 
	{ 72,  88}, //IT_GOLD_MINE,
 
	{ 89,  90}, //IT_BANK_TROPIC_ARCTIC,
 
	{ 91,  99}, //IT_DIAMOND_MINE,
 
	{100, 115}, //IT_IRON_MINE,
 
	{116, 116}, //IT_FRUIT_PLANTATION,
 
	{117, 117}, //IT_RUBBER_PLANTATION,
 
	{118, 119}, //IT_WATER_SUPPLY,
 
	{120, 120}, //IT_WATER_TOWER,
 
	{121, 124}, //IT_FACTORY_2,
 
	{125, 128}, //IT_LUMBER_MILL,
 
	{129, 130}, //IT_COTTON_CANDY,
 
	{131, 134}, //IT_CANDY_FACTORY or sweet factory
 
	{135, 136}, //IT_BATTERY_FARM,
 
	{137, 137}, //IT_COLA_WELLS,
 
	{138, 141}, //IT_TOY_SHOP,
 
	{142, 147}, //IT_TOY_FACTORY,
 
	{148, 155}, //IT_PLASTIC_FOUNTAINS,
 
	{156, 159}, //IT_FIZZY_DRINK_FACTORY,
 
	{160, 163}, //IT_BUBBLE_GENERATOR,
 
	{164, 166}, //IT_TOFFEE_QUARRY,
 
	{167, 174}  //IT_SUGAR_MINE,
 
	{  0,   6}, ///< IT_COAL_MINE
 
	{  7,  10}, ///< IT_POWER_STATION,
 
	{ 11,  15}, ///< IT_SAWMILL,
 
	{ 16,  17}, ///< IT_FOREST,
 
	{ 18,  23}, ///< IT_OIL_REFINERY,
 
	{ 24,  28}, ///< IT_OIL_RIG,
 
	{ 29,  31}, ///< IT_OIL_WELL,
 
	{ 32,  38}, ///< IT_FARM,
 
	{ 39,  42}, ///< IT_FACTORY,
 
	{ 43,  46}, ///< IT_PRINTING_WORKS,
 
	{ 47,  51}, ///< IT_COPPER_MINE,
 
	{ 52,  57}, ///< IT_STEEL_MILL,
 
	{ 58,  59}, ///< IT_BANK_TEMP,
 
	{ 60,  63}, ///< IT_FOOD_PROCESS,
 
	{ 64,  71}, ///< IT_PAPER_MILL,
 
	{ 72,  88}, ///< IT_GOLD_MINE,
 
	{ 89,  90}, ///< IT_BANK_TROPIC_ARCTIC,
 
	{ 91,  99}, ///< IT_DIAMOND_MINE,
 
	{100, 115}, ///< IT_IRON_MINE,
 
	{116, 116}, ///< IT_FRUIT_PLANTATION,
 
	{117, 117}, ///< IT_RUBBER_PLANTATION,
 
	{118, 119}, ///< IT_WATER_SUPPLY,
 
	{120, 120}, ///< IT_WATER_TOWER,
 
	{121, 124}, ///< IT_FACTORY_2,
 
	{125, 128}, ///< IT_LUMBER_MILL,
 
	{129, 130}, ///< IT_COTTON_CANDY,
 
	{131, 134}, ///< IT_CANDY_FACTORY or sweet factory
 
	{135, 136}, ///< IT_BATTERY_FARM,
 
	{137, 137}, ///< IT_COLA_WELLS,
 
	{138, 141}, ///< IT_TOY_SHOP,
 
	{142, 147}, ///< IT_TOY_FACTORY,
 
	{148, 155}, ///< IT_PLASTIC_FOUNTAINS,
 
	{156, 159}, ///< IT_FIZZY_DRINK_FACTORY,
 
	{160, 163}, ///< IT_BUBBLE_GENERATOR,
 
	{164, 166}, ///< IT_TOFFEE_QUARRY,
 
	{167, 174}  ///< IT_SUGAR_MINE,
 
};
 

	
 
/**
src/intro_gui.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file intro_gui.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "table/strings.h"
src/landscape.cpp
Show inline comments
 
@@ -172,7 +172,7 @@ static Slope GetFoundationSlope(TileInde
 
	Slope tileh = GetTileSlope(tile, z);
 
	Slope slope = _tile_type_procs[GetTileType(tile)]->get_slope_tileh_proc(tile, tileh);
 

	
 
	// Flatter slope -> higher base height
 
	/* Flatter slope -> higher base height */
 
	if (slope < tileh) *z += TILE_HEIGHT;
 
	return slope;
 
}
 
@@ -223,7 +223,7 @@ void DrawFoundation(TileInfo *ti, uint f
 
	if (IsSteepSlope(ti->tileh)) {
 
		SpriteID lower_base;
 

	
 
		// Lower part of foundation
 
		/* Lower part of foundation */
 
		lower_base = sprite_base;
 
		if (lower_base == SPR_SLOPES_BASE - 15) lower_base = SPR_FOUNDATION_BASE;
 
		AddSortableSpriteToDraw(
 
@@ -232,24 +232,24 @@ void DrawFoundation(TileInfo *ti, uint f
 
		ti->z += TILE_HEIGHT;
 
		ti->tileh = _inclined_tileh[f - 15];
 
		if (f < 15 + 8) {
 
			// inclined
 
			/* inclined */
 
			AddSortableSpriteToDraw(sprite_base + f, PAL_NONE, ti->x, ti->y, 16, 16, 1, ti->z);
 
			OffsetGroundSprite(31, 9);
 
		} else if (f >= 15 + 8 + 4) {
 
			// three corners raised
 
			/* three corners raised */
 
			SpriteID upper = sprite_base + 15 + (f - 15 - 8 - 4) * 2;
 

	
 
			AddSortableSpriteToDraw(upper, PAL_NONE, ti->x, ti->y, 16, 16, 1, ti->z);
 
			AddChildSpriteScreen(upper + 1, PAL_NONE, 31, 9);
 
			OffsetGroundSprite(31, 9);
 
		} else {
 
			// one corner raised
 
			/* one corner raised */
 
			OffsetGroundSprite(31, 1);
 
		}
 
	} else {
 
		if (f < 15) {
 
			// leveled foundation
 
			// Use the original slope sprites if NW and NE borders should be visible
 
			/* leveled foundation
 
			 * Use the original slope sprites if NW and NE borders should be visible */
 
			if (sprite_base  == SPR_SLOPES_BASE - 15) sprite_base = SPR_FOUNDATION_BASE;
 

	
 
			AddSortableSpriteToDraw(sprite_base + f, PAL_NONE, ti->x, ti->y, 16, 16, 7, ti->z);
 
@@ -257,7 +257,7 @@ void DrawFoundation(TileInfo *ti, uint f
 
			ti->tileh = SLOPE_FLAT;
 
			OffsetGroundSprite(31, 1);
 
		} else {
 
			// inclined foundation
 
			/* inclined foundation */
 
			AddSortableSpriteToDraw(sprite_base + f, PAL_NONE, ti->x, ti->y, 16, 16, 1, ti->z);
 
			ti->tileh = _inclined_tileh[f - 15];
 
			OffsetGroundSprite(31, 9);
 
@@ -304,6 +304,7 @@ void GetTileDesc(TileIndex tile, TileDes
 

	
 
/** Clear a piece of landscape
 
 * @param tile tile to clear
 
 * @param flags of operation to conduct
 
 * @param p1 unused
 
 * @param p2 unused
 
 */
 
@@ -317,6 +318,7 @@ int32 CmdLandscapeClear(TileIndex tile, 
 
/** Clear a big piece of landscape
 
 * @param tile end tile of area dragging
 
 * @param p1 start tile of area dragging
 
 * @param flags of operation to conduct
 
 * @param p2 unused
 
 */
 
int32 CmdClearArea(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 
@@ -332,7 +334,7 @@ int32 CmdClearArea(TileIndex tile, uint3
 

	
 
	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 

	
 
	// make sure sx,sy are smaller than ex,ey
 
	/* make sure sx,sy are smaller than ex,ey */
 
	ex = TileX(tile);
 
	ey = TileY(tile);
 
	sx = TileX(p1);
 
@@ -357,9 +359,9 @@ int32 CmdClearArea(TileIndex tile, uint3
 
				}
 
				DoCommand(TileXY(x, y), 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 

	
 
				// draw explosion animation...
 
				/* draw explosion animation... */
 
				if ((x == sx || x == ex) && (y == sy || y == ey)) {
 
					// big explosion in each corner, or small explosion for single tiles
 
					/* big explosion in each corner, or small explosion for single tiles */
 
					CreateEffectVehicleAbove(x * TILE_SIZE + TILE_SIZE / 2, y * TILE_SIZE + TILE_SIZE / 2, 2,
 
						sy == ey && sx == ex ? EV_EXPLOSION_SMALL : EV_EXPLOSION_LARGE
 
					);
 
@@ -390,7 +392,7 @@ void RunTileLoop(void)
 
		_tile_type_procs[GetTileType(tile)]->tile_loop_proc(tile);
 

	
 
		if (TileX(tile) < MapSizeX() - TILELOOP_SIZE) {
 
			tile += TILELOOP_SIZE; /* no overflow */
 
			tile += TILELOOP_SIZE; // no overflow
 
		} else {
 
			tile = TILE_MASK(tile - TILELOOP_SIZE * (MapSizeX() / TILELOOP_SIZE - 1) + TileDiffXY(0, TILELOOP_SIZE)); /* x would overflow, also increase y */
 
		}
src/livery.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file livery.h */
 

	
 
#ifndef LIVERY_H
 
#define LIVERY_H
 

	
src/lzoconf.h
Show inline comments
 
/* $Id$ */
 

	
 
/* lzoconf.h -- configuration for the LZO real-time data compression library
 
/** @file lzoconf.h -- configuration for the LZO real-time data compression library
 

	
 
   This file is part of the LZO real-time data compression library.
 

	
src/macros.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file macros.h */
 

	
 
#ifndef MACROS_H
 
#define MACROS_H
 

	
 
/// Fetch n bits starting at bit s from x
 
/* Fetch n bits starting at bit s from x */
 
#define GB(x, s, n) (((x) >> (s)) & ((1U << (n)) - 1))
 
/// Set n bits starting at bit s in x to d
 
/* Set n bits starting at bit s in x to d */
 
#define SB(x, s, n, d) ((x) = ((x) & ~(((1U << (n)) - 1) << (s))) | ((d) << (s)))
 
/// Add i to the n bits starting at bit s in x
 
/* Add i to the n bits starting at bit s in x */
 
#define AB(x, s, n, i) ((x) = ((x) & ~(((1U << (n)) - 1) << (s))) | (((x) + ((i) << (s))) & (((1U << (n)) - 1) << (s))))
 

	
 
#ifdef min
 
@@ -79,7 +81,7 @@ template<typename T> static inline T TOG
 
}
 

	
 

	
 
// checking more bits. Maybe unneccessary, but easy to use
 
/* checking more bits. Maybe unneccessary, but easy to use */
 
#define HASBITS(x,y) ((x) & (y))
 
#define SETBITS(x,y) ((x) |= (y))
 
#define CLRBITS(x,y) ((x) &= ~(y))
src/main_gui.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file main_gui.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "heightmap.h"
 
@@ -60,25 +62,25 @@ void HandleOnEditText(const char *str)
 
	_cmd_text = str;
 

	
 
	switch (_rename_what) {
 
	case 0: /* Rename a s sign, if string is empty, delete sign */
 
	case 0: // Rename a s sign, if string is empty, delete sign
 
		DoCommandP(0, id, 0, NULL, CMD_RENAME_SIGN | CMD_MSG(STR_280C_CAN_T_CHANGE_SIGN_NAME));
 
		break;
 
	case 1: /* Rename a waypoint */
 
	case 1: // Rename a waypoint
 
		if (*str == '\0') return;
 
		DoCommandP(0, id, 0, NULL, CMD_RENAME_WAYPOINT | CMD_MSG(STR_CANT_CHANGE_WAYPOINT_NAME));
 
		break;
 
#ifdef ENABLE_NETWORK
 
	case 3: { /* Give money, you can only give money in excess of loan */
 
	case 3: { // Give money, you can only give money in excess of loan
 
		const Player *p = GetPlayer(_current_player);
 
		int32 money = min(p->money64 - p->current_loan, atoi(str) / _currency->rate);
 
		char msg[20];
 

	
 
		money = clamp(money, 0, 20000000); // Clamp between 20 million and 0
 

	
 
		// Give 'id' the money, and substract it from ourself
 
		/* Give 'id' the money, and substract it from ourself */
 
		if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS))) break;
 

	
 
		// Inform the player of this action
 
		/* Inform the player of this action */
 
		snprintf(msg, sizeof(msg), "%d", money);
 

	
 
		if (!_network_server) {
 
@@ -103,7 +105,6 @@ void HandleOnEditText(const char *str)
 
 * @param cursor How should the cursor image change? E.g. cursor with depot image in it
 
 * @param mode Tile highlighting mode, e.g. drawing a rectangle or a dot on the ground
 
 * @param placeproc Procedure which will be called when someone clicks on the map
 

	
 
 * @return true if the button is clicked, false if it's unclicked
 
 */
 
bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, int mode, PlaceProc *placeproc)
 
@@ -526,7 +527,7 @@ static void UpdatePlayerMenuHeight(Windo
 
{
 
	byte num = ActivePlayerCount();
 

	
 
	// Increase one to fit in PlayerList in the menu when in network
 
	/* Increase one to fit in PlayerList in the menu when in network */
 
	if (_networking && WP(w,menu_d).main_button == 9) num++;
 

	
 
	if (WP(w,menu_d).item_count != num) {
 
@@ -556,7 +557,7 @@ static void PlayerMenuWndProc(Window *w,
 
		sel = WP(w,menu_d).sel_index;
 
		chk = WP(w,menu_d).checked_items; // let this mean gray items.
 

	
 
		// 9 = playerlist
 
		/* 9 = playerlist */
 
		if (_networking && WP(w,menu_d).main_button == 9) {
 
			if (sel == 0) {
 
				GfxFillRect(x, y, x + 238, y + 9, 0);
 
@@ -601,8 +602,8 @@ static void PlayerMenuWndProc(Window *w,
 
		int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 
		int action_id = WP(w,menu_d).action_id;
 

	
 
		// We have a new entry at the top of the list of menu 9 when networking
 
		//  so keep that in count
 
		/* We have a new entry at the top of the list of menu 9 when networking
 
		 *  so keep that in count */
 
		if (_networking && WP(w,menu_d).main_button == 9) {
 
			if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
		} else {
 
@@ -628,8 +629,8 @@ static void PlayerMenuWndProc(Window *w,
 
		UpdatePlayerMenuHeight(w);
 
		index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 

	
 
		// We have a new entry at the top of the list of menu 9 when networking
 
		//  so keep that in count
 
		/* We have a new entry at the top of the list of menu 9 when networking
 
		 * so keep that in count */
 
		if (_networking && WP(w,menu_d).main_button == 9) {
 
			if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
		} else {
 
@@ -973,7 +974,7 @@ static void ToolbarScenSaveOrLoad(Window
 

	
 
static void ToolbarScenDateBackward(Window *w)
 
{
 
	// don't allow too fast scrolling
 
	/* don't allow too fast scrolling */
 
	if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
 
		HandleButtonClick(w, 6);
 
		SetWindowDirty(w);
 
@@ -986,7 +987,7 @@ static void ToolbarScenDateBackward(Wind
 

	
 
static void ToolbarScenDateForward(Window *w)
 
{
 
	// don't allow too fast scrolling
 
	/* don't allow too fast scrolling */
 
	if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
 
		HandleButtonClick(w, 7);
 
		SetWindowDirty(w);
 
@@ -1041,12 +1042,12 @@ void ZoomInOrOutToCursorWindow(bool in, 
 
	}
 
}
 

	
 
// TODO - Incorporate into game itself to allow for ingame raising/lowering of
 
// larger chunks at the same time OR remove altogether, as we have 'level land' ?
 
/**
 
 * Raise/Lower a bigger chunk of land at the same time in the editor. When
 
 * raising get the lowest point, when lowering the highest point, and set all
 
 * tiles in the selection to that height.
 
 * @todo : Incorporate into game itself to allow for ingame raising/lowering of
 
 *         larger chunks at the same time OR remove altogether, as we have 'level land' ?
 
 * @param tile The top-left tile where the terraforming will start
 
 * @param mode 1 for raising, 0 for lowering land
 
 */
 
@@ -1066,7 +1067,7 @@ static void CommonRaiseLowerBigLand(Tile
 
		SndPlayTileFx(SND_1F_SPLAT, tile);
 

	
 
		assert(_terraform_size != 0);
 
		// check out for map overflows
 
		/* check out for map overflows */
 
		sizex = min(MapSizeX() - TileX(tile) - 1, _terraform_size);
 
		sizey = min(MapSizeY() - TileY(tile) - 1, _terraform_size);
 

	
 
@@ -1174,8 +1175,10 @@ static const int8 _multi_terraform_coord
 
	{-28,  0}, {-24, -2}, {-20, -4}, {-16, -6}, {-12, -8}, { -8,-10}, { -4,-12}, {  0,-14}, {  4,-12}, {  8,-10}, { 12, -8}, { 16, -6}, { 20, -4}, { 24, -2}, { 28,  0},
 
};
 

	
 
// TODO - Merge with terraform_gui.c (move there) after I have cooled down at its braindeadness
 
// and changed OnButtonClick to include the widget as well in the function decleration. Post 0.4.0 - Darkvater
 
/**
 
 * @todo Merge with terraform_gui.cpp (move there) after I have cooled down at its braindeadness
 
 * and changed OnButtonClick to include the widget as well in the function declaration. Post 0.4.0 - Darkvater
 
 */
 
static void EditorTerraformClick_Dynamite(Window *w)
 
{
 
	HandlePlacePushButton(w, 4, ANIMCURSOR_DEMOLISH, 1, PlaceProc_DemolishArea);
 
@@ -1271,7 +1274,7 @@ static void ScenEditLandGenWndProc(Windo
 
{
 
	switch (e->event) {
 
	case WE_CREATE:
 
		// XXX - lighthouse button is widget 10!! Don't forget when changing
 
		/* XXX - lighthouse button is widget 10!! Don't forget when changing */
 
		w->widget[10].tooltips = (_opt.landscape == LT_DESERT) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
 
		break;
 

	
 
@@ -1311,7 +1314,7 @@ static void ScenEditLandGenWndProc(Windo
 
		case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
 
			_editor_terraform_button_proc[e->we.click.widget - 4](w);
 
			break;
 
		case 12: case 13: { /* Increase/Decrease terraform size */
 
		case 12: case 13: { // Increase/Decrease terraform size
 
			int size = (e->we.click.widget == 12) ? 1 : -1;
 
			HandleButtonClick(w, e->we.click.widget);
 
			size += _terraform_size;
 
@@ -1322,11 +1325,11 @@ static void ScenEditLandGenWndProc(Windo
 
			SndPlayFx(SND_15_BEEP);
 
			SetWindowDirty(w);
 
		} break;
 
		case 14: /* gen random land */
 
		case 14: // gen random land
 
			HandleButtonClick(w, 14);
 
			ShowCreateScenario();
 
			break;
 
		case 15: /* Reset landscape */
 
		case 15: // Reset landscape
 
			ShowQuery(
 
			  STR_022C_RESET_LANDSCAPE,
 
			  STR_RESET_LANDSCAPE_CONFIRMATION_TEXT,
 
@@ -1431,10 +1434,10 @@ static void ScenEditTownGenWndProc(Windo
 

	
 
	case WE_CLICK:
 
		switch (e->we.click.widget) {
 
		case 4: /* new town */
 
		case 4: // new town
 
			HandlePlacePushButton(w, 4, SPR_CURSOR_TOWN, 1, PlaceProc_Town);
 
			break;
 
		case 5: {/* random town */
 
		case 5: {// random town
 
			Town *t;
 

	
 
			HandleButtonClick(w, 5);
 
@@ -1450,7 +1453,7 @@ static void ScenEditTownGenWndProc(Windo
 

	
 
			break;
 
		}
 
		case 6: {/* many random towns */
 
		case 6: {// many random towns
 
			HandleButtonClick(w, 6);
 

	
 
			_generating_world = true;
 
@@ -1605,7 +1608,7 @@ extern Industry *CreateNewIndustry(TileI
 
 * Search callback function for TryBuildIndustry
 
 * @param tile to test
 
 * @param data that is passed by the caller.  In this case, the type of industry been tested
 
 * @result of the operation
 
 * @return the success (or not) of the operation
 
 */
 
static bool SearchTileForIndustry(TileIndex tile, uint32 data)
 
{
 
@@ -1617,6 +1620,7 @@ static bool SearchTileForIndustry(TileIn
 
 * in order to find a suitable zone to create the desired industry
 
 * @param tile to start search for
 
 * @param type of the desired industry
 
 * @return the success (or not) of the operation
 
 */
 
static bool TryBuildIndustry(TileIndex tile, int type)
 
{
 
@@ -1665,7 +1669,7 @@ static void ScenEditIndustryWndProc(Wind
 
	case WE_PLACE_OBJ: {
 
		int type;
 

	
 
		// Show error if no town exists at all
 
		/* Show error if no town exists at all */
 
		type = _industry_type_to_place;
 
		if (!AnyTownExists()) {
 
			SetDParam(0, GetIndustrySpec(type)->name);
 
@@ -1804,7 +1808,7 @@ static void MainToolbarWndProc(Window *w
 
{
 
	switch (e->event) {
 
	case WE_PAINT:
 
		// Draw brown-red toolbar bg.
 
		/* Draw brown-red toolbar bg. */
 
		GfxFillRect(0, 0, w->width-1, w->height-1, 0xB2);
 
		GfxFillRect(0, 0, w->width-1, w->height-1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT));
 

	
 
@@ -2017,7 +2021,7 @@ static void ScenEditToolbarWndProc(Windo
 
		SetWindowWidgetDisabledState(w, 6, _patches_newgame.starting_year <= MIN_YEAR);
 
		SetWindowWidgetDisabledState(w, 7, _patches_newgame.starting_year >= MAX_YEAR);
 

	
 
		// Draw brown-red toolbar bg.
 
		/* Draw brown-red toolbar bg. */
 
		GfxFillRect(0, 0, w->width-1, w->height-1, 0xB2);
 
		GfxFillRect(0, 0, w->width-1, w->height-1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT));
 

	
 
@@ -2155,12 +2159,12 @@ static void StatusBarWndProc(Window *w, 
 
		);
 

	
 
		if (p != NULL) {
 
			// Draw player money
 
			/* Draw player money */
 
			SetDParam64(0, p->money64);
 
			DrawStringCentered(570, 1, p->player_money >= 0 ? STR_0004 : STR_0005, 0);
 
		}
 

	
 
		// Draw status bar
 
		/* Draw status bar */
 
		if (w->message.msg) { // true when saving is active
 
			DrawStringCentered(320, 1, STR_SAVING_GAME, 0);
 
		} else if (_do_autosave) {
 
@@ -2168,12 +2172,12 @@ static void StatusBarWndProc(Window *w, 
 
		} else if (_pause) {
 
			DrawStringCentered(320, 1, STR_0319_PAUSED, 0);
 
		} else if (WP(w,def_d).data_1 > -1280 && FindWindowById(WC_NEWS_WINDOW,0) == NULL && _statusbar_news_item.string_id != 0) {
 
			// Draw the scrolling news text
 
			/* Draw the scrolling news text */
 
			if (!DrawScrollingStatusText(&_statusbar_news_item, WP(w,def_d).data_1))
 
				WP(w,def_d).data_1 = -1280;
 
		} else {
 
			if (p != NULL) {
 
				// This is the default text
 
				/* This is the default text */
 
				SetDParam(0, p->name_1);
 
				SetDParam(1, p->name_2);
 
				DrawStringCentered(320, 1, STR_02BA, 0);
 
@@ -2199,12 +2203,12 @@ static void StatusBarWndProc(Window *w, 
 
	case WE_TICK: {
 
		if (_pause) return;
 

	
 
		if (WP(w, def_d).data_1 > -1280) { /* Scrolling text */
 
		if (WP(w, def_d).data_1 > -1280) { // Scrolling text
 
			WP(w, def_d).data_1 -= 2;
 
			InvalidateWidget(w, 1);
 
		}
 

	
 
		if (WP(w, def_d).data_2 > 0) { /* Red blot to show there are new unread newsmessages */
 
		if (WP(w, def_d).data_2 > 0) { // Red blot to show there are new unread newsmessages
 
			WP(w, def_d).data_2 -= 2;
 
		} else if (WP(w, def_d).data_2 < 0) {
 
			WP(w, def_d).data_2 = 0;
 
@@ -2311,17 +2315,17 @@ static void MainWindowWndProc(Window *w,
 
			case 'R' | WKC_CTRL: MarkWholeScreenDirty(); break;
 

	
 
#if defined(_DEBUG)
 
			case '0' | WKC_ALT: /* Crash the game */
 
			case '0' | WKC_ALT: // Crash the game
 
				*(byte*)0 = 0;
 
				break;
 

	
 
			case '1' | WKC_ALT: /* Gimme money */
 
			case '1' | WKC_ALT: // Gimme money
 
				/* Server can not cheat in advertise mode either! */
 
				if (!_networking || !_network_server || !_network_advertise)
 
					DoCommandP(0, 10000000, 0, NULL, CMD_MONEY_CHEAT);
 
				break;
 

	
 
			case '2' | WKC_ALT: /* Update the coordinates of all station signs */
 
			case '2' | WKC_ALT: // Update the coordinates of all station signs
 
				UpdateAllStationVirtCoord();
 
				break;
 
#endif
 
@@ -2418,7 +2422,7 @@ void SetupColorsAndInitialWindow(void)
 
	w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL);
 
	AssignWindowViewport(w, 0, 0, width, height, TileXY(32, 32), 0);
 

	
 
	// XXX: these are not done
 
	/* XXX: these are not done */
 
	switch (_game_mode) {
 
		default: NOT_REACHED();
 
		case GM_MENU:
src/map.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file map.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "debug.h"
 
@@ -25,8 +27,8 @@ Tile* _m = NULL;
 

	
 
void AllocateMap(uint size_x, uint size_y)
 
{
 
	// Make sure that the map size is within the limits and that
 
	// the x axis size is a power of 2.
 
	/* Make sure that the map size is within the limits and that
 
	 * the x axis size is a power of 2. */
 
	if (size_x < 64 || size_x > 2048 ||
 
			size_y < 64 || size_y > 2048 ||
 
			(size_x&(size_x-1)) != 0 ||
 
@@ -44,7 +46,7 @@ void AllocateMap(uint size_x, uint size_
 
	free(_m);
 
	_m = CallocT<Tile>(_map_size);
 

	
 
	// XXX TODO handle memory shortage more gracefully
 
	/* XXX TODO handle memory shortage more gracefully */
 
	if (_m == NULL) error("Failed to allocate memory for the map");
 
}
 

	
 
@@ -86,36 +88,36 @@ TileIndex TileAdd(TileIndex tile, TileIn
 

	
 
uint ScaleByMapSize(uint n)
 
{
 
	// First shift by 12 to prevent integer overflow for large values of n.
 
	// >>12 is safe since the min mapsize is 64x64
 
	// Add (1<<4)-1 to round upwards.
 
	/* First shift by 12 to prevent integer overflow for large values of n.
 
	 * >>12 is safe since the min mapsize is 64x64
 
	 * Add (1<<4)-1 to round upwards. */
 
	return (n * (MapSize() >> 12) + (1<<4) - 1) >> 4;
 
}
 

	
 

	
 
// Scale relative to the circumference of the map
 
/* Scale relative to the circumference of the map */
 
uint ScaleByMapSize1D(uint n)
 
{
 
	// Normal circumference for the X+Y is 256+256 = 1<<9
 
	// Note, not actually taking the full circumference into account,
 
	// just half of it.
 
	// (1<<9) - 1 is there to scale upwards.
 
	/* Normal circumference for the X+Y is 256+256 = 1<<9
 
	 * Note, not actually taking the full circumference into account,
 
	 * just half of it.
 
	 * (1<<9) - 1 is there to scale upwards. */
 
	return (n * (MapSizeX() + MapSizeY()) + (1<<9) - 1) >> 9;
 
}
 

	
 

	
 
// This function checks if we add addx/addy to tile, if we
 
//  do wrap around the edges. For example, tile = (10,2) and
 
//  addx = +3 and addy = -4. This function will now return
 
//  INVALID_TILE, because the y is wrapped. This is needed in
 
//  for example, farmland. When the tile is not wrapped,
 
//  the result will be tile + TileDiffXY(addx, addy)
 
/* This function checks if we add addx/addy to tile, if we
 
 *  do wrap around the edges. For example, tile = (10,2) and
 
 *  addx = +3 and addy = -4. This function will now return
 
 *  INVALID_TILE, because the y is wrapped. This is needed in
 
 *  for example, farmland. When the tile is not wrapped,
 
 *  the result will be tile + TileDiffXY(addx, addy) */
 
uint TileAddWrap(TileIndex tile, int addx, int addy)
 
{
 
	uint x = TileX(tile) + addx;
 
	uint y = TileY(tile) + addy;
 

	
 
	// Are we about to wrap?
 
	/* Are we about to wrap? */
 
	if (x < MapMaxX() && y < MapMaxY())
 
		return tile + TileDiffXY(addx, addy);
 

	
 
@@ -123,21 +125,21 @@ uint TileAddWrap(TileIndex tile, int add
 
}
 

	
 
extern const TileIndexDiffC _tileoffs_by_diagdir[] = {
 
	{-1,  0}, // DIAGDIR_NE
 
	{ 0,  1}, // DIAGDIR_SE
 
	{ 1,  0}, // DIAGDIR_SW
 
	{ 0, -1}  // DIAGDIR_NW
 
	{-1,  0}, ///< DIAGDIR_NE
 
	{ 0,  1}, ///< DIAGDIR_SE
 
	{ 1,  0}, ///< DIAGDIR_SW
 
	{ 0, -1}  ///< DIAGDIR_NW
 
};
 

	
 
extern const TileIndexDiffC _tileoffs_by_dir[] = {
 
	{-1, -1}, // DIR_N
 
	{-1,  0}, // DIR_NE
 
	{-1,  1}, // DIR_E
 
	{ 0,  1}, // DIR_SE
 
	{ 1,  1}, // DIR_S
 
	{ 1,  0}, // DIR_SW
 
	{ 1, -1}, // DIR_W
 
	{ 0, -1}  // DIR_NW
 
	{-1, -1}, ///< DIR_N
 
	{-1,  0}, ///< DIR_NE
 
	{-1,  1}, ///< DIR_E
 
	{ 0,  1}, ///< DIR_SE
 
	{ 1,  1}, ///< DIR_S
 
	{ 1,  0}, ///< DIR_SW
 
	{ 1, -1}, ///< DIR_W
 
	{ 0, -1}  ///< DIR_NW
 
};
 

	
 
uint DistanceManhattan(TileIndex t0, TileIndex t1)
 
@@ -191,7 +193,7 @@ uint DistanceFromEdge(TileIndex tile)
 
 * @param size: number of tiles per side of the desired search area
 
 * @param proc: callback testing function pointer.
 
 * @param data to be passed to the callback function. Depends on the implementation
 
 * @result of the search
 
 * @return result of the search
 
 * @pre proc != NULL
 
 * @pre size > 0
 
 */
src/map.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file map.h */
 

	
 
#ifndef MAP_H
 
#define MAP_H
 

	
 
#include "stdafx.h"
 

	
 
// Putting externs inside inline functions seems to confuse the aliasing
 
// checking on MSVC6. Never use those variables directly.
 
/* Putting externs inside inline functions seems to confuse the aliasing
 
 * checking on MSVC6. Never use those variables directly. */
 
extern uint _map_log_x;
 
extern uint _map_size_x;
 
extern uint _map_size_y;
 
@@ -30,7 +32,7 @@ extern Tile* _m;
 

	
 
void AllocateMap(uint size_x, uint size_y);
 

	
 
// binary logarithm of the map size, try to avoid using this one
 
/* binary logarithm of the map size, try to avoid using this one */
 
static inline uint MapLogX(void)  { return _map_log_x; }
 
/* The size of the map */
 
static inline uint MapSizeX(void) { return _map_size_x; }
 
@@ -41,7 +43,7 @@ static inline uint MapMaxY(void) { retur
 
/* The number of tiles in the map */
 
static inline uint MapSize(void) { return _map_size; }
 

	
 
// Scale a number relative to the map size
 
/* Scale a number relative to the map size */
 
uint ScaleByMapSize(uint); // Scale relative to the number of tiles
 
uint ScaleByMapSize1D(uint); // Scale relative to the circumference of the map
 

	
 
@@ -55,10 +57,10 @@ static inline TileIndex TileXY(uint x, u
 

	
 
static inline TileIndexDiff TileDiffXY(int x, int y)
 
{
 
	// Multiplication gives much better optimization on MSVC than shifting.
 
	// 0 << shift isn't optimized to 0 properly.
 
	// Typically x and y are constants, and then this doesn't result
 
	// in any actual multiplication in the assembly code..
 
	/* Multiplication gives much better optimization on MSVC than shifting.
 
	 * 0 << shift isn't optimized to 0 properly.
 
	 * Typically x and y are constants, and then this doesn't result
 
	 * in any actual multiplication in the assembly code.. */
 
	return (y * MapSizeX()) + x;
 
}
 

	
 
@@ -73,9 +75,9 @@ enum {
 
};
 

	
 
enum {
 
	TILE_SIZE   = 16,   /* Tiles are 16x16 "units" in size */
 
	TILE_PIXELS = 32,   /* a tile is 32x32 pixels */
 
	TILE_HEIGHT =  8,   /* The standard height-difference between tiles on two levels is 8 (z-diff 8) */
 
	TILE_SIZE   = 16,   ///< Tiles are 16x16 "units" in size
 
	TILE_PIXELS = 32,   ///< a tile is 32x32 pixels
 
	TILE_HEIGHT =  8,   ///< The standard height-difference between tiles on two levels is 8 (z-diff 8)
 
};
 

	
 

	
 
@@ -132,12 +134,12 @@ static inline TileIndex AddTileIndexDiff
 
		return TileXY(x, y);
 
}
 

	
 
// Functions to calculate distances
 
uint DistanceManhattan(TileIndex, TileIndex); // also known as L1-Norm. Is the shortest distance one could go over diagonal tracks (or roads)
 
uint DistanceSquare(TileIndex, TileIndex); // euclidian- or L2-Norm squared
 
uint DistanceMax(TileIndex, TileIndex); // also known as L-Infinity-Norm
 
uint DistanceMaxPlusManhattan(TileIndex, TileIndex); // Max + Manhattan
 
uint DistanceFromEdge(TileIndex); // shortest distance from any edge of the map
 
/* Functions to calculate distances */
 
uint DistanceManhattan(TileIndex, TileIndex); ///< also known as L1-Norm. Is the shortest distance one could go over diagonal tracks (or roads)
 
uint DistanceSquare(TileIndex, TileIndex); ///< euclidian- or L2-Norm squared
 
uint DistanceMax(TileIndex, TileIndex); ///< also known as L-Infinity-Norm
 
uint DistanceMaxPlusManhattan(TileIndex, TileIndex); ///< Max + Manhattan
 
uint DistanceFromEdge(TileIndex); ///< shortest distance from any edge of the map
 

	
 

	
 
#define BEGIN_TILE_LOOP(var,w,h,tile)                      \
src/md5.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file md5.cpp */
 

	
 
/*
 
  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
 

	
 
@@ -23,7 +25,7 @@
 
  ghost@aladdin.com
 

	
 
 */
 
/* $Id$ */
 

	
 
/*
 
  Independent implementation of MD5 (RFC 1321).
 

	
src/md5.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file md5.h */
 

	
 
/*
 
  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
 

	
 
@@ -23,7 +25,7 @@
 
  ghost@aladdin.com
 

	
 
 */
 
/* $Id$ */
 

	
 
/*
 
  Independent implementation of MD5 (RFC 1321).
 

	
src/mersenne.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file mersenne.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 

	
src/minilzo.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/* minilzo.c -- mini subset of the LZO real-time data compression library
 
/* @file minilzo.cpp -- mini subset of the LZO real-time data compression library
 

	
 
   This file is part of the LZO real-time data compression library.
 

	
src/minilzo.h
Show inline comments
 
/* $Id$ */
 

	
 
/* minilzo.h -- mini subset of the LZO real-time data compression library
 
/* @file minilzo.h -- mini subset of the LZO real-time data compression library
 

	
 
   This file is part of the LZO real-time data compression library.
 

	
src/misc.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file misc.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "currency.h"
 
@@ -234,7 +236,7 @@ void ConvertNameArray(void)
 
	}
 
}
 

	
 
// Calculate constants that depend on the landscape type.
 
/* Calculate constants that depend on the landscape type. */
 
void InitializeLandscapeVariables(bool only_constants)
 
{
 
	if (only_constants) return;
 
@@ -249,8 +251,8 @@ void InitializeLandscapeVariables(bool o
 

	
 
int FindFirstBit(uint32 value)
 
{
 
	// The macro FIND_FIRST_BIT is better to use when your value is
 
	// not more than 128.
 
	/* The macro FIND_FIRST_BIT is better to use when your value is
 
	  not more than 128. */
 
	byte i = 0;
 

	
 
	if (value == 0) return 0;
 
@@ -310,8 +312,8 @@ static const SaveLoadGlobVarList _date_d
 
	    SLEG_END()
 
};
 

	
 
// Save load date related variables as well as persistent tick counters
 
// XXX: currently some unrelated stuff is just put here
 
/* Save load date related variables as well as persistent tick counters
 
 * XXX: currently some unrelated stuff is just put here */
 
static void SaveLoad_DATE(void)
 
{
 
	SlGlobList(_date_desc);
src/misc_cmd.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file misc_cmd.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "functions.h"
src/misc_gui.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file misc_gui.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "hal.h"
 
@@ -249,7 +251,7 @@ static const char *credits[] = {
 
static void AboutWindowProc(Window *w, WindowEvent *e)
 
{
 
	switch (e->event) {
 
	case WE_CREATE: /* Set up window counter and start position of scroller */
 
	case WE_CREATE: // Set up window counter and start position of scroller
 
		WP(w, scroller_d).counter = 0;
 
		WP(w, scroller_d).height = w->height - 40;
 
		break;
 
@@ -258,11 +260,11 @@ static void AboutWindowProc(Window *w, W
 
		int y = WP(w, scroller_d).height;
 
		DrawWindowWidgets(w);
 

	
 
		// Show original copyright and revision version
 
		/* Show original copyright and revision version */
 
		DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
 
		DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, 0);
 

	
 
		// Show all scrolling credits
 
		/* Show all scrolling credits */
 
		for (i = 0; i < lengthof(credits); i++) {
 
			if (y >= 50 && y < (w->height - 40)) {
 
				DoDrawString(credits[i], 10, y, 0x10);
 
@@ -270,13 +272,13 @@ static void AboutWindowProc(Window *w, W
 
			y += 10;
 
		}
 

	
 
		// If the last text has scrolled start anew from the start
 
		/* If the last text has scrolled start anew from the start */
 
		if (y < 50) WP(w, scroller_d).height = w->height - 40;
 

	
 
		DoDrawStringCentered(210, w->height - 25, "Website: http://www.openttd.org", 16);
 
		DrawStringCentered(210, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 0);
 
	}	break;
 
	case WE_MOUSELOOP: /* Timer to scroll the text and adjust the new top */
 
	case WE_MOUSELOOP: // Timer to scroll the text and adjust the new top
 
		if (WP(w, scroller_d).counter++ % 3 == 0) {
 
			WP(w, scroller_d).height--;
 
			SetWindowDirty(w);
 
@@ -369,7 +371,7 @@ static void BuildTreesWndProc(Window *w,
 
				_tree_to_plant = -1;
 
			break;
 

	
 
		case 16: /* place trees randomly over the landscape*/
 
		case 16: // place trees randomly over the landscape
 
			LowerWindowWidget(w, 16);
 
			w->flags4 |= 5 << WF_TIMEOUT_SHL;
 
			SndPlayFx(SND_15_BEEP);
 
@@ -545,7 +547,7 @@ static void ErrmsgWndProc(Window *w, Win
 

	
 
	case WE_KEYPRESS:
 
		if (e->we.keypress.keycode == WKC_SPACE) {
 
			// Don't continue.
 
			/* Don't continue. */
 
			e->we.keypress.cont = false;
 
			DeleteWindow(w);
 
		}
 
@@ -576,11 +578,11 @@ void ShowErrorMessage(StringID msg_1, St
 
			pt = RemapCoords2(x, y);
 
			vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
 

	
 
			// move x pos to opposite corner
 
			/* move x pos to opposite corner */
 
			pt.x = ((pt.x - vp->virtual_left) >> vp->zoom) + vp->left;
 
			pt.x = (pt.x < (_screen.width >> 1)) ? _screen.width - 260 : 20;
 

	
 
			// move y pos to opposite corner
 
			/* move y pos to opposite corner */
 
			pt.y = ((pt.y - vp->virtual_top) >> vp->zoom) + vp->top;
 
			pt.y = (pt.y < (_screen.height >> 1)) ? _screen.height - 80 : 100;
 

	
 
@@ -1105,12 +1107,12 @@ static void QueryStringWndProc(Window *w
 

	
 
		case WE_KEYPRESS:
 
			switch (HandleEditBoxKey(w, qs, QUERY_STR_WIDGET_TEXT, e)) {
 
				case 1: goto press_ok; /* Enter pressed, confirms change */
 
				case 2: DeleteWindow(w); break; /* ESC pressed, closes window, abandons changes */
 
				case 1: goto press_ok; // Enter pressed, confirms change
 
				case 2: DeleteWindow(w); break; // ESC pressed, closes window, abandons changes
 
			}
 
			break;
 

	
 
		case WE_DESTROY: /* Call cancellation of query, if we have not handled it before */
 
		case WE_DESTROY: // Call cancellation of query, if we have not handled it before
 
			if (!qs->handled && w->parent != NULL) {
 
				WindowEvent e;
 
				Window *parent = w->parent;
 
@@ -1225,7 +1227,7 @@ static void QueryWndProc(Window *w, Wind
 
				}
 
			break;
 

	
 
		case WE_KEYPRESS: /* ESC closes the window, Enter confirms the action */
 
		case WE_KEYPRESS: // ESC closes the window, Enter confirms the action
 
			switch (e->we.keypress.keycode) {
 
				case WKC_RETURN:
 
				case WKC_NUM_ENTER:
 
@@ -1239,7 +1241,7 @@ static void QueryWndProc(Window *w, Wind
 
			}
 
			break;
 

	
 
		case WE_DESTROY: /* Call callback function (if any) on window close if not yet called */
 
		case WE_DESTROY: // Call callback function (if any) on window close if not yet called
 
			if (!q->calledback && q->proc != NULL) {
 
				q->calledback = true;
 
				q->proc(w->parent, false);
 
@@ -1327,7 +1329,7 @@ static const Widget _save_dialog_widgets
 
{   WIDGETS_END},
 
};
 

	
 
// Colors for fios types
 
/* Colors for fios types */
 
const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5, 6, 6, 8};
 

	
 
void BuildFileList(void)
 
@@ -1406,7 +1408,7 @@ static void SaveLoadDlgWndProc(Window *w
 
	static FiosItem o_dir;
 

	
 
	switch (e->event) {
 
	case WE_CREATE: { /* Set up OPENTTD button */
 
	case WE_CREATE: { // Set up OPENTTD button
 
		o_dir.type = FIOS_TYPE_DIRECT;
 
		switch (_saveload_mode) {
 
			case SLD_SAVE_GAME:
 
@@ -1466,27 +1468,27 @@ static void SaveLoadDlgWndProc(Window *w
 

	
 
	case WE_CLICK:
 
		switch (e->we.click.widget) {
 
		case 2: /* Sort save names by name */
 
		case 2: // Sort save names by name
 
			_savegame_sort_order = (_savegame_sort_order == SORT_BY_NAME) ?
 
				SORT_BY_NAME | SORT_DESCENDING : SORT_BY_NAME;
 
			_savegame_sort_dirty = true;
 
			SetWindowDirty(w);
 
			break;
 

	
 
		case 3: /* Sort save names by date */
 
		case 3: // Sort save names by date
 
			_savegame_sort_order = (_savegame_sort_order == SORT_BY_DATE) ?
 
				SORT_BY_DATE | SORT_DESCENDING : SORT_BY_DATE;
 
			_savegame_sort_dirty = true;
 
			SetWindowDirty(w);
 
			break;
 

	
 
		case 6: /* OpenTTD 'button', jumps to OpenTTD directory */
 
		case 6: // OpenTTD 'button', jumps to OpenTTD directory
 
			FiosBrowseTo(&o_dir);
 
			SetWindowDirty(w);
 
			BuildFileList();
 
			break;
 

	
 
		case 7: { /* Click the listbox */
 
		case 7: { // Click the listbox
 
			int y = (e->we.click.pt.y - w->widget[e->we.click.widget].top - 1) / 10;
 
			char *name;
 
			const FiosItem *file;
 
@@ -1513,20 +1515,20 @@ static void SaveLoadDlgWndProc(Window *w
 
					DeleteWindow(w);
 
					ShowHeightmapLoad();
 
				} else {
 
					// SLD_SAVE_GAME, SLD_SAVE_SCENARIO copy clicked name to editbox
 
					/* SLD_SAVE_GAME, SLD_SAVE_SCENARIO copy clicked name to editbox */
 
					ttd_strlcpy(WP(w, querystr_d).text.buf, file->title, WP(w, querystr_d).text.maxlength);
 
					UpdateTextBufferSize(&WP(w, querystr_d).text);
 
					InvalidateWidget(w, 10);
 
				}
 
			} else {
 
				// Changed directory, need repaint.
 
				/* Changed directory, need repaint. */
 
				SetWindowDirty(w);
 
				BuildFileList();
 
			}
 
			break;
 
		}
 

	
 
		case 11: case 12: /* Delete, Save game */
 
		case 11: case 12: // Delete, Save game
 
			break;
 
		}
 
		break;
 
@@ -1542,7 +1544,7 @@ static void SaveLoadDlgWndProc(Window *w
 
		}
 

	
 
		if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
 
			if (HandleEditBoxKey(w, &WP(w, querystr_d), 10, e) == 1) /* Press Enter */
 
			if (HandleEditBoxKey(w, &WP(w, querystr_d), 10, e) == 1) // Press Enter
 
					HandleButtonClick(w, 12);
 
		}
 
		break;
 
@@ -1551,7 +1553,7 @@ static void SaveLoadDlgWndProc(Window *w
 
		 * in those two saveload mode  */
 
		if (!(_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO)) break;
 

	
 
		if (IsWindowWidgetLowered(w, 11)) { /* Delete button clicked */
 
		if (IsWindowWidgetLowered(w, 11)) { // Delete button clicked
 
			if (!FiosDelete(WP(w,querystr_d).text.buf)) {
 
				ShowErrorMessage(INVALID_STRING_ID, STR_4008_UNABLE_TO_DELETE_FILE, 0, 0);
 
			} else {
 
@@ -1562,7 +1564,7 @@ static void SaveLoadDlgWndProc(Window *w
 

	
 
			UpdateTextBufferSize(&WP(w, querystr_d).text);
 
			SetWindowDirty(w);
 
		} else if (IsWindowWidgetLowered(w, 12)) { /* Save button clicked */
 
		} else if (IsWindowWidgetLowered(w, 12)) { // Save button clicked
 
			_switch_mode = SM_SAVE;
 
			FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).text.buf, sizeof(_file_to_saveload.name));
 

	
 
@@ -1571,7 +1573,7 @@ static void SaveLoadDlgWndProc(Window *w
 
		}
 
		break;
 
	case WE_DESTROY:
 
		// pause is only used in single-player, non-editor mode, non menu mode
 
		/* pause is only used in single-player, non-editor mode, non menu mode */
 
		if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
 
			DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
 
		}
 
@@ -1652,8 +1654,8 @@ void ShowSaveLoadDialog(int mode)
 
	WP(w, querystr_d).afilter = CS_ALPHANUMERAL;
 
	InitializeTextBuffer(&WP(w, querystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 240);
 

	
 
	// pause is only used in single-player, non-editor mode, non-menu mode. It
 
	// will be unpaused in the WE_DESTROY event handler.
 
	/* pause is only used in single-player, non-editor mode, non-menu mode. It
 
	 * will be unpaused in the WE_DESTROY event handler. */
 
	if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) {
 
		DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
 
	}
 
@@ -1703,7 +1705,10 @@ static int32 ClickMoneyCheat(int32 p1, i
 
		return true;
 
}
 

	
 
// p1 player to set to, p2 is -1 or +1 (down/up)
 
/**
 
 * @param p1 player to set to
 
 * @param p2 is -1 or +1 (down/up)
 
 */
 
static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
 
{
 
	while (IsValidPlayer((PlayerID)p1)) {
 
@@ -1719,7 +1724,9 @@ static int32 ClickChangePlayerCheat(int3
 
	return _local_player;
 
}
 

	
 
// p1 -1 or +1 (down/up)
 
/**
 
 * @param p1 -1 or +1 (down/up)
 
 */
 
static int32 ClickChangeClimateCheat(int32 p1, int32 p2)
 
{
 
	if (p1 == -1) p1 = 3;
 
@@ -1731,7 +1738,9 @@ static int32 ClickChangeClimateCheat(int
 

	
 
extern void EnginesMonthlyLoop(void);
 

	
 
// p2 1 (increase) or -1 (decrease)
 
/**
 
 * @param p2 1 (increase) or -1 (decrease)
 
 */
 
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
 
{
 
	YearMonthDay ymd;
 
@@ -1760,13 +1769,13 @@ typedef TinyEnumT<ce_flags_long> ce_flag
 

	
 

	
 
typedef struct CheatEntry {
 
	VarType type;          // type of selector
 
	ce_flags flags;        // selector flags
 
	StringID str;          // string with descriptive text
 
	void *variable;        // pointer to the variable
 
	bool *been_used;       // has this cheat been used before?
 
	CheckButtonClick *proc;// procedure
 
	int16 min, max;        // range for spinbox setting
 
	VarType type;          ///< type of selector
 
	ce_flags flags;        ///< selector flags
 
	StringID str;          ///< string with descriptive text
 
	void *variable;        ///< pointer to the variable
 
	bool *been_used;       ///< has this cheat been used before?
 
	CheckButtonClick *proc;///< procedure
 
	int16 min, max;        ///< range for spinbox setting
 
} CheatEntry;
 

	
 
static const CheatEntry _cheats_ui[] = {
 
@@ -1863,7 +1872,7 @@ static void CheatsWndProc(Window *w, Win
 
			int32 value, oldvalue;
 
			uint x = e->we.click.pt.x;
 

	
 
			// not clicking a button?
 
			/* not clicking a button? */
 
			if (!IS_INT_INSIDE(x, 20, 40) || btn >= lengthof(_cheats_ui)) break;
 

	
 
			ce = &_cheats_ui[btn];
 
@@ -1887,7 +1896,7 @@ static void CheatsWndProc(Window *w, Win
 
				value += (x >= 30) ? step : -step;
 
				value = clamp(value, ce->min, ce->max);
 

	
 
				// take whatever the function returns
 
				/* take whatever the function returns */
 
				value = ce->proc(value, (x >= 30) ? 1 : -1);
 

	
 
				if (value != oldvalue) {
src/mixer.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file mixer.cpp*/
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "mixer.h"
 
@@ -7,16 +9,16 @@
 
struct MixerChannel {
 
	bool active;
 

	
 
	// pointer to allocated buffer memory
 
	/* pointer to allocated buffer memory */
 
	int8 *memory;
 

	
 
	// current position in memory
 
	/* current position in memory */
 
	uint32 pos;
 
	uint32 frac_pos;
 
	uint32 frac_speed;
 
	uint32 samples_left;
 

	
 
	// Mixing volume
 
	/* Mixing volume */
 
	uint volume_left;
 
	uint volume_right;
 

	
 
@@ -46,7 +48,7 @@ static void mix_int8_to_int16(MixerChann
 
	volume_right = sc->volume_right;
 

	
 
	if (frac_speed == 0x10000) {
 
		// Special case when frac_speed is 0x10000
 
		/* Special case when frac_speed is 0x10000 */
 
		do {
 
			buffer[0] += *b * volume_left >> 8;
 
			buffer[1] += *b * volume_right >> 8;
 
@@ -79,10 +81,10 @@ void MxMixSamples(void *buffer, uint sam
 
{
 
	MixerChannel *mc;
 

	
 
	// Clear the buffer
 
	/* Clear the buffer */
 
	memset(buffer, 0, sizeof(int16) * 2 * samples);
 

	
 
	// Mix each channel
 
	/* Mix each channel */
 
	for (mc = _channels; mc != endof(_channels); mc++) {
 
		if (mc->active) {
 
			mix_int8_to_int16(mc, (int16*)buffer, samples);
 
@@ -111,7 +113,7 @@ void MxSetChannelRawSrc(MixerChannel *mc
 

	
 
	mc->frac_speed = (rate << 16) / _play_rate;
 

	
 
	// adjust the magnitude to prevent overflow
 
	/* adjust the magnitude to prevent overflow */
 
	while (size & 0xFFFF0000) {
 
		size >>= 1;
 
		rate = (rate >> 1) + 1;
src/mixer.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file mixer.h */
 

	
 
#ifndef MIXER_H
 
#define MIXER_H
 

	
src/music.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file music.cpp */
 

	
 
#include "music.h"
 

	
 
const SongSpecs origin_songs_specs[NUM_SONGS_AVAILABLE] = {
src/music.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file music.h */
 

	
 
#ifndef MUSIC_H
 
#define MUSIC_H
 

	
src/music_gui.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file music_gui.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "table/strings.h"
src/station_cmd.cpp
Show inline comments
 
@@ -141,7 +141,7 @@ static Station* GetStationAround(TileInd
 
 * @param type the type of tile searched for
 
 * @param industry when type == MP_INDUSTRY, the type of the industry,
 
 *                 in all other cases this parameter is ignored
 
 * @result the noumber of matching tiles around
 
 * @return the result the noumber of matching tiles around
 
 */
 
static int CountMapSquareAround(TileIndex tile, TileType type, IndustryType industry)
 
{
src/town_cmd.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file town_cmd.cpp */
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#include "functions.h"
 
@@ -1492,7 +1494,7 @@ static bool DoBuildStatueOfCompany(TileI
 
/**
 
 * Search callback function for TownActionBuildStatue
 
 * @param data that is passed by the caller.  In this case, nothing
 
 * @result of the test
 
 * @return the result of the test
 
 */
 
static bool SearchTileForStatue(TileIndex tile, uint32 data)
 
{
src/yapf/yapf_common.cpp
Show inline comments
 
/* $Id$ */
 

	
 
/** @file yapf_common.cpp */
 

	
 
#include "../stdafx.h"
 

	
 
#include "yapf.hpp"
 
@@ -10,20 +12,20 @@
 

	
 
/** translate tileh to the bitset of up-hill trackdirs */
 
const TrackdirBits CYapfCostBase::c_upwards_slopes[] = {
 
	TRACKDIR_BIT_NONE                    , // no tileh
 
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, // 1
 
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, // 2
 
	TRACKDIR_BIT_X_SW                    , // 3
 
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, // 4
 
	TRACKDIR_BIT_NONE                    , // 5
 
	TRACKDIR_BIT_Y_SE                    , // 6
 
	TRACKDIR_BIT_NONE                    , // 7
 
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, // 8,
 
	TRACKDIR_BIT_Y_NW                    , // 9
 
	TRACKDIR_BIT_NONE                    , //10
 
	TRACKDIR_BIT_NONE                    , //11,
 
	TRACKDIR_BIT_X_NE                    , //12
 
	TRACKDIR_BIT_NONE                    , //13
 
	TRACKDIR_BIT_NONE                    , //14
 
	TRACKDIR_BIT_NONE                    , //15
 
	TRACKDIR_BIT_NONE                    , ///<  no tileh
 
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, ///<  1
 
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, ///<  2
 
	TRACKDIR_BIT_X_SW                    , ///<  3
 
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///<  4
 
	TRACKDIR_BIT_NONE                    , ///<  5
 
	TRACKDIR_BIT_Y_SE                    , ///<  6
 
	TRACKDIR_BIT_NONE                    , ///<  7
 
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, ///<  8
 
	TRACKDIR_BIT_Y_NW                    , ///<  9
 
	TRACKDIR_BIT_NONE                    , ///< 10
 
	TRACKDIR_BIT_NONE                    , ///< 11
 
	TRACKDIR_BIT_X_NE                    , ///< 12
 
	TRACKDIR_BIT_NONE                    , ///< 13
 
	TRACKDIR_BIT_NONE                    , ///< 14
 
	TRACKDIR_BIT_NONE                    , ///< 15
 
};
0 comments (0 inline, 0 general)