Changeset - r2549:1549d4b2ba28
[Not reviewed]
master
0 38 0
tron - 18 years ago 2005-10-23 13:04:44
tron@openttd.org
(svn r3078) Some more stuff, which piled up:
- const, whitespace, indentation, bracing, GB/SB, pointless casts
- use the trinary operator where appropriate
- data types (uint[] -> AcceptedCargo, ...)
- if cascade -> switch
- if (ptr) -> if (ptr != NULL)
- DeMorgan's Law
- Fix some comments
- 0 -> '\0', change magic numbers to symbolic constants
38 files changed with 442 insertions and 453 deletions:
0 comments (0 inline, 0 general)
ai/trolly/build.c
Show inline comments
 
@@ -229,7 +229,7 @@ int AiNew_PickVehicle(Player *p)
 
		count = _cargoc.ai_roadveh_count[p->ainew.cargo];
 

	
 
		// Let's check it backwards.. we simply want to best engine available..
 
		for (i=start+count-1;i>=start;i--) {
 
		for (i = start + count - 1; i >= start; i--) {
 
			// Is it availiable?
 
			// Also, check if the reliability of the vehicle is above the AI_VEHICLE_MIN_RELIABILTY
 
			if (!HASBIT(GetEngine(i)->player_avail, _current_player) || GetEngine(i)->reliability * 100 < AI_VEHICLE_MIN_RELIABILTY << 16) continue;
 
@@ -238,7 +238,7 @@ int AiNew_PickVehicle(Player *p)
 
			if (!CmdFailed(ret)) break;
 
		}
 
		// We did not find a vehicle :(
 
		if (CmdFailed(ret)) { return -1; }
 
		if (CmdFailed(ret)) return -1;
 
		return i;
 
	}
 
}
ai/trolly/pathfinder.c
Show inline comments
 
@@ -506,9 +506,5 @@ static int32 AyStar_AiPathFinder_Calcula
 
		}
 
	}
 

	
 
	// Res should never be below zero.. if so, make it zero!
 
	if (res < 0) { res = 0; }
 

	
 
	// Return our value
 
	return res;
 
	return (res < 0) ? 0 : res;
 
}
ai/trolly/trolly.c
Show inline comments
 
/* $Id: ai_new.c 2891 2005-08-26 20:26:34Z tron $ */
 
/* $Id$ */
 

	
 
/*
 
 * This AI was created as a direct reaction to the big demand for some good AIs in OTTD.
 
 *   Too bad it never left alpha-stage, and it is considered dead in his current form.
 
 *   By the time of writing this, we, the creator of this AI and a good friend of mine,
 
 *   are designing a whole new AI-system that allows us to create AIs easier and without
 
 *   all the fuzz we encountered while I was working on this AI. By the time that system
 
 *   is finished, you can expect that this AI will dissapear, because it is pretty
 
 *   obselete and bad programmed.
 
 * This AI was created as a direct reaction to the big demand for some good AIs
 
 * in OTTD. Too bad it never left alpha-stage, and it is considered dead in its
 
 * current form.
 
 * By the time of writing this, we, the creator of this AI and a good friend of
 
 * mine, are designing a whole new AI-system that allows us to create AIs
 
 * easier and without all the fuzz we encountered while I was working on this
 
 * AI. By the time that system is finished, you can expect that this AI will
 
 * dissapear, because it is pretty obselete and bad programmed.
 
 *
 
 * In the meanwhile I wish you all much fun with this AI; if you are interested as
 
 *   AI-developer in this AI, I advise you not stare too long to some code, some things in
 
 *   here really are... strange ;) But in either way: enjoy :)
 
 * Meanwhile I wish you all much fun with this AI; if you are interested as
 
 * AI-developer in this AI, I advise you not stare too long to some code, some
 
 * things in here really are... strange ;) But in either way: enjoy :)
 
 *
 
 *  -- TrueLight :: 2005-09-01
 
 */
aircraft_cmd.c
Show inline comments
 
@@ -690,16 +690,16 @@ static void HelicopterTickHandler(Vehicl
 

	
 
	if (spd == 0) {
 
		img = SPR_ROTOR_STOPPED;
 
		if (u->cur_image == img)
 
			return;
 
		if (u->cur_image == img) return;
 
	} else if (tick >= spd) {
 
		u->tick_counter = 0;
 
		img = u->cur_image + 1;
 
		if (img > SPR_ROTOR_MOVING_3) img = SPR_ROTOR_MOVING_1;
 
	} else
 
	} else {
 
		return;
 
	}
 

	
 
	u->cur_image=img;
 
	u->cur_image = img;
 

	
 
	BeginVehicleMove(u);
 
	VehiclePositionChanged(u);
 
@@ -767,7 +767,7 @@ static void ServiceAircraft(Vehicle *v)
 
	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 
}
 

	
 
static void PlayAircraftSound(Vehicle *v)
 
static void PlayAircraftSound(const Vehicle* v)
 
{
 
	SndPlayVehicleFx(AircraftVehInfo(v->engine_type)->sfx, v);
 
}
 
@@ -1229,7 +1229,7 @@ static void MaybeCrashAirplane(Vehicle *
 
{
 
	Station *st;
 
	uint16 prob;
 
	int i;
 
	uint i;
 

	
 
	st = GetStation(v->u.air.targetairport);
 

	
 
@@ -1242,7 +1242,7 @@ static void MaybeCrashAirplane(Vehicle *
 
	if (GB(Random(), 0, 16) > prob) return;
 

	
 
	// Crash the airplane. Remove all goods stored at the station.
 
	for(i=0; i!=NUM_CARGO; i++) {
 
	for (i = 0; i != NUM_CARGO; i++) {
 
		st->goods[i].rating = 1;
 
		SB(st->goods[i].waiting_acceptance, 0, 12, 0);
 
	}
 
@@ -1425,16 +1425,18 @@ static void AircraftEventHandler_InHanga
 
		return;
 

	
 
	// if the block of the next position is busy, stay put
 
	if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {return;}
 
	if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) return;
 

	
 
	// We are already at the target airport, we need to find a terminal
 
	if (v->current_order.station == v->u.air.targetairport) {
 
		// FindFreeTerminal:
 
		// 1. Find a free terminal, 2. Occupy it, 3. Set the vehicle's state to that terminal
 
		if (v->subtype != 0) {if(!AirportFindFreeTerminal(v, Airport)) {return;}} // airplane
 
		else {if(!AirportFindFreeHelipad(v, Airport)) {return;}} // helicopter
 
	}
 
	else { // Else prepare for launch.
 
		if (v->subtype != 0) {
 
			if (!AirportFindFreeTerminal(v, Airport)) return; // airplane
 
		} else {
 
			if (!AirportFindFreeHelipad(v, Airport)) return; // helicopter
 
		}
 
	} else { // Else prepare for launch.
 
		// airplane goto state takeoff, helicopter to helitakeoff
 
		v->u.air.state = (v->subtype != 0) ? TAKEOFF : HELITAKEOFF;
 
	}
 
@@ -1606,14 +1608,14 @@ static void AircraftEventHandler_HeliLan
 
static void AircraftEventHandler_EndLanding(Vehicle *v, const AirportFTAClass *Airport)
 
{
 
	// next block busy, don't do a thing, just wait
 
	if(AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {return;}
 
	if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) return;
 

	
 
	// if going to terminal (OT_GOTO_STATION) choose one
 
	// 1. in case all terminals are busy AirportFindFreeTerminal() returns false or
 
	// 2. not going for terminal (but depot, no order),
 
	// --> get out of the way to the hangar.
 
	if (v->current_order.type == OT_GOTO_STATION) {
 
		if (AirportFindFreeTerminal(v, Airport)) {return;}
 
		if (AirportFindFreeTerminal(v, Airport)) return;
 
	}
 
	v->u.air.state = HANGAR;
 

	
 
@@ -1622,7 +1624,7 @@ static void AircraftEventHandler_EndLand
 
static void AircraftEventHandler_HeliEndLanding(Vehicle *v, const AirportFTAClass *Airport)
 
{
 
	// next block busy, don't do a thing, just wait
 
	if(AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {return;}
 
	if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) return;
 

	
 
	// if going to helipad (OT_GOTO_STATION) choose one. If airport doesn't have helipads, choose terminal
 
	// 1. in case all terminals/helipads are busy (AirportFindFreeHelipad() returns false) or
 
@@ -1632,7 +1634,7 @@ static void AircraftEventHandler_HeliEnd
 
	// the reason behind this is that if an airport has a terminal, it also has a hangar. Airplanes
 
	// must go to a hangar.
 
	if (v->current_order.type == OT_GOTO_STATION) {
 
		if (AirportFindFreeHelipad(v, Airport)) {return;}
 
		if (AirportFindFreeHelipad(v, Airport)) return;
 
	}
 
	v->u.air.state = (Airport->terminals != NULL) ? HANGAR : HELITAKEOFF;
 
}
 
@@ -1673,7 +1675,7 @@ static void AirportClearBlock(Vehicle *v
 
static void AirportGoToNextPosition(Vehicle *v, const AirportFTAClass *Airport)
 
{
 
	// if aircraft is not in position, wait until it is
 
	if (!AircraftController(v)) {return;}
 
	if (!AircraftController(v)) return;
 

	
 
	AirportClearBlock(v, Airport);
 
	AirportMove(v, Airport); // move aircraft to next position
 
@@ -1697,7 +1699,7 @@ static bool AirportMove(Vehicle *v, cons
 
	if (current->heading == v->u.air.state) {
 
		prev_pos = v->u.air.pos; // location could be changed in state, so save it before-hand
 
		_aircraft_state_handlers[v->u.air.state](v, Airport);
 
		if (v->u.air.state != FLYING) {v->u.air.previous_pos = prev_pos;}
 
		if (v->u.air.state != FLYING) v->u.air.previous_pos = prev_pos;
 
		return true;
 
	}
 

	
 
@@ -1772,7 +1774,7 @@ static bool AirportSetBlocks(Vehicle *v,
 
		//search for all all elements in the list with the same state, and blocks != N
 
		// this means more blocks should be checked/set
 
		current = current_pos;
 
		if (current == reference) { current = current->next_in_chain;}
 
		if (current == reference) current = current->next_in_chain;
 
		while (current != NULL) {
 
			if (current->heading == current_pos->heading && current->block != 0) {
 
				airport_flags |= current->block;
 
@@ -1783,7 +1785,7 @@ static bool AirportSetBlocks(Vehicle *v,
 

	
 
		// if the block to be checked is in the next position, then exclude that from
 
		// checking, because it has been set by the airplane before
 
		if (current_pos->block == next->block) {airport_flags ^= next->block;}
 
		if (current_pos->block == next->block) airport_flags ^= next->block;
 

	
 
		if (HASBITS(st->airport_flags, airport_flags)) {
 
			v->cur_speed = 0;
 
@@ -1855,14 +1857,17 @@ static bool AirportFindFreeTerminal(Vehi
 
					//at what terminal does the group start?
 
					//that means, sum up all terminals of
 
					//groups with lower number
 
					for(i = 1; i < target_group; i++)
 
					for (i = 1; i < target_group; i++)
 
						group_start += Airport->terminals[i];
 

	
 
					group_end = group_start + Airport->terminals[target_group];
 
					if (FreeTerminal(v, group_start, group_end)) {return true;}
 
					if (FreeTerminal(v, group_start, group_end)) return true;
 
				}
 
			} else {
 
				/* once the heading isn't 255, we've exhausted the possible blocks.
 
				 * So we cannot move */
 
				return false;
 
			}
 
			else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
 
			temp = temp->next_in_chain;
 
		}
 
	}
 
@@ -1888,7 +1893,7 @@ static bool AirportFindFreeHelipad(Vehic
 
  AirportFTA *temp;
 

	
 
	// if an airport doesn't have helipads, use terminals
 
	if (Airport->helipads == NULL) {return AirportFindFreeTerminal(v, Airport);}
 
	if (Airport->helipads == NULL) return AirportFindFreeTerminal(v, Airport);
 

	
 
	// if there are more helicoptergroups, pick one, just as in AirportFindFreeTerminal()
 
	if (Airport->helipads[0] > 1) {
 
@@ -1913,16 +1918,20 @@ static bool AirportFindFreeHelipad(Vehic
 
						group_start += Airport->helipads[i];
 

	
 
					group_end = group_start + Airport->helipads[target_group];
 
					if (FreeTerminal(v, group_start, group_end)) {return true;}
 
					if (FreeTerminal(v, group_start, group_end)) return true;
 
				}
 
			} else {
 
				/* once the heading isn't 255, we've exhausted the possible blocks.
 
				 * So we cannot move */
 
				return false;
 
			}
 
			else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
 
			temp = temp->next_in_chain;
 
		}
 
	} else {
 
		// only 1 helicoptergroup, check all helipads
 
		// The blocks for helipads start after the last terminal (MAX_TERMINALS)
 
		return FreeTerminal(v, MAX_TERMINALS, GetNumHelipads(Airport) + MAX_TERMINALS);
 
	}
 
	// only 1 helicoptergroup, check all helipads
 
	// The blocks for helipads start after the last terminal (MAX_TERMINALS)
 
	else {return FreeTerminal(v, MAX_TERMINALS, GetNumHelipads(Airport) + MAX_TERMINALS);}
 
	return false;	// it shouldn't get here anytime, but just to be sure
 
}
 

	
 
@@ -2000,7 +2009,7 @@ void UpdateOldAircraft(void)
 
	FOR_ALL_STATIONS(st) {
 
		st->airport_flags = 0; // reset airport
 
		// type of oilrig has been moved, update it (3-5)
 
		if (st->airport_type == 3) {st->airport_type = AT_OILRIG;}
 
		if (st->airport_type == 3) st->airport_type = AT_OILRIG;
 
	}
 

	
 
	FOR_ALL_VEHICLES(v_oldstyle) {
 
@@ -2021,7 +2030,7 @@ void UpdateOldAircraft(void)
 
			v_oldstyle->tile = 0; // aircraft in air is tile=0
 

	
 
			// correct speed of helicopter-rotors
 
			if (v_oldstyle->subtype == 0) {v_oldstyle->next->next->cur_speed = 32;}
 
			if (v_oldstyle->subtype == 0) v_oldstyle->next->next->cur_speed = 32;
 

	
 
			// set new position x,y,z
 
			SetAircraftPosition(v_oldstyle, gp.x, gp.y, GetAircraftFlyingAltitude(v_oldstyle));
 
@@ -2051,8 +2060,7 @@ void UpdateAirplanesOnNewStation(Station
 
					GetNewVehiclePos(v, &gp);
 
					// set new position x,y,z
 
					SetAircraftPosition(v, gp.x, gp.y, GetAircraftFlyingAltitude(v));
 
				}
 
				else {
 
				} else {
 
					assert(v->u.air.state == ENDTAKEOFF || v->u.air.state == HELITAKEOFF);
 
					takeofftype = (v->subtype == 0) ? HELITAKEOFF : ENDTAKEOFF;
 
					// search in airportdata for that heading
aircraft_gui.c
Show inline comments
 
@@ -1063,10 +1063,11 @@ static void PlayerAircraftWndProc(Window
 
			DrawVehicleProfitButton(v, x, y + 13);
 

	
 
			SetDParam(0, v->unitnumber);
 
			if (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_HIDDEN))
 
			if (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_HIDDEN)) {
 
				str = STR_021F;
 
			else
 
			} else {
 
				str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
 
			}
 
			DrawString(x, y + 2, str, 0);
 

	
 
			SetDParam(0, v->profit_this_year);
 
@@ -1100,7 +1101,7 @@ static void PlayerAircraftWndProc(Window
 
		case 7: { /* Matrix to show vehicles */
 
			uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_BIG;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 

	
 
			id_v += w->vscroll.pos;
 

	
airport.c
Show inline comments
 
@@ -176,14 +176,15 @@ static void AirportFTAClass_Constructor(
 

	
 
	// build the state machine
 
	AirportBuildAutomata(Airport, FA);
 
		DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s); Entry Point %d", Airport->nofelements,
 
				  nofterminals, nofterminalgroups, nofhelipads, nofhelipadgroups, Airport->entry_point);
 
	DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s); Entry Point %d",
 
		Airport->nofelements, nofterminals, nofterminalgroups, nofhelipads, nofhelipadgroups, Airport->entry_point
 
	);
 

	
 

	
 
	{
 
		byte _retval = AirportTestFTA(Airport);
 
		if (_retval != MAX_ELEMENTS) {printf("ERROR with element: %d\n", _retval-1);}
 
		assert(_retval == MAX_ELEMENTS);
 
		byte ret = AirportTestFTA(Airport);
 
		if (ret != MAX_ELEMENTS) printf("ERROR with element: %d\n", ret - 1);
 
		assert(ret == MAX_ELEMENTS);
 
	}
 
	// print out full information
 
	// true  -- full info including heading, block, etc
 
@@ -213,12 +214,13 @@ static uint16 AirportGetNofElements(cons
 
	int i;
 
	uint16 nofelements = 0;
 
	int temp = FA[0].position;
 

	
 
	for (i = 0; i < MAX_ELEMENTS; i++) {
 
		if (temp != FA[i].position) {
 
			nofelements++;
 
			temp = FA[i].position;
 
		}
 
		if (FA[i].position == MAX_ELEMENTS) {break;}
 
		if (FA[i].position == MAX_ELEMENTS) break;
 
	}
 
	return nofelements;
 
}
 
@@ -228,7 +230,7 @@ static void AirportBuildAutomata(Airport
 
	AirportFTA *FAutomata;
 
	AirportFTA *current;
 
	uint16 internalcounter, i;
 
	FAutomata = (AirportFTA *)malloc(sizeof(AirportFTA) * Airport->nofelements);
 
	FAutomata = malloc(sizeof(AirportFTA) * Airport->nofelements);
 
	Airport->layout = FAutomata;
 
	internalcounter = 0;
 

	
 
@@ -240,12 +242,13 @@ static void AirportBuildAutomata(Airport
 
		current->next_position = FA[internalcounter].next_in_chain;
 

	
 
		// outgoing nodes from the same position, create linked list
 
		while (current->position == FA[internalcounter+1].position) {
 
			AirportFTA *newNode = (AirportFTA *)malloc(sizeof(AirportFTA));
 
			newNode->position = FA[internalcounter+1].position;
 
			newNode->heading  = FA[internalcounter+1].heading;
 
			newNode->block    = FA[internalcounter+1].block;
 
			newNode->next_position = FA[internalcounter+1].next_in_chain;
 
		while (current->position == FA[internalcounter + 1].position) {
 
			AirportFTA* newNode = malloc(sizeof(AirportFTA));
 

	
 
			newNode->position = FA[internalcounter + 1].position;
 
			newNode->heading  = FA[internalcounter + 1].heading;
 
			newNode->block    = FA[internalcounter + 1].block;
 
			newNode->next_position = FA[internalcounter + 1].next_in_chain;
 
			// create link
 
			current->next_in_chain = newNode;
 
			current = current->next_in_chain;
 
@@ -264,14 +267,14 @@ static byte AirportTestFTA(const Airport
 

	
 
	for (i = 0; i < Airport->nofelements; i++) {
 
		position = Airport->layout[i].position;
 
		if (position != next_element) {return i;}
 
		if (position != next_element) return i;
 
		temp = &Airport->layout[i];
 

	
 
		do {
 
			if (temp->heading > MAX_HEADINGS && temp->heading != 255) {return i;}
 
			if (temp->heading == 0 && temp->next_in_chain != 0) {return i;}
 
			if (position != temp->position) {return i;}
 
			if (temp->next_position >= Airport->nofelements) {return i;}
 
			if (temp->heading > MAX_HEADINGS && temp->heading != 255) return i;
 
			if (temp->heading == 0 && temp->next_in_chain != 0) return i;
 
			if (position != temp->position) return i;
 
			if (temp->next_position >= Airport->nofelements) return i;
 
			temp = temp->next_in_chain;
 
		} while (temp != NULL);
 
		next_element++;
 
@@ -279,7 +282,8 @@ static byte AirportTestFTA(const Airport
 
	return MAX_ELEMENTS;
 
}
 

	
 
static const char* const _airport_heading_strings[MAX_HEADINGS+2] = {
 
#if 0
 
static const char* const _airport_heading_strings[] = {
 
	"TO_ALL",
 
	"HANGAR",
 
	"TERM1",
 
@@ -302,7 +306,6 @@ static const char* const _airport_headin
 
	"DUMMY"	// extra heading for 255
 
};
 

	
 
/*
 
static void AirportPrintOut(const AirportFTAClass *Airport, const bool full_report)
 
{
 
	AirportFTA *temp;
 
@@ -316,16 +319,18 @@ static void AirportPrintOut(const Airpor
 
			heading = (temp->heading == 255) ? MAX_HEADINGS+1 : temp->heading;
 
			printf("Pos:%2d NPos:%2d Heading:%15s Block:%2d\n", temp->position, temp->next_position,
 
						 _airport_heading_strings[heading], AirportBlockToString(temp->block));
 
		} else {
 
			printf("P:%2d NP:%2d", temp->position, temp->next_position);
 
		}
 
		else { printf("P:%2d NP:%2d", temp->position, temp->next_position);}
 
		while (temp->next_in_chain != NULL) {
 
			temp = temp->next_in_chain;
 
			if (full_report) {
 
				heading = (temp->heading == 255) ? MAX_HEADINGS+1 : temp->heading;
 
				printf("Pos:%2d NPos:%2d Heading:%15s Block:%2d\n", temp->position, temp->next_position,
 
							_airport_heading_strings[heading], AirportBlockToString(temp->block));
 
			} else {
 
				printf("P:%2d NP:%2d", temp->position, temp->next_position);
 
			}
 
			else { printf("P:%2d NP:%2d", temp->position, temp->next_position);}
 
		}
 
		printf("\n");
 
	}
 
@@ -341,7 +346,8 @@ static byte AirportBlockToString(uint32 
 
	if (block & 0x0000000c) { block >>= 2;  i += 2; }
 
	if (block & 0x00000002) { i += 1; }
 
	return i;
 
}*/
 
}
 
#endif
 

	
 
const AirportFTAClass* GetAirport(const byte airport_type)
 
{
dock_gui.c
Show inline comments
 
@@ -124,8 +124,8 @@ static void BuildDocksToolbWndProc(Windo
 
		if (e->click.widget - 3 >= 0 && e->click.widget != 5) _build_docks_button_proc[e->click.widget - 3](w);
 
		break;
 

	
 
	case WE_KEYPRESS: {
 
		switch(e->keypress.keycode) {
 
	case WE_KEYPRESS:
 
		switch (e->keypress.keycode) {
 
			case '1': BuildDocksClick_Canal(w); break;
 
			case '2': BuildDocksClick_Lock(w); break;
 
			case '3': BuildDocksClick_Demolish(w); break;
 
@@ -133,10 +133,9 @@ static void BuildDocksToolbWndProc(Windo
 
			case '5': BuildDocksClick_Dock(w); break;
 
			case '6': BuildDocksClick_Buoy(w); break;
 
			case 'l': BuildDocksClick_Landscaping(w); break;
 
			default:
 
				return;
 
			default:  return;
 
		}
 
	} break;
 
		break;
 

	
 
	case WE_PLACE_OBJ:
 
		_place_proc(e->place.tile);
 
@@ -151,8 +150,9 @@ static void BuildDocksToolbWndProc(Windo
 
		if (e->click.pt.x != -1) {
 
			if ((e->place.userdata & 0xF) == VPM_X_AND_Y) { // dragged actions
 
				GUIPlaceProcDragXY(e);
 
			} else if(e->place.userdata == VPM_X_OR_Y)
 
			} else if (e->place.userdata == VPM_X_OR_Y) {
 
				DoCommandP(e->place.tile, e->place.starttile, 0, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
 
			}
 
		}
 
		break;
 

	
 
@@ -161,10 +161,10 @@ static void BuildDocksToolbWndProc(Windo
 
		SetWindowDirty(w);
 

	
 
		w = FindWindowById(WC_BUILD_STATION, 0);
 
		if (w != NULL) WP(w,def_d).close=true;
 
		if (w != NULL) WP(w,def_d).close = true;
 

	
 
		w = FindWindowById(WC_BUILD_DEPOT, 0);
 
		if (w != NULL) WP(w,def_d).close=true;
 
		if (w != NULL) WP(w,def_d).close = true;
 
		break;
 

	
 
	case WE_PLACE_PRESIZE: {
 
@@ -298,7 +298,7 @@ static void UpdateDocksDirection(void)
 

	
 
static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
 
{
 
	switch(e->event) {
 
	switch (e->event) {
 
	case WE_PAINT:
 
		w->click_state = (1<<3) << _ship_depot_direction;
 
		DrawWindowWidgets(w);
 
@@ -310,7 +310,7 @@ static void BuildDocksDepotWndProc(Windo
 
		return;
 

	
 
	case WE_CLICK: {
 
		switch(e->click.widget) {
 
		switch (e->click.widget) {
 
		case 3:
 
		case 4:
 
			_ship_depot_direction = e->click.widget - 3;
engine_gui.c
Show inline comments
 
@@ -122,7 +122,6 @@ void ShowEnginePreviewWindow(EngineID en
 
static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
 
{
 
	const RailVehicleInfo *rvi = RailVehInfo(engine);
 
	int cap;
 
	uint multihead = (rvi->flags & RVI_MULTIHEAD) ? 1 : 0;
 

	
 
	SetDParam(0, (_price.build_railvehicle >> 3) * rvi->base_cost >> 5);
 
@@ -132,11 +131,11 @@ static void DrawTrainEngineInfo(EngineID
 

	
 
	SetDParam(4, rvi->running_cost_base * _price.running_rail[rvi->engclass] >> 8 << multihead);
 

	
 
	cap = rvi->capacity;
 
	SetDParam(5, STR_8838_N_A);
 
	if (cap != 0) {
 
		SetDParam(6, cap << multihead);
 
	if (rvi->capacity != 0) {
 
		SetDParam(5, _cargoc.names_long[rvi->cargo_type]);
 
		SetDParam(6, rvi->capacity << multihead);
 
	} else {
 
		SetDParam(5, STR_8838_N_A);
 
	}
 
	DrawStringMultiCenter(x, y, STR_885B_COST_WEIGHT_T_SPEED_POWER, maxw);
 
}
gui.h
Show inline comments
 
@@ -42,7 +42,7 @@ void PlaceProc_BuyLand(TileIndex tile);
 
void ShowPlayerTrains(PlayerID player, StationID station);
 
void ShowTrainViewWindow(Vehicle *v);
 
void ShowTrainDetailsWindow(Vehicle *v);
 
void ShowOrdersWindow(Vehicle *v);
 
void ShowOrdersWindow(const Vehicle* v);
 

	
 
void ShowRoadVehViewWindow(Vehicle *v);
 

	
 
@@ -95,7 +95,7 @@ void ShowEstimatedCostOrIncome(int32 cos
 
void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
 

	
 
void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
 
void CheckRedrawStationCoverage(Window *w);
 
void CheckRedrawStationCoverage(const Window* w);
 

	
 
void ShowSmallMap(void);
 
void ShowExtraViewPortWindow(void);
industry_cmd.c
Show inline comments
 
@@ -1011,14 +1011,11 @@ static void PlantFarmField(TileIndex til
 

	
 
static void MaybePlantFarmField(const Industry* i)
 
{
 
	TileIndex tile;
 

	
 
	if (CHANCE16(1,8)) {
 
		int x = (i->width>>1) + Random() % 31 - 16;
 
		int y = (i->height>>1) + Random() % 31 - 16;
 
		tile = TileAddWrap(i->xy, x, y);
 
		if (tile != INVALID_TILE)
 
			PlantFarmField(tile);
 
	if (CHANCE16(1, 8)) {
 
		int x = i->width  / 2 + Random() % 31 - 16;
 
		int y = i->height / 2 + Random() % 31 - 16;
 
		TileIndex tile = TileAddWrap(i->xy, x, y);
 
		if (tile != INVALID_TILE) PlantFarmField(tile);
 
	}
 
}
 

	
 
@@ -1237,10 +1234,7 @@ static bool CheckNewIndustry_Lumbermill(
 

	
 
static bool CheckNewIndustry_BubbleGen(TileIndex tile, int type)
 
{
 
	if (GetTileZ(tile) > 32) {
 
		return false;
 
	}
 
	return true;
 
	return GetTileZ(tile) <= 32;
 
}
 

	
 
typedef bool CheckNewIndustryProc(TileIndex tile, int type);
 
@@ -1454,10 +1448,7 @@ static Industry *AllocateIndustry(void)
 
	}
 

	
 
	/* Check if we can add a block to the pool */
 
	if (AddBlockToPool(&_industry_pool))
 
		return AllocateIndustry();
 

	
 
	return NULL;
 
	return AddBlockToPool(&_industry_pool) ? AllocateIndustry() : NULL;
 
}
 

	
 
static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, Town *t, byte owner)
main_gui.c
Show inline comments
 
@@ -152,7 +152,7 @@ typedef void ToolbarButtonProc(Window *w
 

	
 
static void ToolbarPauseClick(Window *w)
 
{
 
	if (_networking && !_network_server) { return;} // only server can pause the game
 
	if (_networking && !_network_server) return; // only server can pause the game
 

	
 
	if (DoCommandP(0, _pause ? 0 : 1, 0, NULL, CMD_PAUSE))
 
		SndPlayFx(SND_15_BEEP);
 
@@ -913,8 +913,10 @@ bool DoZoomInOutWindow(int how, Window *
 
		// update the toolbar button too
 
		CLRBIT(wt->disabled_state, button);
 
		CLRBIT(wt->disabled_state, button + 1);
 
		if (vp->zoom == 0) SETBIT(wt->disabled_state, button);
 
		else if (vp->zoom == 2) SETBIT(wt->disabled_state, button + 1);
 
		switch (vp->zoom) {
 
			case 0: SETBIT(wt->disabled_state, button); break;
 
			case 2: SETBIT(wt->disabled_state, button + 1); break;
 
		}
 
		SetWindowDirty(wt);
 
	}
 

	
misc_gui.c
Show inline comments
 
@@ -719,10 +719,10 @@ void DrawStationCoverageAreaText(int sx,
 
	}
 
}
 

	
 
void CheckRedrawStationCoverage(Window *w)
 
void CheckRedrawStationCoverage(const Window* w)
 
{
 
	if (_thd.dirty&1) {
 
		_thd.dirty&=~1;
 
	if (_thd.dirty & 1) {
 
		_thd.dirty &= ~1;
 
		SetWindowDirty(w);
 
	}
 
}
 
@@ -734,15 +734,15 @@ void UnclickSomeWindowButtons(Window *w,
 
	int i = 0;
 
	w->click_state ^= x;
 
	do {
 
		if (x&1) InvalidateWidget(w,i);
 
	} while(i++,x>>=1);
 
		if (x & 1) InvalidateWidget(w, i);
 
	} while (i++, x >>= 1);
 
}
 

	
 

	
 
void UnclickWindowButtons(Window *w)
 
{
 
	bool sticky = false;
 
	if (w->desc_flags & WDF_STICKY_BUTTON && HASBIT(w->click_state, 2))	sticky = true;
 
	if (w->desc_flags & WDF_STICKY_BUTTON && HASBIT(w->click_state, 2)) sticky = true;
 

	
 
	UnclickSomeWindowButtons(w, (uint32)-1);
 

	
 
@@ -1164,10 +1164,17 @@ void BuildFileList(void)
 
{
 
	_fios_path_changed = true;
 
	FiosFreeSavegameList();
 
	if (_saveload_mode == SLD_NEW_GAME || _saveload_mode == SLD_LOAD_SCENARIO || _saveload_mode == SLD_SAVE_SCENARIO) {
 
		_fios_list = FiosGetScenarioList(&_fios_num, _saveload_mode);
 
	} else
 
		_fios_list = FiosGetSavegameList(&_fios_num, _saveload_mode);
 
	switch (_saveload_mode) {
 
		case SLD_NEW_GAME:
 
		case SLD_LOAD_SCENARIO:
 
		case SLD_SAVE_SCENARIO:
 
			_fios_list = FiosGetScenarioList(&_fios_num, _saveload_mode);
 
			break;
 

	
 
		default:
 
			_fios_list = FiosGetSavegameList(&_fios_num, _saveload_mode);
 
			break;
 
	}
 
}
 

	
 
static void DrawFiosTexts(uint maxw)
 
@@ -1258,9 +1265,8 @@ static void SaveLoadDlgWndProc(Window *w
 
			item = _fios_list + pos;
 
			DoDrawStringTruncated(item->title, 4, y, _fios_colors[item->type], w->width - 18);
 
			pos++;
 
			y+=10;
 
			if (y >= w->vscroll.cap*10+w->widget[6].top+1)
 
				break;
 
			y += 10;
 
			if (y >= w->vscroll.cap * 10 + w->widget[6].top + 1) break;
 
		}
 

	
 
		if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
 
@@ -1506,11 +1512,10 @@ static void SelectScenarioWndProc(Window
 
		pos = w->vscroll.pos;
 
		while (pos < _fios_num) {
 
			item = _fios_list + pos;
 
			DoDrawString(item->title, 4, y, _fios_colors[item->type] );
 
			DoDrawString(item->title, 4, y, _fios_colors[item->type]);
 
			pos++;
 
			y+=10;
 
			if (y >= w->vscroll.cap*10+list_start)
 
				break;
 
			y += 10;
 
			if (y >= w->vscroll.cap * 10 + list_start) break;
 
		}
 
	}
 
		break;
 
@@ -1544,7 +1549,8 @@ static void SelectScenarioWndProc(Window
 

	
 
				file = _fios_list + y;
 

	
 
				if ((name = FiosBrowseTo(file)) != NULL) {
 
				name = FiosBrowseTo(file);
 
				if (name != NULL) {
 
					SetFiosType(file->type);
 
					strcpy(_file_to_saveload.name, name);
 
					DeleteWindow(w);
 
@@ -1571,14 +1577,19 @@ static void SelectScenarioWndProc(Window
 
void SetFiosType(const byte fiostype)
 
{
 
	switch (fiostype) {
 
	case FIOS_TYPE_FILE: case FIOS_TYPE_SCENARIO:
 
		_file_to_saveload.mode = SL_LOAD;
 
		break;
 
	case FIOS_TYPE_OLDFILE: case FIOS_TYPE_OLD_SCENARIO:
 
		_file_to_saveload.mode = SL_OLD_LOAD;
 
		break;
 
	default:
 
		_file_to_saveload.mode = SL_INVALID;
 
		case FIOS_TYPE_FILE:
 
		case FIOS_TYPE_SCENARIO:
 
			_file_to_saveload.mode = SL_LOAD;
 
			break;
 

	
 
		case FIOS_TYPE_OLDFILE:
 
		case FIOS_TYPE_OLD_SCENARIO:
 
			_file_to_saveload.mode = SL_OLD_LOAD;
 
			break;
 

	
 
		default:
 
			_file_to_saveload.mode = SL_INVALID;
 
			break;
 
	}
 
}
 

	
 
@@ -1878,6 +1889,5 @@ void ShowCheatWindow(void)
 
	DeleteWindowById(WC_CHEATS, 0);
 
	w = AllocateWindowDesc(&_cheats_desc);
 

	
 
	if (w)
 
		SetWindowDirty(w);
 
	if (w != NULL) SetWindowDirty(w);
 
}
namegen.c
Show inline comments
 
@@ -642,7 +642,7 @@ uint32 GetOldTownName(uint32 townnamepar
 
			/*	NUM_SILLY_1	-	lower 16 bits
 
			*	NUM_SILLY_2	-	upper 16 bits without leading 1 (first 8 bytes)
 
			*	1000 0000 2222 2222 0000 0000 1111 1111 */
 
			return FIXNUM(townnameparts, lengthof(name_silly_1), 0) | FIXNUM(((townnameparts >> 16)&0xFF), lengthof(name_silly_2), 16);
 
			return FIXNUM(townnameparts, lengthof(name_silly_1), 0) | FIXNUM(GB(townnameparts, 16, 8), lengthof(name_silly_2), 16);
 
	}
 
	return 0;
 
}
network_gui.c
Show inline comments
 
@@ -151,7 +151,7 @@ static void NetworkGameWindowWndProc(Win
 

	
 
				cur_item = cur_item->next;
 
				y += NET_PRC__SIZE_OF_ROW;
 
				if (++n == w->vscroll.cap) { break;} // max number of games in the window
 
				if (++n == w->vscroll.cap) break; // max number of games in the window
 
			}
 
		}
 

	
 
@@ -242,7 +242,7 @@ static void NetworkGameWindowWndProc(Win
 
		case 9: { /* Matrix to show networkgames */
 
			uint32 id_v = (e->click.pt.y - NET_PRC__OFFSET_TOP_WIDGET) / NET_PRC__SIZE_OF_ROW;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 
			id_v += w->vscroll.pos;
 

	
 
			{
newgrf.c
Show inline comments
 
@@ -258,15 +258,9 @@ static bool RailVehicleChangeInfo(uint e
 
				uint32 base = grf_load_dword(&buf);
 

	
 
				switch (base) {
 
				case 0x4C30:
 
					rvi[i].engclass = 0;
 
					break;
 
				case 0x4C36:
 
					rvi[i].engclass = 1;
 
					break;
 
				case 0x4C3C:
 
					rvi[i].engclass = 2;
 
					break;
 
					case 0x4C30: rvi[i].engclass = 0; break;
 
					case 0x4C36: rvi[i].engclass = 1; break;
 
					case 0x4C3C: rvi[i].engclass = 2; break;
 
				}
 
				dewagonize(base, engine + i);
 
			}
news_gui.c
Show inline comments
 
@@ -351,8 +351,8 @@ static const SoundFx _news_sounds[] = {
 
 */
 
static inline byte GetNewsDisplayValue(byte item)
 
{
 
	assert(item < 10 && ((_news_display_opt >> (item * 2)) & 0x3) <= 2);
 
	return (_news_display_opt >> (item * 2)) & 0x3;
 
	assert(item < 10 && GB(_news_display_opt, item * 2, 2) <= 2);
 
	return GB(_news_display_opt, item * 2, 2);
 
}
 

	
 
/** Set the value of an item in the news-display settings. This is
 
@@ -363,10 +363,7 @@ static inline byte GetNewsDisplayValue(b
 
static inline void SetNewsDisplayValue(byte item, byte val)
 
{
 
	assert(item < 10 && val <= 2);
 
	item *= 2;
 
	CLRBIT(_news_display_opt, item);
 
	CLRBIT(_news_display_opt, item + 1);
 
	_news_display_opt |= val << item;
 
	SB(_news_display_opt, item * 2, 2, val);
 
}
 

	
 
// open up an own newspaper window for the news item
 
@@ -530,15 +527,12 @@ static void ShowNewsMessage(byte i)
 

	
 
void ShowLastNewsMessage(void)
 
{
 
	if (_forced_news == INVALID_NEWS)
 
	if (_forced_news == INVALID_NEWS) {
 
		ShowNewsMessage(_current_news);
 
	else if (_forced_news != 0)
 
	} else if (_forced_news != 0) {
 
		ShowNewsMessage(_forced_news - 1);
 
	else {
 
		if (_total_news != MAX_NEWS)
 
			ShowNewsMessage(_latest_news);
 
		else
 
			ShowNewsMessage(MAX_NEWS - 1);
 
	} else {
 
		ShowNewsMessage(_total_news != MAX_NEWS ? _latest_news : MAX_NEWS - 1);
 
	}
 
}
 

	
 
@@ -619,7 +613,6 @@ static void MessageHistoryWndProc(Window
 
			DrawNewsString(82, y, 12, ni, w->width - 95);
 
			y += 12;
 
		}
 

	
 
		break;
 
	}
 

	
 
@@ -630,8 +623,7 @@ static void MessageHistoryWndProc(Window
 
			byte p, q;
 

	
 
			#if 0 // === DEBUG code only
 
			for (p = 0; p < _total_news; p++)
 
			{
 
			for (p = 0; p < _total_news; p++) {
 
				NewsItem *ni;
 
				byte buffer[256];
 
				ni = &_news_items[p];
order_cmd.c
Show inline comments
 
@@ -851,25 +851,23 @@ int32 CmdRestoreOrderIndex(int x, int y,
 
 */
 
bool CheckOrders(uint data_a, uint data_b)
 
{
 
	Vehicle *v = GetVehicle(data_a);
 
	const Vehicle* v = GetVehicle(data_a);
 

	
 
	/* Does the user wants us to check things? */
 
	if (_patches.order_review_system == 0)
 
		return false;
 
	if (_patches.order_review_system == 0) return false;
 

	
 
	/* Do nothing for crashed vehicles */
 
	if(v->vehstatus & VS_CRASHED)
 
		return false;
 
	if (v->vehstatus & VS_CRASHED) return false;
 

	
 
	/* Do nothing for stopped vehicles if setting is '1' */
 
	if ( (_patches.order_review_system == 1) && (v->vehstatus & VS_STOPPED) )
 
	if (_patches.order_review_system == 1 && v->vehstatus & VS_STOPPED)
 
		return false;
 

	
 
	/* do nothing we we're not the first vehicle in a share-chain */
 
	if (v->next_shared != NULL)
 
		return false;
 
	if (v->next_shared != NULL) return false;
 

	
 
	/* Only check every 20 days, so that we don't flood the message log */
 
	if ( (v->owner == _local_player) && (v->day_counter % 20 == 0) ) {
 
	if (v->owner == _local_player && v->day_counter % 20 == 0) {
 
		int n_st, problem_type = -1;
 
		const Order *order;
 
		const Station *st;
 
@@ -930,7 +928,7 @@ bool CheckOrders(uint data_a, uint data_
 
			return true;
 
		}
 

	
 
		message = (STR_TRAIN_HAS_TOO_FEW_ORDERS) + (((v->type) - VEH_Train) << 2) + problem_type;
 
		message = STR_TRAIN_HAS_TOO_FEW_ORDERS + ((v->type - VEH_Train) << 2) + problem_type;
 
		/*DEBUG(misc, 3) ("Checkorder mode 0: Triggered News Item for %d", v->index);*/
 

	
 
		SetDParam(0, v->unitnumber);
order_gui.c
Show inline comments
 
@@ -23,10 +23,7 @@ static int OrderGetSel(const Window* w)
 
	const Vehicle* v = GetVehicle(w->window_number);
 
	int num = WP(w,order_d).sel;
 

	
 
	if (num < 0 || num > v->num_orders)
 
		return v->num_orders;
 

	
 
	return num;
 
	return (num >= 0 && num < v->num_orders) ? num : v->num_orders;
 
}
 

	
 
static StringID StationOrderStrings[] = {
 
@@ -91,6 +88,7 @@ static void DrawOrdersWindow(Window *w)
 
		switch (order->type) {
 
			case OT_GOTO_STATION:
 
				break;
 

	
 
			case OT_GOTO_DEPOT:
 
				SETBIT(w->disabled_state, 9);	/* unload */
 
				SETBIT(w->disabled_state, 10); /* transfer */
 
@@ -188,7 +186,6 @@ static void DrawOrdersWindow(Window *w)
 
static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile)
 
{
 
	Order order;
 
	Station *st;
 
	int st_index;
 

	
 
	// check depot first
 
@@ -255,7 +252,7 @@ static Order GetOrderCmdFromTile(const V
 
	}
 

	
 
	if (IsTileType(tile, MP_STATION)) {
 
		st = GetStation(st_index = _m[tile].m2);
 
		const Station* st = GetStation(st_index = _m[tile].m2);
 

	
 
		if (st->owner == _current_player || st->owner == OWNER_NONE) {
 
			byte facil;
 
@@ -279,20 +276,18 @@ static Order GetOrderCmdFromTile(const V
 
	return order;
 
}
 

	
 
static bool HandleOrderVehClick(Vehicle *v, Vehicle *u, Window *w)
 
static bool HandleOrderVehClick(const Vehicle* v, const Vehicle* u, Window* w)
 
{
 
	if (u->type != v->type)
 
		return false;
 
	if (u->type != v->type) return false;
 

	
 
	if (u->type == VEH_Train && u->subtype != TS_Front_Engine) {
 
		u = GetFirstVehicleInChain(u);
 
		if (u->subtype != TS_Front_Engine)
 
			return false;
 
		if (u->subtype != TS_Front_Engine) return false;
 
	}
 

	
 
	// v is vehicle getting orders. Only copy/clone orders if vehicle doesn't have any orders yet
 
	// obviously if you press CTRL on a non-empty orders vehicle you know what you are doing
 
	if (v->num_orders != 0 && _ctrl_pressed == 0) {return false;}
 
	if (v->num_orders != 0 && _ctrl_pressed == 0) return false;
 

	
 
	if (DoCommandP(v->tile, v->index | (u->index << 16), _ctrl_pressed ? 0 : 1, NULL,
 
		_ctrl_pressed ? CMD_CLONE_ORDER | CMD_MSG(STR_CANT_SHARE_ORDER_LIST) : CMD_CLONE_ORDER | CMD_MSG(STR_CANT_COPY_ORDER_LIST))) {
 
@@ -303,27 +298,25 @@ static bool HandleOrderVehClick(Vehicle 
 
	return true;
 
}
 

	
 
static void OrdersPlaceObj(Vehicle *v, TileIndex tile, Window *w)
 
static void OrdersPlaceObj(const Vehicle* v, TileIndex tile, Window* w)
 
{
 
	Order cmd;
 
	Vehicle *u;
 
	const Vehicle* u;
 

	
 
	// check if we're clicking on a vehicle first.. clone orders in that case.
 
	u = CheckMouseOverVehicle();
 
	if (u && HandleOrderVehClick(v, u, w))
 
		return;
 
	if (u != NULL && HandleOrderVehClick(v, u, w)) return;
 

	
 
	cmd = GetOrderCmdFromTile(v, tile);
 
	if (cmd.type == OT_NOTHING) return;
 

	
 
	if (DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), PackOrder(&cmd), NULL, CMD_INSERT_ORDER | CMD_MSG(STR_8833_CAN_T_INSERT_NEW_ORDER))) {
 
		if (WP(w,order_d).sel != -1)
 
			WP(w,order_d).sel++;
 
		if (WP(w,order_d).sel != -1) WP(w,order_d).sel++;
 
		ResetObjectToPlace();
 
	}
 
}
 

	
 
static void OrderClick_Goto(Window *w, Vehicle *v)
 
static void OrderClick_Goto(Window* w, const Vehicle* v)
 
{
 
	InvalidateWidget(w, 7);
 
	TOGGLEBIT(w->click_state, 7);
 
@@ -335,39 +328,39 @@ static void OrderClick_Goto(Window *w, V
 
	}
 
}
 

	
 
static void OrderClick_FullLoad(Window *w, Vehicle *v)
 
static void OrderClick_FullLoad(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 
}
 

	
 
static void OrderClick_Unload(Window *w, Vehicle *v)
 
static void OrderClick_Unload(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_UNLOAD,    NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 
}
 

	
 
static void OrderClick_Nonstop(Window *w, Vehicle *v)
 
static void OrderClick_Nonstop(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_NON_STOP,  NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 
}
 

	
 
static void OrderClick_Transfer(Window *w, Vehicle *v)
 
static void OrderClick_Transfer(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index + (OrderGetSel(w) <<  16), OFB_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 
}
 

	
 
static void OrderClick_Skip(Window *w, Vehicle *v)
 
static void OrderClick_Skip(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index, 0, NULL, CMD_SKIP_ORDER);
 
}
 

	
 
static void OrderClick_Delete(Window *w, Vehicle *v)
 
static void OrderClick_Delete(Window* w, const Vehicle* v)
 
{
 
	DoCommandP(v->tile, v->index, OrderGetSel(w), NULL, CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER));
 
}
 

	
 
typedef void OnButtonClick(Window *w, Vehicle *v);
 
typedef void OnButtonClick(Window* w, const Vehicle* v);
 

	
 
static OnButtonClick * const _order_button_proc[] = {
 
static OnButtonClick* const _order_button_proc[] = {
 
	OrderClick_Skip,
 
	OrderClick_Delete,
 
	OrderClick_Nonstop,
 
@@ -388,7 +381,7 @@ static const uint16 _order_keycodes[] = 
 

	
 
static void OrdersWndProc(Window *w, WindowEvent *e)
 
{
 
	switch(e->event) {
 
	switch (e->event) {
 
	case WE_PAINT:
 
		DrawOrdersWindow(w);
 
		break;
 
@@ -502,7 +495,7 @@ static void OrdersWndProc(Window *w, Win
 

	
 
	// check if a vehicle in a depot was clicked..
 
	case WE_MOUSELOOP: {
 
		Vehicle *v = _place_clicked_vehicle;
 
		const Vehicle* v = _place_clicked_vehicle;
 
		/*
 
		 * Check if we clicked on a vehicle
 
		 * and if the GOTO button of this window is pressed
 
@@ -599,7 +592,7 @@ static const WindowDesc _other_orders_de
 
	OrdersWndProc
 
};
 

	
 
void ShowOrdersWindow(Vehicle *v)
 
void ShowOrdersWindow(const Vehicle* v)
 
{
 
	Window *w;
 
	VehicleID veh = v->index;
 
@@ -610,9 +603,10 @@ void ShowOrdersWindow(Vehicle *v)
 
	_alloc_wnd_parent_num = veh;
 

	
 
	if (v->owner != _local_player) {
 
		w = AllocateWindowDesc( &_other_orders_desc);
 
	} else
 
		w = AllocateWindowDesc( (v->type == VEH_Train) ? &_orders_train_desc : &_orders_desc);
 
		w = AllocateWindowDesc(&_other_orders_desc);
 
	} else {
 
		w = AllocateWindowDesc((v->type == VEH_Train) ? &_orders_train_desc : &_orders_desc);
 
	}
 

	
 
	if (w != NULL) {
 
		w->window_number = veh;
player_gui.c
Show inline comments
 
@@ -228,8 +228,8 @@ static void DoShowPlayerFinances(PlayerI
 
	int mode;
 

	
 
	mode = (player != _local_player) * 2 + show_small;
 
	w = AllocateWindowDescFront( desc_table[mode], player);
 
	if (w) {
 
	w = AllocateWindowDescFront(desc_table[mode], player);
 
	if (w != NULL) {
 
		w->caption_color = w->window_number;
 
		WP(w,def_d).data_1 = mode;
 
		if (show_stickied) {
 
@@ -484,28 +484,26 @@ static void DrawCompanyOwnerText(const P
 
{
 
	const Player* p2;
 
	int num = -1;
 
	int amt;
 

	
 
	FOR_ALL_PLAYERS(p2) {
 
		if ((amt=GetAmountOwnedBy(p, p2->index)) != 0) {
 
		uint amt = GetAmountOwnedBy(p, p2->index);
 
		if (amt != 0) {
 
			num++;
 

	
 
			SetDParam(num*3+0, amt*25);
 
			SetDParam(num*3+1, p2->name_1);
 
			SetDParam(num*3+2, p2->name_2);
 
			SetDParam(num * 3 + 0, amt * 25);
 
			SetDParam(num * 3 + 1, p2->name_1);
 
			SetDParam(num * 3 + 2, p2->name_2);
 

	
 
			if (num != 0)
 
				break;
 
			if (num != 0) break;
 
		}
 
	}
 

	
 
	if (num >= 0)
 
		DrawString(120, 124, STR_707D_OWNED_BY+num, 0);
 
	if (num >= 0) DrawString(120, 124, STR_707D_OWNED_BY + num, 0);
 
}
 

	
 
static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
 
{
 
	switch(e->event) {
 
	switch (e->event) {
 
	case WE_PAINT: {
 
		const Player* p = GetPlayer(w->window_number);
 
		uint32 dis = 0;
 
@@ -562,10 +560,10 @@ static void PlayerCompanyWndProc(Window 
 
	} break;
 

	
 
	case WE_CLICK:
 
		switch(e->click.widget) {
 
		switch (e->click.widget) {
 
		case 3: { /* select face */
 
			Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number);
 
			if (wf) {
 
			if (wf != NULL) {
 
				wf->caption_color = w->window_number;
 
				WP(wf,facesel_d).face = GetPlayer(wf->window_number)->face;
 
				WP(wf,facesel_d).gender = 0;
 
@@ -574,15 +572,15 @@ static void PlayerCompanyWndProc(Window 
 

	
 
		case 4: {/* change color */
 
			Window *wf = AllocateWindowDescFront(&_select_player_color_desc,w->window_number);
 
			if (wf) {
 
			if (wf != NULL) {
 
				wf->caption_color = wf->window_number;
 
				wf->vscroll.cap = 8;
 
			}
 
		} break;
 

	
 
		case 5: {/* change president name */
 
			Player *p = GetPlayer(w->window_number);
 
			WP(w,def_d).byte_1 = 0;
 
			const Player* p = GetPlayer(w->window_number);
 
			WP(w, def_d).byte_1 = 0;
 
			SetDParam(0, p->president_name_2);
 
			ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w->window_class, w->window_number);
 
		} break;
 
@@ -649,8 +647,8 @@ static void PlayerCompanyWndProc(Window 
 
	case WE_ON_EDIT_TEXT: {
 
		char *b = e->edittext.str;
 

	
 
		if (*b == 0 && WP(w,def_d).byte_1 != 2) // empty string is allowed for password
 
			return;
 
		// empty string is allowed for password
 
		if (*b == '\0' && WP(w,def_d).byte_1 != 2) return;
 

	
 
		_cmd_text = b;
 
		switch (WP(w,def_d).byte_1) {
 
@@ -662,7 +660,7 @@ static void PlayerCompanyWndProc(Window 
 
			break;
 
		#ifdef ENABLE_NETWORK
 
		case 2: /* Change company password */
 
			if (*b == 0) *b = '*'; // empty password is a '*' because of console argument
 
			if (*b == '\0') *b = '*'; // empty password is a '*' because of console argument
 
			NetworkChangeCompanyPassword(1, &b);
 
		#endif
 
		}
 
@@ -673,8 +671,8 @@ static void PlayerCompanyWndProc(Window 
 

	
 

	
 
static const WindowDesc _my_player_company_desc = {
 
	-1,-1, 360, 170,
 
	WC_COMPANY,0,
 
	-1, -1, 360, 170,
 
	WC_COMPANY, 0,
 
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
 
	_my_player_company_widgets,
 
	PlayerCompanyWndProc
rail_cmd.c
Show inline comments
 
@@ -983,12 +983,10 @@ typedef int32 DoConvertRailProc(TileInde
 

	
 
static int32 DoConvertRail(TileIndex tile, uint totype, bool exec)
 
{
 
	if (!CheckTileOwnership(tile) || !EnsureNoVehicle(tile))
 
		return CMD_ERROR;
 
	if (!CheckTileOwnership(tile) || !EnsureNoVehicle(tile)) return CMD_ERROR;
 

	
 
	// tile is already of requested type?
 
	if ( GetRailType(tile) == totype)
 
		return CMD_ERROR;
 
	if (GetRailType(tile) == totype) return CMD_ERROR;
 

	
 
	// change type.
 
	if (exec) {
 
@@ -1031,20 +1029,26 @@ int32 CmdConvertRail(int ex, int ey, uin
 
	for (x = sx; x <= ex; x += TILE_SIZE) {
 
		for (y = sy; y <= ey; y += TILE_SIZE) {
 
			TileIndex tile = TileVirtXY(x, y);
 
			DoConvertRailProc *proc;
 
			DoConvertRailProc* proc;
 

	
 
			if (IsTileType(tile, MP_RAILWAY)) proc = DoConvertRail;
 
			else if (IsTileType(tile, MP_STATION)) proc = DoConvertStationRail;
 
			else if (IsTileType(tile, MP_STREET)) proc = DoConvertStreetRail;
 
			else if (IsTileType(tile, MP_TUNNELBRIDGE)) proc = DoConvertTunnelBridgeRail;
 
			else continue;
 
			switch (GetTileType(tile)) {
 
				case MP_RAILWAY:      proc = DoConvertRail;             break;
 
				case MP_STATION:      proc = DoConvertStationRail;      break;
 
				case MP_STREET:       proc = DoConvertStreetRail;       break;
 
				case MP_TUNNELBRIDGE: proc = DoConvertTunnelBridgeRail; break;
 
				default: continue;
 
			}
 

	
 
			ret = proc(tile, p2, false);
 
			if (CmdFailed(ret)) continue;
 
			cost += ret;
 

	
 
			if (flags & DC_EXEC) {
 
				if ( (money -= ret) < 0) { _additional_cash_required = ret; return cost - ret; }
 
				money -= ret;
 
				if (money < 0) {
 
					_additional_cash_required = ret;
 
					return cost - ret;
 
				}
 
				proc(tile, p2, true);
 
			}
 
		}
 
@@ -1062,7 +1066,7 @@ static int32 RemoveTrainDepot(TileIndex 
 
		return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		int track = TrackdirToTrack(DiagdirToDiagTrackdir(GetDepotDirection(tile, TRANSPORT_RAIL)));
 
		Track track = TrackdirToTrack(DiagdirToDiagTrackdir(GetDepotDirection(tile, TRANSPORT_RAIL)));
 

	
 
		DoDeleteDepot(tile);
 
		SetSignalsOnBothDir(tile, track);
 
@@ -1349,15 +1353,13 @@ DetailedTrackProc * const _detailed_trac
 
};
 

	
 
static void DrawSpecialBuilding(uint32 image, uint32 offset,
 
                                TileInfo *ti,
 
                                const TileInfo* ti,
 
                                byte x, byte y, byte z,
 
                                byte xsize, byte ysize, byte zsize)
 
{
 
	if (image & PALETTE_MODIFIER_COLOR)
 
		image |= _drawtile_track_palette;
 
	if (image & PALETTE_MODIFIER_COLOR) image |= _drawtile_track_palette;
 
	image += offset;
 
	if (_display_opt & DO_TRANS_BUILDINGS) // show transparent depots
 
		MAKE_TRANSPARENT(image);
 
	if (_display_opt & DO_TRANS_BUILDINGS) MAKE_TRANSPARENT(image);
 
	AddSortableSpriteToDraw(image, ti->x + x, ti->y + y, xsize, ysize, zsize, ti->z + z);
 
}
 

	
 
@@ -1511,7 +1513,7 @@ static void DrawTile_Track(TileInfo *ti)
 
			 * complains about it. If not, we'll remove this check. (Matthijs). */
 
			 assert(0);
 

	
 
		if (ti->tileh != 0) { DrawFoundation(ti, ti->tileh); }
 
		if (ti->tileh != 0) DrawFoundation(ti, ti->tileh);
 

	
 
		if (IsRailWaypoint(m5) && HASBIT(_m[ti->tile].m3, 4)) {
 
			// look for customization
 
@@ -1558,10 +1560,11 @@ static void DrawTile_Track(TileInfo *ti)
 
		// (don't adjust for arctic depots, because snow in depots looks weird)
 
		// type >= 4 means waypoints
 
		if ((_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK) == RAIL_GROUND_ICE_DESERT && (_opt.landscape == LT_DESERT || type >= 4)) {
 
			if (image != SPR_FLAT_GRASS_TILE)
 
			if (image != SPR_FLAT_GRASS_TILE) {
 
				image += rti->snow_offset; // tile with tracks
 
			else
 
			} else {
 
				image = SPR_FLAT_SNOWY_TILE; // flat ground
 
			}
 
		}
 

	
 
		DrawGroundSprite(image);
 
@@ -1576,11 +1579,10 @@ static void DrawTile_Track(TileInfo *ti)
 
			if (pbs & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e | PALETTE_CRASH);
 
		}
 

	
 
		while ((image = drss->image) != 0) {
 
			DrawSpecialBuilding(image, type < 4 ? rti->total_offset : 0, ti,
 
		for (; drss->image != 0; drss++) {
 
			DrawSpecialBuilding(drss->image, type < 4 ? rti->total_offset : 0, ti,
 
			                    drss->subcoord_x, drss->subcoord_y, 0,
 
			                    drss->width, drss->height, 0x17);
 
			drss++;
 
		}
 
	}
 
}
 
@@ -1595,8 +1597,8 @@ void DrawTrainDepotSprite(int x, int y, 
 

	
 
	dtss = _track_depot_layout_table[image];
 

	
 
	x+=33;
 
	y+=17;
 
	x += 33;
 
	y += 17;
 

	
 
	img = dtss++->image;
 
	/* @note This is kind of an ugly hack, as the PALETTE_MODIFIER_COLOR indicates
 
@@ -1703,8 +1705,9 @@ static bool SetSignalsEnumProc(TileIndex
 
			}
 

	
 
			return true;
 
		} else if (IsTileDepotType(tile, TRANSPORT_RAIL))
 
		} else if (IsTileDepotType(tile, TRANSPORT_RAIL)) {
 
			return true; // don't look further if the tile is a depot
 
		}
 
	}
 
	return false;
 
}
 
@@ -1717,25 +1720,23 @@ typedef struct SignalVehicleCheckStruct 
 

	
 
static void *SignalVehicleCheckProc(Vehicle *v, void *data)
 
{
 
	SignalVehicleCheckStruct *dest = data;
 
	const SignalVehicleCheckStruct* dest = data;
 
	TileIndex tile;
 

	
 
	if (v->type != VEH_Train)
 
		return NULL;
 
	if (v->type != VEH_Train) return NULL;
 

	
 
	/* Find the tile outside the tunnel, for signalling */
 
	if (v->u.rail.track == 0x40)
 
	if (v->u.rail.track == 0x40) {
 
		tile = GetVehicleOutOfTunnelTile(v);
 
	else
 
	} else {
 
		tile = v->tile;
 
	}
 

	
 
	/* Wrong tile, or no train? Not a match */
 
	if (tile != dest->tile)
 
		return NULL;
 
	if (tile != dest->tile) return NULL;
 

	
 
	/* Are we on the same piece of track? */
 
	if (dest->track & (v->u.rail.track + (v->u.rail.track<<8)))
 
		return v;
 
	if (dest->track & (v->u.rail.track + (v->u.rail.track << 8))) return v;
 

	
 
	return NULL;
 
}
 
@@ -1752,7 +1753,7 @@ bool SignalVehicleCheck(TileIndex tile, 
 
	 * is some kind of invisible black hole, and there is some special magic going
 
	 * on in there. This 'workaround' can be removed once the maprewrite is done.
 
	 */
 
	if (GetTileType(tile) == MP_TUNNELBRIDGE && GB(_m[tile].m5, 4, 4) == 0) {
 
	if (IsTileType(tile, MP_TUNNELBRIDGE) && GB(_m[tile].m5, 4, 4) == 0) {
 
		// It is a tunnel we're checking, we need to do some special stuff
 
		// because VehicleFromPos will not find the vihicle otherwise
 
		byte direction = GB(_m[tile].m5, 0, 2);
 
@@ -1838,14 +1839,14 @@ static void ChangeSignalStates(SetSignal
 

	
 
	// convert the block to pbs, if needed
 
	if (_patches.auto_pbs_placement && !(ssd->stop) && (ssd->has_pbssignal == 0xE) && !ssd->has_presignal && (ssd->presignal_exits == 0)) // 0xE means at least 2 pbs signals, and at least 1 entry and 1 exit, see comments ssd->has_pbssignal
 
	for(i=0; i!=ssd->pbs_cur; i++) {
 
	for (i = 0; i != ssd->pbs_cur; i++) {
 
		TileIndex tile = ssd->pbs_tile[i];
 
		SB(_m[tile].m4, 0, 3, SIGTYPE_PBS);
 
		MarkTileDirtyByTile(tile);
 
	};
 

	
 
	// then mark the signals in the segment accordingly
 
	for(i=0; i!=ssd->cur; i++) {
 
	for (i = 0; i != ssd->cur; i++) {
 
		TileIndex tile = ssd->tile[i];
 
		byte bit = _signals_table[ssd->bit[i]];
 
		uint16 m2 = _m[tile].m2;
 
@@ -1900,7 +1901,7 @@ bool UpdateSignalsOnSegment(TileIndex ti
 
	int result = -1;
 

	
 
	ssd.cur_stack = 0;
 
	direction>>=1;
 
	direction >>= 1;
 

	
 
	for(;;) {
 
		// go through one segment and update all signals pointing into that segment.
 
@@ -2107,8 +2108,8 @@ static uint32 GetTileTrackStatus_Track(T
 
			 * direction), we pretend them to be green. (So if
 
			 * signals are only one way, the other way will
 
			 * implicitely become `red' */
 
			if ((a & 0xC0) == 0) { b |= 0xC0; }
 
			if ((a & 0x30) == 0) { b |= 0x30; }
 
			if ((a & 0xC0) == 0) b |= 0xC0;
 
			if ((a & 0x30) == 0) b |= 0x30;
 

	
 
			if ( (b & 0x80) == 0)	ret |= 0x10070000;
 
			if ( (b & 0x40) == 0)	ret |= 0x7100000;
road_cmd.c
Show inline comments
 
@@ -460,7 +460,7 @@ do_clear:;
 
	if (cost && (!_patches.build_on_slopes || _is_old_ai_player))
 
		return CMD_ERROR;
 

	
 
	if (!(ti.type == MP_STREET && (ti.map5 & 0xF0) == 0)) {
 
	if (ti.type != MP_STREET || (ti.map5 & 0xF0) != 0) {
 
		cost += DoCommandByTile(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 
	} else {
 
		// Don't put the pieces that already exist
 
@@ -483,7 +483,7 @@ do_clear:;
 
			SetTileOwner(tile, _current_player);
 
		}
 

	
 
		_m[tile].m5 |= (byte)pieces;
 
		_m[tile].m5 |= pieces;
 

	
 
		MarkTileDirtyByTile(tile);
 
	}
 
@@ -554,8 +554,9 @@ int32 CmdBuildLongRoad(int x, int y, uin
 
		ret = DoCommandByTile(tile, bits, 0, flags, CMD_BUILD_ROAD);
 
		if (CmdFailed(ret)) {
 
			if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
 
		} else
 
		} else {
 
			cost += ret;
 
		}
 

	
 
		if (tile == end_tile) break;
 

	
 
@@ -642,24 +643,21 @@ int32 CmdBuildRoadDepot(int x, int y, ui
 

	
 
	tile = ti.tile;
 

	
 
	if (!EnsureNoVehicle(tile))
 
		return CMD_ERROR;
 
	if (!EnsureNoVehicle(tile)) return CMD_ERROR;
 

	
 
	if ((ti.tileh != 0) && (
 
			!_patches.build_on_slopes ||
 
			IsSteepTileh(ti.tileh) ||
 
			!CanBuildDepotByTileh(p1, ti.tileh)
 
		)
 
	) {
 
			return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
 
	if (ti.tileh != 0 && (
 
				!_patches.build_on_slopes ||
 
				IsSteepTileh(ti.tileh) ||
 
				!CanBuildDepotByTileh(p1, ti.tileh)
 
			)) {
 
		return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
 
	}
 

	
 
	cost = DoCommandByTile(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 
	if (CmdFailed(cost)) return CMD_ERROR;
 

	
 
	dep = AllocateDepot();
 
	if (dep == NULL)
 
		return CMD_ERROR;
 
	if (dep == NULL) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		if (IsLocalPlayer()) _last_built_road_depot_tile = tile;
roadveh_cmd.c
Show inline comments
 
@@ -300,7 +300,7 @@ static Depot *FindClosestRoadDepot(Vehic
 
	TileIndex tile = v->tile;
 
	int i;
 

	
 
	if (v->u.road.state == 255) { tile = GetVehicleOutOfTunnelTile(v); }
 
	if (v->u.road.state == 255) tile = GetVehicleOutOfTunnelTile(v);
 

	
 
	if (_patches.new_pathfinding_all) {
 
		NPFFoundTargetData ftd;
 
@@ -1034,13 +1034,14 @@ static int RoadFindPathToDest(Vehicle *v
 
	}
 

	
 
	if (IsTileType(tile, MP_STREET)) {
 
		if (GB(_m[tile].m5, 4, 4) == 2 && IsTileOwner(tile, v->owner))
 
			/* Road crossing */
 
			bitmask |= _road_veh_fp_ax_or[_m[tile].m5&3];
 
		if (GB(_m[tile].m5, 4, 4) == 2 && IsTileOwner(tile, v->owner)) {
 
			/* Road depot */
 
			bitmask |= _road_veh_fp_ax_or[GB(_m[tile].m5, 0, 2)];
 
		}
 
	} else if (IsTileType(tile, MP_STATION)) {
 
		if (IsTileOwner(tile, OWNER_NONE) || IsTileOwner(tile, v->owner)) {
 
			/* Our station */
 
			Station *st = GetStation(_m[tile].m2);
 
			const Station* st = GetStation(_m[tile].m2);
 
			byte val = _m[tile].m5;
 
			if (v->cargo_type != CT_PASSENGERS) {
 
				if (IS_BYTE_INSIDE(val, 0x43, 0x47) && (_patches.roadveh_queue || st->truck_stops->status&3))
roadveh_gui.c
Show inline comments
 
@@ -973,7 +973,7 @@ static void PlayerRoadVehWndProc(Window 
 
		case 7: { /* Matrix to show vehicles */
 
			uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_SMALL;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 

	
 
			id_v += w->vscroll.pos;
 

	
settings_gui.c
Show inline comments
 
@@ -1219,7 +1219,7 @@ static void NewgrfWndProc(Window *w, Win
 
		case 3: { // select a grf file
 
			int y = (e->click.pt.y - NEWGRF_WND_PROC_OFFSET_TOP_WIDGET) / NEWGRF_WND_PROC_ROWSIZE;
 

	
 
			if (y >= w->vscroll.cap) { return;} // click out of bounds
 
			if (y >= w->vscroll.cap) return; // click out of bounds
 

	
 
			y += w->vscroll.pos;
 

	
ship_gui.c
Show inline comments
 
@@ -1077,7 +1077,7 @@ static void PlayerShipsWndProc(Window *w
 
		case 7: { /* Matrix to show vehicles */
 
			uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_BIG;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 

	
 
			id_v += w->vscroll.pos;
 

	
station_cmd.c
Show inline comments
 
@@ -72,7 +72,7 @@ const byte _airport_size_y[] = {3, 6, 1,
 
void ShowAircraftDepotWindow(TileIndex tile);
 
extern void UpdateAirplanesOnNewStation(Station *st);
 

	
 
static void MarkStationDirty(Station *st)
 
static void MarkStationDirty(const Station* st)
 
{
 
	if (st->sign.width_1 != 0) {
 
		InvalidateWindowWidget(WC_STATION_VIEW, st->index, 1);
 
@@ -121,16 +121,16 @@ RoadStop * GetRoadStopByTile(TileIndex t
 

	
 
uint GetNumRoadStops(const Station *st, RoadStopType type)
 
{
 
	int num = 0;
 
	uint num = 0;
 
	const RoadStop *rs;
 

	
 
	assert(st != NULL);
 
	for ( rs = GetPrimaryRoadStop(st, type); rs != NULL; num++, rs = rs->next);
 
	for (rs = GetPrimaryRoadStop(st, type); rs != NULL; rs = rs->next) num++;
 

	
 
	return num;
 
}
 

	
 
RoadStop *AllocateRoadStop( void )
 
RoadStop *AllocateRoadStop(void)
 
{
 
	RoadStop *rs;
 

	
 
@@ -138,7 +138,7 @@ RoadStop *AllocateRoadStop( void )
 
		if (!rs->used) {
 
			uint index = rs->index;
 

	
 
			memset(rs, 0, sizeof(RoadStop));
 
			memset(rs, 0, sizeof(*rs));
 
			rs->index = index;
 

	
 
			return rs;
 
@@ -211,15 +211,9 @@ TileIndex GetStationTileForVehicle(const
 
		case VEH_Ship:			return st->dock_tile;
 
		case VEH_Road:
 
			if (v->cargo_type == CT_PASSENGERS) {
 
				if (st->bus_stops != NULL)
 
					return st->bus_stops->xy;
 
				else
 
					return 0;
 
				return (st->bus_stops != NULL) ? st->bus_stops->xy : 0;
 
			} else {
 
				if (st->truck_stops != NULL)
 
					return st->truck_stops->xy;
 
				else
 
					return 0;
 
				return (st->truck_stops != NULL) ? st->truck_stops->xy : 0;
 
			}
 
		default:
 
			assert(false);
 
@@ -249,7 +243,7 @@ static bool CheckStationSpreadOut(Statio
 
		}
 
	}
 

	
 
	if (y2-y1 >= _patches.station_spread || x2-x1 >= _patches.station_spread) {
 
	if (y2 - y1 >= _patches.station_spread || x2 - x1 >= _patches.station_spread) {
 
		_error_message = STR_306C_STATION_TOO_SPREAD_OUT;
 
		return false;
 
	}
 
@@ -519,8 +513,8 @@ static uint GetAcceptanceMask(const Stat
 
static void ShowRejectOrAcceptNews(const Station *st, uint32 items, StringID msg)
 
{
 
	if (items) {
 
		SetDParam(2, items >> 16);
 
		SetDParam(1, items & 0xFFFF);
 
		SetDParam(2, GB(items, 16, 16));
 
		SetDParam(1, GB(items,  0, 16));
 
		SetDParam(0, st->index);
 
		AddNewsItem(msg + ((items >> 16)?1:0), NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_TILE, NT_ACCEPTANCE, 0), st->xy, 0);
 
	}
 
@@ -1645,8 +1639,8 @@ static const byte _airport_map5_tiles_co
 

	
 
// City Airport (large)
 
static const byte _airport_map5_tiles_town[] = {
 
	31, 9, 33, 9, 9, 32,
 
	27, 36, 29, 34, 8, 10,
 
	31,  9, 33,  9,  9, 32,
 
	27, 36, 29, 34,  8, 10,
 
	30, 11, 35, 13, 20, 21,
 
	51, 12, 14, 17, 19, 28,
 
	38, 13, 15, 16, 18, 39,
 
@@ -1655,23 +1649,23 @@ static const byte _airport_map5_tiles_to
 

	
 
// Metropolitain Airport (large) - 2 runways
 
static const byte _airport_map5_tiles_metropolitan[] = {
 
	31, 9, 33, 9, 9, 32,
 
	27, 36, 29, 34, 8, 10,
 
	30, 11, 35, 13, 20, 21,
 
 102,  8,  8,  8,  8, 28,
 
	83, 84, 84, 84, 84, 83,
 
	26, 23, 23, 23, 23, 26
 
	 31,  9, 33,  9,  9, 32,
 
	 27, 36, 29, 34,  8, 10,
 
	 30, 11, 35, 13, 20, 21,
 
	102,  8,  8,  8,  8, 28,
 
	 83, 84, 84, 84, 84, 83,
 
	 26, 23, 23, 23, 23, 26
 
};
 

	
 
// International Airport (large) - 2 runways
 
static const byte _airport_map5_tiles_international[] = {
 
  88, 89, 89, 89, 89, 89, 88,
 
 	51,  8,  8,  8,  8,  8, 32,
 
	30,  8, 11, 27, 11,  8, 10,
 
  88, 89, 89, 89, 89, 89,  88,
 
 	51,  8,  8,  8,  8,  8,  32,
 
	30,  8, 11, 27, 11,  8,  10,
 
	32,  8, 11, 27, 11,  8, 114,
 
	87,  8, 11, 85, 11,  8, 114,
 
	87,  8,  8,  8,  8,  8, 90,
 
	26, 23, 23, 23, 23, 23, 26
 
	87,  8,  8,  8,  8,  8,  90,
 
	26, 23, 23, 23, 23, 23,  26
 
};
 

	
 
// Heliport
 
@@ -1795,16 +1789,17 @@ int32 CmdBuildAirport(int x, int y, uint
 
				1. airport is upgraded
 
				2. airport is added to existing station (unfortunately unavoideable)
 
		*/
 
		if (airport_upgrade) {UpdateAirplanesOnNewStation(st);}
 
		if (airport_upgrade) UpdateAirplanesOnNewStation(st);
 

	
 
		{
 
			const byte *b = _airport_map5_tiles[p1];
 
BEGIN_TILE_LOOP(tile_cur,w,h,tile)
 

	
 
			BEGIN_TILE_LOOP(tile_cur,w,h,tile) {
 
				ModifyTile(tile_cur,
 
					MP_SETTYPE(MP_STATION) | MP_MAPOWNER_CURRENT |
 
					MP_MAP2 | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR | MP_MAP5,
 
					st->index, *b++);
 
END_TILE_LOOP(tile_cur,w,h,tile)
 
			} END_TILE_LOOP(tile_cur,w,h,tile)
 
		}
 

	
 
		UpdateStationVirtCoordDirty(st);
 
@@ -2227,10 +2222,7 @@ void StationPickerDrawSprite(int x, int 
 

	
 
static uint GetSlopeZ_Station(const TileInfo* ti)
 
{
 
	uint z = ti->z;
 
	if (ti->tileh != 0)
 
		z += 8;
 
	return z;
 
	return (ti->tileh != 0) ? ti->z + 8 : ti->z;
 
}
 

	
 
static uint GetSlopeTileh_Station(const TileInfo *ti)
 
@@ -2682,14 +2674,15 @@ void StationMonthlyLoop(void)
 
void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint radius)
 
{
 
	Station *st;
 
	GoodsEntry *ge;
 
	int i;
 

	
 
	FOR_ALL_STATIONS(st) {
 
		if (st->xy != 0 && st->owner == owner &&
 
				DistanceManhattan(tile, st->xy) <= radius) {
 
			ge = st->goods;
 
			for(i=0; i!=NUM_CARGO; i++,ge++) {
 
			uint i;
 

	
 
			for (i = 0; i != NUM_CARGO; i++) {
 
				GoodsEntry* ge = &st->goods[i];
 

	
 
				if (ge->enroute_from != INVALID_STATION) {
 
					ge->rating = clamp(ge->rating + amount, 0, 255);
 
				}
 
@@ -3191,7 +3184,7 @@ static void Load_STNS(void)
 
		_station_tick_ctr = 0;
 
}
 

	
 
static void Save_ROADSTOP( void )
 
static void Save_ROADSTOP(void)
 
{
 
	RoadStop *rs;
 

	
 
@@ -3203,7 +3196,7 @@ static void Save_ROADSTOP( void )
 
	}
 
}
 

	
 
static void Load_ROADSTOP( void )
 
static void Load_ROADSTOP(void)
 
{
 
	int index;
 

	
station_gui.c
Show inline comments
 
@@ -264,7 +264,7 @@ void ShowPlayerStations(PlayerID player)
 
	Window *w;
 

	
 
	w = AllocateWindowDescFront(&_player_stations_desc, player);
 
	if (w) {
 
	if (w != NULL) {
 
		w->caption_color = (byte)w->window_number;
 
		w->vscroll.cap = 12;
 
		w->resize.step_height = 10;
 
@@ -500,13 +500,13 @@ static void StationViewWndProc(Window *w
 
		}
 
		break;
 

	
 
	case WE_ON_EDIT_TEXT: {
 
	case WE_ON_EDIT_TEXT:
 
		if (e->edittext.str[0] != '\0') {
 
			_cmd_text = e->edittext.str;
 
			DoCommandP(0, w->window_number, 0, NULL,
 
				CMD_RENAME_STATION | CMD_MSG(STR_3031_CAN_T_RENAME_STATION));
 
		}
 
	} break;
 
		break;
 

	
 
	case WE_DESTROY: {
 
		WindowNumber wno =
 
@@ -535,7 +535,7 @@ void ShowStationViewWindow(StationID sta
 
	Window *w;
 

	
 
	w = AllocateWindowDescFront(&_station_view_desc, station);
 
	if (w) {
 
	if (w != NULL) {
 
		PlayerID owner = GetStation(w->window_number)->owner;
 
		if (owner != OWNER_NONE) w->caption_color = owner;
 
		w->vscroll.cap = 5;
texteff.c
Show inline comments
 
@@ -261,7 +261,7 @@ static void MoveTextEffect(TextEffect *t
 
	if (te->duration < 8) {
 
		te->string_id = INVALID_STRING_ID;
 
	} else {
 
		te->duration-=8;
 
		te->duration -= 8;
 
		te->y--;
 
		te->bottom--;
 
	}
 
@@ -272,9 +272,8 @@ void MoveAllTextEffects(void)
 
{
 
	TextEffect *te;
 

	
 
	for (te = _text_effect_list; te != endof(_text_effect_list); te++ ) {
 
		if (te->string_id != INVALID_STRING_ID)
 
			MoveTextEffect(te);
 
	for (te = _text_effect_list; te != endof(_text_effect_list); te++) {
 
		if (te->string_id != INVALID_STRING_ID) MoveTextEffect(te);
 
	}
 
}
 

	
 
@@ -282,7 +281,7 @@ void InitTextEffects(void)
 
{
 
	TextEffect *te;
 

	
 
	for (te = _text_effect_list; te != endof(_text_effect_list); te++ ) {
 
	for (te = _text_effect_list; te != endof(_text_effect_list); te++) {
 
		te->string_id = INVALID_STRING_ID;
 
	}
 
}
 
@@ -292,7 +291,7 @@ void DrawTextEffects(DrawPixelInfo *dpi)
 
	TextEffect *te;
 

	
 
	if (dpi->zoom < 1) {
 
		for (te = _text_effect_list; te != endof(_text_effect_list); te++ ) {
 
		for (te = _text_effect_list; te != endof(_text_effect_list); te++) {
 
			if (te->string_id == INVALID_STRING_ID)
 
				continue;
 

	
 
@@ -305,7 +304,7 @@ void DrawTextEffects(DrawPixelInfo *dpi)
 
			AddStringToDraw(te->x, te->y, te->string_id, te->params_1, te->params_2, 0);
 
		}
 
	} else if (dpi->zoom == 1) {
 
		for (te = _text_effect_list; te != endof(_text_effect_list); te++ ) {
 
		for (te = _text_effect_list; te != endof(_text_effect_list); te++) {
 
			if (te->string_id == INVALID_STRING_ID)
 
				continue;
 

	
 
@@ -323,12 +322,12 @@ void DrawTextEffects(DrawPixelInfo *dpi)
 

	
 
void DeleteAnimatedTile(TileIndex tile)
 
{
 
	TileIndex *ti;
 
	TileIndex* ti;
 

	
 
	for(ti=_animated_tile_list; ti!=endof(_animated_tile_list); ti++) {
 
	for (ti = _animated_tile_list; ti != endof(_animated_tile_list); ti++) {
 
		if (tile == *ti) {
 
			/* remove the hole */
 
			memmove(ti, ti+1, endof(_animated_tile_list) - 1 - ti);
 
			memmove(ti, ti + 1, endof(_animated_tile_list) - 1 - ti);
 
			/* and clear last item */
 
			endof(_animated_tile_list)[-1] = 0;
 
			MarkTileDirtyByTile(tile);
 
@@ -339,9 +338,9 @@ void DeleteAnimatedTile(TileIndex tile)
 

	
 
bool AddAnimatedTile(TileIndex tile)
 
{
 
	TileIndex *ti;
 
	TileIndex* ti;
 

	
 
	for(ti=_animated_tile_list; ti!=endof(_animated_tile_list); ti++) {
 
	for (ti = _animated_tile_list; ti != endof(_animated_tile_list); ti++) {
 
		if (tile == *ti || *ti == 0) {
 
			*ti = tile;
 
			MarkTileDirtyByTile(tile);
 
@@ -354,11 +353,10 @@ bool AddAnimatedTile(TileIndex tile)
 

	
 
void AnimateAnimatedTiles(void)
 
{
 
	TileIndex *ti;
 
	TileIndex tile;
 
	const TileIndex* ti;
 

	
 
	for(ti=_animated_tile_list; ti!=endof(_animated_tile_list) && (tile=*ti) != 0; ti++) {
 
		AnimateTile(tile);
 
	for (ti = _animated_tile_list; ti != endof(_animated_tile_list) && *ti != 0; ti++) {
 
		AnimateTile(*ti);
 
	}
 
}
 

	
 
@@ -371,8 +369,9 @@ static void SaveLoad_ANIT(void)
 
{
 
	if (_sl_version < 6) {
 
		SlArray(_animated_tile_list, lengthof(_animated_tile_list), SLE_FILE_U16 | SLE_VAR_U32);
 
	} else
 
	} else {
 
		SlArray(_animated_tile_list, lengthof(_animated_tile_list), SLE_UINT32);
 
	}
 
}
 

	
 

	
tile.c
Show inline comments
 
@@ -41,10 +41,10 @@ uint GetTileSlope(TileIndex tile, uint *
 
	if (min >= d) min = d;
 

	
 
	r = 0;
 
	if ((a -= min) != 0) { r += (--a << 4) + 8; }
 
	if ((c -= min) != 0) { r += (--c << 4) + 4; }
 
	if ((d -= min) != 0) { r += (--d << 4) + 2; }
 
	if ((b -= min) != 0) { r += (--b << 4) + 1; }
 
	if ((a -= min) != 0) r += (--a << 4) + 8;
 
	if ((c -= min) != 0) r += (--c << 4) + 4;
 
	if ((d -= min) != 0) r += (--d << 4) + 2;
 
	if ((b -= min) != 0) r += (--b << 4) + 1;
 

	
 
	if (h != NULL)
 
		*h = min * 8;
town_cmd.c
Show inline comments
 
@@ -1657,9 +1657,7 @@ static void TownActionBuyRights(Town *t,
 
static void TownActionBribe(Town *t, int action)
 
{
 
	if (!RandomRange(15)) {
 
		GoodsEntry *ge;
 
		Station *st;
 
		int i, rating;
 

	
 
		// set as unwanted for 6 months
 
		t->unwanted[_current_player] = 6;
 
@@ -1667,8 +1665,9 @@ static void TownActionBribe(Town *t, int
 
		// set all close by station ratings to 0
 
		FOR_ALL_STATIONS(st) {
 
			if (st->town == t && st->owner == _current_player) {
 
				for (i=0, ge = st->goods; i != NUM_CARGO; i++, ge++)
 
					ge->rating = 0;
 
				uint i;
 

	
 
				for (i = 0; i != NUM_CARGO; i++) st->goods[i].rating = 0;
 
			}
 
		}
 

	
 
@@ -1680,9 +1679,9 @@ static void TownActionBribe(Town *t, int
 
		 *	ChangeTownRating is only for stuff in demolishing. Bribe failure should
 
		 *	be independent of any cheat settings
 
		 */
 
		rating = t->ratings[_current_player];
 
		if (rating > -50)
 
		if (t->ratings[_current_player] > RATING_BRIBE_DOWN_TO) {
 
			t->ratings[_current_player] = RATING_BRIBE_DOWN_TO;
 
		}
 
	} else {
 
		ChangeTownRating(t, RATING_BRIBE_UP_STEP, RATING_BRIBE_MAXIMUM);
 
	}
town_gui.c
Show inline comments
 
@@ -455,7 +455,7 @@ static void TownDirectoryWndProc(Window 
 

	
 
				y += 10;
 
				i++;
 
				if (++n == w->vscroll.cap) { break;} // max number of towns in 1 window
 
				if (++n == w->vscroll.cap) break; // max number of towns in 1 window
 
			}
 
			SetDParam(0, GetWorldPopulation());
 
			DrawString(3, w->height - 12 + 2, STR_TOWN_POPULATION, 0);
 
@@ -479,11 +479,11 @@ static void TownDirectoryWndProc(Window 
 
		case 5: { /* Click on Town Matrix */
 
			uint16 id_v = (e->click.pt.y - 28) / 10;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 

	
 
			id_v += w->vscroll.pos;
 

	
 
			if (id_v >= _num_town_sort) { return;} // click out of town bounds
 
			if (id_v >= _num_town_sort) return; // click out of town bounds
 

	
 
			{
 
				Town *t = GetTown(_town_sort[id_v]);
train_cmd.c
Show inline comments
 
@@ -1080,14 +1080,17 @@ int32 CmdSellRailWagon(int x, int y, uin
 
				tmp = v->next;
 

	
 
				if (RailVehInfo(v->engine_type)->flags & RVI_MULTIHEAD) {
 
					/* Always delete newly encountered front-engines */
 
					if (IS_FIRSTHEAD_SPRITE(v->spritenum)) {
 
						/* Always delete newly encountered front-engines */
 
						enf_count--;
 
					/* If we have more rear engines than front engines, then that means
 
					* that this rear-engine does not belong to any front-engine; delete */
 
					} else if (enr_count > enf_count) { enr_count--;}
 
					/* Otherwise leave it alone */
 
					else continue;
 
					} else if (enr_count > enf_count) {
 
						/* More rear engines than front engines means this rear-engine does
 
						 * not belong to any front-engine; delete */
 
						enr_count--;
 
					} else {
 
						/* Otherwise leave it alone */
 
						continue;
 
					}
 
				}
 

	
 
				cost -= v->value;
 
@@ -1180,8 +1183,8 @@ static void ReverseTrainSwapVeh(Vehicle 
 
	Vehicle *a, *b;
 

	
 
	/* locate vehicles to swap */
 
	for(a=v; l!=0; l--) { a = a->next; }
 
	for(b=v; r!=0; r--) { b = b->next; }
 
	for (a = v; l != 0; l--) a = a->next;
 
	for (b = v; r != 0; r--) b = b->next;
 

	
 
	if (a != b) {
 
		/* swap the hidden bits */
 
@@ -1586,7 +1589,7 @@ static TrainFindDepotData FindClosestTra
 
		return tfdd;
 
	}
 

	
 
	if (v->u.rail.track == 0x40) { tile = GetVehicleOutOfTunnelTile(v); }
 
	if (v->u.rail.track == 0x40) tile = GetVehicleOutOfTunnelTile(v);
 

	
 
	if (_patches.new_pathfinding_all) {
 
		NPFFoundTargetData ftd;
 
@@ -1756,7 +1759,7 @@ static void HandleLocomotiveSmokeCloud(V
 

	
 
}
 

	
 
static void TrainPlayLeaveStationSound(Vehicle *v)
 
static void TrainPlayLeaveStationSound(const Vehicle* v)
 
{
 
	static const SoundFx sfx[] = {
 
		SND_04_TRAIN,
 
@@ -2157,8 +2160,10 @@ static bool ProcessTrainOrder(Vehicle *v
 
	}
 

	
 
	// check if we've reached a non-stop station while TTDPatch nonstop is enabled..
 
	if (_patches.new_nonstop && v->current_order.flags & OF_NON_STOP &&
 
		v->current_order.station == _m[v->tile].m2 && IsTileType(v->tile, MP_STATION) ) {
 
	if (_patches.new_nonstop &&
 
			v->current_order.flags & OF_NON_STOP &&
 
			IsTileType(v->tile, MP_STATION) &&
 
			v->current_order.station == _m[v->tile].m2) {
 
		v->cur_order_index++;
 
	}
 

	
 
@@ -2456,9 +2461,10 @@ static bool CheckCompatibleRail(const Ve
 
	}
 

	
 
	return
 
		IsTileOwner(tile, v->owner) &&
 
		(v->subtype != TS_Front_Engine ||
 
		IsCompatibleRail(v->u.rail.railtype, GetRailType(tile)));
 
		IsTileOwner(tile, v->owner) && (
 
			v->subtype != TS_Front_Engine ||
 
			IsCompatibleRail(v->u.rail.railtype, GetRailType(tile))
 
		);
 
}
 

	
 
typedef struct {
 
@@ -2559,9 +2565,9 @@ static void SetVehicleCrashed(Vehicle *v
 
	InvalidateWindowWidget(WC_VEHICLE_VIEW, u->index, STATUS_BAR);
 
}
 

	
 
static int CountPassengersInTrain(const Vehicle *v)
 
static uint CountPassengersInTrain(const Vehicle* v)
 
{
 
	int num = 0;
 
	uint num = 0;
 
	BEGIN_ENUM_WAGONS(v)
 
		if (v->cargo_type == CT_PASSENGERS) num += v->cargo_count;
 
	END_ENUM_WAGONS(v)
 
@@ -3046,8 +3052,7 @@ static void HandleBrokenTrain(Vehicle *v
 

	
 
		if (!(v->vehstatus & VS_HIDDEN)) {
 
			Vehicle *u = CreateEffectVehicleRel(v, 4, 4, 5, EV_BREAKDOWN_SMOKE);
 
			if (u)
 
				u->u.special.unk0 = v->breakdown_delay * 2;
 
			if (u != NULL) u->u.special.unk0 = v->breakdown_delay * 2;
 
		}
 
	}
 

	
train_gui.c
Show inline comments
 
@@ -1461,7 +1461,7 @@ static void PlayerTrainsWndProc(Window *
 
		case 7: { /* Matrix to show vehicles */
 
			uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_SMALL;
 

	
 
			if (id_v >= w->vscroll.cap) { return;} // click out of bounds
 
			if (id_v >= w->vscroll.cap) return; // click out of bounds
 

	
 
			id_v += w->vscroll.pos;
 

	
vehicle.c
Show inline comments
 
@@ -1496,8 +1496,7 @@ int32 ReplaceVehicle(Vehicle *v)
 

	
 
		/* Update limits of the vehicle (for when upgraded) */
 
		switch (v->type) {
 
			case VEH_Train:
 
				{
 
			case VEH_Train: {
 
				const RailVehicleInfo *rvi = RailVehInfo(new_engine_type);
 
				const RailVehicleInfo *rvi2 = RailVehInfo(old_engine_type);
 
				byte capacity = rvi2->capacity;
 
@@ -1507,10 +1506,10 @@ int32 ReplaceVehicle(Vehicle *v)
 
				/* rvi->image_index is the new sprite for the engine. Adding +1 makes the engine head the other way
 
				if it is a multiheaded engine (rear engine)
 
				(rvi->flags & RVI_MULTIHEAD && sprite - rvi2->image_index) is true if the engine is heading the other way, otherwise 0*/
 
				v->spritenum = rvi->image_index + (( rvi->flags & RVI_MULTIHEAD && sprite - rvi2->image_index) ? 1 : 0);
 
				v->spritenum = rvi->image_index + ((rvi->flags & RVI_MULTIHEAD && sprite - rvi2->image_index) ? 1 : 0);
 

	
 
				// turn the last engine in a multiheaded train if needed
 
				if ( v->next == NULL && v->u.rail.first_engine != INVALID_VEHICLE && rvi->flags & RVI_MULTIHEAD && v->spritenum == rvi->image_index )
 
				if (v->next == NULL && v->u.rail.first_engine != INVALID_VEHICLE && rvi->flags & RVI_MULTIHEAD && v->spritenum == rvi->image_index)
 
					v->spritenum++;
 

	
 
				v->cargo_type = rvi->cargo_type;
 
@@ -1561,9 +1560,9 @@ int32 ReplaceVehicle(Vehicle *v)
 
				InvalidateWindowClasses(WC_TRAINS_LIST);
 
				UpdateTrainAcceleration(first);
 
				break;
 
				}
 
			case VEH_Road:
 
				{
 
			}
 

	
 
			case VEH_Road: {
 
				const RoadVehicleInfo *rvi = RoadVehInfo(new_engine_type);
 

	
 
				v->spritenum = rvi->image_index;
 
@@ -1572,9 +1571,9 @@ int32 ReplaceVehicle(Vehicle *v)
 
				v->max_speed = rvi->max_speed;
 
				InvalidateWindowClasses(WC_ROADVEH_LIST);
 
				break;
 
				}
 
			case VEH_Ship:
 
				{
 
			}
 

	
 
			case VEH_Ship: {
 
				const ShipVehicleInfo *svi = ShipVehInfo(new_engine_type);
 

	
 
				v->spritenum = svi->image_index;
 
@@ -1588,9 +1587,9 @@ int32 ReplaceVehicle(Vehicle *v)
 
					CmdRefitShip(v->x_pos, v->y_pos, DC_EXEC, v->index , cargo_type + 0x0100 );
 
				InvalidateWindowClasses(WC_SHIPS_LIST);
 
				break;
 
				}
 
			case VEH_Aircraft:
 
				{
 
			}
 

	
 
			case VEH_Aircraft: {
 
				const AircraftVehicleInfo *avi = AircraftVehInfo(new_engine_type);
 
				Vehicle *u;
 

	
 
@@ -1609,7 +1608,8 @@ int32 ReplaceVehicle(Vehicle *v)
 
					}
 
				InvalidateWindowClasses(WC_AIRCRAFT_LIST);
 
				break;
 
				}
 
			}
 

	
 
			default: return CMD_ERROR;
 
		}
 
		// makes sure that the cargo is still valid compared to new capacity
 
@@ -2231,7 +2231,7 @@ static void Load_VEHS(void)
 
		v = GetVehicle(index);
 
		SlObject(v, _veh_descs[SlReadByte()]);
 

	
 
		/* Old savegames used 'last_station_visited = 0xFF', should be 0xFFFF */
 
		/* Old savegames used 'last_station_visited = 0xFF' */
 
		if (_sl_version < 5 && v->last_station_visited == 0xFF)
 
			v->last_station_visited = INVALID_STATION;
 

	
vehicle_gui.c
Show inline comments
 
@@ -145,13 +145,13 @@ void BuildVehicleList(vehiclelist_d* vl,
 
		}
 
	}
 

	
 
	vl->sort_list = realloc(vl->sort_list, n * sizeof(vl->sort_list[0]));
 
	if (n!=0 && vl->sort_list == NULL)
 
	free(vl->sort_list);
 
	vl->sort_list = malloc(n * sizeof(vl->sort_list[0]));
 
	if (n != 0 && vl->sort_list == NULL)
 
		error("Could not allocate memory for the vehicle-sorting-list");
 
	vl->list_length = n;
 

	
 
	for (i = 0; i < n; ++i)
 
		vl->sort_list[i] = _vehicle_sort[i];
 
	for (i = 0; i < n; ++i) vl->sort_list[i] = _vehicle_sort[i];
 

	
 
	vl->flags &= ~VL_REBUILD;
 
	vl->flags |= VL_RESORT;
 
@@ -340,26 +340,22 @@ static int CDECL VehicleProfitLastYearSo
 

	
 
static int CDECL VehicleCargoSorter(const void *a, const void *b)
 
{
 
	const Vehicle *va = GetVehicle((*(const SortStruct*)a).index);
 
	const Vehicle *vb = GetVehicle((*(const SortStruct*)b).index);
 
	const Vehicle *v;
 
	const Vehicle* va = GetVehicle(((const SortStruct*)a)->index);
 
	const Vehicle* vb = GetVehicle(((const SortStruct*)b)->index);
 
	const Vehicle* v;
 
	AcceptedCargo cargoa;
 
	AcceptedCargo cargob;
 
	int r = 0;
 
	int i;
 
	uint _cargo_counta[NUM_CARGO];
 
	uint _cargo_countb[NUM_CARGO];
 
	memset(_cargo_counta, 0, sizeof(_cargo_counta));
 
	memset(_cargo_countb, 0, sizeof(_cargo_countb));
 

	
 
	for (v = va; v != NULL; v = v->next)
 
		_cargo_counta[v->cargo_type] += v->cargo_cap;
 

	
 
	for (v = vb; v != NULL; v = v->next)
 
		_cargo_countb[v->cargo_type] += v->cargo_cap;
 
	memset(cargoa, 0, sizeof(cargoa));
 
	memset(cargob, 0, sizeof(cargob));
 
	for (v = va; v != NULL; v = v->next) cargoa[v->cargo_type] += v->cargo_cap;
 
	for (v = vb; v != NULL; v = v->next) cargob[v->cargo_type] += v->cargo_cap;
 

	
 
	for (i = 0; i < NUM_CARGO; i++) {
 
		r = _cargo_counta[i] - _cargo_countb[i];
 
		if (r != 0)
 
			break;
 
		r = cargoa[i] - cargob[i];
 
		if (r != 0) break;
 
	}
 

	
 
	VEHICLEUNITNUMBERSORTER(r, va, vb);
 
@@ -1058,7 +1054,7 @@ void ShowReplaceVehicleWindow(byte vehic
 
{
 
	Window *w;
 

	
 
	DeleteWindowById(WC_REPLACE_VEHICLE, vehicletype );
 
	DeleteWindowById(WC_REPLACE_VEHICLE, vehicletype);
 

	
 
	switch (vehicletype) {
 
		case VEH_Train:
 
@@ -1071,7 +1067,8 @@ void ShowReplaceVehicleWindow(byte vehic
 
			w->vscroll.cap  = 8;
 
			w->resize.step_height = 14;
 
			break;
 
		case VEH_Ship: case VEH_Aircraft:
 
		case VEH_Ship:
 
		case VEH_Aircraft:
 
			w = AllocateWindowDescFront(&_replace_ship_aircraft_vehicle_desc, vehicletype);
 
			w->vscroll.cap  = 4;
 
			w->resize.step_height = 24;
water_cmd.c
Show inline comments
 
@@ -324,14 +324,15 @@ static int32 ClearTile_Water(TileIndex t
 
		return RemoveShiplift(tile + ToTileIndexDiff(_shiplift_tomiddle_offs[m5 & 0xF]), flags);
 
	} else {
 
		// ship depot
 
		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 (m5 == 0x80 || m5 == 0x82) {}
 
		else if (m5 == 0x81) { tile -= TileDiffXY(1, 0); }
 
		else if (m5 == 0x83) { tile -= TileDiffXY(0, 1); }
 
		else
 
			return CMD_ERROR;
 
		switch (m5) {
 
			case 0x80: break;
 
			case 0x81: tile -= TileDiffXY(1, 0); break;
 
			case 0x82: break;
 
			case 0x83: tile -= TileDiffXY(0, 1); break;
 
			default:   return CMD_ERROR;
 
		}
 

	
 
		return RemoveShipDepot(tile,flags);
 
	}
 
@@ -580,7 +581,6 @@ static void TileLoopWaterHelper(TileInde
 

	
 
static void FloodVehicle(Vehicle *v)
 
{
 
	Vehicle *u;
 
	if (!(v->vehstatus & VS_CRASHED)) {
 
		uint16 pass = 0;
 

	
 
@@ -592,9 +592,9 @@ static void FloodVehicle(Vehicle *v)
 
			v->vehstatus |= VS_CRASHED;
 
			v->u.road.crashed_ctr = 2000;	// max 2220, disappear pretty fast
 
			RebuildVehicleLists();
 
		}
 
		} else if (v->type == VEH_Train) {
 
			Vehicle* u;
 

	
 
		else if (v->type == VEH_Train) {
 
			v = GetFirstVehicleInChain(v);
 
			u = v;
 
			if (v->subtype == TS_Front_Engine) pass = 4; // driver
 
@@ -608,8 +608,9 @@ static void FloodVehicle(Vehicle *v)
 
			v = u;
 
			v->u.rail.crash_anim_pos = 4000; // max 4440, disappear pretty fast
 
			RebuildVehicleLists();
 
		} else
 
		} else {
 
			return;
 
		}
 

	
 
		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
 
		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 
@@ -619,8 +620,8 @@ static void FloodVehicle(Vehicle *v)
 
			NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
 
			v->index,
 
			0);
 
	CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE); // show cool destruction effects
 
	SndPlayVehicleFx(SND_12_EXPLOSION, v); // create sound
 
		CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE);
 
		SndPlayVehicleFx(SND_12_EXPLOSION, v);
 
	}
 
}
 

	
window.c
Show inline comments
 
@@ -214,11 +214,9 @@ void CallWindowEventNP(Window *w, int ev
 
	w->wndproc(w, &e);
 
}
 

	
 
void SetWindowDirty(Window *w)
 
void SetWindowDirty(const Window* w)
 
{
 
	if (w == NULL)
 
		return;
 

	
 
	if (w == NULL) return;
 
	SetDirtyBlocks(w->left, w->top, w->left + w->width, w->top + w->height);
 
}
 

	
 
@@ -1402,10 +1400,16 @@ static void MouseLoop(int click, int mou
 
				y -= vp->top;
 
				//here allows scrolling in both x and y axis
 
#define scrollspeed 3
 
				if (x-15<0) { WP(w,vp_d).scrollpos_x += (x-15) * scrollspeed << vp->zoom; }
 
				else if (15-(vp->width-x) > 0) { WP(w,vp_d).scrollpos_x += (15-(vp->width-x))*scrollspeed << vp->zoom; }
 
				if (y-15<0) { WP(w,vp_d).scrollpos_y += (y-15)*scrollspeed << vp->zoom; }
 
				else if (15-(vp->height-y) > 0) { WP(w,vp_d).scrollpos_y += (15-(vp->height-y))*scrollspeed << vp->zoom; }
 
				if (x - 15 < 0) {
 
					WP(w, vp_d).scrollpos_x += (x - 15) * scrollspeed << vp->zoom;
 
				} else if (15 - (vp->width - x) > 0) {
 
					WP(w, vp_d).scrollpos_x += (15 - (vp->width - x)) * scrollspeed << vp->zoom;
 
				}
 
				if (y - 15 < 0) {
 
					WP(w, vp_d).scrollpos_y += (y - 15) * scrollspeed << vp->zoom;
 
				} else if (15 - (vp->height - y) > 0) {
 
					WP(w,vp_d).scrollpos_y += (15 - (vp->height - y)) * scrollspeed << vp->zoom;
 
				}
 
#undef scrollspeed
 
			}
 
		}
 
@@ -1434,8 +1438,9 @@ static void MouseLoop(int click, int mou
 
					_cursor.sprite != SPR_CURSOR_QUERY &&
 
					_cursor.sprite != SPR_CURSOR_SIGN &&
 
					_pause != 0 &&
 
					!_cheats.build_in_pause.value)
 
						return;
 
					!_cheats.build_in_pause.value) {
 
				return;
 
			}
 

	
 
			if (_thd.place_mode == 0) {
 
				HandleViewportClicked(vp, x, y);
window.h
Show inline comments
 
@@ -553,7 +553,7 @@ void DispatchMouseWheelEvent(Window *w, 
 
void DrawOverlappedWindow(Window *w, int left, int top, int right, int bottom);
 
void CallWindowEventNP(Window *w, int event);
 
void CallWindowTickEvent(void);
 
void SetWindowDirty(Window *w);
 
void SetWindowDirty(const Window* w);
 
void SendWindowMessageW(Window *w, uint msg, uint wparam, uint lparam);
 
void SendWindowMessage(WindowClass wnd_class, WindowNumber wnd_num, uint msg, uint wparam, uint lparam);
 

	
0 comments (0 inline, 0 general)