(svn r9568) -Documentation: doxygen and comment changes: Root of src is finally done. Now, time to start clearing as much as possible

This commit is contained in:
belugas 2007-04-06 04:10:19 +00:00
parent 15d360c7f6
commit d4d5ce7ee5
13 changed files with 192 additions and 124 deletions

View File

@ -63,6 +63,7 @@ void DedicatedFork()
#else #else
/** Empty helper function call for NOT(UNIX and not MORPHOS) systems */
void DedicatedFork() {} void DedicatedFork() {}
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */

View File

@ -24,7 +24,7 @@ enum Direction {
/** Define basic enum properties */ /** Define basic enum properties */
template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {}; template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {};
typedef TinyEnumT<Direction> DirectionByte; typedef TinyEnumT<Direction> DirectionByte; //typedefing-enumification of Direction
static inline Direction ReverseDir(Direction d) static inline Direction ReverseDir(Direction d)
{ {
@ -73,7 +73,7 @@ DECLARE_POSTFIX_INCREMENT(DiagDirection);
/** Define basic enum properties */ /** Define basic enum properties */
template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {}; template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {};
typedef TinyEnumT<DiagDirection> DiagDirectionByte; typedef TinyEnumT<DiagDirection> DiagDirectionByte; //typedefing-enumification of DiagDirection
static inline DiagDirection ReverseDiagDir(DiagDirection d) static inline DiagDirection ReverseDiagDir(DiagDirection d)
{ {
@ -137,7 +137,9 @@ static inline DiagDirection AxisToDiagDir(Axis a)
/** /**
* Convert an axis and a flag for north/south into a DiagDirection * Convert an axis and a flag for north/south into a DiagDirection
* @param xy axis to convert
* @param ns north -> 0, south -> 1 * @param ns north -> 0, south -> 1
* @return the desired DiagDirection
*/ */
static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns) static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns)
{ {

View File

@ -1690,6 +1690,7 @@ extern int GetAmountOwnedBy(const Player *p, PlayerID owner);
/** Acquire shares in an opposing company. /** Acquire shares in an opposing company.
* @param tile unused * @param tile unused
* @param flags type of operation
* @param p1 player to buy the shares from * @param p1 player to buy the shares from
* @param p2 unused * @param p2 unused
*/ */
@ -1735,6 +1736,7 @@ int32 CmdBuyShareInCompany(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/** Sell shares in an opposing company. /** Sell shares in an opposing company.
* @param tile unused * @param tile unused
* @param flags type of operation
* @param p1 player to sell the shares from * @param p1 player to sell the shares from
* @param p2 unused * @param p2 unused
*/ */
@ -1770,6 +1772,7 @@ int32 CmdSellShareInCompany(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
* that company. * that company.
* @todo currently this only works for AI players * @todo currently this only works for AI players
* @param tile unused * @param tile unused
* @param flags type of operation
* @param p1 player/company to buy up * @param p1 player/company to buy up
* @param p2 unused * @param p2 unused
*/ */

View File

@ -12,6 +12,10 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
/** Main call of the endian_check program
* @param argc argument count
* @param argv arguments themselves
* @return exit code */
int main (int argc, char *argv[]) { int main (int argc, char *argv[]) {
unsigned char EndianTest[2] = { 1, 0 }; unsigned char EndianTest[2] = { 1, 0 };
int force_BE = 0, force_LE = 0, force_PREPROCESSOR = 0; int force_BE = 0, force_LE = 0, force_PREPROCESSOR = 0;

View File

@ -656,7 +656,7 @@ int32 CmdBuildSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* convert signals <-> semaphores */ /* convert signals <-> semaphores */
cost = _price.build_signals + _price.remove_signals; cost = _price.build_signals + _price.remove_signals;
} else { } else {
// it is free to change orientation/pre-exit-combo signals /* it is free to change orientation/pre-exit-combo signals */
cost = 0; cost = 0;
} }
} }
@ -741,7 +741,7 @@ static int32 CmdSignalTrackHelper(TileIndex tile, uint32 flags, uint32 p1, uint3
track = TrackdirToTrack(trackdir); /* trackdir might have changed, keep track in sync */ track = TrackdirToTrack(trackdir); /* trackdir might have changed, keep track in sync */
// copy the signal-style of the first rail-piece if existing /* copy the signal-style of the first rail-piece if existing */
if (HasSignals(tile)) { if (HasSignals(tile)) {
signals = _m[tile].m3 & SignalOnTrack(track); signals = _m[tile].m3 & SignalOnTrack(track);
if (signals == 0) signals = SignalOnTrack(track); /* Can this actually occur? */ if (signals == 0) signals = SignalOnTrack(track); /* Can this actually occur? */

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file water_cmd.cpp */
#include "stdafx.h" #include "stdafx.h"
#include "openttd.h" #include "openttd.h"
#include "bridge_map.h" #include "bridge_map.h"
@ -47,6 +49,7 @@ static void FloodVehicle(Vehicle *v);
/** Build a ship depot. /** Build a ship depot.
* @param tile tile where ship depot is built * @param tile tile where ship depot is built
* @param flags type of operation
* @param p1 bit 0 depot orientation (Axis) * @param p1 bit 0 depot orientation (Axis)
* @param p2 unused * @param p2 unused
*/ */
@ -76,7 +79,7 @@ int32 CmdBuildShipDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR); ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) return CMD_ERROR; if (CmdFailed(ret)) return CMD_ERROR;
// pretend that we're not making land from the water even though we actually are. /* pretend that we're not making land from the water even though we actually are. */
cost = 0; cost = 0;
depot = AllocateDepot(); depot = AllocateDepot();
@ -120,25 +123,25 @@ static int32 RemoveShipDepot(TileIndex tile, uint32 flags)
return _price.remove_ship_depot; return _price.remove_ship_depot;
} }
// build a shiplift /** build a shiplift */
static int32 DoBuildShiplift(TileIndex tile, DiagDirection dir, uint32 flags) static int32 DoBuildShiplift(TileIndex tile, DiagDirection dir, uint32 flags)
{ {
int32 ret; int32 ret;
int delta; int delta;
// middle tile /* middle tile */
ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) return CMD_ERROR; if (CmdFailed(ret)) return CMD_ERROR;
delta = TileOffsByDiagDir(dir); delta = TileOffsByDiagDir(dir);
// lower tile /* lower tile */
ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) return CMD_ERROR; if (CmdFailed(ret)) return CMD_ERROR;
if (GetTileSlope(tile - delta, NULL) != SLOPE_FLAT) { if (GetTileSlope(tile - delta, NULL) != SLOPE_FLAT) {
return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION); return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
} }
// upper tile /* upper tile */
ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) return CMD_ERROR; if (CmdFailed(ret)) return CMD_ERROR;
if (GetTileSlope(tile + delta, NULL) != SLOPE_FLAT) { if (GetTileSlope(tile + delta, NULL) != SLOPE_FLAT) {
@ -167,7 +170,7 @@ static int32 RemoveShiplift(TileIndex tile, uint32 flags)
if (!CheckTileOwnership(tile)) return CMD_ERROR; if (!CheckTileOwnership(tile)) return CMD_ERROR;
// make sure no vehicle is on the tile. /* make sure no vehicle is on the tile. */
if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(tile + delta) || !EnsureNoVehicle(tile - delta)) if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(tile + delta) || !EnsureNoVehicle(tile - delta))
return CMD_ERROR; return CMD_ERROR;
@ -190,6 +193,7 @@ static void MarkTilesAroundDirty(TileIndex tile)
/** Builds a lock (ship-lift) /** Builds a lock (ship-lift)
* @param tile tile where to place the lock * @param tile tile where to place the lock
* @param flags type of operation
* @param p1 unused * @param p1 unused
* @param p2 unused * @param p2 unused
*/ */
@ -211,6 +215,7 @@ int32 CmdBuildLock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/** Build a piece of canal. /** Build a piece of canal.
* @param tile end tile of stretch-dragging * @param tile end tile of stretch-dragging
* @param flags type of operation
* @param p1 start tile of stretch-dragging * @param p1 start tile of stretch-dragging
* @param p2 ctrl pressed - toggles ocean / canals at sealevel (ocean only allowed in the scenario editor) * @param p2 ctrl pressed - toggles ocean / canals at sealevel (ocean only allowed in the scenario editor)
*/ */
@ -249,7 +254,7 @@ int32 CmdBuildCanal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_0007_FLAT_LAND_REQUIRED); return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
} }
// can't make water of water! /* can't make water of water! */
if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || HASBIT(p2, 0))) continue; if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || HASBIT(p2, 0))) continue;
ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@ -282,10 +287,10 @@ static int32 ClearTile_Water(TileIndex tile, byte flags)
case WATER_TILE_CLEAR: case WATER_TILE_CLEAR:
if (flags & DC_NO_WATER) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER); if (flags & DC_NO_WATER) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
// Make sure no vehicle is on the tile /* Make sure no vehicle is on the tile */
if (!EnsureNoVehicle(tile)) return CMD_ERROR; if (!EnsureNoVehicle(tile)) return CMD_ERROR;
// Make sure it's not an edge tile. /* Make sure it's not an edge tile. */
if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) || if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) { !IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP); return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
@ -299,10 +304,10 @@ static int32 ClearTile_Water(TileIndex tile, byte flags)
case WATER_TILE_COAST: { case WATER_TILE_COAST: {
Slope slope = GetTileSlope(tile, NULL); Slope slope = GetTileSlope(tile, NULL);
// Make sure no vehicle is on the tile /* Make sure no vehicle is on the tile */
if (!EnsureNoVehicle(tile)) return CMD_ERROR; if (!EnsureNoVehicle(tile)) return CMD_ERROR;
// Make sure it's not an edge tile. /* Make sure it's not an edge tile. */
if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) || if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) { !IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP); return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
@ -325,7 +330,7 @@ static int32 ClearTile_Water(TileIndex tile, byte flags)
if (flags & DC_AUTO) return_cmd_error(STR_2004_BUILDING_MUST_BE_DEMOLISHED); if (flags & DC_AUTO) return_cmd_error(STR_2004_BUILDING_MUST_BE_DEMOLISHED);
if (_current_player == OWNER_WATER) return CMD_ERROR; if (_current_player == OWNER_WATER) return CMD_ERROR;
// move to the middle tile.. /* move to the middle tile.. */
return RemoveShiplift(tile + ToTileIndexDiff(_shiplift_tomiddle_offs[GetSection(tile)]), flags); return RemoveShiplift(tile + ToTileIndexDiff(_shiplift_tomiddle_offs[GetSection(tile)]), flags);
} }
@ -339,7 +344,7 @@ static int32 ClearTile_Water(TileIndex tile, byte flags)
} }
} }
// return true if a tile is a water tile. /** return true if a tile is a water tile. */
static bool IsWateredTile(TileIndex tile) static bool IsWateredTile(TileIndex tile)
{ {
switch (GetTileType(tile)) { switch (GetTileType(tile)) {
@ -362,12 +367,12 @@ static bool IsWateredTile(TileIndex tile)
} }
} }
// draw a canal styled water tile with dikes around /** draw a canal styled water tile with dikes around */
void DrawCanalWater(TileIndex tile) void DrawCanalWater(TileIndex tile)
{ {
uint wa; uint wa;
// determine the edges around with water. /* determine the edges around with water. */
wa = IsWateredTile(TILE_ADDXY(tile, -1, 0)) << 0; wa = IsWateredTile(TILE_ADDXY(tile, -1, 0)) << 0;
wa += IsWateredTile(TILE_ADDXY(tile, 0, 1)) << 1; wa += IsWateredTile(TILE_ADDXY(tile, 0, 1)) << 1;
wa += IsWateredTile(TILE_ADDXY(tile, 1, 0)) << 2; wa += IsWateredTile(TILE_ADDXY(tile, 1, 0)) << 2;
@ -378,25 +383,25 @@ void DrawCanalWater(TileIndex tile)
if (!(wa & 4)) DrawGroundSprite(SPR_CANALS_BASE + 59, PAL_NONE); if (!(wa & 4)) DrawGroundSprite(SPR_CANALS_BASE + 59, PAL_NONE);
if (!(wa & 8)) DrawGroundSprite(SPR_CANALS_BASE + 60, PAL_NONE); if (!(wa & 8)) DrawGroundSprite(SPR_CANALS_BASE + 60, PAL_NONE);
// right corner /* right corner */
switch (wa & 0x03) { switch (wa & 0x03) {
case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 4, PAL_NONE); break; case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 4, PAL_NONE); break;
case 3: if (!IsWateredTile(TILE_ADDXY(tile, -1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 8, PAL_NONE); break; case 3: if (!IsWateredTile(TILE_ADDXY(tile, -1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 8, PAL_NONE); break;
} }
// bottom corner /* bottom corner */
switch (wa & 0x06) { switch (wa & 0x06) {
case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 5, PAL_NONE); break; case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 5, PAL_NONE); break;
case 6: if (!IsWateredTile(TILE_ADDXY(tile, 1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 9, PAL_NONE); break; case 6: if (!IsWateredTile(TILE_ADDXY(tile, 1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 9, PAL_NONE); break;
} }
// left corner /* left corner */
switch (wa & 0x0C) { switch (wa & 0x0C) {
case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 6, PAL_NONE); break; case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 6, PAL_NONE); break;
case 12: if (!IsWateredTile(TILE_ADDXY(tile, 1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 10, PAL_NONE); break; case 12: if (!IsWateredTile(TILE_ADDXY(tile, 1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 10, PAL_NONE); break;
} }
// upper corner /* upper corner */
switch (wa & 0x09) { switch (wa & 0x09) {
case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 7, PAL_NONE); break; case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 7, PAL_NONE); break;
case 9: if (!IsWateredTile(TILE_ADDXY(tile, -1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 11, PAL_NONE); break; case 9: if (!IsWateredTile(TILE_ADDXY(tile, -1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 11, PAL_NONE); break;
@ -524,7 +529,7 @@ static void TileLoopWaterHelper(TileIndex tile, const TileIndexDiffC *offs)
{ {
TileIndex target = TILE_ADD(tile, ToTileIndexDiff(offs[0])); TileIndex target = TILE_ADD(tile, ToTileIndexDiff(offs[0]));
// type of this tile mustn't be water already. /* type of this tile mustn't be water already. */
if (IsTileType(target, MP_WATER)) return; if (IsTileType(target, MP_WATER)) return;
if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[1]))) != 0 || if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[1]))) != 0 ||
@ -534,7 +539,7 @@ static void TileLoopWaterHelper(TileIndex tile, const TileIndexDiffC *offs)
if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[3]))) != 0 || if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[3]))) != 0 ||
TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[4]))) != 0) { TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[4]))) != 0) {
// make coast.. /* make coast.. */
switch (GetTileType(target)) { switch (GetTileType(target)) {
case MP_RAILWAY: { case MP_RAILWAY: {
TrackBits tracks; TrackBits tracks;
@ -626,7 +631,7 @@ static void FloodVehicle(Vehicle *v)
u = v; u = v;
if (IsFrontEngine(v)) pass = 4; // driver if (IsFrontEngine(v)) pass = 4; // driver
// crash all wagons, and count passangers /* crash all wagons, and count passangers */
BEGIN_ENUM_WAGONS(v) BEGIN_ENUM_WAGONS(v)
if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo_count; if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo_count;
v->vehstatus |= VS_CRASHED; v->vehstatus |= VS_CRASHED;
@ -653,7 +658,7 @@ static void FloodVehicle(Vehicle *v)
} }
} }
// called from tunnelbridge_cmd, and by TileLoop_Industry() /** called from tunnelbridge_cmd, and by TileLoop_Industry() */
void TileLoop_Water(TileIndex tile) void TileLoop_Water(TileIndex tile)
{ {
static const TileIndexDiffC _tile_loop_offs_array[][5] = { static const TileIndexDiffC _tile_loop_offs_array[][5] = {
@ -675,11 +680,10 @@ void TileLoop_Water(TileIndex tile)
TileLoopWaterHelper(tile, _tile_loop_offs_array[i]); TileLoopWaterHelper(tile, _tile_loop_offs_array[i]);
} }
} }
// _current_player can be changed by TileLoopWaterHelper.. reset it back /* _current_player can be changed by TileLoopWaterHelper.. reset it back here */
// here
_current_player = OWNER_NONE; _current_player = OWNER_NONE;
// edges /* edges */
if (TileX(tile) == 0 && IS_INT_INSIDE(TileY(tile), 1, MapSizeY() - 3 + 1)) { //NE if (TileX(tile) == 0 && IS_INT_INSIDE(TileY(tile), 1, MapSizeY() - 3 + 1)) { //NE
TileLoopWaterHelper(tile, _tile_loop_offs_array[2]); TileLoopWaterHelper(tile, _tile_loop_offs_array[2]);
} }
@ -713,11 +717,11 @@ static uint32 GetTileTrackStatus_Water(TileIndex tile, TransportType mode)
default: return 0; default: return 0;
} }
if (TileX(tile) == 0) { if (TileX(tile) == 0) {
// NE border: remove tracks that connects NE tile edge /* NE border: remove tracks that connects NE tile edge */
ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT); ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT);
} }
if (TileY(tile) == 0) { if (TileY(tile) == 0) {
// NW border: remove tracks that connects NW tile edge /* NW border: remove tracks that connects NW tile edge */
ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER); ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER);
} }
return ts * 0x101; return ts * 0x101;

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file water_map.h */
#ifndef WATER_MAP_H #ifndef WATER_MAP_H
#define WATER_MAP_H #define WATER_MAP_H

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file waypoint.cpp */
#include "stdafx.h" #include "stdafx.h"
#include "openttd.h" #include "openttd.h"
@ -39,7 +41,9 @@ static void WaypointPoolNewBlock(uint start_item)
DEFINE_OLD_POOL(Waypoint, Waypoint, WaypointPoolNewBlock, NULL) DEFINE_OLD_POOL(Waypoint, Waypoint, WaypointPoolNewBlock, NULL)
/* Create a new waypoint */ /**
* Create a new waypoint
* @return a pointer to the newly created Waypoint */
static Waypoint* AllocateWaypoint() static Waypoint* AllocateWaypoint()
{ {
Waypoint *wp; Waypoint *wp;
@ -63,7 +67,9 @@ static Waypoint* AllocateWaypoint()
return NULL; return NULL;
} }
/* Update the sign for the waypoint */ /**
* Update the sign for the waypoint
* @param wp Waypoint to update sign */
static void UpdateWaypointSign(Waypoint* wp) static void UpdateWaypointSign(Waypoint* wp)
{ {
Point pt = RemapCoords2(TileX(wp->xy) * TILE_SIZE, TileY(wp->xy) * TILE_SIZE); Point pt = RemapCoords2(TileX(wp->xy) * TILE_SIZE, TileY(wp->xy) * TILE_SIZE);
@ -71,7 +77,9 @@ static void UpdateWaypointSign(Waypoint* wp)
UpdateViewportSignPos(&wp->sign, pt.x, pt.y - 0x20, STR_WAYPOINT_VIEWPORT); UpdateViewportSignPos(&wp->sign, pt.x, pt.y - 0x20, STR_WAYPOINT_VIEWPORT);
} }
/* Redraw the sign of a waypoint */ /**
* Redraw the sign of a waypoint
* @param wp Waypoint to redraw sign */
static void RedrawWaypointSign(const Waypoint* wp) static void RedrawWaypointSign(const Waypoint* wp)
{ {
MarkAllViewportsDirty( MarkAllViewportsDirty(
@ -81,7 +89,9 @@ static void RedrawWaypointSign(const Waypoint* wp)
wp->sign.top + 48); wp->sign.top + 48);
} }
/* Update all signs */ /**
* Update all signs
*/
void UpdateAllWaypointSigns() void UpdateAllWaypointSigns()
{ {
Waypoint *wp; Waypoint *wp;
@ -91,7 +101,10 @@ void UpdateAllWaypointSigns()
} }
} }
/* Internal handler to delete a waypoint */ /**
* Internal handler to delete a waypoint
* @param wp Waypoint to delete
*/
void DestroyWaypoint(Waypoint *wp) void DestroyWaypoint(Waypoint *wp)
{ {
RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, wp->index); RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, wp->index);
@ -101,7 +114,10 @@ void DestroyWaypoint(Waypoint *wp)
RedrawWaypointSign(wp); RedrawWaypointSign(wp);
} }
/* Set the default name for a waypoint */ /**
* Set the default name for a waypoint
* @param wp Waypoint to work on
*/
static void MakeDefaultWaypointName(Waypoint* wp) static void MakeDefaultWaypointName(Waypoint* wp)
{ {
Waypoint *local_wp; Waypoint *local_wp;
@ -127,7 +143,10 @@ static void MakeDefaultWaypointName(Waypoint* wp)
wp->town_cn = i; wp->town_cn = i;
} }
/* Find a deleted waypoint close to a tile. */ /**
* Find a deleted waypoint close to a tile.
* @param tile to search from
*/
static Waypoint *FindDeletedWaypointCloseTo(TileIndex tile) static Waypoint *FindDeletedWaypointCloseTo(TileIndex tile)
{ {
Waypoint *wp, *best = NULL; Waypoint *wp, *best = NULL;
@ -173,6 +192,7 @@ void AfterLoadWaypoints()
/** Convert existing rail to waypoint. Eg build a waypoint station over /** Convert existing rail to waypoint. Eg build a waypoint station over
* piece of rail * piece of rail
* @param tile tile where waypoint will be built * @param tile tile where waypoint will be built
* @param flags type of operation
* @param p1 graphics for waypoint type, 0 indicates standard graphics * @param p1 graphics for waypoint type, 0 indicates standard graphics
* @param p2 unused * @param p2 unused
* *
@ -233,7 +253,7 @@ int32 CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
wp->grfid = statspec->grfid; wp->grfid = statspec->grfid;
wp->localidx = statspec->localidx; wp->localidx = statspec->localidx;
} else { } else {
// Specified custom graphics do not exist, so use default. /* Specified custom graphics do not exist, so use default. */
wp->stat_id = 0; wp->stat_id = 0;
wp->grfid = 0; wp->grfid = 0;
wp->localidx = 0; wp->localidx = 0;
@ -253,7 +273,9 @@ int32 CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return _price.build_train_depot; return _price.build_train_depot;
} }
/* Daily loop for waypoints */ /**
* Daily loop for waypoints
*/
void WaypointsDailyLoop() void WaypointsDailyLoop()
{ {
Waypoint *wp; Waypoint *wp;
@ -264,7 +286,13 @@ void WaypointsDailyLoop()
} }
} }
/* Remove a waypoint */ /**
* Remove a waypoint
* @param tile from which to remove waypoint
* @param flags type of operation
* @param justremove will indicate if it is removed from rail or if rails are removed too
* @return cost of operation or error
*/
int32 RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove) int32 RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove)
{ {
Waypoint *wp; Waypoint *wp;
@ -297,10 +325,13 @@ int32 RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove)
return _price.remove_train_depot; return _price.remove_train_depot;
} }
/** Delete a waypoint /**
* Delete a waypoint
* @param tile tile where waypoint is to be deleted * @param tile tile where waypoint is to be deleted
* @param flags type of operation
* @param p1 unused * @param p1 unused
* @param p2 unused * @param p2 unused
* @return cost of operation or error
*/ */
int32 CmdRemoveTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) int32 CmdRemoveTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{ {
@ -308,10 +339,13 @@ int32 CmdRemoveTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return RemoveTrainWaypoint(tile, flags, true); return RemoveTrainWaypoint(tile, flags, true);
} }
/** Rename a waypoint. /**
* Rename a waypoint.
* @param tile unused * @param tile unused
* @param flags type of operation
* @param p1 id of waypoint * @param p1 id of waypoint
* @param p2 unused * @param p2 unused
* @return cost of operation or error
*/ */
int32 CmdRenameWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) int32 CmdRenameWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{ {
@ -349,7 +383,11 @@ int32 CmdRenameWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return 0; return 0;
} }
/* This hacks together some dummy one-shot Station structure for a waypoint. */ /**
* This hacks together some dummy one-shot Station structure for a waypoint.
* @param tile on which to work
* @return pointer to a Station
*/
Station *ComposeWaypointStation(TileIndex tile) Station *ComposeWaypointStation(TileIndex tile)
{ {
Waypoint *wp = GetWaypointByTile(tile); Waypoint *wp = GetWaypointByTile(tile);
@ -367,7 +405,13 @@ Station *ComposeWaypointStation(TileIndex tile)
return &stat; return &stat;
} }
/* Draw a waypoint */ /**
* Draw a waypoint
* @param x coordinate
* @param y coordinate
* @param stat_id station id
* @param railtype RailType to use for
*/
void DrawWaypointSprite(int x, int y, int stat_id, RailType railtype) void DrawWaypointSprite(int x, int y, int stat_id, RailType railtype)
{ {
x += 33; x += 33;
@ -378,7 +422,9 @@ void DrawWaypointSprite(int x, int y, int stat_id, RailType railtype)
} }
} }
/* Fix savegames which stored waypoints in their old format */ /**
* Fix savegames which stored waypoints in their old format
*/
void FixOldWaypoints() void FixOldWaypoints()
{ {
Waypoint *wp; Waypoint *wp;

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file waypoint.h */
#ifndef WAYPOINT_H #ifndef WAYPOINT_H
#define WAYPOINT_H #define WAYPOINT_H
@ -28,6 +30,8 @@ DECLARE_OLD_POOL(Waypoint, Waypoint, 3, 8000)
/** /**
* Check if a Waypoint really exists. * Check if a Waypoint really exists.
* @param wp Waypoint to query
* @return the validity of the waypoint
*/ */
static inline bool IsValidWaypoint(const Waypoint *wp) static inline bool IsValidWaypoint(const Waypoint *wp)
{ {

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file widget.cpp */
#include "stdafx.h" #include "stdafx.h"
#include "openttd.h" #include "openttd.h"
#include "functions.h" #include "functions.h"
@ -52,7 +54,7 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
switch (wi->type) { switch (wi->type) {
case WWT_SCROLLBAR: { case WWT_SCROLLBAR: {
// vertical scroller /* vertical scroller */
w->flags4 &= ~WF_HSCROLL; w->flags4 &= ~WF_HSCROLL;
w->flags4 &= ~WF_SCROLL2; w->flags4 &= ~WF_SCROLL2;
mi = wi->top; mi = wi->top;
@ -62,7 +64,7 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
break; break;
} }
case WWT_SCROLL2BAR: { case WWT_SCROLL2BAR: {
// 2nd vertical scroller /* 2nd vertical scroller */
w->flags4 &= ~WF_HSCROLL; w->flags4 &= ~WF_HSCROLL;
w->flags4 |= WF_SCROLL2; w->flags4 |= WF_SCROLL2;
mi = wi->top; mi = wi->top;
@ -72,7 +74,7 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
break; break;
} }
case WWT_HSCROLLBAR: { case WWT_HSCROLLBAR: {
// horizontal scroller /* horizontal scroller */
w->flags4 &= ~WF_SCROLL2; w->flags4 &= ~WF_SCROLL2;
w->flags4 |= WF_HSCROLL; w->flags4 |= WF_HSCROLL;
mi = wi->left; mi = wi->left;
@ -84,7 +86,7 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
default: return; //this should never happen default: return; //this should never happen
} }
if (pos <= mi+9) { if (pos <= mi+9) {
// Pressing the upper button? /* Pressing the upper button? */
w->flags4 |= WF_SCROLL_UP; w->flags4 |= WF_SCROLL_UP;
if (_scroller_click_timeout == 0) { if (_scroller_click_timeout == 0) {
_scroller_click_timeout = 6; _scroller_click_timeout = 6;
@ -92,7 +94,7 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
} }
_left_button_clicked = false; _left_button_clicked = false;
} else if (pos >= ma-10) { } else if (pos >= ma-10) {
// Pressing the lower button? /* Pressing the lower button? */
w->flags4 |= WF_SCROLL_DOWN; w->flags4 |= WF_SCROLL_DOWN;
if (_scroller_click_timeout == 0) { if (_scroller_click_timeout == 0) {
@ -102,7 +104,6 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
} }
_left_button_clicked = false; _left_button_clicked = false;
} else { } else {
//
Point pt = HandleScrollbarHittest(sb, mi, ma); Point pt = HandleScrollbarHittest(sb, mi, ma);
if (pos < pt.x) { if (pos < pt.x) {
@ -127,7 +128,8 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
/** Returns the index for the widget located at the given position /** Returns the index for the widget located at the given position
* relative to the window. It includes all widget-corner pixels as well. * relative to the window. It includes all widget-corner pixels as well.
* @param *w Window to look inside * @param *w Window to look inside
* @param x,y Window client coordinates * @param x
* @param y Window client coordinates
* @return A widget index, or -1 if no widget was found. * @return A widget index, or -1 if no widget was found.
*/ */
int GetWidgetFromPos(const Window *w, int x, int y) int GetWidgetFromPos(const Window *w, int x, int y)
@ -135,8 +137,8 @@ int GetWidgetFromPos(const Window *w, int x, int y)
uint index; uint index;
int found_index = -1; int found_index = -1;
// Go through the widgets and check if we find the widget that the coordinate is /* Go through the widgets and check if we find the widget that the coordinate is
// inside. * inside. */
for (index = 0; index < w->widget_count; index++) { for (index = 0; index < w->widget_count; index++) {
const Widget *wi = &w->widget[index]; const Widget *wi = &w->widget[index];
if (wi->type == WWT_EMPTY || wi->type == WWT_FRAME) continue; if (wi->type == WWT_EMPTY || wi->type == WWT_FRAME) continue;
@ -294,14 +296,14 @@ void DrawWindowWidgets(const Window *w)
goto draw_default; goto draw_default;
} }
// vertical scrollbar /* vertical scrollbar */
case WWT_SCROLLBAR: { case WWT_SCROLLBAR: {
Point pt; Point pt;
int c1,c2; int c1,c2;
assert(r.right - r.left == 11); // XXX - to ensure the same sizes are used everywhere! assert(r.right - r.left == 11); // XXX - to ensure the same sizes are used everywhere!
// draw up/down buttons /* draw up/down buttons */
clicked = ((w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_UP); clicked = ((w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_UP);
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE); DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, 0x10); DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, 0x10);
@ -313,11 +315,11 @@ void DrawWindowWidgets(const Window *w)
c1 = _colour_gradient[wi->color&0xF][3]; c1 = _colour_gradient[wi->color&0xF][3];
c2 = _colour_gradient[wi->color&0xF][7]; c2 = _colour_gradient[wi->color&0xF][7];
// draw "shaded" background /* draw "shaded" background */
GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c2); GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c2);
GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c1 | (1 << PALETTE_MODIFIER_GREYOUT)); GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c1 | (1 << PALETTE_MODIFIER_GREYOUT));
// draw shaded lines /* draw shaded lines */
GfxFillRect(r.left+2, r.top+10, r.left+2, r.bottom-10, c1); GfxFillRect(r.left+2, r.top+10, r.left+2, r.bottom-10, c1);
GfxFillRect(r.left+3, r.top+10, r.left+3, r.bottom-10, c2); GfxFillRect(r.left+3, r.top+10, r.left+3, r.bottom-10, c2);
GfxFillRect(r.left+7, r.top+10, r.left+7, r.bottom-10, c1); GfxFillRect(r.left+7, r.top+10, r.left+7, r.bottom-10, c1);
@ -333,7 +335,7 @@ void DrawWindowWidgets(const Window *w)
assert(r.right - r.left == 11); // XXX - to ensure the same sizes are used everywhere! assert(r.right - r.left == 11); // XXX - to ensure the same sizes are used everywhere!
// draw up/down buttons /* draw up/down buttons */
clicked = ((w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_UP | WF_SCROLL2)); clicked = ((w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_UP | WF_SCROLL2));
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE); DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, 0x10); DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, 0x10);
@ -345,11 +347,11 @@ void DrawWindowWidgets(const Window *w)
c1 = _colour_gradient[wi->color&0xF][3]; c1 = _colour_gradient[wi->color&0xF][3];
c2 = _colour_gradient[wi->color&0xF][7]; c2 = _colour_gradient[wi->color&0xF][7];
// draw "shaded" background /* draw "shaded" background */
GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c2); GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c2);
GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c1 | (1 << PALETTE_MODIFIER_GREYOUT)); GfxFillRect(r.left, r.top+10, r.right, r.bottom-10, c1 | (1 << PALETTE_MODIFIER_GREYOUT));
// draw shaded lines /* draw shaded lines */
GfxFillRect(r.left+2, r.top+10, r.left+2, r.bottom-10, c1); GfxFillRect(r.left+2, r.top+10, r.left+2, r.bottom-10, c1);
GfxFillRect(r.left+3, r.top+10, r.left+3, r.bottom-10, c2); GfxFillRect(r.left+3, r.top+10, r.left+3, r.bottom-10, c2);
GfxFillRect(r.left+7, r.top+10, r.left+7, r.bottom-10, c1); GfxFillRect(r.left+7, r.top+10, r.left+7, r.bottom-10, c1);
@ -360,7 +362,7 @@ void DrawWindowWidgets(const Window *w)
break; break;
} }
// horizontal scrollbar /* horizontal scrollbar */
case WWT_HSCROLLBAR: { case WWT_HSCROLLBAR: {
Point pt; Point pt;
int c1,c2; int c1,c2;
@ -378,17 +380,17 @@ void DrawWindowWidgets(const Window *w)
c1 = _colour_gradient[wi->color&0xF][3]; c1 = _colour_gradient[wi->color&0xF][3];
c2 = _colour_gradient[wi->color&0xF][7]; c2 = _colour_gradient[wi->color&0xF][7];
// draw "shaded" background /* draw "shaded" background */
GfxFillRect(r.left+10, r.top, r.right-10, r.bottom, c2); GfxFillRect(r.left+10, r.top, r.right-10, r.bottom, c2);
GfxFillRect(r.left+10, r.top, r.right-10, r.bottom, c1 | (1 << PALETTE_MODIFIER_GREYOUT)); GfxFillRect(r.left+10, r.top, r.right-10, r.bottom, c1 | (1 << PALETTE_MODIFIER_GREYOUT));
// draw shaded lines /* draw shaded lines */
GfxFillRect(r.left+10, r.top+2, r.right-10, r.top+2, c1); GfxFillRect(r.left+10, r.top+2, r.right-10, r.top+2, c1);
GfxFillRect(r.left+10, r.top+3, r.right-10, r.top+3, c2); GfxFillRect(r.left+10, r.top+3, r.right-10, r.top+3, c2);
GfxFillRect(r.left+10, r.top+7, r.right-10, r.top+7, c1); GfxFillRect(r.left+10, r.top+7, r.right-10, r.top+7, c1);
GfxFillRect(r.left+10, r.top+8, r.right-10, r.top+8, c2); GfxFillRect(r.left+10, r.top+8, r.right-10, r.top+8, c2);
// draw actual scrollbar /* draw actual scrollbar */
pt = HandleScrollbarHittest(&w->hscroll, r.left, r.right); pt = HandleScrollbarHittest(&w->hscroll, r.left, r.right);
DrawFrameRect(pt.x, r.top, pt.y, r.bottom, wi->color, (w->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL)) == (WF_SCROLL_MIDDLE | WF_HSCROLL) ? FR_LOWERED : FR_NONE); DrawFrameRect(pt.x, r.top, pt.y, r.bottom, wi->color, (w->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL)) == (WF_SCROLL_MIDDLE | WF_HSCROLL) ? FR_LOWERED : FR_NONE);
@ -404,19 +406,19 @@ void DrawWindowWidgets(const Window *w)
c1 = _colour_gradient[wi->color][3]; c1 = _colour_gradient[wi->color][3];
c2 = _colour_gradient[wi->color][7]; c2 = _colour_gradient[wi->color][7];
//Line from upper left corner to start of text /*Line from upper left corner to start of text */
GfxFillRect(r.left, r.top+4, r.left+4,r.top+4, c1); GfxFillRect(r.left, r.top+4, r.left+4,r.top+4, c1);
GfxFillRect(r.left+1, r.top+5, r.left+4,r.top+5, c2); GfxFillRect(r.left+1, r.top+5, r.left+4,r.top+5, c2);
// Line from end of text to upper right corner /* Line from end of text to upper right corner */
GfxFillRect(x2, r.top+4, r.right-1,r.top+4,c1); GfxFillRect(x2, r.top+4, r.right-1,r.top+4,c1);
GfxFillRect(x2, r.top+5, r.right-2,r.top+5,c2); GfxFillRect(x2, r.top+5, r.right-2,r.top+5,c2);
// Line from upper left corner to bottom left corner /* Line from upper left corner to bottom left corner */
GfxFillRect(r.left, r.top+5, r.left, r.bottom-1, c1); GfxFillRect(r.left, r.top+5, r.left, r.bottom-1, c1);
GfxFillRect(r.left+1, r.top+6, r.left+1, r.bottom-2, c2); GfxFillRect(r.left+1, r.top+6, r.left+1, r.bottom-2, c2);
//Line from upper right corner to bottom right corner /*Line from upper right corner to bottom right corner */
GfxFillRect(r.right-1, r.top+5, r.right-1, r.bottom-2, c1); GfxFillRect(r.right-1, r.top+5, r.right-1, r.bottom-2, c1);
GfxFillRect(r.right, r.top+4, r.right, r.bottom-1, c2); GfxFillRect(r.right, r.top+4, r.right, r.bottom-1, c2);
@ -501,7 +503,7 @@ static int GetDropdownItem(const Window *w)
if (item >= WP(w,dropdown_d).num_items || (HASBIT(WP(w,dropdown_d).disabled_state, item) && !HASBIT(WP(w,dropdown_d).hidden_state, item)) || WP(w,dropdown_d).items[item] == 0) if (item >= WP(w,dropdown_d).num_items || (HASBIT(WP(w,dropdown_d).disabled_state, item) && !HASBIT(WP(w,dropdown_d).hidden_state, item)) || WP(w,dropdown_d).items[item] == 0)
return - 1; return - 1;
// Skip hidden items -- +1 for each hidden item before the clicked item. /* Skip hidden items -- +1 for each hidden item before the clicked item. */
for (counter = 0; item >= counter; ++counter) for (counter = 0; item >= counter; ++counter)
if (HASBIT(WP(w,dropdown_d).hidden_state, counter)) item++; if (HASBIT(WP(w,dropdown_d).hidden_state, counter)) item++;

View File

@ -84,7 +84,7 @@ void ShowOSErrorBox(const char *buf)
MyShowCursor(true); MyShowCursor(true);
MessageBox(GetActiveWindow(), MB_TO_WIDE(buf), _T("Error!"), MB_ICONSTOP); MessageBox(GetActiveWindow(), MB_TO_WIDE(buf), _T("Error!"), MB_ICONSTOP);
// if exception tracker is enabled, we crash here to let the exception handler handle it. /* if exception tracker is enabled, we crash here to let the exception handler handle it. */
#if defined(WIN32_EXCEPTION_TRACKER) && !defined(_DEBUG) #if defined(WIN32_EXCEPTION_TRACKER) && !defined(_DEBUG)
if (*buf == '!') { if (*buf == '!') {
_exception_string = buf; _exception_string = buf;
@ -747,7 +747,7 @@ void FiosGetDrives()
bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb) bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb)
{ {
// hectonanoseconds between Windows and POSIX epoch /* hectonanoseconds between Windows and POSIX epoch */
static const int64 posix_epoch_hns = 0x019DB1DED53E8000LL; static const int64 posix_epoch_hns = 0x019DB1DED53E8000LL;
const WIN32_FIND_DATA *fd = &ent->dir->fd; const WIN32_FIND_DATA *fd = &ent->dir->fd;
@ -790,13 +790,13 @@ static int ParseCommandLine(char *line, char **argv, int max_argc)
int n = 0; int n = 0;
do { do {
// skip whitespace /* skip whitespace */
while (*line == ' ' || *line == '\t') line++; while (*line == ' ' || *line == '\t') line++;
// end? /* end? */
if (*line == '\0') break; if (*line == '\0') break;
// special handling when quoted /* special handling when quoted */
if (*line == '"') { if (*line == '"') {
argv[n++] = ++line; argv[n++] = ++line;
while (*line != '"') { while (*line != '"') {
@ -831,13 +831,13 @@ void CreateConsole()
coninfo.dwSize.Y = 500; coninfo.dwSize.Y = 500;
SetConsoleScreenBufferSize(hand, coninfo.dwSize); SetConsoleScreenBufferSize(hand, coninfo.dwSize);
// redirect unbuffered STDIN, STDOUT, STDERR to the console /* redirect unbuffered STDIN, STDOUT, STDERR to the console */
#if !defined(__CYGWIN__) #if !defined(__CYGWIN__)
*stdout = *_fdopen( _open_osfhandle((intptr_t)hand, _O_TEXT), "w" ); *stdout = *_fdopen( _open_osfhandle((intptr_t)hand, _O_TEXT), "w" );
*stdin = *_fdopen(_open_osfhandle((intptr_t)GetStdHandle(STD_INPUT_HANDLE), _O_TEXT), "r" ); *stdin = *_fdopen(_open_osfhandle((intptr_t)GetStdHandle(STD_INPUT_HANDLE), _O_TEXT), "r" );
*stderr = *_fdopen(_open_osfhandle((intptr_t)GetStdHandle(STD_ERROR_HANDLE), _O_TEXT), "w" ); *stderr = *_fdopen(_open_osfhandle((intptr_t)GetStdHandle(STD_ERROR_HANDLE), _O_TEXT), "w" );
#else #else
// open_osfhandle is not in cygwin /* open_osfhandle is not in cygwin */
*stdout = *fdopen(1, "w" ); *stdout = *fdopen(1, "w" );
*stdin = *fdopen(0, "r" ); *stdin = *fdopen(0, "r" );
*stderr = *fdopen(2, "w" ); *stderr = *fdopen(2, "w" );
@ -1037,8 +1037,8 @@ void CSleep(int milliseconds)
} }
// Utility function to get the current timestamp in milliseconds /** Utility function to get the current timestamp in milliseconds
// Useful for profiling * Useful for profiling */
int64 GetTS() int64 GetTS()
{ {
static double freq; static double freq;

View File

@ -18,7 +18,7 @@
#include "genworld.h" #include "genworld.h"
#include "helpers.hpp" #include "helpers.hpp"
// delta between mouse cursor and upper left corner of dragged window /* delta between mouse cursor and upper left corner of dragged window */
static Point _drag_delta; static Point _drag_delta;
static Window _windows[25]; static Window _windows[25];
@ -101,7 +101,7 @@ static void DispatchLeftClickEvent(Window *w, int x, int y)
if (w->desc_flags & WDF_DEF_WIDGET) { if (w->desc_flags & WDF_DEF_WIDGET) {
e.we.click.widget = GetWidgetFromPos(w, x, y); e.we.click.widget = GetWidgetFromPos(w, x, y);
if (e.we.click.widget < 0) return; /* exit if clicked outside of widgets */ if (e.we.click.widget < 0) return; // exit if clicked outside of widgets
/* don't allow any interaction if the button has been disabled */ /* don't allow any interaction if the button has been disabled */
if (IsWindowWidgetDisabled(w, e.we.click.widget)) return; if (IsWindowWidgetDisabled(w, e.we.click.widget)) return;
@ -157,7 +157,7 @@ static void DispatchRightClickEvent(Window *w, int x, int y)
if (w->desc_flags & WDF_STD_TOOLTIPS) { if (w->desc_flags & WDF_STD_TOOLTIPS) {
e.we.click.widget = GetWidgetFromPos(w, x, y); e.we.click.widget = GetWidgetFromPos(w, x, y);
if (e.we.click.widget < 0) if (e.we.click.widget < 0)
return; /* exit if clicked outside of widgets */ return; // exit if clicked outside of widgets
if (w->widget[e.we.click.widget].tooltips != 0) { if (w->widget[e.we.click.widget].tooltips != 0) {
GuiShowTooltips(w->widget[e.we.click.widget].tooltips); GuiShowTooltips(w->widget[e.we.click.widget].tooltips);
@ -596,7 +596,7 @@ static Window *LocalAllocateWindow(
DeleteWindow(w); DeleteWindow(w);
} }
// Set up window properties /* Set up window properties */
memset(w, 0, sizeof(*w)); memset(w, 0, sizeof(*w));
w->window_class = cls; w->window_class = cls;
w->flags4 = WF_WHITE_BORDER_MASK; // just opened windows have a white border w->flags4 = WF_WHITE_BORDER_MASK; // just opened windows have a white border
@ -685,7 +685,7 @@ static bool IsGoodAutoPlace1(int left, int top)
if (left < 0 || top < 22 || right > _screen.width || bottom > _screen.height) if (left < 0 || top < 22 || right > _screen.width || bottom > _screen.height)
return false; return false;
// Make sure it is not obscured by any window. /* Make sure it is not obscured by any window. */
FOR_ALL_WINDOWS(wz) { FOR_ALL_WINDOWS(wz) {
const Window *w = *wz; const Window *w = *wz;
if (w->window_class == WC_MAIN_WINDOW) continue; if (w->window_class == WC_MAIN_WINDOW) continue;
@ -714,7 +714,7 @@ static bool IsGoodAutoPlace2(int left, int top)
if (left < -(width>>2) || left > _screen.width - (width>>1)) return false; if (left < -(width>>2) || left > _screen.width - (width>>1)) return false;
if (top < 22 || top > _screen.height - (height>>2)) return false; if (top < 22 || top > _screen.height - (height>>2)) return false;
// Make sure it is not obscured by any window. /* Make sure it is not obscured by any window. */
FOR_ALL_WINDOWS(wz) { FOR_ALL_WINDOWS(wz) {
const Window *w = *wz; const Window *w = *wz;
if (w->window_class == WC_MAIN_WINDOW) continue; if (w->window_class == WC_MAIN_WINDOW) continue;
@ -936,7 +936,7 @@ static void DecreaseWindowCounters()
for (wz = _last_z_window; wz != _z_windows;) { for (wz = _last_z_window; wz != _z_windows;) {
w = *--wz; w = *--wz;
// Unclick scrollbar buttons if they are pressed. /* Unclick scrollbar buttons if they are pressed. */
if (w->flags4 & (WF_SCROLL_DOWN | WF_SCROLL_UP)) { if (w->flags4 & (WF_SCROLL_DOWN | WF_SCROLL_UP)) {
w->flags4 &= ~(WF_SCROLL_DOWN | WF_SCROLL_UP); w->flags4 &= ~(WF_SCROLL_DOWN | WF_SCROLL_UP);
SetWindowDirty(w); SetWindowDirty(w);
@ -993,7 +993,7 @@ static bool HandleDragDrop()
ResetObjectToPlace(); ResetObjectToPlace();
if (w != NULL) { if (w != NULL) {
// send an event in client coordinates. /* send an event in client coordinates. */
e.event = WE_DRAGDROP; e.event = WE_DRAGDROP;
e.we.dragdrop.pt.x = _cursor.pos.x - w->left; e.we.dragdrop.pt.x = _cursor.pos.x - w->left;
e.we.dragdrop.pt.y = _cursor.pos.y - w->top; e.we.dragdrop.pt.y = _cursor.pos.y - w->top;
@ -1038,7 +1038,7 @@ static bool HandleMouseOver()
w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y); w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y);
// We changed window, put a MOUSEOVER event to the last window /* We changed window, put a MOUSEOVER event to the last window */
if (last_w != NULL && last_w != w) { if (last_w != NULL && last_w != w) {
e.event = WE_MOUSEOVER; e.event = WE_MOUSEOVER;
e.we.mouseover.pt.x = -1; e.we.mouseover.pt.x = -1;
@ -1048,7 +1048,7 @@ static bool HandleMouseOver()
last_w = w; last_w = w;
if (w != NULL) { if (w != NULL) {
// send an event in client coordinates. /* send an event in client coordinates. */
e.event = WE_MOUSEOVER; e.event = WE_MOUSEOVER;
e.we.mouseover.pt.x = _cursor.pos.x - w->left; e.we.mouseover.pt.x = _cursor.pos.x - w->left;
e.we.mouseover.pt.y = _cursor.pos.y - w->top; e.we.mouseover.pt.y = _cursor.pos.y - w->top;
@ -1058,7 +1058,7 @@ static bool HandleMouseOver()
w->wndproc(w, &e); w->wndproc(w, &e);
} }
// Mouseover never stops execution /* Mouseover never stops execution */
return true; return true;
} }
@ -1117,10 +1117,10 @@ static bool _dragging_window;
static bool HandleWindowDragging() static bool HandleWindowDragging()
{ {
Window* const *wz; Window* const *wz;
// Get out immediately if no window is being dragged at all. /* Get out immediately if no window is being dragged at all. */
if (!_dragging_window) return true; if (!_dragging_window) return true;
// Otherwise find the window... /* Otherwise find the window... */
FOR_ALL_WINDOWS(wz) { FOR_ALL_WINDOWS(wz) {
Window *w = *wz; Window *w = *wz;
@ -1132,7 +1132,7 @@ static bool HandleWindowDragging()
int nx; int nx;
int ny; int ny;
// Stop the dragging if the left mouse button was released /* Stop the dragging if the left mouse button was released */
if (!_left_button_down) { if (!_left_button_down) {
w->flags4 &= ~WF_DRAGGING; w->flags4 &= ~WF_DRAGGING;
break; break;
@ -1158,14 +1158,14 @@ static bool HandleWindowDragging()
if (v == w) continue; // Don't snap at yourself if (v == w) continue; // Don't snap at yourself
if (y + w->height > v->top && y < v->top + v->height) { if (y + w->height > v->top && y < v->top + v->height) {
// Your left border <-> other right border /* Your left border <-> other right border */
delta = abs(v->left + v->width - x); delta = abs(v->left + v->width - x);
if (delta <= hsnap) { if (delta <= hsnap) {
nx = v->left + v->width; nx = v->left + v->width;
hsnap = delta; hsnap = delta;
} }
// Your right border <-> other left border /* Your right border <-> other left border */
delta = abs(v->left - x - w->width); delta = abs(v->left - x - w->width);
if (delta <= hsnap) { if (delta <= hsnap) {
nx = v->left - w->width; nx = v->left - w->width;
@ -1174,14 +1174,14 @@ static bool HandleWindowDragging()
} }
if (w->top + w->height >= v->top && w->top <= v->top + v->height) { if (w->top + w->height >= v->top && w->top <= v->top + v->height) {
// Your left border <-> other left border /* Your left border <-> other left border */
delta = abs(v->left - x); delta = abs(v->left - x);
if (delta <= hsnap) { if (delta <= hsnap) {
nx = v->left; nx = v->left;
hsnap = delta; hsnap = delta;
} }
// Your right border <-> other right border /* Your right border <-> other right border */
delta = abs(v->left + v->width - x - w->width); delta = abs(v->left + v->width - x - w->width);
if (delta <= hsnap) { if (delta <= hsnap) {
nx = v->left + v->width - w->width; nx = v->left + v->width - w->width;
@ -1190,14 +1190,14 @@ static bool HandleWindowDragging()
} }
if (x + w->width > v->left && x < v->left + v->width) { if (x + w->width > v->left && x < v->left + v->width) {
// Your top border <-> other bottom border /* Your top border <-> other bottom border */
delta = abs(v->top + v->height - y); delta = abs(v->top + v->height - y);
if (delta <= vsnap) { if (delta <= vsnap) {
ny = v->top + v->height; ny = v->top + v->height;
vsnap = delta; vsnap = delta;
} }
// Your bottom border <-> other top border /* Your bottom border <-> other top border */
delta = abs(v->top - y - w->height); delta = abs(v->top - y - w->height);
if (delta <= vsnap) { if (delta <= vsnap) {
ny = v->top - w->height; ny = v->top - w->height;
@ -1206,14 +1206,14 @@ static bool HandleWindowDragging()
} }
if (w->left + w->width >= v->left && w->left <= v->left + v->width) { if (w->left + w->width >= v->left && w->left <= v->left + v->width) {
// Your top border <-> other top border /* Your top border <-> other top border */
delta = abs(v->top - y); delta = abs(v->top - y);
if (delta <= vsnap) { if (delta <= vsnap) {
ny = v->top; ny = v->top;
vsnap = delta; vsnap = delta;
} }
// Your bottom border <-> other bottom border /* Your bottom border <-> other bottom border */
delta = abs(v->top + v->height - y - w->height); delta = abs(v->top + v->height - y - w->height);
if (delta <= vsnap) { if (delta <= vsnap) {
ny = v->top + v->height - w->height; ny = v->top + v->height - w->height;
@ -1223,12 +1223,12 @@ static bool HandleWindowDragging()
} }
} }
// Make sure the window doesn't leave the screen /* Make sure the window doesn't leave the screen
// 13 is the height of the title bar * 13 is the height of the title bar */
nx = clamp(nx, 13 - t->right, _screen.width - 13 - t->left); nx = clamp(nx, 13 - t->right, _screen.width - 13 - t->left);
ny = clamp(ny, 0, _screen.height - 13); ny = clamp(ny, 0, _screen.height - 13);
// Make sure the title bar isn't hidden by behind the main tool bar /* Make sure the title bar isn't hidden by behind the main tool bar */
v = FindWindowById(WC_MAIN_TOOLBAR, 0); v = FindWindowById(WC_MAIN_TOOLBAR, 0);
if (v != NULL) { if (v != NULL) {
int v_bottom = v->top + v->height; int v_bottom = v->top + v->height;
@ -1345,15 +1345,15 @@ static bool HandleScrollbarScrolling()
int pos; int pos;
Scrollbar *sb; Scrollbar *sb;
// Get out quickly if no item is being scrolled /* Get out quickly if no item is being scrolled */
if (!_scrolling_scrollbar) return true; if (!_scrolling_scrollbar) return true;
// Find the scrolling window /* Find the scrolling window */
FOR_ALL_WINDOWS(wz) { FOR_ALL_WINDOWS(wz) {
Window *w = *wz; Window *w = *wz;
if (w->flags4 & WF_SCROLL_MIDDLE) { if (w->flags4 & WF_SCROLL_MIDDLE) {
// Abort if no button is clicked any more. /* Abort if no button is clicked any more. */
if (!_left_button_down) { if (!_left_button_down) {
w->flags4 &= ~WF_SCROLL_MIDDLE; w->flags4 &= ~WF_SCROLL_MIDDLE;
SetWindowDirty(w); SetWindowDirty(w);
@ -1371,7 +1371,7 @@ static bool HandleScrollbarScrolling()
i = _cursor.pos.y - _cursorpos_drag_start.y; i = _cursor.pos.y - _cursorpos_drag_start.y;
} }
// Find the item we want to move to and make sure it's inside bounds. /* Find the item we want to move to and make sure it's inside bounds. */
pos = min(max(0, i + _scrollbar_start_pos) * sb->count / _scrollbar_size, max(0, sb->count - sb->cap)); pos = min(max(0, i + _scrollbar_start_pos) * sb->count / _scrollbar_size, max(0, sb->count - sb->cap));
if (pos != sb->pos) { if (pos != sb->pos) {
sb->pos = pos; sb->pos = pos;
@ -1482,7 +1482,7 @@ static bool MaybeBringWindowToFront(const Window *w)
} }
/** Send a message from one window to another. The receiving window is found by /** Send a message from one window to another. The receiving window is found by
* @param w @see Window pointer pointing to the other window * @param w see Window pointer pointing to the other window
* @param msg Specifies the message to be sent * @param msg Specifies the message to be sent
* @param wparam Specifies additional message-specific information * @param wparam Specifies additional message-specific information
* @param lparam Specifies additional message-specific information * @param lparam Specifies additional message-specific information
@ -1500,8 +1500,8 @@ static void SendWindowMessageW(Window *w, uint msg, uint wparam, uint lparam)
} }
/** Send a message from one window to another. The receiving window is found by /** Send a message from one window to another. The receiving window is found by
* @param wnd_class @see WindowClass class AND * @param wnd_class see WindowClass class AND
* @param wnd_num @see WindowNumber number, mostly 0 * @param wnd_num see WindowNumber number, mostly 0
* @param msg Specifies the message to be sent * @param msg Specifies the message to be sent
* @param wparam Specifies additional message-specific information * @param wparam Specifies additional message-specific information
* @param lparam Specifies additional message-specific information * @param lparam Specifies additional message-specific information
@ -1514,7 +1514,7 @@ void SendWindowMessage(WindowClass wnd_class, WindowNumber wnd_num, int msg, int
/** Send a message from one window to another. The message will be sent /** Send a message from one window to another. The message will be sent
* to ALL windows of the windowclass specified in the first parameter * to ALL windows of the windowclass specified in the first parameter
* @param wnd_class @see WindowClass class * @param wnd_class see WindowClass class
* @param msg Specifies the message to be sent * @param msg Specifies the message to be sent
* @param wparam Specifies additional message-specific information * @param wparam Specifies additional message-specific information
* @param lparam Specifies additional message-specific information * @param lparam Specifies additional message-specific information
@ -1551,13 +1551,13 @@ void HandleKeypress(uint32 key)
*/ */
if (!IsGeneratingWorld()) _current_player = _local_player; if (!IsGeneratingWorld()) _current_player = _local_player;
// Setup event /* Setup event */
e.event = WE_KEYPRESS; e.event = WE_KEYPRESS;
e.we.keypress.key = GB(key, 0, 16); e.we.keypress.key = GB(key, 0, 16);
e.we.keypress.keycode = GB(key, 16, 16); e.we.keypress.keycode = GB(key, 16, 16);
e.we.keypress.cont = true; e.we.keypress.cont = true;
// check if we have a query string window open before allowing hotkeys /* check if we have a query string window open before allowing hotkeys */
if (FindWindowById(WC_QUERY_STRING, 0) != NULL || if (FindWindowById(WC_QUERY_STRING, 0) != NULL ||
FindWindowById(WC_SEND_NETWORK_MSG, 0) != NULL || FindWindowById(WC_SEND_NETWORK_MSG, 0) != NULL ||
FindWindowById(WC_GENERATE_LANDSCAPE, 0) != NULL || FindWindowById(WC_GENERATE_LANDSCAPE, 0) != NULL ||
@ -1566,11 +1566,11 @@ void HandleKeypress(uint32 key)
query_open = true; query_open = true;
} }
// Call the event, start with the uppermost window. /* Call the event, start with the uppermost window. */
for (wz = _last_z_window; wz != _z_windows;) { for (wz = _last_z_window; wz != _z_windows;) {
Window *w = *--wz; Window *w = *--wz;
// if a query window is open, only call the event for certain window types /* if a query window is open, only call the event for certain window types */
if (query_open && if (query_open &&
w->window_class != WC_QUERY_STRING && w->window_class != WC_QUERY_STRING &&
w->window_class != WC_SEND_NETWORK_MSG && w->window_class != WC_SEND_NETWORK_MSG &&
@ -1585,7 +1585,7 @@ void HandleKeypress(uint32 key)
if (e.we.keypress.cont) { if (e.we.keypress.cont) {
Window *w = FindWindowById(WC_MAIN_TOOLBAR, 0); Window *w = FindWindowById(WC_MAIN_TOOLBAR, 0);
// When there is no toolbar w is null, check for that /* When there is no toolbar w is null, check for that */
if (w != NULL) w->wndproc(w, &e); if (w != NULL) w->wndproc(w, &e);
} }
} }
@ -1616,7 +1616,7 @@ static void HandleAutoscroll()
if (vp != NULL) { if (vp != NULL) {
x -= vp->left; x -= vp->left;
y -= vp->top; y -= vp->top;
//here allows scrolling in both x and y axis /* here allows scrolling in both x and y axis */
#define scrollspeed 3 #define scrollspeed 3
if (x - 15 < 0) { if (x - 15 < 0) {
WP(w, vp_d).scrollpos_x += (x - 15) * scrollspeed << vp->zoom; WP(w, vp_d).scrollpos_x += (x - 15) * scrollspeed << vp->zoom;
@ -1685,7 +1685,7 @@ void MouseLoop(int click, int mousewheel)
case 1: case 1:
DEBUG(misc, 2, "Cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); DEBUG(misc, 2, "Cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite);
if (_thd.place_mode != 0 && if (_thd.place_mode != 0 &&
// query button and place sign button work in pause mode /* query button and place sign button work in pause mode */
_cursor.sprite != SPR_CURSOR_QUERY && _cursor.sprite != SPR_CURSOR_QUERY &&
_cursor.sprite != SPR_CURSOR_SIGN && _cursor.sprite != SPR_CURSOR_SIGN &&
_pause_game != 0 && _pause_game != 0 &&
@ -1736,7 +1736,7 @@ void HandleMouseEvents()
*/ */
if (!IsGeneratingWorld()) _current_player = _local_player; if (!IsGeneratingWorld()) _current_player = _local_player;
// Mouse event? /* Mouse event? */
click = 0; click = 0;
if (_left_button_down && !_left_button_clicked) { if (_left_button_down && !_left_button_clicked) {
_left_button_clicked = true; _left_button_clicked = true;
@ -1793,7 +1793,7 @@ void UpdateWindows()
if ((*wz)->viewport != NULL) UpdateViewportPosition(*wz); if ((*wz)->viewport != NULL) UpdateViewportPosition(*wz);
} }
DrawTextMessage(); DrawTextMessage();
// Redraw mouse cursor in case it was hidden /* Redraw mouse cursor in case it was hidden */
DrawMouseCursor(); DrawMouseCursor();
} }

View File

@ -659,7 +659,7 @@ static inline bool IsWindowWidgetHidden(const Window *w, byte widget_index)
* Sets the lowered/raised status of a widget. * Sets the lowered/raised status of a widget.
* @param w : Window on which the widget is located * @param w : Window on which the widget is located
* @param widget_index : index of this widget in the window * @param widget_index : index of this widget in the window
* @param hidden_stat : status to use ie: lowered = true, raised = false * @param lowered_stat : status to use ie: lowered = true, raised = false
*/ */
static inline void SetWindowWidgetLoweredState(Window *w, byte widget_index, bool lowered_stat) static inline void SetWindowWidgetLoweredState(Window *w, byte widget_index, bool lowered_stat)
{ {