src/station_cmd.cpp
changeset 5721 fa4e587f59f5
parent 5718 ce37296bb03c
child 5833 a0abc408c0bb
equal deleted inserted replaced
5720:33faabcca1dd 5721:fa4e587f59f5
   998 		//  (a bit strange function name for it, but it really does clear the land, when DC_EXEC is in flags)
   998 		//  (a bit strange function name for it, but it really does clear the land, when DC_EXEC is in flags)
   999 		ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags, 5 << axis, _patches.nonuniform_stations ? &est : NULL);
   999 		ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags, 5 << axis, _patches.nonuniform_stations ? &est : NULL);
  1000 		if (CmdFailed(ret)) return ret;
  1000 		if (CmdFailed(ret)) return ret;
  1001 
  1001 
  1002 		st->train_tile = finalvalues[0];
  1002 		st->train_tile = finalvalues[0];
  1003 		if (!st->facilities) st->xy = finalvalues[0];
  1003 		st->AddFacility(FACIL_TRAIN, finalvalues[0]);
  1004 		st->facilities |= FACIL_TRAIN;
       
  1005 		st->owner = _current_player;
       
  1006 
  1004 
  1007 		st->trainst_w = finalvalues[1];
  1005 		st->trainst_w = finalvalues[1];
  1008 		st->trainst_h = finalvalues[2];
  1006 		st->trainst_h = finalvalues[2];
  1009 
       
  1010 		st->build_date = _date;
       
  1011 
  1007 
  1012 		st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TRY);
  1008 		st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TRY);
  1013 
  1009 
  1014 		tile_delta = (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
  1010 		tile_delta = (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
  1015 		track = AxisToTrack(axis);
  1011 		track = AxisToTrack(axis);
  1413 		//point to the correct item in the _busstops or _truckstops array
  1409 		//point to the correct item in the _busstops or _truckstops array
  1414 		*currstop = road_stop;
  1410 		*currstop = road_stop;
  1415 
  1411 
  1416 		//initialize an empty station
  1412 		//initialize an empty station
  1417 		road_stop->prev = prev;
  1413 		road_stop->prev = prev;
  1418 		if (!st->facilities) st->xy = tile;
  1414 		st->AddFacility((type) ? FACIL_TRUCK_STOP : FACIL_BUS_STOP, tile);
  1419 		st->facilities |= (type) ? FACIL_TRUCK_STOP : FACIL_BUS_STOP;
       
  1420 		st->owner = _current_player;
       
  1421 
       
  1422 		st->build_date = _date;
       
  1423 
  1415 
  1424 		st->rect.BeforeAddTile(tile, StationRect::ADD_TRY);
  1416 		st->rect.BeforeAddTile(tile, StationRect::ADD_TRY);
  1425 
  1417 
  1426 		MakeRoadStop(tile, st->owner, st->index, type ? RS_TRUCK : RS_BUS, (DiagDirection)p1);
  1418 		MakeRoadStop(tile, st->owner, st->index, type ? RS_TRUCK : RS_BUS, (DiagDirection)p1);
  1427 
  1419 
  1672 	}
  1664 	}
  1673 
  1665 
  1674 	cost += _price.build_airport * w * h;
  1666 	cost += _price.build_airport * w * h;
  1675 
  1667 
  1676 	if (flags & DC_EXEC) {
  1668 	if (flags & DC_EXEC) {
  1677 		st->owner = _current_player;
       
  1678 		st->airport_tile = tile;
  1669 		st->airport_tile = tile;
  1679 		if (!st->facilities) st->xy = tile;
  1670 		st->AddFacility(FACIL_AIRPORT, tile);
  1680 		st->facilities |= FACIL_AIRPORT;
       
  1681 		st->airport_type = (byte)p1;
  1671 		st->airport_type = (byte)p1;
  1682 		st->airport_flags = 0;
  1672 		st->airport_flags = 0;
  1683 
       
  1684 		st->build_date = _date;
       
  1685 
  1673 
  1686 		st->rect.BeforeAddRect(tile, w, h, StationRect::ADD_TRY);
  1674 		st->rect.BeforeAddRect(tile, w, h, StationRect::ADD_TRY);
  1687 
  1675 
  1688 		/* if airport was demolished while planes were en-route to it, the
  1676 		/* if airport was demolished while planes were en-route to it, the
  1689 		 * positions can no longer be the same (v->u.air.pos), since different
  1677 		 * positions can no longer be the same (v->u.air.pos), since different
  1951 		if (!GenerateStationName(st, tile, 3)) return CMD_ERROR;
  1939 		if (!GenerateStationName(st, tile, 3)) return CMD_ERROR;
  1952 	}
  1940 	}
  1953 
  1941 
  1954 	if (flags & DC_EXEC) {
  1942 	if (flags & DC_EXEC) {
  1955 		st->dock_tile = tile;
  1943 		st->dock_tile = tile;
  1956 		if (!st->facilities) st->xy = tile;
  1944 		st->AddFacility(FACIL_DOCK, tile);
  1957 		st->facilities |= FACIL_DOCK;
       
  1958 		st->owner = _current_player;
       
  1959 
       
  1960 		st->build_date = _date;
       
  1961 
  1945 
  1962 		st->rect.BeforeAddRect(tile, _dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TRY);
  1946 		st->rect.BeforeAddRect(tile, _dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TRY);
  1963 
  1947 
  1964 		MakeDock(tile, st->owner, st->index, direction);
  1948 		MakeDock(tile, st->owner, st->index, direction);
  1965 
  1949