Initialize with OpenTTD 1.9.3
This commit is contained in:
419
src/table/airport_defaults.h
Normal file
419
src/table/airport_defaults.h
Normal file
@@ -0,0 +1,419 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file airport_defaults.h Tables with default values for airports and airport tiles. */
|
||||
|
||||
#ifndef AIRPORT_DEFAULTS_H
|
||||
#define AIRPORT_DEFAULTS_H
|
||||
|
||||
/**
|
||||
* Definition of an airport tiles layout.
|
||||
* @param x offset x of this tile
|
||||
* @param y offset y of this tile
|
||||
* @param m StationGfx of the tile
|
||||
* @see _airport_specs
|
||||
* @see AirportTileTable
|
||||
*/
|
||||
#define MK(x, y, m) {{x, y}, m}
|
||||
|
||||
/**
|
||||
* Terminator of airport tiles layout definition
|
||||
*/
|
||||
#define MKEND {{-0x80, 0}, 0}
|
||||
|
||||
/** Tiles for Country Airfield (small) */
|
||||
static const AirportTileTable _tile_table_country_0[] = {
|
||||
MK(0, 0, APT_SMALL_BUILDING_1),
|
||||
MK(1, 0, APT_SMALL_BUILDING_2),
|
||||
MK(2, 0, APT_SMALL_BUILDING_3),
|
||||
MK(3, 0, APT_SMALL_DEPOT_SE),
|
||||
MK(0, 1, APT_GRASS_FENCE_NE_FLAG),
|
||||
MK(1, 1, APT_GRASS_1),
|
||||
MK(2, 1, APT_GRASS_2),
|
||||
MK(3, 1, APT_GRASS_FENCE_SW),
|
||||
MK(0, 2, APT_RUNWAY_SMALL_FAR_END),
|
||||
MK(1, 2, APT_RUNWAY_SMALL_MIDDLE),
|
||||
MK(2, 2, APT_RUNWAY_SMALL_MIDDLE),
|
||||
MK(3, 2, APT_RUNWAY_SMALL_NEAR_END),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_country[] = {
|
||||
_tile_table_country_0,
|
||||
};
|
||||
|
||||
/** Tiles for Commuter Airfield (small) */
|
||||
static const AirportTileTable _tile_table_commuter_0[] = {
|
||||
MK(0, 0, APT_TOWER),
|
||||
MK(1, 0, APT_BUILDING_3),
|
||||
MK(2, 0, APT_HELIPAD_2_FENCE_NW),
|
||||
MK(3, 0, APT_HELIPAD_2_FENCE_NW),
|
||||
MK(4, 0, APT_DEPOT_SE),
|
||||
MK(0, 1, APT_APRON_FENCE_NE),
|
||||
MK(1, 1, APT_APRON),
|
||||
MK(2, 1, APT_APRON),
|
||||
MK(3, 1, APT_APRON),
|
||||
MK(4, 1, APT_APRON_FENCE_SW),
|
||||
MK(0, 2, APT_APRON_FENCE_NE),
|
||||
MK(1, 2, APT_STAND),
|
||||
MK(2, 2, APT_STAND),
|
||||
MK(3, 2, APT_STAND),
|
||||
MK(4, 2, APT_APRON_FENCE_SW),
|
||||
MK(0, 3, APT_RUNWAY_END_FENCE_SE),
|
||||
MK(1, 3, APT_RUNWAY_2),
|
||||
MK(2, 3, APT_RUNWAY_2),
|
||||
MK(3, 3, APT_RUNWAY_2),
|
||||
MK(4, 3, APT_RUNWAY_END_FENCE_SE),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_commuter[] = {
|
||||
_tile_table_commuter_0,
|
||||
};
|
||||
|
||||
/** Tiles for City Airport (large) */
|
||||
static const AirportTileTable _tile_table_city_0[] = {
|
||||
MK(0, 0, APT_BUILDING_1),
|
||||
MK(1, 0, APT_APRON_FENCE_NW),
|
||||
MK(2, 0, APT_STAND_1),
|
||||
MK(3, 0, APT_APRON_FENCE_NW),
|
||||
MK(4, 0, APT_APRON_FENCE_NW),
|
||||
MK(5, 0, APT_DEPOT_SE),
|
||||
MK(0, 1, APT_BUILDING_2),
|
||||
MK(1, 1, APT_PIER),
|
||||
MK(2, 1, APT_ROUND_TERMINAL),
|
||||
MK(3, 1, APT_STAND_PIER_NE),
|
||||
MK(4, 1, APT_APRON),
|
||||
MK(5, 1, APT_APRON_FENCE_SW),
|
||||
MK(0, 2, APT_BUILDING_3),
|
||||
MK(1, 2, APT_STAND),
|
||||
MK(2, 2, APT_PIER_NW_NE),
|
||||
MK(3, 2, APT_APRON_S),
|
||||
MK(4, 2, APT_APRON_HOR),
|
||||
MK(5, 2, APT_APRON_N_FENCE_SW),
|
||||
MK(0, 3, APT_RADIO_TOWER_FENCE_NE),
|
||||
MK(1, 3, APT_APRON_W),
|
||||
MK(2, 3, APT_APRON_VER_CROSSING_S),
|
||||
MK(3, 3, APT_APRON_HOR_CROSSING_E),
|
||||
MK(4, 3, APT_ARPON_N),
|
||||
MK(5, 3, APT_TOWER_FENCE_SW),
|
||||
MK(0, 4, APT_EMPTY_FENCE_NE),
|
||||
MK(1, 4, APT_APRON_S),
|
||||
MK(2, 4, APT_APRON_HOR_CROSSING_W),
|
||||
MK(3, 4, APT_APRON_VER_CROSSING_N),
|
||||
MK(4, 4, APT_APRON_E),
|
||||
MK(5, 4, APT_RADAR_GRASS_FENCE_SW),
|
||||
MK(0, 5, APT_RUNWAY_END_FENCE_SE),
|
||||
MK(1, 5, APT_RUNWAY_1),
|
||||
MK(2, 5, APT_RUNWAY_2),
|
||||
MK(3, 5, APT_RUNWAY_3),
|
||||
MK(4, 5, APT_RUNWAY_4),
|
||||
MK(5, 5, APT_RUNWAY_END_FENCE_SE),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_city[] = {
|
||||
_tile_table_city_0,
|
||||
};
|
||||
|
||||
/** Tiles for Metropolitain Airport (large) - 2 runways */
|
||||
static const AirportTileTable _tile_table_metropolitan_0[] = {
|
||||
MK(0, 0, APT_BUILDING_1),
|
||||
MK(1, 0, APT_APRON_FENCE_NW),
|
||||
MK(2, 0, APT_STAND_1),
|
||||
MK(3, 0, APT_APRON_FENCE_NW),
|
||||
MK(4, 0, APT_APRON_FENCE_NW),
|
||||
MK(5, 0, APT_DEPOT_SE),
|
||||
MK(0, 1, APT_BUILDING_2),
|
||||
MK(1, 1, APT_PIER),
|
||||
MK(2, 1, APT_ROUND_TERMINAL),
|
||||
MK(3, 1, APT_STAND_PIER_NE),
|
||||
MK(4, 1, APT_APRON),
|
||||
MK(5, 1, APT_APRON_FENCE_SW),
|
||||
MK(0, 2, APT_BUILDING_3),
|
||||
MK(1, 2, APT_STAND),
|
||||
MK(2, 2, APT_PIER_NW_NE),
|
||||
MK(3, 2, APT_APRON_S),
|
||||
MK(4, 2, APT_APRON_HOR),
|
||||
MK(5, 2, APT_APRON_N_FENCE_SW),
|
||||
MK(0, 3, APT_RADAR_FENCE_NE),
|
||||
MK(1, 3, APT_APRON),
|
||||
MK(2, 3, APT_APRON),
|
||||
MK(3, 3, APT_APRON),
|
||||
MK(4, 3, APT_APRON),
|
||||
MK(5, 3, APT_TOWER_FENCE_SW),
|
||||
MK(0, 4, APT_RUNWAY_END),
|
||||
MK(1, 4, APT_RUNWAY_5),
|
||||
MK(2, 4, APT_RUNWAY_5),
|
||||
MK(3, 4, APT_RUNWAY_5),
|
||||
MK(4, 4, APT_RUNWAY_5),
|
||||
MK(5, 4, APT_RUNWAY_END),
|
||||
MK(0, 5, APT_RUNWAY_END_FENCE_SE),
|
||||
MK(1, 5, APT_RUNWAY_2),
|
||||
MK(2, 5, APT_RUNWAY_2),
|
||||
MK(3, 5, APT_RUNWAY_2),
|
||||
MK(4, 5, APT_RUNWAY_2),
|
||||
MK(5, 5, APT_RUNWAY_END_FENCE_SE),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_metropolitan[] = {
|
||||
_tile_table_metropolitan_0,
|
||||
};
|
||||
|
||||
/** Tiles for International Airport (large) - 2 runways */
|
||||
static const AirportTileTable _tile_table_international_0[] = {
|
||||
MK(0, 0, APT_RUNWAY_END_FENCE_NW),
|
||||
MK(1, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(2, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(3, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(4, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(5, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(6, 0, APT_RUNWAY_END_FENCE_NW),
|
||||
MK(0, 1, APT_RADIO_TOWER_FENCE_NE),
|
||||
MK(1, 1, APT_APRON),
|
||||
MK(2, 1, APT_APRON),
|
||||
MK(3, 1, APT_APRON),
|
||||
MK(4, 1, APT_APRON),
|
||||
MK(5, 1, APT_APRON),
|
||||
MK(6, 1, APT_DEPOT_SE),
|
||||
MK(0, 2, APT_BUILDING_3),
|
||||
MK(1, 2, APT_APRON),
|
||||
MK(2, 2, APT_STAND),
|
||||
MK(3, 2, APT_BUILDING_2),
|
||||
MK(4, 2, APT_STAND),
|
||||
MK(5, 2, APT_APRON),
|
||||
MK(6, 2, APT_APRON_FENCE_SW),
|
||||
MK(0, 3, APT_DEPOT_SE),
|
||||
MK(1, 3, APT_APRON),
|
||||
MK(2, 3, APT_STAND),
|
||||
MK(3, 3, APT_BUILDING_2),
|
||||
MK(4, 3, APT_STAND),
|
||||
MK(5, 3, APT_APRON),
|
||||
MK(6, 3, APT_HELIPAD_1),
|
||||
MK(0, 4, APT_APRON_FENCE_NE),
|
||||
MK(1, 4, APT_APRON),
|
||||
MK(2, 4, APT_STAND),
|
||||
MK(3, 4, APT_TOWER),
|
||||
MK(4, 4, APT_STAND),
|
||||
MK(5, 4, APT_APRON),
|
||||
MK(6, 4, APT_HELIPAD_1),
|
||||
MK(0, 5, APT_APRON_FENCE_NE),
|
||||
MK(1, 5, APT_APRON),
|
||||
MK(2, 5, APT_APRON),
|
||||
MK(3, 5, APT_APRON),
|
||||
MK(4, 5, APT_APRON),
|
||||
MK(5, 5, APT_APRON),
|
||||
MK(6, 5, APT_RADAR_FENCE_SW),
|
||||
MK(0, 6, APT_RUNWAY_END_FENCE_SE),
|
||||
MK(1, 6, APT_RUNWAY_2),
|
||||
MK(2, 6, APT_RUNWAY_2),
|
||||
MK(3, 6, APT_RUNWAY_2),
|
||||
MK(4, 6, APT_RUNWAY_2),
|
||||
MK(5, 6, APT_RUNWAY_2),
|
||||
MK(6, 6, APT_RUNWAY_END_FENCE_SE),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_international[] = {
|
||||
_tile_table_international_0,
|
||||
};
|
||||
|
||||
/** Tiles for International Airport (large) - 2 runways */
|
||||
static const AirportTileTable _tile_table_intercontinental_0[] = {
|
||||
MK(0, 0, APT_RADAR_FENCE_NE),
|
||||
MK(1, 0, APT_RUNWAY_END_FENCE_NE_NW),
|
||||
MK(2, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(3, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(4, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(5, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(6, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(7, 0, APT_RUNWAY_FENCE_NW),
|
||||
MK(8, 0, APT_RUNWAY_END_FENCE_NW_SW),
|
||||
MK(0, 1, APT_RUNWAY_END_FENCE_NE_NW),
|
||||
MK(1, 1, APT_RUNWAY_2),
|
||||
MK(2, 1, APT_RUNWAY_2),
|
||||
MK(3, 1, APT_RUNWAY_2),
|
||||
MK(4, 1, APT_RUNWAY_2),
|
||||
MK(5, 1, APT_RUNWAY_2),
|
||||
MK(6, 1, APT_RUNWAY_2),
|
||||
MK(7, 1, APT_RUNWAY_END_FENCE_SE_SW),
|
||||
MK(8, 1, APT_APRON_FENCE_NE_SW),
|
||||
MK(0, 2, APT_APRON_FENCE_NE_SW),
|
||||
MK(1, 2, APT_EMPTY),
|
||||
MK(2, 2, APT_APRON_FENCE_NE),
|
||||
MK(3, 2, APT_APRON),
|
||||
MK(4, 2, APT_APRON),
|
||||
MK(5, 2, APT_APRON),
|
||||
MK(6, 2, APT_APRON),
|
||||
MK(7, 2, APT_RADIO_TOWER_FENCE_NE),
|
||||
MK(8, 2, APT_APRON_FENCE_NE_SW),
|
||||
MK(0, 3, APT_APRON_FENCE_NE),
|
||||
MK(1, 3, APT_APRON_HALF_EAST),
|
||||
MK(2, 3, APT_APRON_FENCE_NE),
|
||||
MK(3, 3, APT_TOWER),
|
||||
MK(4, 3, APT_HELIPAD_2),
|
||||
MK(5, 3, APT_HELIPAD_2),
|
||||
MK(6, 3, APT_APRON),
|
||||
MK(7, 3, APT_APRON_FENCE_NW),
|
||||
MK(8, 3, APT_APRON_FENCE_SW),
|
||||
MK(0, 4, APT_APRON_FENCE_NE),
|
||||
MK(1, 4, APT_APRON),
|
||||
MK(2, 4, APT_APRON),
|
||||
MK(3, 4, APT_STAND),
|
||||
MK(4, 4, APT_BUILDING_1),
|
||||
MK(5, 4, APT_STAND),
|
||||
MK(6, 4, APT_APRON),
|
||||
MK(7, 4, APT_LOW_BUILDING),
|
||||
MK(8, 4, APT_DEPOT_SE),
|
||||
MK(0, 5, APT_DEPOT_SE),
|
||||
MK(1, 5, APT_LOW_BUILDING),
|
||||
MK(2, 5, APT_APRON),
|
||||
MK(3, 5, APT_STAND),
|
||||
MK(4, 5, APT_BUILDING_2),
|
||||
MK(5, 5, APT_STAND),
|
||||
MK(6, 5, APT_APRON),
|
||||
MK(7, 5, APT_APRON),
|
||||
MK(8, 5, APT_APRON_FENCE_SW),
|
||||
MK(0, 6, APT_APRON_FENCE_NE),
|
||||
MK(1, 6, APT_APRON),
|
||||
MK(2, 6, APT_APRON),
|
||||
MK(3, 6, APT_STAND),
|
||||
MK(4, 6, APT_BUILDING_3),
|
||||
MK(5, 6, APT_STAND),
|
||||
MK(6, 6, APT_APRON),
|
||||
MK(7, 6, APT_APRON),
|
||||
MK(8, 6, APT_APRON_FENCE_SW),
|
||||
MK(0, 7, APT_APRON_FENCE_NE),
|
||||
MK(1, 7, APT_APRON_FENCE_SE),
|
||||
MK(2, 7, APT_APRON),
|
||||
MK(3, 7, APT_STAND),
|
||||
MK(4, 7, APT_ROUND_TERMINAL),
|
||||
MK(5, 7, APT_STAND),
|
||||
MK(6, 7, APT_APRON_FENCE_SW),
|
||||
MK(7, 7, APT_APRON_HALF_WEST),
|
||||
MK(8, 7, APT_APRON_FENCE_SW),
|
||||
MK(0, 8, APT_APRON_FENCE_NE),
|
||||
MK(1, 8, APT_GRASS_FENCE_NE_FLAG_2),
|
||||
MK(2, 8, APT_APRON_FENCE_NE),
|
||||
MK(3, 8, APT_APRON),
|
||||
MK(4, 8, APT_APRON),
|
||||
MK(5, 8, APT_APRON),
|
||||
MK(6, 8, APT_APRON_FENCE_SW),
|
||||
MK(7, 8, APT_EMPTY),
|
||||
MK(8, 8, APT_APRON_FENCE_NE_SW),
|
||||
MK(0, 9, APT_APRON_FENCE_NE),
|
||||
MK(1, 9, APT_RUNWAY_END_FENCE_NE_NW),
|
||||
MK(2, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(3, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(4, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(5, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(6, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(7, 9, APT_RUNWAY_FENCE_NW),
|
||||
MK(8, 9, APT_RUNWAY_END_FENCE_SE_SW),
|
||||
MK(0, 10, APT_RUNWAY_END_FENCE_NE_SE),
|
||||
MK(1, 10, APT_RUNWAY_2),
|
||||
MK(2, 10, APT_RUNWAY_2),
|
||||
MK(3, 10, APT_RUNWAY_2),
|
||||
MK(4, 10, APT_RUNWAY_2),
|
||||
MK(5, 10, APT_RUNWAY_2),
|
||||
MK(6, 10, APT_RUNWAY_2),
|
||||
MK(7, 10, APT_RUNWAY_END_FENCE_SE_SW),
|
||||
MK(8, 10, APT_EMPTY),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_intercontinental[] = {
|
||||
_tile_table_intercontinental_0,
|
||||
};
|
||||
|
||||
/** Tiles for Heliport */
|
||||
static const AirportTileTable _tile_table_heliport_0[] = {
|
||||
MK(0, 0, APT_HELIPORT),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_heliport[] = {
|
||||
_tile_table_heliport_0,
|
||||
};
|
||||
|
||||
/** Tiles for Helidepot */
|
||||
static const AirportTileTable _tile_table_helidepot_0[] = {
|
||||
MK(0, 0, APT_LOW_BUILDING_FENCE_N),
|
||||
MK(1, 0, APT_DEPOT_SE),
|
||||
MK(0, 1, APT_HELIPAD_2_FENCE_NE_SE),
|
||||
MK(1, 1, APT_APRON_FENCE_SE_SW),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_helidepot[] = {
|
||||
_tile_table_helidepot_0,
|
||||
};
|
||||
|
||||
/** Tiles for Helistation */
|
||||
static const AirportTileTable _tile_table_helistation_0[] = {
|
||||
MK(0, 0, APT_DEPOT_SE),
|
||||
MK(1, 0, APT_LOW_BUILDING_FENCE_NW),
|
||||
MK(2, 0, APT_HELIPAD_3_FENCE_NW),
|
||||
MK(3, 0, APT_HELIPAD_3_FENCE_NW_SW),
|
||||
MK(0, 1, APT_APRON_FENCE_NE_SE),
|
||||
MK(1, 1, APT_APRON_FENCE_SE),
|
||||
MK(2, 1, APT_APRON_FENCE_SE),
|
||||
MK(3, 1, APT_HELIPAD_3_FENCE_SE_SW),
|
||||
MKEND
|
||||
};
|
||||
|
||||
static const AirportTileTable * const _tile_table_helistation[] = {
|
||||
_tile_table_helistation_0,
|
||||
};
|
||||
|
||||
static const Direction _default_airports_rotation[] = {
|
||||
DIR_N,
|
||||
};
|
||||
|
||||
#undef MK
|
||||
#undef MKEND
|
||||
|
||||
/** General AirportSpec definition. */
|
||||
#define AS_GENERIC(fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, enabled) \
|
||||
{fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, name, ttdpatch_type, class_id, preview, maint_cost, enabled, GRFFileProps(AT_INVALID)}
|
||||
|
||||
/** AirportSpec definition for airports without any depot. */
|
||||
#define AS_ND(ap_name, size_x, size_y, min_year, max_year, catchment, noise, maint_cost, ttdpatch_type, class_id, name, preview) \
|
||||
AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), NULL, 0, \
|
||||
size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, true)
|
||||
|
||||
/** AirportSpec definition for airports with at least one depot. */
|
||||
#define AS(ap_name, size_x, size_y, min_year, max_year, catchment, noise, maint_cost, ttdpatch_type, class_id, name, preview) \
|
||||
AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), _airport_depots_##ap_name, lengthof(_airport_depots_##ap_name), \
|
||||
size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, true)
|
||||
|
||||
/* The helidepot and helistation have ATP_TTDP_SMALL because they are at ground level */
|
||||
extern const AirportSpec _origin_airport_specs[] = {
|
||||
AS(country, 4, 3, 0, 1959, 4, 3, 7, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_SMALL, SPR_AIRPORT_PREVIEW_SMALL),
|
||||
AS(city, 6, 6, 1955, MAX_YEAR, 5, 5, 24, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_CITY, SPR_AIRPORT_PREVIEW_LARGE),
|
||||
AS_ND(heliport, 1, 1, 1963, MAX_YEAR, 4, 1, 4, ATP_TTDP_HELIPORT, APC_HELIPORT, STR_AIRPORT_HELIPORT, SPR_AIRPORT_PREVIEW_HELIPORT),
|
||||
AS(metropolitan, 6, 6, 1980, MAX_YEAR, 6, 8, 28, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_METRO, SPR_AIRPORT_PREVIEW_METROPOLITAN),
|
||||
AS(international, 7, 7, 1990, MAX_YEAR, 8, 17, 42, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERNATIONAL, SPR_AIRPORT_PREVIEW_INTERNATIONAL),
|
||||
AS(commuter, 5, 4, 1983, MAX_YEAR, 4, 4, 20, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_COMMUTER, SPR_AIRPORT_PREVIEW_COMMUTER),
|
||||
AS(helidepot, 2, 2, 1976, MAX_YEAR, 4, 2, 7, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT, SPR_AIRPORT_PREVIEW_HELIDEPOT),
|
||||
AS(intercontinental, 9, 11, 2002, MAX_YEAR, 10, 25, 72, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL, SPR_AIRPORT_PREVIEW_INTERCONTINENTAL),
|
||||
AS(helistation, 4, 2, 1980, MAX_YEAR, 4, 3, 14, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION, SPR_AIRPORT_PREVIEW_HELISTATION),
|
||||
AS_GENERIC(&_airportfta_oilrig, NULL, _default_airports_rotation, 0, NULL, 0, 1, 1, 0, 4, 0, 0, 0, ATP_TTDP_OILRIG, APC_HELIPORT, STR_NULL, 0, false),
|
||||
};
|
||||
|
||||
assert_compile(NEW_AIRPORT_OFFSET == lengthof(_origin_airport_specs));
|
||||
|
||||
const AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, NULL, _default_airports_rotation, 0, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false);
|
||||
|
||||
#undef AS
|
||||
#undef AS_ND
|
||||
#undef AS_GENERIC
|
||||
|
||||
#endif /* AIRPORT_DEFAULTS_H */
|
||||
831
src/table/airport_movement.h
Normal file
831
src/table/airport_movement.h
Normal file
@@ -0,0 +1,831 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file airport_movement.h Heart of the airports and their finite state machines */
|
||||
|
||||
#ifndef AIRPORT_MOVEMENT_H
|
||||
#define AIRPORT_MOVEMENT_H
|
||||
|
||||
|
||||
/**
|
||||
* State machine input struct (from external file, etc.)
|
||||
* Finite sTate mAchine --> FTA
|
||||
*/
|
||||
struct AirportFTAbuildup {
|
||||
byte position; ///< The position that an airplane is at.
|
||||
byte heading; ///< The current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.).
|
||||
uint64 block; ///< The block this position is on on the airport (st->airport.flags).
|
||||
byte next; ///< Next position from this position.
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
/////*********Movement Positions on Airports********************///////
|
||||
|
||||
/**
|
||||
* Airport movement data creation macro.
|
||||
* @param x X position.
|
||||
* @param y Y position.
|
||||
* @param flags Movement flags.
|
||||
* @param dir Direction.
|
||||
*/
|
||||
#define AMD(x, y, flags, dir) { x, y, flags, {dir} }
|
||||
|
||||
/** Dummy airport. */
|
||||
static const AirportMovingData _airport_moving_data_dummy[] = {
|
||||
AMD( 0, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ),
|
||||
AMD( 0, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ),
|
||||
AMD( 96, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ),
|
||||
AMD( 96, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ),
|
||||
};
|
||||
|
||||
/** Country Airfield (small) 4x3. */
|
||||
static const AirportMovingData _airport_moving_data_country[22] = {
|
||||
AMD( 53, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
|
||||
AMD( 53, 27, 0, DIR_N ), // 01 Taxi to right outside depot
|
||||
AMD( 32, 23, AMED_EXACTPOS, DIR_NW), // 02 Terminal 1
|
||||
AMD( 10, 23, AMED_EXACTPOS, DIR_NW), // 03 Terminal 2
|
||||
AMD( 43, 37, 0, DIR_N ), // 04 Going towards terminal 2
|
||||
AMD( 24, 37, 0, DIR_N ), // 05 Going towards terminal 2
|
||||
AMD( 53, 37, 0, DIR_N ), // 06 Going for takeoff
|
||||
AMD( 61, 40, AMED_EXACTPOS, DIR_NE), // 07 Taxi to start of runway (takeoff)
|
||||
AMD( 3, 40, AMED_NOSPDCLAMP, DIR_N ), // 08 Accelerate to end of runway
|
||||
AMD( -79, 40, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 09 Take off
|
||||
AMD( 177, 40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 10 Fly to landing position in air
|
||||
AMD( 56, 40, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 11 Going down for land
|
||||
AMD( 3, 40, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 12 Just landed, brake until end of runway
|
||||
AMD( 7, 40, 0, DIR_N ), // 13 Just landed, turn around and taxi 1 square
|
||||
AMD( 53, 40, 0, DIR_N ), // 14 Taxi from runway to crossing
|
||||
AMD( 1, 193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 1, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 257, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 273, 47, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (south)
|
||||
AMD( 44, 37, AMED_HELI_RAISE, DIR_N ), // 19 Helicopter takeoff
|
||||
AMD( 44, 40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 In position above landing spot helicopter
|
||||
AMD( 44, 40, AMED_HELI_LOWER, DIR_N ), // 21 Helicopter landing
|
||||
};
|
||||
|
||||
/** Commuter Airfield (small) 5x4. */
|
||||
static const AirportMovingData _airport_moving_data_commuter[37] = {
|
||||
AMD( 69, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
|
||||
AMD( 72, 22, 0, DIR_N ), // 01 Taxi to right outside depot
|
||||
AMD( 8, 22, AMED_EXACTPOS, DIR_SW), // 01 Taxi to right outside depot
|
||||
AMD( 24, 36, AMED_EXACTPOS, DIR_SE), // 03 Terminal 1
|
||||
AMD( 40, 36, AMED_EXACTPOS, DIR_SE), // 04 Terminal 2
|
||||
AMD( 56, 36, AMED_EXACTPOS, DIR_SE), // 05 Terminal 3
|
||||
AMD( 40, 8, AMED_EXACTPOS, DIR_NE), // 06 Helipad 1
|
||||
AMD( 56, 8, AMED_EXACTPOS, DIR_NE), // 07 Helipad 2
|
||||
AMD( 24, 22, 0, DIR_SW), // 08 Taxiing
|
||||
AMD( 40, 22, 0, DIR_SW), // 09 Taxiing
|
||||
AMD( 56, 22, 0, DIR_SW), // 10 Taxiing
|
||||
AMD( 72, 40, 0, DIR_SE), // 11 Airport OUTWAY
|
||||
AMD( 72, 54, AMED_EXACTPOS, DIR_NE), // 12 Accelerate to end of runway
|
||||
AMD( 7, 54, AMED_NOSPDCLAMP, DIR_N ), // 13 Release control of runway, for smoother movement
|
||||
AMD( 5, 54, AMED_NOSPDCLAMP, DIR_N ), // 14 End of runway
|
||||
AMD( -79, 54, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 15 Take off
|
||||
AMD( 145, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly to landing position in air
|
||||
AMD( 73, 54, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 17 Going down for land
|
||||
AMD( 3, 54, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 18 Just landed, brake until end of runway
|
||||
AMD( 12, 54, AMED_SLOWTURN, DIR_NW), // 19 Just landed, turn around and taxi
|
||||
AMD( 8, 32, 0, DIR_NW), // 20 Taxi from runway to crossing
|
||||
AMD( 1, 149, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 1, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 193, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 225, 62, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 24 Fly around waiting for a landing spot (south)
|
||||
/* Helicopter */
|
||||
AMD( 80, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Bufferspace before helipad
|
||||
AMD( 80, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Bufferspace before helipad
|
||||
AMD( 32, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Get in position for Helipad1
|
||||
AMD( 48, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Get in position for Helipad2
|
||||
AMD( 32, 8, AMED_HELI_LOWER, DIR_N ), // 29 Land at Helipad1
|
||||
AMD( 48, 8, AMED_HELI_LOWER, DIR_N ), // 30 Land at Helipad2
|
||||
AMD( 32, 8, AMED_HELI_RAISE, DIR_N ), // 31 Takeoff Helipad1
|
||||
AMD( 48, 8, AMED_HELI_RAISE, DIR_N ), // 32 Takeoff Helipad2
|
||||
AMD( 64, 22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 33 Go to position for Hangarentrance in air
|
||||
AMD( 64, 22, AMED_HELI_LOWER, DIR_N ), // 34 Land in front of hangar
|
||||
AMD( 40, 8, AMED_EXACTPOS, DIR_N ), // pre-helitakeoff helipad 1
|
||||
AMD( 56, 8, AMED_EXACTPOS, DIR_N ), // pre-helitakeoff helipad 2
|
||||
};
|
||||
|
||||
/** City Airport (large) 6x6. */
|
||||
static const AirportMovingData _airport_moving_data_city[] = {
|
||||
AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
|
||||
AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot
|
||||
AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1
|
||||
AMD( 56, 22, AMED_EXACTPOS, DIR_SE), // 03 Terminal 2
|
||||
AMD( 38, 8, AMED_EXACTPOS, DIR_SW), // 04 Terminal 3
|
||||
AMD( 65, 6, 0, DIR_N ), // 05 Taxi to right in infront of terminal 2/3
|
||||
AMD( 80, 27, 0, DIR_N ), // 06 Taxiway terminals 2-3
|
||||
AMD( 44, 63, 0, DIR_N ), // 07 Taxi to Airport center
|
||||
AMD( 58, 71, 0, DIR_N ), // 08 Towards takeoff
|
||||
AMD( 72, 85, 0, DIR_N ), // 09 Taxi to runway (takeoff)
|
||||
AMD( 89, 85, AMED_EXACTPOS, DIR_NE), // 10 Taxi to start of runway (takeoff)
|
||||
AMD( 3, 85, AMED_NOSPDCLAMP, DIR_N ), // 11 Accelerate to end of runway
|
||||
AMD( -79, 85, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 12 Take off
|
||||
AMD( 177, 87, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
|
||||
AMD( 89, 87, AMED_HOLD | AMED_LAND, DIR_N ), // 14 Going down for land
|
||||
AMD( 20, 87, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 15 Just landed, brake until end of runway
|
||||
AMD( 20, 87, 0, DIR_N ), // 16 Just landed, turn around and taxi 1 square // NOT USED
|
||||
AMD( 36, 71, 0, DIR_N ), // 17 Taxi from runway to crossing
|
||||
AMD( 160, 87, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 140, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Final approach fix
|
||||
AMD( 257, 1, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 273, 49, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south)
|
||||
AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 22 Helicopter takeoff
|
||||
AMD( 28, 74, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 In position above landing spot helicopter
|
||||
AMD( 28, 74, AMED_HELI_LOWER, DIR_N ), // 24 Helicopter landing
|
||||
AMD( 145, 1, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (north-west)
|
||||
AMD( -32, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Initial approach fix (north)
|
||||
AMD( 300, -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Initial approach fix (south)
|
||||
AMD( 140, -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Intermediate Approach fix (south), IAF (west)
|
||||
AMD( -32, 120, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Initial approach fix (east)
|
||||
};
|
||||
|
||||
/** Metropolitan Airport (metropolitan) - 2 runways. */
|
||||
static const AirportMovingData _airport_moving_data_metropolitan[28] = {
|
||||
AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
|
||||
AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot
|
||||
AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1
|
||||
AMD( 56, 22, AMED_EXACTPOS, DIR_SE), // 03 Terminal 2
|
||||
AMD( 38, 8, AMED_EXACTPOS, DIR_SW), // 04 Terminal 3
|
||||
AMD( 65, 6, 0, DIR_N ), // 05 Taxi to right in infront of terminal 2/3
|
||||
AMD( 80, 27, 0, DIR_N ), // 06 Taxiway terminals 2-3
|
||||
AMD( 49, 58, 0, DIR_N ), // 07 Taxi to Airport center
|
||||
AMD( 72, 58, 0, DIR_N ), // 08 Towards takeoff
|
||||
AMD( 72, 69, 0, DIR_N ), // 09 Taxi to runway (takeoff)
|
||||
AMD( 89, 69, AMED_EXACTPOS, DIR_NE), // 10 Taxi to start of runway (takeoff)
|
||||
AMD( 3, 69, AMED_NOSPDCLAMP, DIR_N ), // 11 Accelerate to end of runway
|
||||
AMD( -79, 69, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 12 Take off
|
||||
AMD( 177, 85, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
|
||||
AMD( 89, 85, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 14 Going down for land
|
||||
AMD( 3, 85, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 15 Just landed, brake until end of runway
|
||||
AMD( 21, 85, 0, DIR_N ), // 16 Just landed, turn around and taxi 1 square
|
||||
AMD( 21, 69, 0, DIR_N ), // 17 On Runway-out taxiing to In-Way
|
||||
AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 18 Taxi from runway to crossing
|
||||
AMD( 1, 193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 1, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 257, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 273, 49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (south)
|
||||
AMD( 44, 58, 0, DIR_N ), // 23 Helicopter takeoff spot on ground (to clear airport sooner)
|
||||
AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 24 Helicopter takeoff
|
||||
AMD( 15, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter
|
||||
AMD( 15, 54, AMED_HELI_LOWER, DIR_N ), // 26 Helicopter landing
|
||||
AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 27 Transitions after landing to on-ground movement
|
||||
};
|
||||
|
||||
/** International Airport (international) - 2 runways, 6 terminals, dedicated helipad. */
|
||||
static const AirportMovingData _airport_moving_data_international[51] = {
|
||||
AMD( 7, 55, AMED_EXACTPOS, DIR_SE), // 00 In Hangar 1
|
||||
AMD( 100, 21, AMED_EXACTPOS, DIR_SE), // 01 In Hangar 2
|
||||
AMD( 7, 70, 0, DIR_N ), // 02 Taxi to right outside depot
|
||||
AMD( 100, 36, 0, DIR_N ), // 03 Taxi to right outside depot
|
||||
AMD( 38, 70, AMED_EXACTPOS, DIR_SW), // 04 Terminal 1
|
||||
AMD( 38, 54, AMED_EXACTPOS, DIR_SW), // 05 Terminal 2
|
||||
AMD( 38, 38, AMED_EXACTPOS, DIR_SW), // 06 Terminal 3
|
||||
AMD( 70, 70, AMED_EXACTPOS, DIR_NE), // 07 Terminal 4
|
||||
AMD( 70, 54, AMED_EXACTPOS, DIR_NE), // 08 Terminal 5
|
||||
AMD( 70, 38, AMED_EXACTPOS, DIR_NE), // 09 Terminal 6
|
||||
AMD( 104, 71, AMED_EXACTPOS, DIR_NE), // 10 Helipad 1
|
||||
AMD( 104, 55, AMED_EXACTPOS, DIR_NE), // 11 Helipad 2
|
||||
AMD( 22, 87, 0, DIR_N ), // 12 Towards Terminals 4/5/6, Helipad 1/2
|
||||
AMD( 60, 87, 0, DIR_N ), // 13 Towards Terminals 4/5/6, Helipad 1/2
|
||||
AMD( 66, 87, 0, DIR_N ), // 14 Towards Terminals 4/5/6, Helipad 1/2
|
||||
AMD( 86, 87, AMED_EXACTPOS, DIR_NW), // 15 Towards Terminals 4/5/6, Helipad 1/2
|
||||
AMD( 86, 70, 0, DIR_N ), // 16 In Front of Terminal 4 / Helipad 1
|
||||
AMD( 86, 54, 0, DIR_N ), // 17 In Front of Terminal 5 / Helipad 2
|
||||
AMD( 86, 38, 0, DIR_N ), // 18 In Front of Terminal 6
|
||||
AMD( 86, 22, 0, DIR_N ), // 19 Towards Terminals Takeoff (Taxiway)
|
||||
AMD( 66, 22, 0, DIR_N ), // 20 Towards Terminals Takeoff (Taxiway)
|
||||
AMD( 60, 22, 0, DIR_N ), // 21 Towards Terminals Takeoff (Taxiway)
|
||||
AMD( 38, 22, 0, DIR_N ), // 22 Towards Terminals Takeoff (Taxiway)
|
||||
AMD( 22, 70, 0, DIR_N ), // 23 In Front of Terminal 1
|
||||
AMD( 22, 58, 0, DIR_N ), // 24 In Front of Terminal 2
|
||||
AMD( 22, 38, 0, DIR_N ), // 25 In Front of Terminal 3
|
||||
AMD( 22, 22, AMED_EXACTPOS, DIR_NW), // 26 Going for Takeoff
|
||||
AMD( 22, 6, 0, DIR_N ), // 27 On Runway-out, prepare for takeoff
|
||||
AMD( 3, 6, AMED_EXACTPOS, DIR_SW), // 28 Accelerate to end of runway
|
||||
AMD( 60, 6, AMED_NOSPDCLAMP, DIR_N ), // 29 Release control of runway, for smoother movement
|
||||
AMD( 105, 6, AMED_NOSPDCLAMP, DIR_N ), // 30 End of runway
|
||||
AMD( 190, 6, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 31 Take off
|
||||
AMD( 193, 104, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly to landing position in air
|
||||
AMD( 105, 104, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 33 Going down for land
|
||||
AMD( 3, 104, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 34 Just landed, brake until end of runway
|
||||
AMD( 12, 104, AMED_SLOWTURN, DIR_N ), // 35 Just landed, turn around and taxi 1 square
|
||||
AMD( 7, 84, 0, DIR_N ), // 36 Taxi from runway to crossing
|
||||
AMD( 1, 209, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 37 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 1, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 38 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 273, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 39 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 305, 81, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 40 Fly around waiting for a landing spot (south)
|
||||
/* Helicopter */
|
||||
AMD( 128, 80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 41 Bufferspace before helipad
|
||||
AMD( 128, 80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 42 Bufferspace before helipad
|
||||
AMD( 96, 71, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Get in position for Helipad1
|
||||
AMD( 96, 55, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Get in position for Helipad2
|
||||
AMD( 96, 71, AMED_HELI_LOWER, DIR_N ), // 45 Land at Helipad1
|
||||
AMD( 96, 55, AMED_HELI_LOWER, DIR_N ), // 46 Land at Helipad2
|
||||
AMD( 104, 71, AMED_HELI_RAISE, DIR_N ), // 47 Takeoff Helipad1
|
||||
AMD( 104, 55, AMED_HELI_RAISE, DIR_N ), // 48 Takeoff Helipad2
|
||||
AMD( 104, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Go to position for Hangarentrance in air
|
||||
AMD( 104, 32, AMED_HELI_LOWER, DIR_N ), // 50 Land in HANGAR2_AREA to go to hangar
|
||||
};
|
||||
|
||||
/** Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads. */
|
||||
static const AirportMovingData _airport_moving_data_intercontinental[77] = {
|
||||
AMD( 8, 87, AMED_EXACTPOS, DIR_SE), // 00 In Hangar 1
|
||||
AMD( 136, 72, AMED_EXACTPOS, DIR_SE), // 01 In Hangar 2
|
||||
AMD( 8, 104, 0, DIR_N ), // 02 Taxi to right outside depot 1
|
||||
AMD( 136, 88, 0, DIR_N ), // 03 Taxi to right outside depot 2
|
||||
AMD( 56, 120, AMED_EXACTPOS, DIR_W ), // 04 Terminal 1
|
||||
AMD( 56, 104, AMED_EXACTPOS, DIR_SW), // 05 Terminal 2
|
||||
AMD( 56, 88, AMED_EXACTPOS, DIR_SW), // 06 Terminal 3
|
||||
AMD( 56, 72, AMED_EXACTPOS, DIR_SW), // 07 Terminal 4
|
||||
AMD( 88, 120, AMED_EXACTPOS, DIR_N ), // 08 Terminal 5
|
||||
AMD( 88, 104, AMED_EXACTPOS, DIR_NE), // 09 Terminal 6
|
||||
AMD( 88, 88, AMED_EXACTPOS, DIR_NE), // 10 Terminal 7
|
||||
AMD( 88, 72, AMED_EXACTPOS, DIR_NE), // 11 Terminal 8
|
||||
AMD( 88, 56, AMED_EXACTPOS, DIR_SE), // 12 Helipad 1
|
||||
AMD( 72, 56, AMED_EXACTPOS, DIR_NE), // 13 Helipad 2
|
||||
AMD( 40, 136, 0, DIR_N ), // 14 Term group 2 enter 1 a
|
||||
AMD( 56, 136, 0, DIR_N ), // 15 Term group 2 enter 1 b
|
||||
AMD( 88, 136, 0, DIR_N ), // 16 Term group 2 enter 2 a
|
||||
AMD( 104, 136, 0, DIR_N ), // 17 Term group 2 enter 2 b
|
||||
AMD( 104, 120, 0, DIR_N ), // 18 Term group 2 - opp term 5
|
||||
AMD( 104, 104, 0, DIR_N ), // 19 Term group 2 - opp term 6 & exit2
|
||||
AMD( 104, 88, 0, DIR_N ), // 20 Term group 2 - opp term 7 & hangar area 2
|
||||
AMD( 104, 72, 0, DIR_N ), // 21 Term group 2 - opp term 8
|
||||
AMD( 104, 56, 0, DIR_N ), // 22 Taxi Term group 2 exit a
|
||||
AMD( 104, 40, 0, DIR_N ), // 23 Taxi Term group 2 exit b
|
||||
AMD( 56, 40, 0, DIR_N ), // 24 Term group 2 exit 2a
|
||||
AMD( 40, 40, 0, DIR_N ), // 25 Term group 2 exit 2b
|
||||
AMD( 40, 120, 0, DIR_N ), // 26 Term group 1 - opp term 1
|
||||
AMD( 40, 104, 0, DIR_N ), // 27 Term group 1 - opp term 2 & hangar area 1
|
||||
AMD( 40, 88, 0, DIR_N ), // 28 Term group 1 - opp term 3
|
||||
AMD( 40, 72, 0, DIR_N ), // 29 Term group 1 - opp term 4
|
||||
AMD( 18, 72, 0, DIR_NW), // 30 Outway 1
|
||||
AMD( 8, 40, 0, DIR_NW), // 31 Airport OUTWAY
|
||||
AMD( 8, 24, AMED_EXACTPOS, DIR_SW), // 32 Accelerate to end of runway
|
||||
AMD( 119, 24, AMED_NOSPDCLAMP, DIR_N ), // 33 Release control of runway, for smoother movement
|
||||
AMD( 117, 24, AMED_NOSPDCLAMP, DIR_N ), // 34 End of runway
|
||||
AMD( 197, 24, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 35 Take off
|
||||
AMD( 254, 84, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 36 Flying to landing position in air
|
||||
AMD( 117, 168, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 37 Going down for land
|
||||
AMD( 8, 168, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 38 Just landed, brake until end of runway
|
||||
AMD( 8, 168, 0, DIR_N ), // 39 Just landed, turn around and taxi
|
||||
AMD( 8, 144, 0, DIR_NW), // 40 Taxi from runway
|
||||
AMD( 8, 128, 0, DIR_NW), // 41 Taxi from runway
|
||||
AMD( 8, 120, AMED_EXACTPOS, DIR_NW), // 42 Airport entrance
|
||||
AMD( 56, 344, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Fly around waiting for a landing spot (north-east)
|
||||
AMD( -200, 88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 56, -168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 45 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 312, 88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 46 Fly around waiting for a landing spot (south)
|
||||
/* Helicopter */
|
||||
AMD( 96, 40, AMED_NOSPDCLAMP, DIR_N ), // 47 Bufferspace before helipad
|
||||
AMD( 96, 40, AMED_NOSPDCLAMP, DIR_N ), // 48 Bufferspace before helipad
|
||||
AMD( 82, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Get in position for Helipad1
|
||||
AMD( 64, 56, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 50 Get in position for Helipad2
|
||||
AMD( 81, 55, AMED_HELI_LOWER, DIR_N ), // 51 Land at Helipad1
|
||||
AMD( 64, 56, AMED_HELI_LOWER, DIR_N ), // 52 Land at Helipad2
|
||||
AMD( 80, 56, AMED_HELI_RAISE, DIR_N ), // 53 Takeoff Helipad1
|
||||
AMD( 64, 56, AMED_HELI_RAISE, DIR_N ), // 54 Takeoff Helipad2
|
||||
AMD( 136, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 55 Go to position for Hangarentrance in air
|
||||
AMD( 136, 96, AMED_HELI_LOWER, DIR_N ), // 56 Land in front of hangar2
|
||||
AMD( 126, 104, 0, DIR_SE), // 57 Outway 2
|
||||
AMD( 136, 136, 0, DIR_NE), // 58 Airport OUTWAY 2
|
||||
AMD( 136, 152, AMED_EXACTPOS, DIR_NE), // 59 Accelerate to end of runway2
|
||||
AMD( 16, 152, AMED_NOSPDCLAMP, DIR_N ), // 60 Release control of runway2, for smoother movement
|
||||
AMD( 20, 152, AMED_NOSPDCLAMP, DIR_N ), // 61 End of runway2
|
||||
AMD( -56, 152, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 62 Take off2
|
||||
AMD( 24, 8, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 63 Going down for land2
|
||||
AMD( 136, 8, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 64 Just landed, brake until end of runway2in
|
||||
AMD( 136, 8, 0, DIR_N ), // 65 Just landed, turn around and taxi
|
||||
AMD( 136, 24, 0, DIR_SE), // 66 Taxi from runway 2in
|
||||
AMD( 136, 40, 0, DIR_SE), // 67 Taxi from runway 2in
|
||||
AMD( 136, 56, AMED_EXACTPOS, DIR_NE), // 68 Airport entrance2
|
||||
AMD( -56, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 69 Fly to landing position in air2
|
||||
AMD( 88, 40, 0, DIR_N ), // 70 Taxi Term group 2 exit - opp heli1
|
||||
AMD( 72, 40, 0, DIR_N ), // 71 Taxi Term group 2 exit - opp heli2
|
||||
AMD( 88, 57, AMED_EXACTPOS, DIR_SE), // 72 pre-helitakeoff helipad 1
|
||||
AMD( 71, 56, AMED_EXACTPOS, DIR_NE), // 73 pre-helitakeoff helipad 2
|
||||
AMD( 8, 120, AMED_HELI_RAISE, DIR_N ), // 74 Helitakeoff outside depot 1
|
||||
AMD( 136, 104, AMED_HELI_RAISE, DIR_N ), // 75 Helitakeoff outside depot 2
|
||||
AMD( 197, 168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 76 Fly to landing position in air1
|
||||
};
|
||||
|
||||
|
||||
/** Heliport (heliport). */
|
||||
static const AirportMovingData _airport_moving_data_heliport[9] = {
|
||||
AMD( 5, 9, AMED_EXACTPOS, DIR_NE), // 0 - At heliport terminal
|
||||
AMD( 2, 9, AMED_HELI_RAISE, DIR_N ), // 1 - Take off (play sound)
|
||||
AMD( -3, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
|
||||
AMD( -3, 9, AMED_HELI_LOWER, DIR_N ), // 3 - Land
|
||||
AMD( 2, 9, 0, DIR_N ), // 4 - Goto terminal on ground
|
||||
AMD( -31, 59, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #1 (north-east)
|
||||
AMD( -31, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #2 (north-west)
|
||||
AMD( 49, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - Circle #3 (south-west)
|
||||
AMD( 70, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - Circle #4 (south)
|
||||
};
|
||||
|
||||
/** HeliDepot 2x2 (heliport). */
|
||||
static const AirportMovingData _airport_moving_data_helidepot[18] = {
|
||||
AMD( 24, 4, AMED_EXACTPOS, DIR_NE), // 0 - At depot
|
||||
AMD( 24, 28, 0, DIR_N ), // 1 Taxi to right outside depot
|
||||
AMD( 5, 38, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 Flying
|
||||
AMD( -15, -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 3 - Circle #1 (north-east)
|
||||
AMD( -15, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 4 - Circle #2 (north-west)
|
||||
AMD( 49, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #3 (south-west)
|
||||
AMD( 49, -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #4 (south-east)
|
||||
AMD( 8, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 7 - PreHelipad
|
||||
AMD( 8, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 8 - Helipad
|
||||
AMD( 8, 16, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 9 - Land
|
||||
AMD( 8, 16, AMED_HELI_LOWER, DIR_NW), // 10 - Land
|
||||
AMD( 8, 24, AMED_HELI_RAISE, DIR_N ), // 11 - Take off (play sound)
|
||||
AMD( 32, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 12 Air to above hangar area
|
||||
AMD( 32, 24, AMED_HELI_LOWER, DIR_NW), // 13 Taxi to right outside depot
|
||||
AMD( 8, 24, AMED_EXACTPOS, DIR_NW), // 14 - on helipad1
|
||||
AMD( 24, 28, AMED_HELI_RAISE, DIR_N ), // 15 Takeoff right outside depot
|
||||
AMD( 8, 24, AMED_HELI_RAISE, DIR_SW), // 16 - Take off (play sound)
|
||||
AMD( 8, 24, AMED_SLOWTURN | AMED_EXACTPOS, DIR_E ), // 17 - turn on helipad1 for takeoff
|
||||
};
|
||||
|
||||
/** HeliDepot 2x2 (heliport). */
|
||||
static const AirportMovingData _airport_moving_data_helistation[33] = {
|
||||
AMD( 8, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar2
|
||||
AMD( 8, 22, 0, DIR_N ), // 01 outside hangar 2
|
||||
AMD( 116, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 02 Fly to landing position in air
|
||||
AMD( 14, 22, AMED_HELI_RAISE, DIR_N ), // 03 Helitakeoff outside hangar1(play sound)
|
||||
AMD( 24, 22, 0, DIR_N ), // 04 taxiing
|
||||
AMD( 40, 22, 0, DIR_N ), // 05 taxiing
|
||||
AMD( 40, 8, AMED_EXACTPOS, DIR_NE), // 06 Helipad 1
|
||||
AMD( 56, 8, AMED_EXACTPOS, DIR_NE), // 07 Helipad 2
|
||||
AMD( 56, 24, AMED_EXACTPOS, DIR_NE), // 08 Helipad 3
|
||||
AMD( 40, 8, AMED_EXACTPOS, DIR_N ), // 09 pre-helitakeoff helipad 1
|
||||
AMD( 56, 8, AMED_EXACTPOS, DIR_N ), // 10 pre-helitakeoff helipad 2
|
||||
AMD( 56, 24, AMED_EXACTPOS, DIR_N ), // 11 pre-helitakeoff helipad 3
|
||||
AMD( 32, 8, AMED_HELI_RAISE, DIR_N ), // 12 Takeoff Helipad1
|
||||
AMD( 48, 8, AMED_HELI_RAISE, DIR_N ), // 13 Takeoff Helipad2
|
||||
AMD( 48, 24, AMED_HELI_RAISE, DIR_N ), // 14 Takeoff Helipad3
|
||||
AMD( 84, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Bufferspace before helipad
|
||||
AMD( 68, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Bufferspace before helipad
|
||||
AMD( 32, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Get in position for Helipad1
|
||||
AMD( 48, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Get in position for Helipad2
|
||||
AMD( 48, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NE), // 19 Get in position for Helipad3
|
||||
AMD( 40, 8, AMED_HELI_LOWER, DIR_N ), // 20 Land at Helipad1
|
||||
AMD( 48, 8, AMED_HELI_LOWER, DIR_N ), // 21 Land at Helipad2
|
||||
AMD( 48, 24, AMED_HELI_LOWER, DIR_N ), // 22 Land at Helipad3
|
||||
AMD( 0, 22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Go to position for Hangarentrance in air
|
||||
AMD( 0, 22, AMED_HELI_LOWER, DIR_N ), // 24 Land in front of hangar
|
||||
AMD( 148, -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (south-east)
|
||||
AMD( 148, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 132, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 100, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Fly around waiting for a landing spot (north-east)
|
||||
AMD( 84, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Fly around waiting for a landing spot (south-east)
|
||||
AMD( 84, -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 30 Fly around waiting for a landing spot (south-west)
|
||||
AMD( 100, -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 31 Fly around waiting for a landing spot (north-west)
|
||||
AMD( 132, -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly around waiting for a landing spot (north-east)
|
||||
};
|
||||
|
||||
/** Oilrig. */
|
||||
static const AirportMovingData _airport_moving_data_oilrig[9] = {
|
||||
AMD( 31, 9, AMED_EXACTPOS, DIR_NE), // 0 - At oilrig terminal
|
||||
AMD( 28, 9, AMED_HELI_RAISE, DIR_N ), // 1 - Take off (play sound)
|
||||
AMD( 23, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
|
||||
AMD( 23, 9, AMED_HELI_LOWER, DIR_N ), // 3 - Land
|
||||
AMD( 28, 9, 0, DIR_N ), // 4 - Goto terminal on ground
|
||||
AMD( -31, 69, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - circle #1 (north-east)
|
||||
AMD( -31, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - circle #2 (north-west)
|
||||
AMD( 69, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - circle #3 (south-west)
|
||||
AMD( 69, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - circle #4 (south)
|
||||
};
|
||||
|
||||
#undef AMD
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
/////**********Movement Machine on Airports*********************///////
|
||||
static const byte _airport_entries_dummy[] = {0, 1, 2, 3};
|
||||
static const AirportFTAbuildup _airport_fta_dummy[] = {
|
||||
{ 0, 0, 0, 3},
|
||||
{ 1, 0, 0, 0},
|
||||
{ 2, 0, 0, 1},
|
||||
{ 3, 0, 0, 2},
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
/* First element of terminals array tells us how many depots there are (to know size of array)
|
||||
* this may be changed later when airports are moved to external file */
|
||||
static const HangarTileTable _airport_depots_country[] = { {{3, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_terminal_country[] = {1, 2};
|
||||
static const byte _airport_entries_country[] = {16, 15, 18, 17};
|
||||
static const AirportFTAbuildup _airport_fta_country[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 1 },
|
||||
{ 1, 255, AIRPORT_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM1, TERM1_block, 2 }, { 1, TERM2, 0, 4 }, { 1, HELITAKEOFF, 0, 19 }, { 1, 0, 0, 6 },
|
||||
{ 2, TERM1, TERM1_block, 1 },
|
||||
{ 3, TERM2, TERM2_block, 5 },
|
||||
{ 4, 255, AIRPORT_BUSY_block, 0 }, { 4, TERM2, 0, 5 }, { 4, HANGAR, 0, 1 }, { 4, TAKEOFF, 0, 6 }, { 4, HELITAKEOFF, 0, 1 },
|
||||
{ 5, 255, AIRPORT_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, 0, 0, 4 },
|
||||
{ 6, 0, AIRPORT_BUSY_block, 7 },
|
||||
/* takeoff */
|
||||
{ 7, TAKEOFF, AIRPORT_BUSY_block, 8 },
|
||||
{ 8, STARTTAKEOFF, NOTHING_block, 9 },
|
||||
{ 9, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 10, FLYING, NOTHING_block, 15 }, { 10, LANDING, 0, 11 }, { 10, HELILANDING, 0, 20 },
|
||||
{ 11, LANDING, AIRPORT_BUSY_block, 12 },
|
||||
{ 12, 0, AIRPORT_BUSY_block, 13 },
|
||||
{ 13, ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13, TERM2, 0, 5 }, { 13, 0, 0, 14 },
|
||||
{ 14, 0, AIRPORT_BUSY_block, 1 },
|
||||
/* In air */
|
||||
{ 15, 0, NOTHING_block, 16 },
|
||||
{ 16, 0, NOTHING_block, 17 },
|
||||
{ 17, 0, NOTHING_block, 18 },
|
||||
{ 18, 0, NOTHING_block, 10 },
|
||||
{ 19, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 20, HELILANDING, AIRPORT_BUSY_block, 21 },
|
||||
{ 21, HELIENDLANDING, AIRPORT_BUSY_block, 1 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const HangarTileTable _airport_depots_commuter[] = { {{4, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_terminal_commuter[] = { 1, 3 };
|
||||
static const byte _airport_entries_commuter[] = {22, 21, 24, 23};
|
||||
static const AirportFTAbuildup _airport_fta_commuter[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 1 }, { 0, HELITAKEOFF, HELIPAD2_block, 1 }, { 0, 0, 0, 1 },
|
||||
{ 1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TAKEOFF, 0, 11 }, { 1, TERM1, TAXIWAY_BUSY_block, 10 }, { 1, TERM2, TAXIWAY_BUSY_block, 10 }, { 1, TERM3, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1, HELITAKEOFF, TAXIWAY_BUSY_block, 10 }, { 1, 0, 0, 0 },
|
||||
{ 2, 255, AIRPORT_ENTRANCE_block, 2 }, { 2, HANGAR, 0, 8 }, { 2, TERM1, 0, 8 }, { 2, TERM2, 0, 8 }, { 2, TERM3, 0, 8 }, { 2, HELIPAD1, 0, 8 }, { 2, HELIPAD2, 0, 8 }, { 2, HELITAKEOFF, 0, 8 }, { 2, 0, 0, 2 },
|
||||
{ 3, TERM1, TERM1_block, 8 }, { 3, HANGAR, 0, 8 }, { 3, TAKEOFF, 0, 8 }, { 3, 0, 0, 3 },
|
||||
{ 4, TERM2, TERM2_block, 9 }, { 4, HANGAR, 0, 9 }, { 4, TAKEOFF, 0, 9 }, { 4, 0, 0, 4 },
|
||||
{ 5, TERM3, TERM3_block, 10 }, { 5, HANGAR, 0, 10 }, { 5, TAKEOFF, 0, 10 }, { 5, 0, 0, 5 },
|
||||
{ 6, HELIPAD1, HELIPAD1_block, 6 }, { 6, HANGAR, TAXIWAY_BUSY_block, 9 }, { 6, HELITAKEOFF, 0, 35 },
|
||||
{ 7, HELIPAD2, HELIPAD2_block, 7 }, { 7, HANGAR, TAXIWAY_BUSY_block, 10 }, { 7, HELITAKEOFF, 0, 36 },
|
||||
{ 8, 255, TAXIWAY_BUSY_block, 8 }, { 8, TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8, HANGAR, TAXIWAY_BUSY_block, 9 }, { 8, TERM1, TERM1_block, 3 }, { 8, 0, TAXIWAY_BUSY_block, 9 },
|
||||
{ 9, 255, TAXIWAY_BUSY_block, 9 }, { 9, TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9, HANGAR, TAXIWAY_BUSY_block, 10 }, { 9, TERM2, TERM2_block, 4 }, { 9, HELIPAD1, HELIPAD1_block, 6 }, { 9, HELITAKEOFF, HELIPAD1_block, 6 }, { 9, TERM1, TAXIWAY_BUSY_block, 8 }, { 9, 0, TAXIWAY_BUSY_block, 10 },
|
||||
{ 10, 255, TAXIWAY_BUSY_block, 10 }, { 10, TERM3, TERM3_block, 5 }, { 10, HELIPAD1, 0, 9 }, { 10, HELIPAD2, HELIPAD2_block, 7 }, { 10, HELITAKEOFF, HELIPAD2_block, 7 }, { 10, TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10, HANGAR, TAXIWAY_BUSY_block, 1 }, { 10, 0, TAXIWAY_BUSY_block, 9 },
|
||||
{ 11, 0, OUT_WAY_block, 12 },
|
||||
/* takeoff */
|
||||
{ 12, TAKEOFF, RUNWAY_IN_OUT_block, 13 },
|
||||
{ 13, 0, RUNWAY_IN_OUT_block, 14 },
|
||||
{ 14, STARTTAKEOFF, RUNWAY_IN_OUT_block, 15 },
|
||||
{ 15, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 16, FLYING, NOTHING_block, 21 }, { 16, LANDING, IN_WAY_block, 17 }, { 16, HELILANDING, 0, 25 },
|
||||
{ 17, LANDING, RUNWAY_IN_OUT_block, 18 },
|
||||
{ 18, 0, RUNWAY_IN_OUT_block, 19 },
|
||||
{ 19, 0, RUNWAY_IN_OUT_block, 20 },
|
||||
{ 20, ENDLANDING, IN_WAY_block, 2 },
|
||||
/* In Air */
|
||||
{ 21, 0, NOTHING_block, 22 },
|
||||
{ 22, 0, NOTHING_block, 23 },
|
||||
{ 23, 0, NOTHING_block, 24 },
|
||||
{ 24, 0, NOTHING_block, 16 },
|
||||
/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
|
||||
{ 25, HELILANDING, PRE_HELIPAD_block, 26 },
|
||||
{ 26, HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26, HELIPAD1, 0, 27 }, { 26, HELIPAD2, 0, 28 }, { 26, HANGAR, 0, 33 },
|
||||
{ 27, 0, NOTHING_block, 29 }, // helipad1 approach
|
||||
{ 28, 0, NOTHING_block, 30 },
|
||||
/* landing */
|
||||
{ 29, 255, NOTHING_block, 0 }, { 29, HELIPAD1, HELIPAD1_block, 6 },
|
||||
{ 30, 255, NOTHING_block, 0 }, { 30, HELIPAD2, HELIPAD2_block, 7 },
|
||||
/* Helicopter -- takeoff */
|
||||
{ 31, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 32, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 33, 0, TAXIWAY_BUSY_block, 34 }, // need to go to hangar when waiting in air
|
||||
{ 34, 0, TAXIWAY_BUSY_block, 1 },
|
||||
{ 35, 0, HELIPAD1_block, 31 },
|
||||
{ 36, 0, HELIPAD2_block, 32 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const HangarTileTable _airport_depots_city[] = { {{5, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_terminal_city[] = { 1, 3 };
|
||||
static const byte _airport_entries_city[] = {26, 29, 27, 28};
|
||||
static const AirportFTAbuildup _airport_fta_city[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 1 }, { 0, TAKEOFF, OUT_WAY_block, 1 }, { 0, 0, 0, 1 },
|
||||
{ 1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
|
||||
{ 2, TERM1, TERM1_block, 7 }, { 2, TAKEOFF, OUT_WAY_block, 7 }, { 2, 0, 0, 7 },
|
||||
{ 3, TERM2, TERM2_block, 5 }, { 3, TAKEOFF, OUT_WAY_block, 6 }, { 3, 0, 0, 6 },
|
||||
{ 4, TERM3, TERM3_block, 5 }, { 4, TAKEOFF, OUT_WAY_block, 5 }, { 4, 0, 0, 5 },
|
||||
{ 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
|
||||
{ 6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
|
||||
{ 7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, OUT_WAY_block, 8 }, { 7, HELITAKEOFF, 0, 22 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
|
||||
{ 8, 0, OUT_WAY_block, 9 },
|
||||
{ 9, 0, RUNWAY_IN_OUT_block, 10 },
|
||||
/* takeoff */
|
||||
{ 10, TAKEOFF, RUNWAY_IN_OUT_block, 11 },
|
||||
{ 11, STARTTAKEOFF, NOTHING_block, 12 },
|
||||
{ 12, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 13, FLYING, NOTHING_block, 18 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 23 },
|
||||
{ 14, LANDING, RUNWAY_IN_OUT_block, 15 },
|
||||
{ 15, 0, RUNWAY_IN_OUT_block, 17 },
|
||||
{ 16, 0, RUNWAY_IN_OUT_block, 17 }, // not used, left for compatibility
|
||||
{ 17, ENDLANDING, IN_WAY_block, 7 },
|
||||
/* In Air */
|
||||
{ 18, 0, NOTHING_block, 25 },
|
||||
{ 19, 0, NOTHING_block, 20 },
|
||||
{ 20, 0, NOTHING_block, 21 },
|
||||
{ 21, 0, NOTHING_block, 13 },
|
||||
/* helicopter */
|
||||
{ 22, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 23, HELILANDING, IN_WAY_block, 24 },
|
||||
{ 24, HELIENDLANDING, IN_WAY_block, 17 },
|
||||
{ 25, 0, NOTHING_block, 20},
|
||||
{ 26, 0, NOTHING_block, 19},
|
||||
{ 27, 0, NOTHING_block, 28},
|
||||
{ 28, 0, NOTHING_block, 19},
|
||||
{ 29, 0, NOTHING_block, 26},
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const HangarTileTable _airport_depots_metropolitan[] = { {{5, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_terminal_metropolitan[] = { 1, 3 };
|
||||
static const byte _airport_entries_metropolitan[] = {20, 19, 22, 21};
|
||||
static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 1 },
|
||||
{ 1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
|
||||
{ 2, TERM1, TERM1_block, 7 },
|
||||
{ 3, TERM2, TERM2_block, 6 },
|
||||
{ 4, TERM3, TERM3_block, 5 },
|
||||
{ 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
|
||||
{ 6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
|
||||
{ 7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, 0, 8 }, { 7, HELITAKEOFF, 0, 23 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
|
||||
{ 8, 0, OUT_WAY_block, 9 },
|
||||
{ 9, 0, RUNWAY_OUT_block, 10 },
|
||||
/* takeoff */
|
||||
{ 10, TAKEOFF, RUNWAY_OUT_block, 11 },
|
||||
{ 11, STARTTAKEOFF, NOTHING_block, 12 },
|
||||
{ 12, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 13, FLYING, NOTHING_block, 19 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 25 },
|
||||
{ 14, LANDING, RUNWAY_IN_block, 15 },
|
||||
{ 15, 0, RUNWAY_IN_block, 16 },
|
||||
{ 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
|
||||
{ 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
|
||||
{ 18, ENDLANDING, IN_WAY_block, 27 },
|
||||
/* In Air */
|
||||
{ 19, 0, NOTHING_block, 20 },
|
||||
{ 20, 0, NOTHING_block, 21 },
|
||||
{ 21, 0, NOTHING_block, 22 },
|
||||
{ 22, 0, NOTHING_block, 13 },
|
||||
/* helicopter */
|
||||
{ 23, 0, NOTHING_block, 24 },
|
||||
{ 24, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 25, HELILANDING, IN_WAY_block, 26 },
|
||||
{ 26, HELIENDLANDING, IN_WAY_block, 18 },
|
||||
{ 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const HangarTileTable _airport_depots_international[] = { {{0, 3}, DIR_SE, 0}, {{6, 1}, DIR_SE, 1} };
|
||||
static const byte _airport_terminal_international[] = { 2, 3, 3 };
|
||||
static const byte _airport_entries_international[] = { 38, 37, 40, 39 };
|
||||
static const AirportFTAbuildup _airport_fta_international[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 2 }, { 0, 255, TERM_GROUP1_block, 0 }, { 0, 255, TERM_GROUP2_ENTER1_block, 1 }, { 0, HELITAKEOFF, HELIPAD1_block, 2 }, { 0, 0, 0, 2 },
|
||||
{ 1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, HELITAKEOFF, HELIPAD2_block, 3 }, { 1, 0, 0, 3 },
|
||||
{ 2, 255, AIRPORT_ENTRANCE_block, 0 }, { 2, HANGAR, 0, 0 }, { 2, TERM4, 0, 12 }, { 2, TERM5, 0, 12 }, { 2, TERM6, 0, 12 }, { 2, HELIPAD1, 0, 12 }, { 2, HELIPAD2, 0, 12 }, { 2, HELITAKEOFF, 0, 12 }, { 2, 0, 0, 23 },
|
||||
{ 3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, 0, 0, 18 },
|
||||
{ 4, TERM1, TERM1_block, 23 }, { 4, HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4, 0, 0, 23 },
|
||||
{ 5, TERM2, TERM2_block, 24 }, { 5, HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5, 0, 0, 24 },
|
||||
{ 6, TERM3, TERM3_block, 25 }, { 6, HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6, 0, 0, 25 },
|
||||
{ 7, TERM4, TERM4_block, 16 }, { 7, HANGAR, HANGAR2_AREA_block, 16 }, { 7, 0, 0, 16 },
|
||||
{ 8, TERM5, TERM5_block, 17 }, { 8, HANGAR, HANGAR2_AREA_block, 17 }, { 8, 0, 0, 17 },
|
||||
{ 9, TERM6, TERM6_block, 18 }, { 9, HANGAR, HANGAR2_AREA_block, 18 }, { 9, 0, 0, 18 },
|
||||
{ 10, HELIPAD1, HELIPAD1_block, 10 }, { 10, HANGAR, HANGAR2_AREA_block, 16 }, { 10, HELITAKEOFF, 0, 47 },
|
||||
{ 11, HELIPAD2, HELIPAD2_block, 11 }, { 11, HANGAR, HANGAR2_AREA_block, 17 }, { 11, HELITAKEOFF, 0, 48 },
|
||||
{ 12, 0, TERM_GROUP2_ENTER1_block, 13 },
|
||||
{ 13, 0, TERM_GROUP2_ENTER1_block, 14 },
|
||||
{ 14, 0, TERM_GROUP2_ENTER2_block, 15 },
|
||||
{ 15, 0, TERM_GROUP2_ENTER2_block, 16 },
|
||||
{ 16, 255, TERM_GROUP2_block, 0 }, { 16, TERM4, TERM4_block, 7 }, { 16, HELIPAD1, HELIPAD1_block, 10 }, { 16, HELITAKEOFF, HELIPAD1_block, 10 }, { 16, 0, 0, 17 },
|
||||
{ 17, 255, TERM_GROUP2_block, 0 }, { 17, TERM5, TERM5_block, 8 }, { 17, TERM4, 0, 16 }, { 17, HELIPAD1, 0, 16 }, { 17, HELIPAD2, HELIPAD2_block, 11 }, { 17, HELITAKEOFF, HELIPAD2_block, 11 }, { 17, 0, 0, 18 },
|
||||
{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM6, TERM6_block, 9 }, { 18, TAKEOFF, 0, 19 }, { 18, HANGAR, HANGAR2_AREA_block, 3 }, { 18, 0, 0, 17 },
|
||||
{ 19, 0, TERM_GROUP2_EXIT1_block, 20 },
|
||||
{ 20, 0, TERM_GROUP2_EXIT1_block, 21 },
|
||||
{ 21, 0, TERM_GROUP2_EXIT2_block, 22 },
|
||||
{ 22, 0, TERM_GROUP2_EXIT2_block, 26 },
|
||||
{ 23, 255, TERM_GROUP1_block, 0 }, { 23, TERM1, TERM1_block, 4 }, { 23, HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23, 0, 0, 24 },
|
||||
{ 24, 255, TERM_GROUP1_block, 0 }, { 24, TERM2, TERM2_block, 5 }, { 24, TERM1, 0, 23 }, { 24, HANGAR, 0, 23 }, { 24, 0, 0, 25 },
|
||||
{ 25, 255, TERM_GROUP1_block, 0 }, { 25, TERM3, TERM3_block, 6 }, { 25, TAKEOFF, 0, 26 }, { 25, 0, 0, 24 },
|
||||
{ 26, 255, TAXIWAY_BUSY_block, 0 }, { 26, TAKEOFF, 0, 27 }, { 26, 0, 0, 25 },
|
||||
{ 27, 0, OUT_WAY_block, 28 },
|
||||
/* takeoff */
|
||||
{ 28, TAKEOFF, OUT_WAY_block, 29 },
|
||||
{ 29, 0, RUNWAY_OUT_block, 30 },
|
||||
{ 30, STARTTAKEOFF, NOTHING_block, 31 },
|
||||
{ 31, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 32, FLYING, NOTHING_block, 37 }, { 32, LANDING, 0, 33 }, { 32, HELILANDING, 0, 41 },
|
||||
{ 33, LANDING, RUNWAY_IN_block, 34 },
|
||||
{ 34, 0, RUNWAY_IN_block, 35 },
|
||||
{ 35, 0, RUNWAY_IN_block, 36 },
|
||||
{ 36, ENDLANDING, IN_WAY_block, 36 }, { 36, 255, TERM_GROUP1_block, 0 }, { 36, 255, TERM_GROUP2_ENTER1_block, 1 }, { 36, TERM4, 0, 12 }, { 36, TERM5, 0, 12 }, { 36, TERM6, 0, 12 }, { 36, 0, 0, 2 },
|
||||
/* In Air */
|
||||
{ 37, 0, NOTHING_block, 38 },
|
||||
{ 38, 0, NOTHING_block, 39 },
|
||||
{ 39, 0, NOTHING_block, 40 },
|
||||
{ 40, 0, NOTHING_block, 32 },
|
||||
/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
|
||||
{ 41, HELILANDING, PRE_HELIPAD_block, 42 },
|
||||
{ 42, HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42, HELIPAD1, 0, 43 }, { 42, HELIPAD2, 0, 44 }, { 42, HANGAR, 0, 49 },
|
||||
{ 43, 0, NOTHING_block, 45 },
|
||||
{ 44, 0, NOTHING_block, 46 },
|
||||
/* landing */
|
||||
{ 45, 255, NOTHING_block, 0 }, { 45, HELIPAD1, HELIPAD1_block, 10 },
|
||||
{ 46, 255, NOTHING_block, 0 }, { 46, HELIPAD2, HELIPAD2_block, 11 },
|
||||
/* Helicopter -- takeoff */
|
||||
{ 47, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 48, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 49, 0, HANGAR2_AREA_block, 50 }, // need to go to hangar when waiting in air
|
||||
{ 50, 0, HANGAR2_AREA_block, 3 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
/* intercontinental */
|
||||
static const HangarTileTable _airport_depots_intercontinental[] = { {{0, 5}, DIR_SE, 0}, {{8, 4}, DIR_SE, 1} };
|
||||
static const byte _airport_terminal_intercontinental[] = { 2, 4, 4 };
|
||||
static const byte _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
|
||||
static const AirportFTAbuildup _airport_fta_intercontinental[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 2 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0, TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0, 0, 0, 2 },
|
||||
{ 1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, 0, 0, 3 },
|
||||
{ 2, 255, HANGAR1_AREA_block, 0 }, { 2, 255, TERM_GROUP1_block, 0 }, { 2, 255, TERM_GROUP1_block, 1 }, { 2, HANGAR, 0, 0 }, { 2, TAKEOFF, TERM_GROUP1_block, 27 }, { 2, TERM5, 0, 26 }, { 2, TERM6, 0, 26 }, { 2, TERM7, 0, 26 }, { 2, TERM8, 0, 26 }, { 2, HELIPAD1, 0, 26 }, { 2, HELIPAD2, 0, 26 }, { 2, HELITAKEOFF, 0, 74 }, { 2, 0, 0, 27 },
|
||||
{ 3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, HELITAKEOFF, 0, 75 }, {3, TAKEOFF, 0, 59}, { 3, 0, 0, 20 },
|
||||
{ 4, TERM1, TERM1_block, 26 }, { 4, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4, 0, 0, 26 },
|
||||
{ 5, TERM2, TERM2_block, 27 }, { 5, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5, 0, 0, 27 },
|
||||
{ 6, TERM3, TERM3_block, 28 }, { 6, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6, 0, 0, 28 },
|
||||
{ 7, TERM4, TERM4_block, 29 }, { 7, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7, 0, 0, 29 },
|
||||
{ 8, TERM5, TERM5_block, 18 }, { 8, HANGAR, HANGAR2_AREA_block, 18 }, { 8, 0, 0, 18 },
|
||||
{ 9, TERM6, TERM6_block, 19 }, { 9, HANGAR, HANGAR2_AREA_block, 19 }, { 9, 0, 0, 19 },
|
||||
{ 10, TERM7, TERM7_block, 20 }, { 10, HANGAR, HANGAR2_AREA_block, 20 }, { 10, 0, 0, 20 },
|
||||
{ 11, TERM8, TERM8_block, 21 }, { 11, HANGAR, HANGAR2_AREA_block, 21 }, { 11, 0, 0, 21 },
|
||||
{ 12, HELIPAD1, HELIPAD1_block, 12 }, { 12, HANGAR, 0, 70 }, { 12, HELITAKEOFF, 0, 72 },
|
||||
{ 13, HELIPAD2, HELIPAD2_block, 13 }, { 13, HANGAR, 0, 71 }, { 13, HELITAKEOFF, 0, 73 },
|
||||
{ 14, 0, TERM_GROUP2_ENTER1_block, 15 },
|
||||
{ 15, 0, TERM_GROUP2_ENTER1_block, 16 },
|
||||
{ 16, 0, TERM_GROUP2_ENTER2_block, 17 },
|
||||
{ 17, 0, TERM_GROUP2_ENTER2_block, 18 },
|
||||
{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM5, TERM5_block, 8 }, { 18, TAKEOFF, 0, 19 }, { 18, HELITAKEOFF, HELIPAD1_block, 19 }, { 18, 0, TERM_GROUP2_EXIT1_block, 19 },
|
||||
{ 19, 255, TERM_GROUP2_block, 0 }, { 19, TERM6, TERM6_block, 9 }, { 19, TERM5, 0, 18 }, { 19, TAKEOFF, 0, 57 }, { 19, HELITAKEOFF, HELIPAD1_block, 20 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, // add exit to runway out 2
|
||||
{ 20, 255, TERM_GROUP2_block, 0 }, { 20, TERM7, TERM7_block, 10 }, { 20, TERM5, 0, 19 }, { 20, TERM6, 0, 19 }, { 20, HANGAR, HANGAR2_AREA_block, 3 }, { 20, TAKEOFF, 0, 19 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 },
|
||||
{ 21, 255, TERM_GROUP2_block, 0 }, { 21, TERM8, TERM8_block, 11 }, { 21, HANGAR, HANGAR2_AREA_block, 20 }, { 21, TERM5, 0, 20 }, { 21, TERM6, 0, 20 }, { 21, TERM7, 0, 20 }, { 21, TAKEOFF, 0, 20 }, { 21, 0, TERM_GROUP2_EXIT1_block, 22 },
|
||||
{ 22, 255, TERM_GROUP2_block, 0 }, { 22, HANGAR, 0, 21 }, { 22, TERM5, 0, 21 }, { 22, TERM6, 0, 21 }, { 22, TERM7, 0, 21 }, { 22, TERM8, 0, 21 }, { 22, TAKEOFF, 0, 21 }, { 22, 0, 0, 23 },
|
||||
{ 23, 0, TERM_GROUP2_EXIT1_block, 70 },
|
||||
{ 24, 0, TERM_GROUP2_EXIT2_block, 25 },
|
||||
{ 25, 255, TERM_GROUP2_EXIT2_block, 0 }, { 25, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25, 0, 0, 29 },
|
||||
{ 26, 255, TERM_GROUP1_block, 0 }, { 26, TERM1, TERM1_block, 4 }, { 26, HANGAR, HANGAR1_AREA_block, 27 }, { 26, TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26, 0, 0, 27 },
|
||||
{ 27, 255, TERM_GROUP1_block, 0 }, { 27, TERM2, TERM2_block, 5 }, { 27, HANGAR, HANGAR1_AREA_block, 2 }, { 27, TERM1, 0, 26 }, { 27, TERM5, 0, 26 }, { 27, TERM6, 0, 26 }, { 27, TERM7, 0, 26 }, { 27, TERM8, 0, 26 }, { 27, HELIPAD1, 0, 14 }, { 27, HELIPAD2, 0, 14 }, { 27, 0, 0, 28 },
|
||||
{ 28, 255, TERM_GROUP1_block, 0 }, { 28, TERM3, TERM3_block, 6 }, { 28, HANGAR, HANGAR1_AREA_block, 27 }, { 28, TERM1, 0, 27 }, { 28, TERM2, 0, 27 }, { 28, TERM4, 0, 29 }, { 28, TERM5, 0, 14 }, { 28, TERM6, 0, 14 }, { 28, TERM7, 0, 14 }, { 28, TERM8, 0, 14 }, { 28, HELIPAD1, 0, 14 }, { 28, HELIPAD2, 0, 14 }, { 28, 0, 0, 29 },
|
||||
{ 29, 255, TERM_GROUP1_block, 0 }, { 29, TERM4, TERM4_block, 7 }, { 29, HANGAR, HANGAR1_AREA_block, 27 }, { 29, TAKEOFF, 0, 30 }, { 29, 0, 0, 28 },
|
||||
{ 30, 0, OUT_WAY_block2, 31 },
|
||||
{ 31, 0, OUT_WAY_block, 32 },
|
||||
/* takeoff */
|
||||
{ 32, TAKEOFF, RUNWAY_OUT_block, 33 },
|
||||
{ 33, 0, RUNWAY_OUT_block, 34 },
|
||||
{ 34, STARTTAKEOFF, NOTHING_block, 35 },
|
||||
{ 35, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* landing */
|
||||
{ 36, 0, 0, 0 },
|
||||
{ 37, LANDING, RUNWAY_IN_block, 38 },
|
||||
{ 38, 0, RUNWAY_IN_block, 39 },
|
||||
{ 39, 0, RUNWAY_IN_block, 40 },
|
||||
{ 40, ENDLANDING, RUNWAY_IN_block, 41 },
|
||||
{ 41, 0, IN_WAY_block, 42 },
|
||||
{ 42, 255, IN_WAY_block, 0 }, { 42, 255, TERM_GROUP1_block, 0 }, { 42, 255, TERM_GROUP1_block, 1 }, { 42, HANGAR, 0, 2 }, { 42, 0, 0, 26 },
|
||||
/* In Air */
|
||||
{ 43, 0, 0, 44 },
|
||||
{ 44, FLYING, 0, 45 }, { 44, HELILANDING, 0, 47 }, { 44, LANDING, 0, 69 }, { 44, 0, 0, 45 },
|
||||
{ 45, 0, 0, 46 },
|
||||
{ 46, FLYING, 0, 43 }, { 46, LANDING, 0, 76 }, { 46, 0, 0, 43 },
|
||||
/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
|
||||
{ 47, HELILANDING, PRE_HELIPAD_block, 48 },
|
||||
{ 48, HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48, HELIPAD1, 0, 49 }, { 48, HELIPAD2, 0, 50 }, { 48, HANGAR, 0, 55 },
|
||||
{ 49, 0, NOTHING_block, 51 },
|
||||
{ 50, 0, NOTHING_block, 52 },
|
||||
/* landing */
|
||||
{ 51, 255, NOTHING_block, 0 }, { 51, HELIPAD1, HELIPAD1_block, 12 }, { 51, HANGAR, 0, 55 }, { 51, 0, 0, 12 },
|
||||
{ 52, 255, NOTHING_block, 0 }, { 52, HELIPAD2, HELIPAD2_block, 13 }, { 52, HANGAR, 0, 55 }, { 52, 0, 0, 13 },
|
||||
/* Helicopter -- takeoff */
|
||||
{ 53, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 54, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 55, 0, HANGAR2_AREA_block, 56 }, // need to go to hangar when waiting in air
|
||||
{ 56, 0, HANGAR2_AREA_block, 3 },
|
||||
/* runway 2 out support */
|
||||
{ 57, 255, OUT_WAY2_block, 0 }, { 57, TAKEOFF, 0, 58 }, { 57, 0, 0, 58 },
|
||||
{ 58, 0, OUT_WAY2_block, 59 },
|
||||
{ 59, TAKEOFF, RUNWAY_OUT2_block, 60 }, // takeoff
|
||||
{ 60, 0, RUNWAY_OUT2_block, 61 },
|
||||
{ 61, STARTTAKEOFF, NOTHING_block, 62 },
|
||||
{ 62, ENDTAKEOFF, NOTHING_block, 0 },
|
||||
/* runway 2 in support */
|
||||
{ 63, LANDING, RUNWAY_IN2_block, 64 },
|
||||
{ 64, 0, RUNWAY_IN2_block, 65 },
|
||||
{ 65, 0, RUNWAY_IN2_block, 66 },
|
||||
{ 66, ENDLANDING, RUNWAY_IN2_block, 0 }, { 66, 255, 0, 1 }, { 66, 255, 0, 0 }, { 66, 0, 0, 67 },
|
||||
{ 67, 0, IN_WAY2_block, 68 },
|
||||
{ 68, 255, IN_WAY2_block, 0 }, { 68, 255, TERM_GROUP2_block, 1 }, { 68, 255, TERM_GROUP1_block, 0 }, { 68, HANGAR, HANGAR2_AREA_block, 22 }, { 68, 0, 0, 22 },
|
||||
{ 69, 255, RUNWAY_IN2_block, 0 }, { 69, 0, RUNWAY_IN2_block, 63 },
|
||||
{ 70, 255, TERM_GROUP2_EXIT1_block, 0 }, { 70, HELIPAD1, HELIPAD1_block, 12 }, { 70, HELITAKEOFF, HELIPAD1_block, 12 }, { 70, 0, 0, 71 },
|
||||
{ 71, 255, TERM_GROUP2_EXIT1_block, 0 }, { 71, HELIPAD2, HELIPAD2_block, 13 }, { 71, HELITAKEOFF, HELIPAD1_block, 12 }, { 71, 0, 0, 24 },
|
||||
{ 72, 0, HELIPAD1_block, 53 },
|
||||
{ 73, 0, HELIPAD2_block, 54 },
|
||||
{ 74, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 75, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 76, 255, RUNWAY_IN_block, 0 }, { 76, 0, RUNWAY_IN_block, 37 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
|
||||
/* heliports, oilrigs don't have depots */
|
||||
static const byte _airport_entries_heliport[] = { 7, 7, 7, 7 };
|
||||
static const AirportFTAbuildup _airport_fta_heliport[] = {
|
||||
{ 0, HELIPAD1, HELIPAD1_block, 1 },
|
||||
{ 1, HELITAKEOFF, NOTHING_block, 0 }, // takeoff
|
||||
{ 2, 255, AIRPORT_BUSY_block, 0 }, { 2, HELILANDING, 0, 3 }, { 2, HELITAKEOFF, 0, 1 },
|
||||
{ 3, HELILANDING, AIRPORT_BUSY_block, 4 },
|
||||
{ 4, HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIPAD1, HELIPAD1_block, 0 }, { 4, HELITAKEOFF, 0, 2 },
|
||||
/* In Air */
|
||||
{ 5, 0, NOTHING_block, 6 },
|
||||
{ 6, 0, NOTHING_block, 7 },
|
||||
{ 7, 0, NOTHING_block, 8 },
|
||||
{ 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
#define _airport_entries_oilrig _airport_entries_heliport
|
||||
#define _airport_fta_oilrig _airport_fta_heliport
|
||||
|
||||
/* helidepots */
|
||||
static const HangarTileTable _airport_depots_helidepot[] = { {{1, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 };
|
||||
static const AirportFTAbuildup _airport_fta_helidepot[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 1 },
|
||||
{ 1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELIPAD1, HELIPAD1_block, 14 }, { 1, HELITAKEOFF, 0, 15 }, { 1, 0, 0, 0 },
|
||||
{ 2, FLYING, NOTHING_block, 3 }, { 2, HELILANDING, PRE_HELIPAD_block, 7 }, { 2, HANGAR, 0, 12 }, { 2, HELITAKEOFF, NOTHING_block, 16 },
|
||||
/* In Air */
|
||||
{ 3, 0, NOTHING_block, 4 },
|
||||
{ 4, 0, NOTHING_block, 5 },
|
||||
{ 5, 0, NOTHING_block, 6 },
|
||||
{ 6, 0, NOTHING_block, 2 },
|
||||
/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
|
||||
{ 7, HELILANDING, PRE_HELIPAD_block, 8 },
|
||||
{ 8, HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8, HELIPAD1, 0, 9 }, { 8, HANGAR, 0, 12 }, { 8, 0, 0, 2 },
|
||||
{ 9, 0, NOTHING_block, 10 },
|
||||
/* landing */
|
||||
{ 10, 255, NOTHING_block, 10 }, { 10, HELIPAD1, HELIPAD1_block, 14 }, { 10, HANGAR, 0, 1 }, { 10, 0, 0, 14 },
|
||||
/* Helicopter -- takeoff */
|
||||
{ 11, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 12, 0, HANGAR2_AREA_block, 13 }, // need to go to hangar when waiting in air
|
||||
{ 13, 0, HANGAR2_AREA_block, 1 },
|
||||
{ 14, HELIPAD1, HELIPAD1_block, 14 }, { 14, HANGAR, 0, 1 }, { 14, HELITAKEOFF, 0, 17 },
|
||||
{ 15, HELITAKEOFF, NOTHING_block, 0 }, // takeoff outside depot
|
||||
{ 16, HELITAKEOFF, 0, 14 },
|
||||
{ 17, 0, NOTHING_block, 11 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
/* helistation */
|
||||
static const HangarTileTable _airport_depots_helistation[] = { {{0, 0}, DIR_SE, 0} };
|
||||
static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 };
|
||||
static const AirportFTAbuildup _airport_fta_helistation[] = {
|
||||
{ 0, HANGAR, NOTHING_block, 8 }, { 0, HELIPAD1, 0, 1 }, { 0, HELIPAD2, 0, 1 }, { 0, HELIPAD3, 0, 1 }, { 0, HELITAKEOFF, 0, 1 }, { 0, 0, 0, 0 },
|
||||
{ 1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELITAKEOFF, 0, 3 }, { 1, 0, 0, 4 },
|
||||
/* landing */
|
||||
{ 2, FLYING, NOTHING_block, 28 }, { 2, HELILANDING, 0, 15 }, { 2, 0, 0, 28 },
|
||||
/* helicopter side */
|
||||
{ 3, HELITAKEOFF, NOTHING_block, 0 }, // helitakeoff outside hangar2
|
||||
{ 4, 255, TAXIWAY_BUSY_block, 0 }, { 4, HANGAR, HANGAR2_AREA_block, 1 }, { 4, HELITAKEOFF, 0, 1 }, { 4, 0, 0, 5 },
|
||||
{ 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, HELIPAD1, HELIPAD1_block, 6 }, { 5, HELIPAD2, HELIPAD2_block, 7 }, { 5, HELIPAD3, HELIPAD3_block, 8 }, { 5, 0, 0, 4 },
|
||||
{ 6, HELIPAD1, HELIPAD1_block, 5 }, { 6, HANGAR, HANGAR2_AREA_block, 5 }, { 6, HELITAKEOFF, 0, 9 }, { 6, 0, 0, 6 },
|
||||
{ 7, HELIPAD2, HELIPAD2_block, 5 }, { 7, HANGAR, HANGAR2_AREA_block, 5 }, { 7, HELITAKEOFF, 0, 10 }, { 7, 0, 0, 7 },
|
||||
{ 8, HELIPAD3, HELIPAD3_block, 5 }, { 8, HANGAR, HANGAR2_AREA_block, 5 }, { 8, HELITAKEOFF, 0, 11 }, { 8, 0, 0, 8 },
|
||||
{ 9, 0, HELIPAD1_block, 12 },
|
||||
{ 10, 0, HELIPAD2_block, 13 },
|
||||
{ 11, 0, HELIPAD3_block, 14 },
|
||||
{ 12, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 13, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 14, HELITAKEOFF, NOTHING_block, 0 },
|
||||
/* heli - in flight moves */
|
||||
{ 15, HELILANDING, PRE_HELIPAD_block, 16 },
|
||||
{ 16, HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16, HELIPAD1, 0, 17 }, { 16, HELIPAD2, 0, 18 }, { 16, HELIPAD3, 0, 19 }, { 16, HANGAR, 0, 23 },
|
||||
{ 17, 0, NOTHING_block, 20 },
|
||||
{ 18, 0, NOTHING_block, 21 },
|
||||
{ 19, 0, NOTHING_block, 22 },
|
||||
/* heli landing */
|
||||
{ 20, 255, NOTHING_block, 0 }, { 20, HELIPAD1, HELIPAD1_block, 6 }, { 20, HANGAR, 0, 23 }, { 20, 0, 0, 6 },
|
||||
{ 21, 255, NOTHING_block, 0 }, { 21, HELIPAD2, HELIPAD2_block, 7 }, { 21, HANGAR, 0, 23 }, { 21, 0, 0, 7 },
|
||||
{ 22, 255, NOTHING_block, 0 }, { 22, HELIPAD3, HELIPAD3_block, 8 }, { 22, HANGAR, 0, 23 }, { 22, 0, 0, 8 },
|
||||
{ 23, 0, HANGAR2_AREA_block, 24 }, // need to go to helihangar when waiting in air
|
||||
{ 24, 0, HANGAR2_AREA_block, 1 },
|
||||
{ 25, 0, NOTHING_block, 26 },
|
||||
{ 26, 0, NOTHING_block, 27 },
|
||||
{ 27, 0, NOTHING_block, 2 },
|
||||
{ 28, 0, NOTHING_block, 29 },
|
||||
{ 29, 0, NOTHING_block, 30 },
|
||||
{ 30, 0, NOTHING_block, 31 },
|
||||
{ 31, 0, NOTHING_block, 32 },
|
||||
{ 32, 0, NOTHING_block, 25 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
#endif /* AIRPORT_MOVEMENT_H */
|
||||
92
src/table/airporttile_ids.h
Normal file
92
src/table/airporttile_ids.h
Normal file
@@ -0,0 +1,92 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file airporttile_ids.h Enum of the default airport tiles. */
|
||||
|
||||
#ifndef AIRPORTTILE_IDS_H
|
||||
#define AIRPORTTILE_IDS_H
|
||||
|
||||
enum AirportTiles {
|
||||
APT_APRON,
|
||||
APT_APRON_FENCE_NW,
|
||||
APT_APRON_FENCE_SW,
|
||||
APT_STAND,
|
||||
APT_APRON_W,
|
||||
APT_APRON_S,
|
||||
APT_APRON_VER_CROSSING_S,
|
||||
APT_APRON_HOR_CROSSING_W,
|
||||
APT_APRON_VER_CROSSING_N,
|
||||
APT_APRON_HOR_CROSSING_E,
|
||||
APT_APRON_E,
|
||||
APT_ARPON_N,
|
||||
APT_APRON_HOR,
|
||||
APT_APRON_N_FENCE_SW,
|
||||
APT_RUNWAY_1,
|
||||
APT_RUNWAY_2,
|
||||
APT_RUNWAY_3,
|
||||
APT_RUNWAY_4,
|
||||
APT_RUNWAY_END_FENCE_SE,
|
||||
APT_BUILDING_2,
|
||||
APT_TOWER_FENCE_SW,
|
||||
APT_ROUND_TERMINAL,
|
||||
APT_BUILDING_3,
|
||||
APT_BUILDING_1,
|
||||
APT_DEPOT_SE,
|
||||
APT_STAND_1,
|
||||
APT_STAND_PIER_NE,
|
||||
APT_PIER_NW_NE,
|
||||
APT_PIER,
|
||||
APT_EMPTY,
|
||||
APT_EMPTY_FENCE_NE,
|
||||
APT_RADAR_GRASS_FENCE_SW,
|
||||
APT_RADIO_TOWER_FENCE_NE,
|
||||
APT_SMALL_BUILDING_3,
|
||||
APT_SMALL_BUILDING_2,
|
||||
APT_SMALL_BUILDING_1,
|
||||
APT_GRASS_FENCE_SW,
|
||||
APT_GRASS_2,
|
||||
APT_GRASS_1,
|
||||
APT_GRASS_FENCE_NE_FLAG,
|
||||
APT_RUNWAY_SMALL_NEAR_END,
|
||||
APT_RUNWAY_SMALL_MIDDLE,
|
||||
APT_RUNWAY_SMALL_FAR_END,
|
||||
APT_SMALL_DEPOT_SE,
|
||||
APT_HELIPORT,
|
||||
APT_RUNWAY_END,
|
||||
APT_RUNWAY_5,
|
||||
APT_TOWER,
|
||||
APT_APRON_FENCE_NE,
|
||||
APT_RUNWAY_END_FENCE_NW,
|
||||
APT_RUNWAY_FENCE_NW,
|
||||
APT_RADAR_FENCE_SW,
|
||||
APT_RADAR_FENCE_NE,
|
||||
APT_HELIPAD_1,
|
||||
APT_HELIPAD_2_FENCE_NW,
|
||||
APT_HELIPAD_2,
|
||||
APT_APRON_FENCE_NE_SW,
|
||||
APT_RUNWAY_END_FENCE_NW_SW,
|
||||
APT_RUNWAY_END_FENCE_SE_SW,
|
||||
APT_RUNWAY_END_FENCE_NE_NW,
|
||||
APT_RUNWAY_END_FENCE_NE_SE,
|
||||
APT_HELIPAD_2_FENCE_NE_SE,
|
||||
APT_APRON_FENCE_SE_SW,
|
||||
APT_LOW_BUILDING_FENCE_N,
|
||||
APT_LOW_BUILDING_FENCE_NW,
|
||||
APT_APRON_FENCE_SE,
|
||||
APT_HELIPAD_3_FENCE_SE_SW,
|
||||
APT_HELIPAD_3_FENCE_NW_SW,
|
||||
APT_HELIPAD_3_FENCE_NW,
|
||||
APT_LOW_BUILDING,
|
||||
APT_APRON_FENCE_NE_SE,
|
||||
APT_APRON_HALF_EAST,
|
||||
APT_APRON_HALF_WEST,
|
||||
APT_GRASS_FENCE_NE_FLAG_2,
|
||||
};
|
||||
|
||||
#endif /* AIRPORTTILE_IDS_H */
|
||||
114
src/table/airporttiles.h
Normal file
114
src/table/airporttiles.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file airporttiles.h Tables with airporttile defaults. */
|
||||
|
||||
#ifndef AIRPORTTILES_H
|
||||
#define AIRPORTTILES_H
|
||||
|
||||
/** Writes all airport tile properties in the AirportTile struct */
|
||||
#define AT(num_frames, anim_speed) {{num_frames, ANIM_STATUS_LOOPING, anim_speed, 0}, STR_NULL, 0, 0, true, GRFFileProps(INVALID_AIRPORTTILE)}
|
||||
/** Writes an airport tile without animation in the AirportTile struct */
|
||||
#define AT_NOANIM {{0, ANIM_STATUS_NO_ANIMATION, 2, 0}, STR_NULL, 0, 0, true, GRFFileProps(INVALID_AIRPORTTILE)}
|
||||
|
||||
/**
|
||||
* All default airport tiles.
|
||||
* @see AirportTiles for a list of names.
|
||||
*/
|
||||
static const AirportTileSpec _origin_airporttile_specs[] = {
|
||||
/* 0..9 */
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT(11, 2), // APT_RADAR_GRASS_FENCE_SW
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT(3, 1), // APT_GRASS_FENCE_NE_FLAG
|
||||
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT(11, 2), // APT_RADAR_FENCE_SW
|
||||
AT(11, 2), // APT_RADAR_FENCE_NE
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT_NOANIM,
|
||||
AT(3, 1), // APT_GRASS_FENCE_NE_FLAG_2
|
||||
};
|
||||
|
||||
assert_compile(NEW_AIRPORTTILE_OFFSET == lengthof(_origin_airporttile_specs));
|
||||
|
||||
#undef AT_NOANIM
|
||||
#undef AT
|
||||
|
||||
#endif /* AIRPORTTILES_H */
|
||||
93
src/table/animcursors.h
Normal file
93
src/table/animcursors.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file animcursors.h
|
||||
* This file defines all the the animated cursors.
|
||||
* Animated cursors consist of the number of sprites that are
|
||||
* displayed in a round-robin manner. Each sprite also has a time
|
||||
* associated that indicates how many ticks the corresponding sprite
|
||||
* is to be displayed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates two array entries that define one
|
||||
* status of the cursor.
|
||||
* @param Sprite The Sprite to be displayed
|
||||
* @param display_time The Number of ticks to display the sprite
|
||||
*/
|
||||
#define ANIM_CURSOR_LINE(Sprite, display_time) { Sprite, display_time },
|
||||
|
||||
/**
|
||||
* This indicates the termination of the cursor list
|
||||
*/
|
||||
#define ANIM_CURSOR_END() ANIM_CURSOR_LINE(AnimCursor::LAST, 0)
|
||||
|
||||
/**
|
||||
* Animated cursor elements for demolition
|
||||
*/
|
||||
static const AnimCursor _demolish_animcursor[] = {
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_FIRST, 8)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_1, 8)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_2, 8)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_LAST, 8)
|
||||
ANIM_CURSOR_END()
|
||||
};
|
||||
|
||||
/**
|
||||
* Animated cursor elements for lower land
|
||||
*/
|
||||
static const AnimCursor _lower_land_animcursor[] = {
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_FIRST, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_1, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_LAST, 29)
|
||||
ANIM_CURSOR_END()
|
||||
};
|
||||
|
||||
/**
|
||||
* Animated cursor elements for raise land
|
||||
*/
|
||||
static const AnimCursor _raise_land_animcursor[] = {
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_FIRST, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_1, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_LAST, 29)
|
||||
ANIM_CURSOR_END()
|
||||
};
|
||||
|
||||
/**
|
||||
* Animated cursor elements for the goto icon
|
||||
*/
|
||||
static const AnimCursor _order_goto_animcursor[] = {
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_FIRST, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_1, 10)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_LAST, 29)
|
||||
ANIM_CURSOR_END()
|
||||
};
|
||||
|
||||
/**
|
||||
* Animated cursor elements for the build signal icon
|
||||
*/
|
||||
static const AnimCursor _build_signals_animcursor[] = {
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_BUILDSIGNALS_FIRST, 20)
|
||||
ANIM_CURSOR_LINE(SPR_CURSOR_BUILDSIGNALS_LAST, 20)
|
||||
ANIM_CURSOR_END()
|
||||
};
|
||||
|
||||
/**
|
||||
* This is an array of pointers to all the animated cursor
|
||||
* definitions we have above. This is the only thing that is
|
||||
* accessed directly from other files
|
||||
*/
|
||||
static const AnimCursor * const _animcursors[] = {
|
||||
_demolish_animcursor,
|
||||
_lower_land_animcursor,
|
||||
_raise_land_animcursor,
|
||||
_order_goto_animcursor,
|
||||
_build_signals_animcursor
|
||||
};
|
||||
81
src/table/autorail.h
Normal file
81
src/table/autorail.h
Normal file
@@ -0,0 +1,81 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file autorail.h Highlight/sprite information for autorail. */
|
||||
|
||||
/* Rail selection types (directions):
|
||||
* / \ / \ / \ / \ / \ / \
|
||||
* / /\ /\ \ /===\ / \ /| \ / |\
|
||||
* \/ / \ \/ \ / \===/ \| / \ |/
|
||||
* \ / \ / \ / \ / \ / \ /
|
||||
* 0 1 2 3 4 5
|
||||
*/
|
||||
|
||||
/* mark invalid tiles red */
|
||||
#define RED(c) -c
|
||||
|
||||
/* table maps each of the six rail directions and tileh combinations to a sprite
|
||||
* invalid entries are required to make sure that this array can be quickly accessed */
|
||||
static const int _AutorailTilehSprite[][6] = {
|
||||
/* type 0 1 2 3 4 5 */
|
||||
{ 0, 8, 16, 25, 34, 42 }, // tileh = 0
|
||||
{ 5, 13, RED(22), RED(31), 35, 42 }, // tileh = 1
|
||||
{ 5, 10, 16, 26, RED(38), RED(46) }, // tileh = 2
|
||||
{ 5, 9, RED(23), 26, 35, RED(46) }, // tileh = 3
|
||||
{ 2, 10, RED(19), RED(28), 34, 43 }, // tileh = 4
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 5
|
||||
{ 1, 10, RED(20), 26, RED(38), 43 }, // tileh = 6
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 7
|
||||
{ 2, 13, 17, 25, RED(40), RED(48) }, // tileh = 8
|
||||
{ 1, 13, 17, RED(32), 35, RED(48) }, // tileh = 9
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 10
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 11
|
||||
{ 2, 9, 17, RED(29), RED(40), 43 }, // tileh = 12
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 13
|
||||
{ 1, 9, 17, 26, 35, 43 }, // tileh = 14
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (15)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (16)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (17)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (18)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (19)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (20)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (21)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (22)
|
||||
{ 6, 11, 17, 27, RED(39), RED(47) }, // tileh = 23
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (24)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (25)
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (26)
|
||||
{ 7, 15, RED(24), RED(33), 36, 44 }, // tileh = 27
|
||||
{ 0, 1, 2, 3, 4, 5 }, // invalid (28)
|
||||
{ 3, 14, 18, 26, RED(41), RED(49) }, // tileh = 29
|
||||
{ 4, 12, RED(21), RED(30), 37, 45 } // tileh = 30
|
||||
};
|
||||
#undef RED
|
||||
|
||||
|
||||
/* maps each pixel of a tile (16x16) to a selection type
|
||||
* (0,0) is the top corner, (16,16) the bottom corner */
|
||||
static const HighLightStyle _autorail_piece[][16] = {
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
|
||||
{ HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y },
|
||||
{ HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y },
|
||||
{ HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y },
|
||||
{ HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
|
||||
{ HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }
|
||||
};
|
||||
801
src/table/bridge_land.h
Normal file
801
src/table/bridge_land.h
Normal file
@@ -0,0 +1,801 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file bridge_land.h This file contains all the sprites for bridges
|
||||
* It consists of a number of arrays.
|
||||
* <ul><li>_bridge_sprite_table_n_m. Defines all the sprites of a bridge besides the pylons.
|
||||
* n defines the number of the bridge type, m the number of the section. the highest m for
|
||||
* each bridge set defines the heads.<br>
|
||||
* Sprites for middle sections are arranged in groups of four, the elements are:
|
||||
* <ol><li>Element containing the track. This element is logically behind the vehicle.</li>
|
||||
* <li>Element containing the structure that is logically between the vehicle and the camera</li>
|
||||
* <li>Element containing the pylons.</li></ol>
|
||||
* First group is for railway in X direction, second for railway in Y direction, two groups each follow for road, monorail and maglev<p>
|
||||
* <br>Elements for heads are arranged in groups of eight:
|
||||
* <ol><li>X direction, north end, flat</li>
|
||||
* <li>Y direction, north end, flat</li>
|
||||
* <li>X direction, south end, flat</li>
|
||||
* <li>Y direction, south end, flat</li>
|
||||
* <li>X direction, north end, sloped</li>
|
||||
* <li>Y direction, north end, sloped</li>
|
||||
* <li>X direction, south end, sloped</li>
|
||||
* <li>Y direction, south end, sloped</li></ol>
|
||||
* This is repeated 4 times, for rail, road, monorail, maglev</li>
|
||||
* </ul>
|
||||
*/
|
||||
|
||||
# define MN(a) {a, PAL_NONE}
|
||||
# define MR(a) {a, PALETTE_TO_STRUCT_RED}
|
||||
# define MW(a) {a, PALETTE_TO_STRUCT_WHITE}
|
||||
# define MC(a) {a, PALETTE_TO_STRUCT_CONCRETE}
|
||||
|
||||
static const PalSpriteID _aqueduct_sprites[] = {
|
||||
{ SPR_AQUEDUCT_MIDDLE_X, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_PILLAR_X, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ SPR_AQUEDUCT_MIDDLE_Y, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_PILLAR_Y, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ SPR_AQUEDUCT_RAMP_SW, PAL_NONE }, { SPR_AQUEDUCT_RAMP_SE, PAL_NONE }, { SPR_AQUEDUCT_RAMP_NE, PAL_NONE }, { SPR_AQUEDUCT_RAMP_NW, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_0[] = {
|
||||
{ 0x9A9, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A5, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x99D, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x995, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F2, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10EE, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111A, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1116, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_1[] = {
|
||||
{ 0x9AA, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A6, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x99E, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x996, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F3, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10EF, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111B, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1117, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_2[] = {
|
||||
{ 0x9AC, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A8, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A2, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x99A, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F5, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F1, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111D, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1119, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_3[] = {
|
||||
{ 0x9AB, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A7, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A1, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x999, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F4, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F0, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111C, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1118, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_4[] = {
|
||||
{ 0x9B6, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B5, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B8, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B7, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F7, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F6, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111F, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x111E, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_5[] = {
|
||||
{ 0x9BD, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BE, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BF, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C0, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F8, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F9, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1120, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1121, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_6[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PAL_NONE }, { 0x990, PAL_NONE }, { 0x98D, PAL_NONE }, { 0x98F, PAL_NONE },
|
||||
{ 0x992, PAL_NONE }, { 0x994, PAL_NONE }, { 0x991, PAL_NONE }, { 0x993, PAL_NONE },
|
||||
{ 0x10E7, PAL_NONE }, { 0x10E9, PAL_NONE }, { 0x10E6, PAL_NONE }, { 0x10E8, PAL_NONE },
|
||||
{ 0x10EB, PAL_NONE }, { 0x10ED, PAL_NONE }, { 0x10EA, PAL_NONE }, { 0x10EC, PAL_NONE },
|
||||
{ 0x110F, PAL_NONE }, { 0x1111, PAL_NONE }, { 0x110E, PAL_NONE }, { 0x1110, PAL_NONE },
|
||||
{ 0x1113, PAL_NONE }, { 0x1115, PAL_NONE }, { 0x1112, PAL_NONE }, { 0x1114, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_0[] = {
|
||||
{ 0x9A9, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A5, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x99D, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x995, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F2, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10EE, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111A, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x1116, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_1[] = {
|
||||
{ 0x9AA, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A6, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x99E, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x996, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F3, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10EF, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111B, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x1117, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_2[] = {
|
||||
{ 0x9AC, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A8, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A2, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x99A, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F5, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F1, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111D, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x1119, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_3[] = {
|
||||
{ 0x9AB, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A7, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9A1, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x999, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F4, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F0, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111C, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x1118, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_4[] = {
|
||||
{ 0x9B6, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9B5, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9B8, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x9B7, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F7, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x10F6, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111F, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0x111E, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_5[] = {
|
||||
{ 0x9BD, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BE, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BF, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C0, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F8, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F9, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1120, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1121, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_5_6[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_YELLOW }, { 0x990, PALETTE_TO_STRUCT_YELLOW }, { 0x98D, PALETTE_TO_STRUCT_YELLOW }, { 0x98F, PALETTE_TO_STRUCT_YELLOW },
|
||||
{ 0x992, PALETTE_TO_STRUCT_YELLOW }, { 0x994, PALETTE_TO_STRUCT_YELLOW }, { 0x991, PALETTE_TO_STRUCT_YELLOW }, { 0x993, PALETTE_TO_STRUCT_YELLOW },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_YELLOW }, { 0x10E9, PALETTE_TO_STRUCT_YELLOW }, { 0x10E6, PALETTE_TO_STRUCT_YELLOW }, { 0x10E8, PALETTE_TO_STRUCT_YELLOW },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_YELLOW }, { 0x10ED, PALETTE_TO_STRUCT_YELLOW }, { 0x10EA, PALETTE_TO_STRUCT_YELLOW }, { 0x10EC, PALETTE_TO_STRUCT_YELLOW },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_YELLOW }, { 0x1111, PALETTE_TO_STRUCT_YELLOW }, { 0x110E, PALETTE_TO_STRUCT_YELLOW }, { 0x1110, PALETTE_TO_STRUCT_YELLOW },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_YELLOW }, { 0x1115, PALETTE_TO_STRUCT_YELLOW }, { 0x1112, PALETTE_TO_STRUCT_YELLOW }, { 0x1114, PALETTE_TO_STRUCT_YELLOW },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_6_0[] = {
|
||||
{ 0x9CD, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9CE, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D3, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D4, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FC, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FD, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1124, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1125, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_6_1[] = {
|
||||
{ 0x9CB, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D0, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D1, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D6, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FA, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FF, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1122, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1127, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_6_2[] = {
|
||||
{ 0x9CC, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9CF, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D2, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D5, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FB, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FE, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1123, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1126, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_6_3[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PAL_NONE }, { 0x990, PAL_NONE }, { 0x98D, PAL_NONE }, { 0x98F, PAL_NONE },
|
||||
{ 0x992, PAL_NONE }, { 0x994, PAL_NONE }, { 0x991, PAL_NONE }, { 0x993, PAL_NONE },
|
||||
{ 0x10E7, PAL_NONE }, { 0x10E9, PAL_NONE }, { 0x10E6, PAL_NONE }, { 0x10E8, PAL_NONE },
|
||||
{ 0x10EB, PAL_NONE }, { 0x10ED, PAL_NONE }, { 0x10EA, PAL_NONE }, { 0x10EC, PAL_NONE },
|
||||
{ 0x110F, PAL_NONE }, { 0x1111, PAL_NONE }, { 0x110E, PAL_NONE }, { 0x1110, PAL_NONE },
|
||||
{ 0x1113, PAL_NONE }, { 0x1115, PAL_NONE }, { 0x1112, PAL_NONE }, { 0x1114, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_7_0[] = {
|
||||
{ 0x9CD, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9CE, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D3, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D4, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FC, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FD, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1124, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1125, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_7_1[] = {
|
||||
{ 0x9CB, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9D0, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9D1, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9D6, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x10FA, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x10FF, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x1122, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x1127, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_7_2[] = {
|
||||
{ 0x9CC, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9CF, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9D2, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x9D5, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x10FB, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x10FE, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x1123, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
{ 0x1126, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_7_3[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_BROWN }, { 0x990, PALETTE_TO_STRUCT_BROWN }, { 0x98D, PALETTE_TO_STRUCT_BROWN }, { 0x98F, PALETTE_TO_STRUCT_BROWN },
|
||||
{ 0x992, PALETTE_TO_STRUCT_BROWN }, { 0x994, PALETTE_TO_STRUCT_BROWN }, { 0x991, PALETTE_TO_STRUCT_BROWN }, { 0x993, PALETTE_TO_STRUCT_BROWN },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_BROWN }, { 0x10E9, PALETTE_TO_STRUCT_BROWN }, { 0x10E6, PALETTE_TO_STRUCT_BROWN }, { 0x10E8, PALETTE_TO_STRUCT_BROWN },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_BROWN }, { 0x10ED, PALETTE_TO_STRUCT_BROWN }, { 0x10EA, PALETTE_TO_STRUCT_BROWN }, { 0x10EC, PALETTE_TO_STRUCT_BROWN },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_BROWN }, { 0x1111, PALETTE_TO_STRUCT_BROWN }, { 0x110E, PALETTE_TO_STRUCT_BROWN }, { 0x1110, PALETTE_TO_STRUCT_BROWN },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_BROWN }, { 0x1115, PALETTE_TO_STRUCT_BROWN }, { 0x1112, PALETTE_TO_STRUCT_BROWN }, { 0x1114, PALETTE_TO_STRUCT_BROWN },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_8_0[] = {
|
||||
{ 0x9CD, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9CE, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D3, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9D4, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FC, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10FD, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1124, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1125, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_8_1[] = {
|
||||
{ 0x9CB, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9D0, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9D1, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9D6, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x10FA, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x10FF, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x1122, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x1127, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_8_2[] = {
|
||||
{ 0x9CC, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9CF, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9D2, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x9D5, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x10FB, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x10FE, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x1123, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
{ 0x1126, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_8_3[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_RED }, { 0x990, PALETTE_TO_STRUCT_RED }, { 0x98D, PALETTE_TO_STRUCT_RED }, { 0x98F, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x992, PALETTE_TO_STRUCT_RED }, { 0x994, PALETTE_TO_STRUCT_RED }, { 0x991, PALETTE_TO_STRUCT_RED }, { 0x993, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_RED }, { 0x10E9, PALETTE_TO_STRUCT_RED }, { 0x10E6, PALETTE_TO_STRUCT_RED }, { 0x10E8, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_RED }, { 0x10ED, PALETTE_TO_STRUCT_RED }, { 0x10EA, PALETTE_TO_STRUCT_RED }, { 0x10EC, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_RED }, { 0x1111, PALETTE_TO_STRUCT_RED }, { 0x110E, PALETTE_TO_STRUCT_RED }, { 0x1110, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_wood_middle[] = {
|
||||
MN( SPR_BTWDN_RAIL_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_RAIL_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_ROAD_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_ROAD_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MONO_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MONO_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MGLV_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MGLV_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_wood_heads[] = {
|
||||
MN( SPR_BTWDN_RAIL_X_SLOPE_UP ), MN( SPR_BTWDN_RAIL_Y_SLOPE_UP ), MN( SPR_BTWDN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTWDN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_RAIL_RAMP_X_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_X_UP ), MN( SPR_BTWDN_RAIL_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_ROAD_X_SLOPE_UP ), MN( SPR_BTWDN_ROAD_Y_SLOPE_UP ), MN( SPR_BTWDN_ROAD_X_SLOPE_DOWN ), MN( SPR_BTWDN_ROAD_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_ROAD_RAMP_X_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_Y_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_X_UP ), MN( SPR_BTWDN_ROAD_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_MONO_X_SLOPE_UP ), MN( SPR_BTWDN_MONO_Y_SLOPE_UP ), MN( SPR_BTWDN_MONO_X_SLOPE_DOWN ), MN( SPR_BTWDN_MONO_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_MONO_RAMP_X_DOWN ), MN( SPR_BTWDN_MONO_RAMP_Y_DOWN ), MN( SPR_BTWDN_MONO_RAMP_X_UP ), MN( SPR_BTWDN_MONO_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_MGLV_X_SLOPE_UP ), MN( SPR_BTWDN_MGLV_Y_SLOPE_UP ), MN( SPR_BTWDN_MGLV_X_SLOPE_DOWN ), MN( SPR_BTWDN_MGLV_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_MGLV_RAMP_X_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_Y_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_X_UP ), MN( SPR_BTWDN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_middle[] = {
|
||||
MR( SPR_BTCON_RAIL_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_RAIL_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_ROAD_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_ROAD_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MONO_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MONO_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MGLV_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MGLV_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_ROAD_X_SLOPE_UP ), MR( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MR( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MR( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_X_UP ), MR( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_MONO_X_SLOPE_UP ), MR( SPR_BTGEN_MONO_Y_SLOPE_UP ), MR( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MR( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_MONO_RAMP_X_DOWN ), MR( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MR( SPR_BTGEN_MONO_RAMP_X_UP ), MR( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_MGLV_X_SLOPE_UP ), MR( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MR( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MR( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_X_UP ), MR( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_archgirder_middle[] = {
|
||||
MN( SPR_BTSGA_RAIL_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_RAIL_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_ROAD_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_ROAD_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MONO_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MONO_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MGLV_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MGLV_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_archgirder_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_ROAD_X_SLOPE_UP ), MW( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MW( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MW( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_X_UP ), MW( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_MONO_X_SLOPE_UP ), MW( SPR_BTGEN_MONO_Y_SLOPE_UP ), MW( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MW( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_MONO_RAMP_X_DOWN ), MW( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MW( SPR_BTGEN_MONO_RAMP_X_UP ), MW( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_MGLV_X_SLOPE_UP ), MW( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MW( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MW( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_X_UP ), MW( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_A[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_B[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_C[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_D[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_E[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_F[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_ROAD_X_SLOPE_UP ), MC( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MC( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MC( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_X_UP ), MC( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_MONO_X_SLOPE_UP ), MC( SPR_BTGEN_MONO_Y_SLOPE_UP ), MC( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MC( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_MONO_RAMP_X_DOWN ), MC( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MC( SPR_BTGEN_MONO_RAMP_X_UP ), MC( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_MGLV_X_SLOPE_UP ), MC( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MC( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MC( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_X_UP ), MC( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_9_0[] = {
|
||||
{ 0x9F9, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9FA, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9FB, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9FC, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x110A, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x110B, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1132, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1133, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_10_0[] = {
|
||||
{ 0xA0B, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_10_1[] = {
|
||||
{ 0xA09, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_10_2[] = {
|
||||
{ 0xA0A, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_0[] = {
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_1[] = {
|
||||
{ 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_2[] = {
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_0[] = {
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_1[] = {
|
||||
{ 0xA09, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_2[] = {
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_archgirder[] = {
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_4[] = {
|
||||
_bridge_sprite_table_4_0,
|
||||
_bridge_sprite_table_4_1,
|
||||
_bridge_sprite_table_4_2,
|
||||
_bridge_sprite_table_4_3,
|
||||
_bridge_sprite_table_4_4,
|
||||
_bridge_sprite_table_4_5,
|
||||
_bridge_sprite_table_4_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_5[] = {
|
||||
_bridge_sprite_table_5_0,
|
||||
_bridge_sprite_table_5_1,
|
||||
_bridge_sprite_table_5_2,
|
||||
_bridge_sprite_table_5_3,
|
||||
_bridge_sprite_table_5_4,
|
||||
_bridge_sprite_table_5_5,
|
||||
_bridge_sprite_table_5_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_concrete_suspended[] = {
|
||||
_bridge_sprite_table_concrete_suspended_A,
|
||||
_bridge_sprite_table_concrete_suspended_B,
|
||||
_bridge_sprite_table_concrete_suspended_C,
|
||||
_bridge_sprite_table_concrete_suspended_D,
|
||||
_bridge_sprite_table_concrete_suspended_E,
|
||||
_bridge_sprite_table_concrete_suspended_F,
|
||||
_bridge_sprite_table_concrete_suspended_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_6[] = {
|
||||
_bridge_sprite_table_6_0,
|
||||
_bridge_sprite_table_6_1,
|
||||
_bridge_sprite_table_6_2,
|
||||
_bridge_sprite_table_6_2,
|
||||
_bridge_sprite_table_6_2,
|
||||
_bridge_sprite_table_6_2,
|
||||
_bridge_sprite_table_6_3,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_7[] = {
|
||||
_bridge_sprite_table_7_0,
|
||||
_bridge_sprite_table_7_1,
|
||||
_bridge_sprite_table_7_2,
|
||||
_bridge_sprite_table_7_2,
|
||||
_bridge_sprite_table_7_2,
|
||||
_bridge_sprite_table_7_2,
|
||||
_bridge_sprite_table_7_3,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_8[] = {
|
||||
_bridge_sprite_table_8_0,
|
||||
_bridge_sprite_table_8_1,
|
||||
_bridge_sprite_table_8_2,
|
||||
_bridge_sprite_table_8_2,
|
||||
_bridge_sprite_table_8_2,
|
||||
_bridge_sprite_table_8_2,
|
||||
_bridge_sprite_table_8_3,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_wood[] = {
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_concrete[] = {
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_9[] = {
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_9_0,
|
||||
_bridge_sprite_table_4_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_10[] = {
|
||||
_bridge_sprite_table_10_0,
|
||||
_bridge_sprite_table_10_1,
|
||||
_bridge_sprite_table_10_2,
|
||||
_bridge_sprite_table_10_2,
|
||||
_bridge_sprite_table_10_2,
|
||||
_bridge_sprite_table_10_2,
|
||||
_bridge_sprite_table_4_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_11[] = {
|
||||
_bridge_sprite_table_11_0,
|
||||
_bridge_sprite_table_11_1,
|
||||
_bridge_sprite_table_11_2,
|
||||
_bridge_sprite_table_11_2,
|
||||
_bridge_sprite_table_11_2,
|
||||
_bridge_sprite_table_11_2,
|
||||
_bridge_sprite_table_5_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_12[] = {
|
||||
_bridge_sprite_table_12_0,
|
||||
_bridge_sprite_table_12_1,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_concrete_suspended_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = {
|
||||
_bridge_sprite_table_wood,
|
||||
_bridge_sprite_table_concrete,
|
||||
_bridge_sprite_table_archgirder,
|
||||
_bridge_sprite_table_concrete_suspended,
|
||||
_bridge_sprite_table_4,
|
||||
_bridge_sprite_table_5,
|
||||
_bridge_sprite_table_6,
|
||||
_bridge_sprite_table_7,
|
||||
_bridge_sprite_table_8,
|
||||
_bridge_sprite_table_9,
|
||||
_bridge_sprite_table_10,
|
||||
_bridge_sprite_table_11,
|
||||
_bridge_sprite_table_12
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the data that defines each bridge in the game
|
||||
* @param y year of availability
|
||||
* @param mnl minimum length (not counting bridge heads)
|
||||
* @param mxl maximum length (not counting bridge heads)
|
||||
* @param p price multiplier
|
||||
* @param mxs maximum speed allowed (1 unit = 1/1.6 mph = 1 km-ish/h)
|
||||
* @param spr sprite to use in purchase GUI
|
||||
* @param plt palette for the sprite in purchase GUI
|
||||
* @param dsc description of the bridge in purchase GUI
|
||||
* @param nrl description of the rail bridge in query tool
|
||||
* @param nrd description of the road bridge in query tool
|
||||
*/
|
||||
#define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
|
||||
{y, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, NULL, 0}
|
||||
|
||||
const BridgeSpec _orig_bridge[] = {
|
||||
/*
|
||||
year of availability
|
||||
| minimum length
|
||||
| | maximum length
|
||||
| | | price multiplier
|
||||
| | | | maximum speed
|
||||
| | | | | sprite to use in GUI
|
||||
| | | | | | palette in GUI
|
||||
string with description name on rail name on road
|
||||
| | | | */
|
||||
MBR( 0, 0, 0xFFFF, 80, 32, 0xA24, PAL_NONE,
|
||||
STR_BRIDGE_NAME_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN),
|
||||
|
||||
MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
|
||||
STR_BRIDGE_NAME_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE),
|
||||
|
||||
MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
|
||||
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL),
|
||||
|
||||
MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
|
||||
STR_BRIDGE_NAME_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE),
|
||||
|
||||
MBR(1930, 3, 0xFFFF, 185, 96, 0xA22, PAL_NONE,
|
||||
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL),
|
||||
|
||||
MBR(1930, 3, 0xFFFF, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
|
||||
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL),
|
||||
|
||||
MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
|
||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
||||
|
||||
MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
|
||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
||||
|
||||
MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
|
||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
||||
|
||||
MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
|
||||
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL),
|
||||
|
||||
MBR(1995, 2, 0xFFFF, 255, 320, 0xA28, PAL_NONE,
|
||||
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL),
|
||||
|
||||
MBR(2005, 2, 0xFFFF, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
|
||||
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL),
|
||||
|
||||
MBR(2010, 2, 0xFFFF, 510, 608, 0xA28, PALETTE_TO_STRUCT_CONCRETE,
|
||||
STR_BRIDGE_TUBULAR_SILICON, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL)
|
||||
};
|
||||
|
||||
#undef MBR
|
||||
#undef MN
|
||||
#undef MR
|
||||
#undef MW
|
||||
#undef MC
|
||||
1852
src/table/build_industry.h
Normal file
1852
src/table/build_industry.h
Normal file
File diff suppressed because it is too large
Load Diff
173
src/table/cargo_const.h
Normal file
173
src/table/cargo_const.h
Normal file
@@ -0,0 +1,173 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file cargo_const.h Table of all default cargo types */
|
||||
|
||||
/** Construction macro for a #CargoSpec structure. */
|
||||
#define MK(bt, label, c, e, f, g, h, fr, te, ks1, ks2, ks3, ks4, ks5, l, m, cmult) \
|
||||
{bt, label, c, c, e, cmult, f, {g, h}, fr, te, 0, 0, ks1, ks2, ks3, ks4, ks5, l, m, NULL, NULL, 0}
|
||||
/** Cargo types available by default. */
|
||||
static const CargoSpec _default_cargo[] = {
|
||||
MK( 0, 'PASS', 152, 1, 3185, 0, 24, false, TE_PASSENGERS,
|
||||
STR_CARGO_PLURAL_PASSENGERS, STR_CARGO_SINGULAR_PASSENGER, STR_PASSENGERS, STR_QUANTITY_PASSENGERS, STR_ABBREV_PASSENGERS,
|
||||
SPR_CARGO_PASSENGER, CC_PASSENGERS, 0x400),
|
||||
|
||||
MK( 1, 'COAL', 6, 16, 5916, 7, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_COAL, STR_CARGO_SINGULAR_COAL, STR_TONS, STR_QUANTITY_COAL, STR_ABBREV_COAL,
|
||||
SPR_CARGO_COAL, CC_BULK, 0x100),
|
||||
|
||||
MK( 2, 'MAIL', 15, 4, 4550, 20, 90, false, TE_MAIL,
|
||||
STR_CARGO_PLURAL_MAIL, STR_CARGO_SINGULAR_MAIL, STR_BAGS, STR_QUANTITY_MAIL, STR_ABBREV_MAIL,
|
||||
SPR_CARGO_MAIL, CC_MAIL, 0x200),
|
||||
|
||||
/* Oil in temperate and arctic */
|
||||
MK( 3, 'OIL_', 174, 16, 4437, 25, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL,
|
||||
SPR_CARGO_OIL, CC_LIQUID, 0x100),
|
||||
|
||||
/* Oil in subtropic */
|
||||
MK( 3, 'OIL_', 174, 16, 4892, 25, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL,
|
||||
SPR_CARGO_OIL, CC_LIQUID, 0x100),
|
||||
|
||||
MK( 4, 'LVST', 208, 3, 4322, 4, 18, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_LIVESTOCK, STR_CARGO_SINGULAR_LIVESTOCK, STR_ITEMS, STR_QUANTITY_LIVESTOCK, STR_ABBREV_LIVESTOCK,
|
||||
SPR_CARGO_LIVESTOCK, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 5, 'GOOD', 194, 8, 6144, 5, 28, true, TE_GOODS,
|
||||
STR_CARGO_PLURAL_GOODS, STR_CARGO_SINGULAR_GOODS, STR_CRATES, STR_QUANTITY_GOODS, STR_ABBREV_GOODS,
|
||||
SPR_CARGO_GOODS, CC_EXPRESS, 0x200),
|
||||
|
||||
MK( 6, 'GRAI', 191, 16, 4778, 4, 40, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_GRAIN, STR_CARGO_SINGULAR_GRAIN, STR_TONS, STR_QUANTITY_GRAIN, STR_ABBREV_GRAIN,
|
||||
SPR_CARGO_GRAIN, CC_BULK, 0x100),
|
||||
|
||||
MK( 6, 'WHEA', 191, 16, 4778, 4, 40, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_WHEAT, STR_CARGO_SINGULAR_WHEAT, STR_TONS, STR_QUANTITY_WHEAT, STR_ABBREV_WHEAT,
|
||||
SPR_CARGO_GRAIN, CC_BULK, 0x100),
|
||||
|
||||
MK( 6, 'MAIZ', 191, 16, 4322, 4, 40, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_MAIZE, STR_CARGO_SINGULAR_MAIZE, STR_TONS, STR_QUANTITY_MAIZE, STR_ABBREV_MAIZE,
|
||||
SPR_CARGO_GRAIN, CC_BULK, 0x100),
|
||||
|
||||
/* Wood in temperate and arctic */
|
||||
MK( 7, 'WOOD', 84, 16, 5005, 15, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD,
|
||||
SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
/* Wood in subtropic */
|
||||
MK( 7, 'WOOD', 84, 16, 7964, 15, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD,
|
||||
SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 8, 'IORE', 184, 16, 5120, 9, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_IRON_ORE, STR_CARGO_SINGULAR_IRON_ORE, STR_TONS, STR_QUANTITY_IRON_ORE, STR_ABBREV_IRON_ORE,
|
||||
SPR_CARGO_IRON_ORE, CC_BULK, 0x100),
|
||||
|
||||
MK( 9, 'STEL', 10, 16, 5688, 7, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_STEEL, STR_CARGO_SINGULAR_STEEL, STR_TONS, STR_QUANTITY_STEEL, STR_ABBREV_STEEL,
|
||||
SPR_CARGO_STEEL, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 10, 'VALU', 202, 2, 7509, 1, 32, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_VALUABLES, STR_CARGO_SINGULAR_VALUABLES, STR_BAGS, STR_QUANTITY_VALUABLES, STR_ABBREV_VALUABLES,
|
||||
SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100),
|
||||
|
||||
MK( 10, 'GOLD', 202, 8, 5802, 10, 40, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_GOLD, STR_CARGO_SINGULAR_GOLD, STR_BAGS, STR_QUANTITY_GOLD, STR_ABBREV_GOLD,
|
||||
SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100),
|
||||
|
||||
MK( 10, 'DIAM', 202, 2, 5802, 10, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_DIAMONDS, STR_CARGO_SINGULAR_DIAMOND, STR_BAGS, STR_QUANTITY_DIAMONDS, STR_ABBREV_DIAMONDS,
|
||||
SPR_CARGO_DIAMONDS, CC_ARMOURED, 0x100),
|
||||
|
||||
MK( 11, 'PAPR', 10, 16, 5461, 7, 60, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_PAPER, STR_CARGO_SINGULAR_PAPER, STR_TONS, STR_QUANTITY_PAPER, STR_ABBREV_PAPER,
|
||||
SPR_CARGO_PAPER, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 12, 'FOOD', 48, 16, 5688, 0, 30, true, TE_FOOD,
|
||||
STR_CARGO_PLURAL_FOOD, STR_CARGO_SINGULAR_FOOD, STR_TONS, STR_QUANTITY_FOOD, STR_ABBREV_FOOD,
|
||||
SPR_CARGO_FOOD, CC_EXPRESS | CC_REFRIGERATED, 0x100),
|
||||
|
||||
MK( 13, 'FRUT', 208, 16, 4209, 0, 15, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_FRUIT, STR_CARGO_SINGULAR_FRUIT, STR_TONS, STR_QUANTITY_FRUIT, STR_ABBREV_FRUIT,
|
||||
SPR_CARGO_FRUIT, CC_BULK | CC_REFRIGERATED, 0x100),
|
||||
|
||||
MK( 14, 'CORE', 184, 16, 4892, 12, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_COPPER_ORE, STR_CARGO_SINGULAR_COPPER_ORE, STR_TONS, STR_QUANTITY_COPPER_ORE, STR_ABBREV_COPPER_ORE,
|
||||
SPR_CARGO_COPPER_ORE, CC_BULK, 0x100),
|
||||
|
||||
MK( 15, 'WATR', 10, 16, 4664, 20, 80, true, TE_WATER,
|
||||
STR_CARGO_PLURAL_WATER, STR_CARGO_SINGULAR_WATER, STR_LITERS, STR_QUANTITY_WATER, STR_ABBREV_WATER,
|
||||
SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100),
|
||||
|
||||
MK( 16, 'RUBR', 6, 16, 4437, 2, 20, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_RUBBER, STR_CARGO_SINGULAR_RUBBER, STR_LITERS, STR_QUANTITY_RUBBER, STR_ABBREV_RUBBER,
|
||||
SPR_CARGO_RUBBER, CC_LIQUID, 0x100),
|
||||
|
||||
MK( 17, 'SUGR', 6, 16, 4437, 20, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_SUGAR, STR_CARGO_SINGULAR_SUGAR, STR_TONS, STR_QUANTITY_SUGAR, STR_ABBREV_SUGAR,
|
||||
SPR_CARGO_SUGAR, CC_BULK, 0x100),
|
||||
|
||||
MK( 18, 'TOYS', 174, 2, 5574, 25, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_TOYS, STR_CARGO_SINGULAR_TOY, STR_ITEMS, STR_QUANTITY_TOYS, STR_ABBREV_TOYS,
|
||||
SPR_CARGO_TOYS, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 19, 'BATT', 208, 4, 4322, 2, 30, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_BATTERIES, STR_CARGO_SINGULAR_BATTERY, STR_ITEMS, STR_QUANTITY_BATTERIES, STR_ABBREV_BATTERIES,
|
||||
SPR_CARGO_BATTERIES, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 20, 'SWET', 194, 5, 6144, 8, 40, true, TE_GOODS,
|
||||
STR_CARGO_PLURAL_CANDY, STR_CARGO_SINGULAR_CANDY, STR_BAGS, STR_QUANTITY_SWEETS, STR_ABBREV_SWEETS,
|
||||
SPR_CARGO_CANDY, CC_EXPRESS, 0x200),
|
||||
|
||||
MK( 21, 'TOFF', 191, 16, 4778, 14, 60, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_TOFFEE, STR_CARGO_SINGULAR_TOFFEE, STR_TONS, STR_QUANTITY_TOFFEE, STR_ABBREV_TOFFEE,
|
||||
SPR_CARGO_TOFFEE, CC_BULK, 0x100),
|
||||
|
||||
MK( 22, 'COLA', 84, 16, 4892, 5, 75, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_COLA, STR_CARGO_SINGULAR_COLA, STR_LITERS, STR_QUANTITY_COLA, STR_ABBREV_COLA,
|
||||
SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100),
|
||||
|
||||
MK( 23, 'CTCD', 184, 16, 5005, 10, 25, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_COTTON_CANDY, STR_CARGO_SINGULAR_COTTON_CANDY, STR_TONS, STR_QUANTITY_CANDYFLOSS, STR_ABBREV_CANDYFLOSS,
|
||||
SPR_CARGO_COTTONCANDY, CC_BULK, 0x100),
|
||||
|
||||
MK( 24, 'BUBL', 10, 1, 5077, 20, 80, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_BUBBLES, STR_CARGO_SINGULAR_BUBBLE, STR_ITEMS, STR_QUANTITY_BUBBLES, STR_ABBREV_BUBBLES,
|
||||
SPR_CARGO_BUBBLES, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
MK( 25, 'PLST', 202, 16, 4664, 30, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_PLASTIC, STR_CARGO_SINGULAR_PLASTIC, STR_LITERS, STR_QUANTITY_PLASTIC, STR_ABBREV_PLASTIC,
|
||||
SPR_CARGO_PLASTIC, CC_LIQUID, 0x100),
|
||||
|
||||
MK( 26, 'FZDR', 48, 2, 6250, 30, 50, true, TE_FOOD,
|
||||
STR_CARGO_PLURAL_FIZZY_DRINKS, STR_CARGO_SINGULAR_FIZZY_DRINK, STR_ITEMS, STR_QUANTITY_FIZZY_DRINKS, STR_ABBREV_FIZZY_DRINKS,
|
||||
SPR_CARGO_FIZZYDRINK, CC_PIECE_GOODS, 0x100),
|
||||
|
||||
/* Void slot in temperate */
|
||||
MK( 0xFF, 0, 1, 0, 5688, 0, 30, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING,
|
||||
SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100),
|
||||
|
||||
/* Void slot in arctic */
|
||||
MK( 0xFF, 0, 184, 0, 5120, 9, 255, true, TE_NONE,
|
||||
STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING,
|
||||
SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100),
|
||||
|
||||
};
|
||||
|
||||
|
||||
/** Table of cargo types available in each climate, by default */
|
||||
static const CargoLabel _default_climate_cargo[NUM_LANDSCAPE][12] = {
|
||||
{ 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'GRAI', 'WOOD', 'IORE', 'STEL', 'VALU', 33, },
|
||||
{ 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'WHEA', 'WOOD', 34, 'PAPR', 'GOLD', 'FOOD', },
|
||||
{ 'PASS', 'RUBR', 'MAIL', 4, 'FRUT', 'GOOD', 'MAIZ', 11, 'CORE', 'WATR', 'DIAM', 'FOOD', },
|
||||
{ 'PASS', 'SUGR', 'MAIL', 'TOYS', 'BATT', 'SWET', 'TOFF', 'COLA', 'CTCD', 'BUBL', 'PLST', 'FZDR', },
|
||||
};
|
||||
|
||||
78
src/table/clear_land.h
Normal file
78
src/table/clear_land.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file clear_land.h Tables with sprites for clear land and fences. */
|
||||
|
||||
static const SpriteID _landscape_clear_sprites_rough[8] = {
|
||||
SPR_FLAT_ROUGH_LAND,
|
||||
SPR_FLAT_ROUGH_LAND_1,
|
||||
SPR_FLAT_ROUGH_LAND_2,
|
||||
SPR_FLAT_ROUGH_LAND_3,
|
||||
SPR_FLAT_ROUGH_LAND_4,
|
||||
SPR_FLAT_ROUGH_LAND,
|
||||
SPR_FLAT_ROUGH_LAND_1,
|
||||
SPR_FLAT_ROUGH_LAND_2,
|
||||
};
|
||||
|
||||
static const byte _fence_mod_by_tileh_sw[32] = {
|
||||
0, 2, 4, 0, 0, 2, 4, 0,
|
||||
0, 2, 4, 0, 0, 2, 4, 0,
|
||||
0, 2, 4, 0, 0, 2, 4, 4,
|
||||
0, 2, 4, 2, 0, 2, 4, 0,
|
||||
};
|
||||
|
||||
static const byte _fence_mod_by_tileh_se[32] = {
|
||||
1, 1, 5, 5, 3, 3, 1, 1,
|
||||
1, 1, 5, 5, 3, 3, 1, 1,
|
||||
1, 1, 5, 5, 3, 3, 1, 5,
|
||||
1, 1, 5, 5, 3, 3, 3, 1,
|
||||
};
|
||||
|
||||
static const byte _fence_mod_by_tileh_ne[32] = {
|
||||
0, 0, 0, 0, 4, 4, 4, 4,
|
||||
2, 2, 2, 2, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 4, 4, 4,
|
||||
2, 2, 2, 2, 0, 2, 4, 0,
|
||||
};
|
||||
|
||||
static const byte _fence_mod_by_tileh_nw[32] = {
|
||||
1, 5, 1, 5, 1, 5, 1, 5,
|
||||
3, 1, 3, 1, 3, 1, 3, 1,
|
||||
1, 5, 1, 5, 1, 5, 1, 5,
|
||||
3, 1, 3, 5, 3, 3, 3, 1,
|
||||
};
|
||||
|
||||
|
||||
static const SpriteID _clear_land_fence_sprites[7] = {
|
||||
SPR_HEDGE_BUSHES,
|
||||
SPR_HEDGE_BUSHES_WITH_GATE,
|
||||
SPR_HEDGE_FENCE,
|
||||
SPR_HEDGE_BLOOMBUSH_YELLOW,
|
||||
SPR_HEDGE_BLOOMBUSH_RED,
|
||||
SPR_HEDGE_STONE,
|
||||
};
|
||||
|
||||
static const SpriteID _clear_land_sprites_farmland[16] = {
|
||||
SPR_FARMLAND_BARE,
|
||||
SPR_FARMLAND_STATE_1,
|
||||
SPR_FARMLAND_STATE_2,
|
||||
SPR_FARMLAND_STATE_3,
|
||||
SPR_FARMLAND_STATE_4,
|
||||
SPR_FARMLAND_STATE_5,
|
||||
SPR_FARMLAND_STATE_6,
|
||||
SPR_FARMLAND_STATE_7,
|
||||
SPR_FARMLAND_HAYPACKS,
|
||||
};
|
||||
|
||||
static const SpriteID _clear_land_sprites_snow_desert[8] = {
|
||||
SPR_FLAT_1_QUART_SNOW_DESERT_TILE,
|
||||
SPR_FLAT_2_QUART_SNOW_DESERT_TILE,
|
||||
SPR_FLAT_3_QUART_SNOW_DESERT_TILE,
|
||||
SPR_FLAT_SNOW_DESERT_TILE,
|
||||
};
|
||||
139
src/table/company_settings.ini
Normal file
139
src/table/company_settings.ini
Normal file
@@ -0,0 +1,139 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
static bool CheckInterval(int32 p1);
|
||||
static bool InvalidateDetailsWindow(int32 p1);
|
||||
static bool UpdateIntervalTrains(int32 p1);
|
||||
static bool UpdateIntervalRoadVeh(int32 p1);
|
||||
static bool UpdateIntervalShips(int32 p1);
|
||||
static bool UpdateIntervalAircraft(int32 p1);
|
||||
|
||||
static const SettingDesc _company_settings[] = {
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_END = SDT_END()
|
||||
|
||||
[defaults]
|
||||
flags = 0
|
||||
guiflags = SGF_PER_COMPANY
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDT_BOOL]
|
||||
base = CompanySettings
|
||||
var = engine_renew
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_AUTORENEW_VEHICLE
|
||||
strhelp = STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = engine_renew_months
|
||||
type = SLE_INT16
|
||||
guiflags = SGF_PER_COMPANY | SGF_DISPLAY_ABS
|
||||
def = 6
|
||||
min = -12
|
||||
max = 12
|
||||
str = STR_CONFIG_SETTING_AUTORENEW_MONTHS
|
||||
strhelp = STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = engine_renew_money
|
||||
type = SLE_UINT
|
||||
guiflags = SGF_PER_COMPANY | SGF_CURRENCY
|
||||
def = 100000
|
||||
min = 0
|
||||
max = 2000000
|
||||
str = STR_CONFIG_SETTING_AUTORENEW_MONEY
|
||||
strhelp = STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT
|
||||
strval = STR_JUST_CURRENCY_LONG
|
||||
|
||||
[SDT_BOOL]
|
||||
base = CompanySettings
|
||||
var = renew_keep_length
|
||||
def = false
|
||||
|
||||
[SDT_BOOL]
|
||||
base = CompanySettings
|
||||
var = vehicle.servint_ispercent
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_SERVINT_ISPERCENT
|
||||
strhelp = STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT
|
||||
proc = CheckInterval
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = vehicle.servint_trains
|
||||
type = SLE_UINT16
|
||||
guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED
|
||||
def = 150
|
||||
min = 5
|
||||
max = 800
|
||||
str = STR_CONFIG_SETTING_SERVINT_TRAINS
|
||||
strhelp = STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SERVINT_VALUE
|
||||
proc = UpdateIntervalTrains
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = vehicle.servint_roadveh
|
||||
type = SLE_UINT16
|
||||
guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED
|
||||
def = 150
|
||||
min = 5
|
||||
max = 800
|
||||
str = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES
|
||||
strhelp = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SERVINT_VALUE
|
||||
proc = UpdateIntervalRoadVeh
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = vehicle.servint_ships
|
||||
type = SLE_UINT16
|
||||
guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED
|
||||
def = 360
|
||||
min = 5
|
||||
max = 800
|
||||
str = STR_CONFIG_SETTING_SERVINT_SHIPS
|
||||
strhelp = STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SERVINT_VALUE
|
||||
proc = UpdateIntervalShips
|
||||
|
||||
[SDT_VAR]
|
||||
base = CompanySettings
|
||||
var = vehicle.servint_aircraft
|
||||
type = SLE_UINT16
|
||||
guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED
|
||||
def = 100
|
||||
min = 5
|
||||
max = 800
|
||||
str = STR_CONFIG_SETTING_SERVINT_AIRCRAFT
|
||||
strhelp = STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SERVINT_VALUE
|
||||
proc = UpdateIntervalAircraft
|
||||
|
||||
[SDT_END]
|
||||
|
||||
|
||||
};
|
||||
179
src/table/control_codes.h
Normal file
179
src/table/control_codes.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file control_codes.h Control codes that are embedded in the translation strings. */
|
||||
|
||||
#ifndef CONTROL_CODES_H
|
||||
#define CONTROL_CODES_H
|
||||
|
||||
/**
|
||||
* List of string control codes used for string formatting, displaying, and
|
||||
* by strgen to generate the language files.
|
||||
*/
|
||||
enum StringControlCode {
|
||||
SCC_CONTROL_START = 0xE000,
|
||||
SCC_CONTROL_END = 0xE1FF,
|
||||
|
||||
SCC_SPRITE_START = 0xE200,
|
||||
SCC_SPRITE_END = SCC_SPRITE_START + 0xFF,
|
||||
|
||||
/* This must be the first entry. It's encoded in strings that are saved. */
|
||||
SCC_ENCODED = SCC_CONTROL_START,
|
||||
|
||||
/* Font selection codes, must be in same order as FontSize enum */
|
||||
SCC_FIRST_FONT,
|
||||
SCC_NORMALFONT = SCC_FIRST_FONT, ///< Switch to normal size font
|
||||
SCC_TINYFONT, ///< Switch to small font
|
||||
SCC_BIGFONT, ///< Switch to large font
|
||||
SCC_MONOFONT, ///< Switch to monospaced font
|
||||
SCC_LAST_FONT = SCC_MONOFONT,
|
||||
|
||||
/* Formatting control codes */
|
||||
SCC_REVISION,
|
||||
SCC_COMPANY_NUM,
|
||||
SCC_STATION_FEATURES,
|
||||
SCC_INDUSTRY_NAME,
|
||||
SCC_WAYPOINT_NAME,
|
||||
SCC_STATION_NAME,
|
||||
SCC_DEPOT_NAME,
|
||||
SCC_TOWN_NAME,
|
||||
SCC_GROUP_NAME,
|
||||
SCC_VEHICLE_NAME,
|
||||
SCC_SIGN_NAME,
|
||||
SCC_COMPANY_NAME,
|
||||
SCC_PRESIDENT_NAME,
|
||||
SCC_ENGINE_NAME,
|
||||
|
||||
SCC_CURRENCY_SHORT,
|
||||
SCC_CURRENCY_LONG,
|
||||
|
||||
SCC_CARGO_LONG,
|
||||
SCC_CARGO_SHORT,
|
||||
SCC_CARGO_TINY,
|
||||
SCC_CARGO_LIST,
|
||||
SCC_POWER,
|
||||
SCC_VOLUME_LONG,
|
||||
SCC_VOLUME_SHORT,
|
||||
SCC_WEIGHT_LONG,
|
||||
SCC_WEIGHT_SHORT,
|
||||
SCC_FORCE,
|
||||
SCC_VELOCITY,
|
||||
SCC_HEIGHT,
|
||||
|
||||
SCC_DATE_TINY,
|
||||
SCC_DATE_SHORT,
|
||||
SCC_DATE_LONG,
|
||||
SCC_DATE_ISO,
|
||||
|
||||
/* Must be consecutive */
|
||||
SCC_STRING1,
|
||||
SCC_STRING2,
|
||||
SCC_STRING3,
|
||||
SCC_STRING4,
|
||||
SCC_STRING5,
|
||||
SCC_STRING6,
|
||||
SCC_STRING7,
|
||||
|
||||
|
||||
SCC_STRING,
|
||||
SCC_COMMA,
|
||||
SCC_DECIMAL,
|
||||
SCC_NUM,
|
||||
SCC_ZEROFILL_NUM,
|
||||
SCC_HEX,
|
||||
SCC_BYTES,
|
||||
|
||||
SCC_RAW_STRING_POINTER,
|
||||
SCC_PLURAL_LIST,
|
||||
SCC_GENDER_LIST,
|
||||
SCC_GENDER_INDEX,
|
||||
SCC_ARG_INDEX,
|
||||
SCC_SET_CASE,
|
||||
SCC_SWITCH_CASE,
|
||||
|
||||
/* Colour codes */
|
||||
SCC_BLUE,
|
||||
SCC_SILVER,
|
||||
SCC_GOLD,
|
||||
SCC_RED,
|
||||
SCC_PURPLE,
|
||||
SCC_LTBROWN,
|
||||
SCC_ORANGE,
|
||||
SCC_GREEN,
|
||||
SCC_YELLOW,
|
||||
SCC_DKGREEN,
|
||||
SCC_CREAM,
|
||||
SCC_BROWN,
|
||||
SCC_WHITE,
|
||||
SCC_LTBLUE,
|
||||
SCC_GRAY,
|
||||
SCC_DKBLUE,
|
||||
SCC_BLACK,
|
||||
SCC_PUSH_COLOUR,
|
||||
SCC_POP_COLOUR,
|
||||
|
||||
/**
|
||||
* The next variables are part of a NewGRF subsystem for creating text strings.
|
||||
* It uses a "stack" of bytes and reads from there.
|
||||
*/
|
||||
SCC_NEWGRF_FIRST,
|
||||
SCC_NEWGRF_PRINT_DWORD_SIGNED = SCC_NEWGRF_FIRST, ///< 7B: Read 4 bytes from the stack
|
||||
SCC_NEWGRF_PRINT_WORD_SIGNED, ///< 7C: Read 2 bytes from the stack as signed value
|
||||
SCC_NEWGRF_PRINT_BYTE_SIGNED, ///< 7D: Read 1 byte from the stack as signed value
|
||||
SCC_NEWGRF_PRINT_WORD_UNSIGNED, ///< 7E: Read 2 bytes from the stack as unsigned value
|
||||
SCC_NEWGRF_PRINT_DWORD_CURRENCY, ///< 8F: Read 4 bytes from the stack as currency
|
||||
SCC_NEWGRF_PRINT_WORD_STRING_ID, ///< 81: Read 2 bytes from the stack as String ID
|
||||
SCC_NEWGRF_PRINT_WORD_DATE_LONG, ///< 82: Read 2 bytes from the stack as base 1920 date
|
||||
SCC_NEWGRF_PRINT_WORD_DATE_SHORT, ///< 83: Read 2 bytes from the stack as base 1920 date
|
||||
SCC_NEWGRF_PRINT_WORD_SPEED, ///< 84: Read 2 bytes from the stack as signed speed
|
||||
SCC_NEWGRF_PRINT_WORD_VOLUME_LONG, ///< 87: Read 2 bytes from the stack as long signed volume
|
||||
SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG, ///< 9A 0D: Read 2 bytes from the stack as long unsigned weight
|
||||
SCC_NEWGRF_PRINT_WORD_STATION_NAME, ///< 9A 0C: Read 2 bytes from the stack as station name
|
||||
SCC_NEWGRF_PRINT_QWORD_CURRENCY, ///< 9A 01: Read 8 bytes from the stack as currency
|
||||
SCC_NEWGRF_PRINT_BYTE_HEX, ///< 9A 06: Read 1 byte from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_WORD_HEX, ///< 9A 07: Read 2 bytes from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_DWORD_HEX, ///< 9A 08: Read 4 bytes from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_QWORD_HEX, ///< 9A 0B: Read 8 bytes from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_DWORD_DATE_LONG, ///< 9A 16: Read 4 bytes from the stack as base 0 date
|
||||
SCC_NEWGRF_PRINT_DWORD_DATE_SHORT, ///< 9A 17: Read 4 bytes from the stack as base 0 date
|
||||
SCC_NEWGRF_PRINT_WORD_POWER, ///< 9A 18: Read 2 bytes from the stack as unsigned power
|
||||
SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT, ///< 9A 19: Read 2 bytes from the stack as short signed volume
|
||||
SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT, ///< 9A 1A: Read 2 bytes from the stack as short unsigned weight
|
||||
SCC_NEWGRF_PRINT_WORD_CARGO_LONG, ///< 9A 1B: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
|
||||
SCC_NEWGRF_PRINT_WORD_CARGO_SHORT, ///< 9A 1C: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
|
||||
SCC_NEWGRF_PRINT_WORD_CARGO_TINY, ///< 9A 1D: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
|
||||
SCC_NEWGRF_PRINT_WORD_CARGO_NAME, ///< 9A 1E: Read 2 bytes from the stack as cargo name
|
||||
SCC_NEWGRF_PUSH_WORD, ///< 9A 03: Pushes 2 bytes onto the stack
|
||||
SCC_NEWGRF_UNPRINT, ///< 9A 04: "Unprints" the given number of bytes from the string
|
||||
SCC_NEWGRF_DISCARD_WORD, ///< 85: Discard the next two bytes
|
||||
SCC_NEWGRF_ROTATE_TOP_4_WORDS, ///< 86: Rotate the top 4 words of the stack (W4 W1 W2 W3)
|
||||
SCC_NEWGRF_LAST = SCC_NEWGRF_ROTATE_TOP_4_WORDS,
|
||||
|
||||
SCC_NEWGRF_STRINL, ///< Inline another string at the current position, StringID is encoded in the string
|
||||
|
||||
/* Special printable symbols.
|
||||
* These are mapped to the original glyphs */
|
||||
SCC_LESS_THAN = SCC_SPRITE_START + 0x3C,
|
||||
SCC_GREATER_THAN = SCC_SPRITE_START + 0x3E,
|
||||
SCC_UP_ARROW = SCC_SPRITE_START + 0xA0,
|
||||
SCC_DOWN_ARROW = SCC_SPRITE_START + 0xAA,
|
||||
SCC_CHECKMARK = SCC_SPRITE_START + 0xAC,
|
||||
SCC_CROSS = SCC_SPRITE_START + 0xAD,
|
||||
SCC_RIGHT_ARROW = SCC_SPRITE_START + 0xAF,
|
||||
SCC_TRAIN = SCC_SPRITE_START + 0xB4,
|
||||
SCC_LORRY = SCC_SPRITE_START + 0xB5,
|
||||
SCC_BUS = SCC_SPRITE_START + 0xB6,
|
||||
SCC_PLANE = SCC_SPRITE_START + 0xB7,
|
||||
SCC_SHIP = SCC_SPRITE_START + 0xB8,
|
||||
SCC_SUPERSCRIPT_M1 = SCC_SPRITE_START + 0xB9,
|
||||
SCC_SMALL_UP_ARROW = SCC_SPRITE_START + 0xBC,
|
||||
SCC_SMALL_DOWN_ARROW = SCC_SPRITE_START + 0xBD,
|
||||
};
|
||||
|
||||
#endif /* CONTROL_CODES_H */
|
||||
69
src/table/currency_settings.ini
Normal file
69
src/table/currency_settings.ini
Normal file
@@ -0,0 +1,69 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
static const SettingDesc _currency_settings[] = {
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_CHR = SDT_CHR($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_END = SDT_END()
|
||||
|
||||
[defaults]
|
||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||
guiflags = 0
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDT_VAR]
|
||||
base = CurrencySpec
|
||||
var = rate
|
||||
type = SLE_UINT16
|
||||
def = 1
|
||||
min = 0
|
||||
max = UINT16_MAX
|
||||
|
||||
[SDT_CHR]
|
||||
base = CurrencySpec
|
||||
var = separator
|
||||
def = "".""
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_VAR]
|
||||
base = CurrencySpec
|
||||
var = to_euro
|
||||
type = SLE_INT32
|
||||
def = 0
|
||||
min = MIN_YEAR
|
||||
max = MAX_YEAR
|
||||
|
||||
[SDT_STR]
|
||||
base = CurrencySpec
|
||||
var = prefix
|
||||
type = SLE_STRBQ
|
||||
def = NULL
|
||||
|
||||
[SDT_STR]
|
||||
base = CurrencySpec
|
||||
var = suffix
|
||||
type = SLE_STRBQ
|
||||
def = "" credits""
|
||||
|
||||
[SDT_END]
|
||||
|
||||
513
src/table/elrail_data.h
Normal file
513
src/table/elrail_data.h
Normal file
@@ -0,0 +1,513 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file elrail_data.h Stores all the data for overhead wire and pylon drawing.
|
||||
* @see elrail.c
|
||||
*/
|
||||
|
||||
#ifndef ELRAIL_DATA_H
|
||||
#define ELRAIL_DATA_H
|
||||
|
||||
/**
|
||||
* Tile Location group.
|
||||
* This defines whether the X and or Y coordinate of a tile is even
|
||||
*/
|
||||
enum TLG {
|
||||
XEVEN_YEVEN = 0,
|
||||
XEVEN_YODD = 1,
|
||||
XODD_YEVEN = 2,
|
||||
XODD_YODD = 3,
|
||||
TLG_END
|
||||
};
|
||||
|
||||
/**
|
||||
* When determining the pylon configuration on the edge, two tiles are taken
|
||||
* into account: the tile being drawn itself (the home tile, the one in
|
||||
* ti->tile), and the neighbouring tile
|
||||
*/
|
||||
enum TileSource {
|
||||
TS_HOME = 0,
|
||||
TS_NEIGHBOUR = 1,
|
||||
|
||||
TS_END
|
||||
};
|
||||
|
||||
static const uint NUM_TRACKS_AT_PCP = 6;
|
||||
|
||||
/** Which PPPs are possible at all on a given PCP */
|
||||
static const byte AllowedPPPonPCP[DIAGDIR_END] = {
|
||||
1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
|
||||
1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
|
||||
1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
|
||||
1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
|
||||
};
|
||||
|
||||
/**
|
||||
* Which of the PPPs are inside the tile. For the two PPPs on the tile border
|
||||
* the following system is used: if you rotate the PCP so that it is in the
|
||||
* north, the eastern PPP belongs to the tile.
|
||||
*/
|
||||
static const byte OwnedPPPonPCP[DIAGDIR_END] = {
|
||||
1 << DIR_SE | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
|
||||
1 << DIR_N | 1 << DIR_SW | 1 << DIR_W | 1 << DIR_NW,
|
||||
1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_NW,
|
||||
1 << DIR_NE | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S
|
||||
};
|
||||
|
||||
/** Maps a track bit onto two PCP positions */
|
||||
static const DiagDirection PCPpositions[TRACK_END][2] = {
|
||||
{DIAGDIR_NE, DIAGDIR_SW}, // X
|
||||
{DIAGDIR_SE, DIAGDIR_NW}, // Y
|
||||
{DIAGDIR_NW, DIAGDIR_NE}, // UPPER
|
||||
{DIAGDIR_SE, DIAGDIR_SW}, // LOWER
|
||||
{DIAGDIR_SW, DIAGDIR_NW}, // LEFT
|
||||
{DIAGDIR_NE, DIAGDIR_SE}, // RIGHT
|
||||
};
|
||||
|
||||
#define PCP_NOT_ON_TRACK 0xFF
|
||||
/**
|
||||
* Preferred points of each trackbit. Those are the ones perpendicular to the
|
||||
* track, plus the point in extension of the track (to mark end-of-track). PCPs
|
||||
* which are not on either end of the track are fully preferred.
|
||||
* @see PCPpositions
|
||||
*/
|
||||
static const byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
|
||||
{ // X
|
||||
1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW, // NE
|
||||
PCP_NOT_ON_TRACK, // SE
|
||||
1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW, // SW
|
||||
PCP_NOT_ON_TRACK // NE
|
||||
}, { // Y
|
||||
PCP_NOT_ON_TRACK,
|
||||
1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW,
|
||||
PCP_NOT_ON_TRACK,
|
||||
1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE
|
||||
}, { // UPPER
|
||||
1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
|
||||
PCP_NOT_ON_TRACK,
|
||||
PCP_NOT_ON_TRACK,
|
||||
1 << DIR_W | 1 << DIR_N | 1 << DIR_S
|
||||
}, { // LOWER
|
||||
PCP_NOT_ON_TRACK,
|
||||
1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
|
||||
1 << DIR_W | 1 << DIR_N | 1 << DIR_S,
|
||||
PCP_NOT_ON_TRACK
|
||||
}, { // LEFT
|
||||
PCP_NOT_ON_TRACK,
|
||||
PCP_NOT_ON_TRACK,
|
||||
1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
|
||||
1 << DIR_N | 1 << DIR_E | 1 << DIR_W
|
||||
}, { // RIGHT
|
||||
1 << DIR_N | 1 << DIR_E | 1 << DIR_W,
|
||||
1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
|
||||
PCP_NOT_ON_TRACK,
|
||||
PCP_NOT_ON_TRACK
|
||||
}
|
||||
};
|
||||
#undef PCP_NOT_ON_TRACK
|
||||
|
||||
|
||||
#define NUM_IGNORE_GROUPS 3
|
||||
#define IGNORE_NONE 0xFF
|
||||
/**
|
||||
* In case we have a straight line, we place pylon only every two tiles,
|
||||
* so there are certain tiles which we ignore. A straight line is found if
|
||||
* we have exactly two PPPs.
|
||||
*/
|
||||
static const byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = {
|
||||
{ // Ignore group 1, X and Y tracks
|
||||
{ // X even, Y even
|
||||
IGNORE_NONE,
|
||||
1 << DIR_NE | 1 << DIR_SW,
|
||||
1 << DIR_NW | 1 << DIR_SE,
|
||||
IGNORE_NONE
|
||||
}, { // X even, Y odd
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_NW | 1 << DIR_SE,
|
||||
1 << DIR_NE | 1 << DIR_SW
|
||||
}, { // X odd, Y even
|
||||
1 << DIR_NW | 1 << DIR_SE,
|
||||
1 << DIR_NE | 1 << DIR_SW,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE
|
||||
}, { // X odd, Y odd
|
||||
1 << DIR_NW | 1 << DIR_SE,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_NE | 1 << DIR_SW
|
||||
}
|
||||
},
|
||||
{ // Ignore group 2, LEFT and RIGHT tracks
|
||||
{
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_E | 1 << DIR_W
|
||||
}, {
|
||||
IGNORE_NONE,
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
IGNORE_NONE
|
||||
}, {
|
||||
IGNORE_NONE,
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
IGNORE_NONE
|
||||
}, {
|
||||
1 << DIR_E | 1 << DIR_W,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_E | 1 << DIR_W
|
||||
}
|
||||
},
|
||||
{ // Ignore group 3, UPPER and LOWER tracks
|
||||
{
|
||||
1 << DIR_N | 1 << DIR_S,
|
||||
1 << DIR_N | 1 << DIR_S,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE
|
||||
}, {
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_N | 1 << DIR_S,
|
||||
1 << DIR_N | 1 << DIR_S
|
||||
}, {
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE,
|
||||
1 << DIR_N | 1 << DIR_S ,
|
||||
1 << DIR_N | 1 << DIR_S
|
||||
}, {
|
||||
1 << DIR_N | 1 << DIR_S,
|
||||
1 << DIR_N | 1 << DIR_S,
|
||||
IGNORE_NONE,
|
||||
IGNORE_NONE
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#undef NO_IGNORE
|
||||
|
||||
/** Which pylons can definitely NOT be built */
|
||||
static const byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
|
||||
{1 << DIR_SW | 1 << DIR_NE, 0, 1 << DIR_SW | 1 << DIR_NE, 0 }, // X
|
||||
{0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE}, // Y
|
||||
{1 << DIR_W | 1 << DIR_E, 0, 0, 1 << DIR_W | 1 << DIR_E }, // UPPER
|
||||
{0, 1 << DIR_W | 1 << DIR_E, 1 << DIR_W | 1 << DIR_E, 0 }, // LOWER
|
||||
{0, 0, 1 << DIR_S | 1 << DIR_N, 1 << DIR_N | 1 << DIR_S }, // LEFT
|
||||
{1 << DIR_S | 1 << DIR_N, 1 << DIR_S | 1 << DIR_N, 0, 0, }, // RIGHT
|
||||
};
|
||||
|
||||
/* This array stores which track bits can meet at a tile edge */
|
||||
static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
|
||||
{TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
|
||||
{TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
|
||||
{TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
|
||||
{TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
|
||||
};
|
||||
|
||||
/* takes each of the 6 track bits from the array above and
|
||||
* assigns it to the home tile or neighbour tile */
|
||||
static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
|
||||
{TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME },
|
||||
{TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME },
|
||||
{TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_HOME , TS_NEIGHBOUR},
|
||||
{TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR},
|
||||
};
|
||||
|
||||
/* Several PPPs maybe exist, here they are sorted in order of preference. */
|
||||
static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = { // X - Y
|
||||
{ // PCP 0
|
||||
{DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - evn
|
||||
{DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - odd
|
||||
{DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - evn
|
||||
{DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - odd
|
||||
}, {// PCP 1
|
||||
{DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - evn
|
||||
{DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - odd
|
||||
{DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - evn
|
||||
{DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - odd
|
||||
}, {// PCP 2
|
||||
{DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - evn
|
||||
{DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - odd
|
||||
{DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - evn
|
||||
{DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - odd
|
||||
}, {// PCP 3
|
||||
{DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - evn
|
||||
{DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - odd
|
||||
{DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - evn
|
||||
{DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - odd
|
||||
}
|
||||
};
|
||||
/* Geometric placement of the PCP relative to the tile origin */
|
||||
static const int8 x_pcp_offsets[DIAGDIR_END] = {0, 8, 16, 8};
|
||||
static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 16, 8, 0};
|
||||
/* Geometric placement of the PPP relative to the PCP*/
|
||||
static const int8 x_ppp_offsets[DIR_END] = {-2, -4, -2, 0, 2, 4, 2, 0};
|
||||
static const int8 y_ppp_offsets[DIR_END] = {-2, 0, 2, 4, 2, 0, -2, -4};
|
||||
|
||||
/**
|
||||
* Offset for pylon sprites from the base pylon sprite.
|
||||
*/
|
||||
enum PylonSpriteOffset {
|
||||
PSO_Y_NE,
|
||||
PSO_Y_SW,
|
||||
PSO_X_NW,
|
||||
PSO_X_SE,
|
||||
PSO_EW_N,
|
||||
PSO_EW_S,
|
||||
PSO_NS_W,
|
||||
PSO_NS_E,
|
||||
};
|
||||
|
||||
/* The type of pylon to draw at each PPP */
|
||||
static const uint8 pylon_sprites[] = {
|
||||
PSO_EW_N,
|
||||
PSO_Y_NE,
|
||||
PSO_NS_E,
|
||||
PSO_X_SE,
|
||||
PSO_EW_S,
|
||||
PSO_Y_SW,
|
||||
PSO_NS_W,
|
||||
PSO_X_NW,
|
||||
};
|
||||
|
||||
/**
|
||||
* Offset for wire sprites from the base wire sprite.
|
||||
*/
|
||||
enum WireSpriteOffset {
|
||||
WSO_X_SHORT,
|
||||
WSO_Y_SHORT,
|
||||
WSO_EW_SHORT,
|
||||
WSO_NS_SHORT,
|
||||
WSO_X_SHORT_DOWN,
|
||||
WSO_Y_SHORT_UP,
|
||||
WSO_X_SHORT_UP,
|
||||
WSO_Y_SHORT_DOWN,
|
||||
|
||||
WSO_X_SW,
|
||||
WSO_Y_SE,
|
||||
WSO_EW_E,
|
||||
WSO_NS_S,
|
||||
WSO_X_SW_DOWN,
|
||||
WSO_Y_SE_UP,
|
||||
WSO_X_SW_UP,
|
||||
WSO_Y_SE_DOWN,
|
||||
|
||||
WSO_X_NE,
|
||||
WSO_Y_NW,
|
||||
WSO_EW_W,
|
||||
WSO_NS_N,
|
||||
WSO_X_NE_DOWN,
|
||||
WSO_Y_NW_UP,
|
||||
WSO_X_NE_UP,
|
||||
WSO_Y_NW_DOWN,
|
||||
|
||||
WSO_ENTRANCE_SW,
|
||||
WSO_ENTRANCE_NW,
|
||||
WSO_ENTRANCE_NE,
|
||||
WSO_ENTRANCE_SE,
|
||||
};
|
||||
|
||||
struct SortableSpriteStruct {
|
||||
uint8 image_offset;
|
||||
int8 x_offset;
|
||||
int8 y_offset;
|
||||
int8 x_size;
|
||||
int8 y_size;
|
||||
int8 z_size;
|
||||
int8 z_offset;
|
||||
};
|
||||
|
||||
/** Distance between wire and rail */
|
||||
static const uint ELRAIL_ELEVATION = 10;
|
||||
/** Wires that a draw one level higher than the north corner. */
|
||||
static const uint ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT;
|
||||
|
||||
static const SortableSpriteStruct RailCatenarySpriteData[] = {
|
||||
/* X direction
|
||||
* Flat tiles:
|
||||
* Wires */
|
||||
{ WSO_X_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 0: Wire in X direction, pylon on the SW end only
|
||||
{ WSO_X_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 1: Wire in X direction, pylon on the NE end
|
||||
{ WSO_X_SHORT, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 2: Wire in X direction, pylon on both ends
|
||||
|
||||
/* "up" tiles
|
||||
* Wires */
|
||||
{ WSO_X_SW_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 3: Wire in X pitch up, pylon on the SW end only
|
||||
{ WSO_X_NE_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 4: Wire in X pitch up, pylon on the NE end
|
||||
{ WSO_X_SHORT_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 5: Wire in X pitch up, pylon on both ends
|
||||
|
||||
/* "down" tiles
|
||||
* Wires */
|
||||
{ WSO_X_SW_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 6: Wire in X pitch down, pylon on the SW end
|
||||
{ WSO_X_NE_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 7: Wire in X pitch down, pylon on the NE end
|
||||
{ WSO_X_SHORT_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 8: Wire in X pitch down, pylon on both ends
|
||||
|
||||
|
||||
/* Y direction
|
||||
* Flat tiles:
|
||||
* Wires */
|
||||
{ WSO_Y_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! 9: Wire in Y direction, pylon on the SE end only
|
||||
{ WSO_Y_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //!10: Wire in Y direction, pylon on the NW end
|
||||
{ WSO_Y_SHORT, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //!11: Wire in Y direction, pylon on both ends
|
||||
|
||||
/* "up" tiles
|
||||
* Wires */
|
||||
{ WSO_Y_SE_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!12: Wire in Y pitch up, pylon on the SE end only
|
||||
{ WSO_Y_NW_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!13: Wire in Y pitch up, pylon on the NW end
|
||||
{ WSO_Y_SHORT_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!14: Wire in Y pitch up, pylon on both ends
|
||||
|
||||
/* "down" tiles
|
||||
* Wires */
|
||||
{ WSO_Y_SE_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!15: Wire in Y pitch down, pylon on the SE end
|
||||
{ WSO_Y_NW_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!16: Wire in Y pitch down, pylon on the NW end
|
||||
{ WSO_Y_SHORT_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!17: Wire in Y pitch down, pylon on both ends
|
||||
|
||||
/* NS Direction */
|
||||
{ WSO_NS_SHORT, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!18: LEFT trackbit wire, pylon on both ends
|
||||
{ WSO_NS_SHORT, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!19: RIGHT trackbit wire, pylon on both ends
|
||||
|
||||
{ WSO_NS_N, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!20: LEFT trackbit wire, pylon on N end
|
||||
{ WSO_NS_N, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!21: RIGHT trackbit wire, pylon on N end
|
||||
|
||||
{ WSO_NS_S, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!22: LEFT trackbit wire, pylon on S end
|
||||
{ WSO_NS_S, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!23: RIGHT trackbit wire, pylon on S end
|
||||
|
||||
/* EW Direction */
|
||||
{ WSO_EW_SHORT, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!24: UPPER trackbit wire, pylon on both ends
|
||||
{ WSO_EW_SHORT, 15, 8, 3, 3, 1, ELRAIL_ELEVATION }, //!25: LOWER trackbit wire, pylon on both ends
|
||||
|
||||
{ WSO_EW_W, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!28: UPPER trackbit wire, pylon on both ends
|
||||
{ WSO_EW_W, 15, 8, 3, 3, 1, ELRAIL_ELEVATION }, //!29: LOWER trackbit wire, pylon on both ends
|
||||
|
||||
{ WSO_EW_E, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!32: UPPER trackbit wire, pylon on both ends
|
||||
{ WSO_EW_E, 15, 8, 3, 3, 1, ELRAIL_ELEVATION } //!33: LOWER trackbit wire, pylon on both ends
|
||||
};
|
||||
|
||||
static const SortableSpriteStruct RailCatenarySpriteData_Depot[] = {
|
||||
{ WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE depot exit
|
||||
{ WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE depot exit
|
||||
{ WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW depot exit
|
||||
{ WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW depot exit
|
||||
};
|
||||
|
||||
static const SortableSpriteStruct RailCatenarySpriteData_Tunnel[] = {
|
||||
{ WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel (SW facing exit)
|
||||
{ WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel (NW facing exit)
|
||||
{ WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel (NE facing exit)
|
||||
{ WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel (SE facing exit)
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Refers to a certain element of the catenary.
|
||||
* Identifiers for Wires:
|
||||
* <ol><li>Direction of the wire</li>
|
||||
* <li>Slope of the tile for diagonals, placement inside the track for horiz/vertical pieces</li>
|
||||
* <li>Place where a pylon shoule be</li></ol>
|
||||
* Identifiers for Pylons:
|
||||
* <ol><li>Direction of the wire</li>
|
||||
* <li>Slope of the tile</li>
|
||||
* <li>Position of the Pylon relative to the track</li>
|
||||
* <li>Position of the Pylon inside the tile</li></ol>
|
||||
*/
|
||||
enum RailCatenarySprite {
|
||||
WIRE_X_FLAT_SW,
|
||||
WIRE_X_FLAT_NE,
|
||||
WIRE_X_FLAT_BOTH,
|
||||
|
||||
WIRE_X_UP_SW,
|
||||
WIRE_X_UP_NE,
|
||||
WIRE_X_UP_BOTH,
|
||||
|
||||
WIRE_X_DOWN_SW,
|
||||
WIRE_X_DOWN_NE,
|
||||
WIRE_X_DOWN_BOTH,
|
||||
|
||||
WIRE_Y_FLAT_SE,
|
||||
WIRE_Y_FLAT_NW,
|
||||
WIRE_Y_FLAT_BOTH,
|
||||
|
||||
WIRE_Y_UP_SE,
|
||||
WIRE_Y_UP_NW,
|
||||
WIRE_Y_UP_BOTH,
|
||||
|
||||
WIRE_Y_DOWN_SE,
|
||||
WIRE_Y_DOWN_NW,
|
||||
WIRE_Y_DOWN_BOTH,
|
||||
|
||||
WIRE_NS_W_BOTH,
|
||||
WIRE_NS_E_BOTH,
|
||||
|
||||
WIRE_NS_W_N,
|
||||
WIRE_NS_E_N,
|
||||
|
||||
WIRE_NS_W_S,
|
||||
WIRE_NS_E_S,
|
||||
|
||||
WIRE_EW_N_BOTH,
|
||||
WIRE_EW_S_BOTH,
|
||||
|
||||
WIRE_EW_N_W,
|
||||
WIRE_EW_S_W,
|
||||
|
||||
WIRE_EW_N_E,
|
||||
WIRE_EW_S_E,
|
||||
|
||||
INVALID_CATENARY = 0xFF
|
||||
};
|
||||
|
||||
/* Selects a Wire (with white and grey ends) depending on whether:
|
||||
* a) none (should never happen)
|
||||
* b) the first
|
||||
* c) the second
|
||||
* d) both
|
||||
* PCP exists.*/
|
||||
static const RailCatenarySprite Wires[5][TRACK_END][4] = {
|
||||
{ // Tileh == 0
|
||||
{INVALID_CATENARY, WIRE_X_FLAT_NE, WIRE_X_FLAT_SW, WIRE_X_FLAT_BOTH},
|
||||
{INVALID_CATENARY, WIRE_Y_FLAT_SE, WIRE_Y_FLAT_NW, WIRE_Y_FLAT_BOTH},
|
||||
{INVALID_CATENARY, WIRE_EW_N_W, WIRE_EW_N_E, WIRE_EW_N_BOTH},
|
||||
{INVALID_CATENARY, WIRE_EW_S_E, WIRE_EW_S_W, WIRE_EW_S_BOTH},
|
||||
{INVALID_CATENARY, WIRE_NS_W_S, WIRE_NS_W_N, WIRE_NS_W_BOTH},
|
||||
{INVALID_CATENARY, WIRE_NS_E_N, WIRE_NS_E_S, WIRE_NS_E_BOTH},
|
||||
}, { // Tileh == 3
|
||||
{INVALID_CATENARY, WIRE_X_UP_NE, WIRE_X_UP_SW, WIRE_X_UP_BOTH},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
}, { // Tileh == 6
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, WIRE_Y_UP_SE, WIRE_Y_UP_NW, WIRE_Y_UP_BOTH},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
}, { // Tileh == 9
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, WIRE_Y_DOWN_SE, WIRE_Y_DOWN_NW, WIRE_Y_DOWN_BOTH},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
}, { // Tileh == 12
|
||||
{INVALID_CATENARY, WIRE_X_DOWN_NE, WIRE_X_DOWN_SW, WIRE_X_DOWN_BOTH},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
{INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* ELRAIL_DATA_H */
|
||||
769
src/table/engines.h
Normal file
769
src/table/engines.h
Normal file
@@ -0,0 +1,769 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file table/engines.h
|
||||
* This file contains all the data for vehicles
|
||||
*/
|
||||
|
||||
#ifndef ENGINES_H
|
||||
#define ENGINES_H
|
||||
|
||||
/**
|
||||
* Writes the properties of a train into the EngineInfo struct.
|
||||
* @see EngineInfo
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e cargo type
|
||||
* @param f Bitmask of the climates
|
||||
* @note the 5 between b and f is the load amount
|
||||
*/
|
||||
#define MT(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_FLIPS, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/**
|
||||
* Writes the properties of a multiple-unit train into the EngineInfo struct.
|
||||
* @see EngineInfo
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e cargo type
|
||||
* @param f Bitmask of the climates
|
||||
* @note the 5 between b and f is the load amount
|
||||
*/
|
||||
#define MM(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_FLIPS | 1 << EF_RAIL_IS_MU, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/**
|
||||
* Writes the properties of a train carriage into the EngineInfo struct.
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e cargo type
|
||||
* @param f Bitmask of the climates
|
||||
* @see MT
|
||||
* @note the 5 between b and f is the load amount
|
||||
*/
|
||||
#define MW(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_FLIPS, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/**
|
||||
* Writes the properties of a road vehicle into the EngineInfo struct.
|
||||
* @see EngineInfo
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e cargo type
|
||||
* @param f Bitmask of the climates
|
||||
* @note the 5 between b and f is the load amount
|
||||
*/
|
||||
#define MR(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/**
|
||||
* Writes the properties of a ship into the EngineInfo struct.
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e cargo type
|
||||
* @param f Bitmask of the climates
|
||||
* @note the 10 between b and f is the load amount
|
||||
*/
|
||||
#define MS(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/**
|
||||
* Writes the properties of an aeroplane into the EngineInfo struct.
|
||||
* @param a base introduction date (days since 1920-01-01)
|
||||
* @param b decay speed
|
||||
* @param c life length (years)
|
||||
* @param d base life (years)
|
||||
* @param e Bitmask of the climates
|
||||
* @note the 20 between b and e is the load amount
|
||||
*/
|
||||
#define MA(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS }
|
||||
|
||||
/* Climates
|
||||
* T = Temperate
|
||||
* A = Sub-Arctic
|
||||
* S = Sub-Tropic
|
||||
* Y = Toyland */
|
||||
#define T 1
|
||||
#define A 2
|
||||
#define S 4
|
||||
#define Y 8
|
||||
static const EngineInfo _orig_engine_info[] = {
|
||||
/* base_intro base_life
|
||||
* | decay_speed cargo_type
|
||||
* | | lifelength | climates
|
||||
* | | | | | | */
|
||||
MT( 1827, 20, 15, 30, 0 , T ), // 0 Kirby Paul Tank (Steam)
|
||||
MT( 12784, 20, 22, 30, 0 , A|S ), // 1 MJS 250 (Diesel)
|
||||
MT( 9497, 20, 20, 50, 0 , Y), // 2 Ploddyphut Choo-Choo
|
||||
MT( 11688, 20, 20, 30, 0 , Y), // 3 Powernaut Choo-Choo
|
||||
MT( 16802, 20, 20, 30, 0 , Y), // 4 Mightymover Choo-Choo
|
||||
MT( 18993, 20, 20, 30, 0 , Y), // 5 Ploddyphut Diesel
|
||||
MT( 20820, 20, 20, 30, 0 , Y), // 6 Powernaut Diesel
|
||||
MT( 8766, 20, 20, 30, 0 , A|S ), // 7 Wills 2-8-0 (Steam)
|
||||
MT( 5114, 20, 21, 30, 0 , T ), // 8 Chaney 'Jubilee' (Steam)
|
||||
MT( 5479, 20, 20, 30, 0 , T ), // 9 Ginzu 'A4' (Steam)
|
||||
MT( 12419, 20, 23, 25, 0 , T ), // 10 SH '8P' (Steam)
|
||||
MM( 13149, 20, 12, 30, CT_PASSENGERS , T ), // 11 Manley-Morel DMU (Diesel)
|
||||
MM( 23376, 20, 15, 35, CT_PASSENGERS , T ), // 12 'Dash' (Diesel)
|
||||
MT( 14976, 20, 18, 28, 0 , T ), // 13 SH/Hendry '25' (Diesel)
|
||||
MT( 14245, 20, 20, 30, 0 , T ), // 14 UU '37' (Diesel)
|
||||
MT( 15341, 20, 22, 33, 0 , T ), // 15 Floss '47' (Diesel)
|
||||
MT( 14976, 20, 20, 25, 0 , A|S ), // 16 CS 4000 (Diesel)
|
||||
MT( 16437, 20, 20, 30, 0 , A|S ), // 17 CS 2400 (Diesel)
|
||||
MT( 18993, 20, 22, 30, 0 , A|S ), // 18 Centennial (Diesel)
|
||||
MT( 13880, 20, 22, 30, 0 , A|S ), // 19 Kelling 3100 (Diesel)
|
||||
MM( 20454, 20, 22, 30, 0 , A|S ), // 20 Turner Turbo (Diesel)
|
||||
MT( 16071, 20, 22, 30, 0 , A|S ), // 21 MJS 1000 (Diesel)
|
||||
MT( 20820, 20, 20, 25, CT_MAIL , T ), // 22 SH '125' (Diesel)
|
||||
MT( 16437, 20, 23, 30, 0 , T ), // 23 SH '30' (Electric)
|
||||
MT( 19359, 20, 23, 80, 0 , T ), // 24 SH '40' (Electric)
|
||||
MM( 23376, 20, 25, 30, 0 , T ), // 25 'T.I.M.' (Electric)
|
||||
MM( 26298, 20, 25, 50, 0 , T ), // 26 'AsiaStar' (Electric)
|
||||
MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 27 Passenger Carriage
|
||||
MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 28 Mail Van
|
||||
MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 29 Coal Truck
|
||||
MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 30 Oil Tanker
|
||||
MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 31 Livestock Van
|
||||
MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 32 Goods Van
|
||||
MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 33 Grain Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 34 Wood Truck
|
||||
MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 35 Iron Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_STEEL , T ), // 36 Steel Truck
|
||||
MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 37 Armoured Van
|
||||
MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 38 Food Van
|
||||
MW( 1827, 20, 20, 50, CT_PAPER , A ), // 39 Paper Truck
|
||||
MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 40 Copper Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WATER , S ), // 41 Water Tanker
|
||||
MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 42 Fruit Truck
|
||||
MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 43 Rubber Truck
|
||||
MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 44 Sugar Truck
|
||||
MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 45 Candyfloss Hopper
|
||||
MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 46 Toffee Hopper
|
||||
MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 47 Bubble Van
|
||||
MW( 1827, 20, 20, 50, CT_COLA , Y), // 48 Cola Tanker
|
||||
MW( 1827, 20, 20, 50, CT_CANDY , Y), // 49 Sweet Van
|
||||
MW( 1827, 20, 20, 50, CT_TOYS , Y), // 50 Toy Van
|
||||
MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 51 Battery Truck
|
||||
MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 52 Fizzy Drink Truck
|
||||
MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 53 Plastic Truck
|
||||
MT( 28490, 20, 20, 50, 0 , T|A|S ), // 54 'X2001' (Electric)
|
||||
MT( 31047, 20, 20, 50, CT_PASSENGERS , T|A|S ), // 55 'Millennium Z1' (Electric)
|
||||
MT( 28855, 20, 20, 50, 0 , Y), // 56 Wizzowow Z99
|
||||
MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 57 Passenger Carriage
|
||||
MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 58 Mail Van
|
||||
MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 59 Coal Truck
|
||||
MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 60 Oil Tanker
|
||||
MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 61 Livestock Van
|
||||
MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 62 Goods Van
|
||||
MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 63 Grain Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 64 Wood Truck
|
||||
MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 65 Iron Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_STEEL , T ), // 66 Steel Truck
|
||||
MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 67 Armoured Van
|
||||
MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 68 Food Van
|
||||
MW( 1827, 20, 20, 50, CT_PAPER , A ), // 69 Paper Truck
|
||||
MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 70 Copper Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WATER , S ), // 71 Water Tanker
|
||||
MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 72 Fruit Truck
|
||||
MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 73 Rubber Truck
|
||||
MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 74 Sugar Truck
|
||||
MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 75 Candyfloss Hopper
|
||||
MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 76 Toffee Hopper
|
||||
MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 77 Bubble Van
|
||||
MW( 1827, 20, 20, 50, CT_COLA , Y), // 78 Cola Tanker
|
||||
MW( 1827, 20, 20, 50, CT_CANDY , Y), // 79 Sweet Van
|
||||
MW( 1827, 20, 20, 50, CT_TOYS , Y), // 80 Toy Van
|
||||
MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 81 Battery Truck
|
||||
MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 82 Fizzy Drink Truck
|
||||
MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 83 Plastic Truck
|
||||
MT( 36525, 20, 20, 50, 0 , T|A|S ), // 84 Lev1 'Leviathan' (Electric)
|
||||
MT( 39447, 20, 20, 50, 0 , T|A|S ), // 85 Lev2 'Cyclops' (Electric)
|
||||
MT( 42004, 20, 20, 50, 0 , T|A|S ), // 86 Lev3 'Pegasus' (Electric)
|
||||
MT( 42735, 20, 20, 50, 0 , T|A|S ), // 87 Lev4 'Chimaera' (Electric)
|
||||
MT( 36891, 20, 20, 60, 0 , Y), // 88 Wizzowow Rocketeer
|
||||
MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 89 Passenger Carriage
|
||||
MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 90 Mail Van
|
||||
MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 91 Coal Truck
|
||||
MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 92 Oil Tanker
|
||||
MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 93 Livestock Van
|
||||
MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 94 Goods Van
|
||||
MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 95 Grain Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 96 Wood Truck
|
||||
MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 97 Iron Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_STEEL , T ), // 98 Steel Truck
|
||||
MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 99 Armoured Van
|
||||
MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 100 Food Van
|
||||
MW( 1827, 20, 20, 50, CT_PAPER , A ), // 101 Paper Truck
|
||||
MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 102 Copper Ore Hopper
|
||||
MW( 1827, 20, 20, 50, CT_WATER , S ), // 103 Water Tanker
|
||||
MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 104 Fruit Truck
|
||||
MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 105 Rubber Truck
|
||||
MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 106 Sugar Truck
|
||||
MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 107 Candyfloss Hopper
|
||||
MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 108 Toffee Hopper
|
||||
MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 109 Bubble Van
|
||||
MW( 1827, 20, 20, 50, CT_COLA , Y), // 110 Cola Tanker
|
||||
MW( 1827, 20, 20, 50, CT_CANDY , Y), // 111 Sweet Van
|
||||
MW( 1827, 20, 20, 50, CT_TOYS , Y), // 112 Toy Van
|
||||
MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 113 Battery Truck
|
||||
MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 114 Fizzy Drink Truck
|
||||
MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 115 Plastic Truck
|
||||
MR( 3378, 20, 12, 40, CT_PASSENGERS , T|A|S ), // 116 MPS Regal Bus
|
||||
MR( 16071, 20, 15, 30, CT_PASSENGERS , T|A|S ), // 117 Hereford Leopard Bus
|
||||
MR( 24107, 20, 15, 40, CT_PASSENGERS , T|A|S ), // 118 Foster Bus
|
||||
MR( 32142, 20, 15, 80, CT_PASSENGERS , T|A|S ), // 119 Foster MkII Superbus
|
||||
MR( 9132, 20, 15, 40, CT_PASSENGERS , Y), // 120 Ploddyphut MkI Bus
|
||||
MR( 18993, 20, 15, 40, CT_PASSENGERS , Y), // 121 Ploddyphut MkII Bus
|
||||
MR( 32873, 20, 15, 80, CT_PASSENGERS , Y), // 122 Ploddyphut MkIII Bus
|
||||
MR( 5479, 20, 15, 55, CT_COAL , T|A ), // 123 Balogh Coal Truck
|
||||
MR( 20089, 20, 15, 55, CT_COAL , T|A ), // 124 Uhl Coal Truck
|
||||
MR( 33969, 20, 15, 85, CT_COAL , T|A ), // 125 DW Coal Truck
|
||||
MR( 5479, 20, 15, 55, CT_MAIL , T|A|S ), // 126 MPS Mail Truck
|
||||
MR( 21550, 20, 15, 55, CT_MAIL , T|A|S ), // 127 Reynard Mail Truck
|
||||
MR( 35795, 20, 15, 85, CT_MAIL , T|A|S ), // 128 Perry Mail Truck
|
||||
MR( 5479, 20, 15, 55, CT_MAIL , Y), // 129 MightyMover Mail Truck
|
||||
MR( 21550, 20, 15, 55, CT_MAIL , Y), // 130 Powernaught Mail Truck
|
||||
MR( 35795, 20, 15, 85, CT_MAIL , Y), // 131 Wizzowow Mail Truck
|
||||
MR( 5479, 20, 15, 55, CT_OIL , T|A|S ), // 132 Witcombe Oil Tanker
|
||||
MR( 19359, 20, 15, 55, CT_OIL , T|A|S ), // 133 Foster Oil Tanker
|
||||
MR( 31047, 20, 15, 85, CT_OIL , T|A|S ), // 134 Perry Oil Tanker
|
||||
MR( 5479, 20, 15, 55, CT_LIVESTOCK , T|A ), // 135 Talbott Livestock Van
|
||||
MR( 21915, 20, 15, 55, CT_LIVESTOCK , T|A ), // 136 Uhl Livestock Van
|
||||
MR( 37256, 20, 15, 85, CT_LIVESTOCK , T|A ), // 137 Foster Livestock Van
|
||||
MR( 5479, 20, 15, 55, CT_GOODS , T|A|S ), // 138 Balogh Goods Truck
|
||||
MR( 19724, 20, 15, 55, CT_GOODS , T|A|S ), // 139 Craighead Goods Truck
|
||||
MR( 31047, 20, 15, 85, CT_GOODS , T|A|S ), // 140 Goss Goods Truck
|
||||
MR( 5479, 20, 15, 55, CT_GRAIN , T|A|S ), // 141 Hereford Grain Truck
|
||||
MR( 21185, 20, 15, 55, CT_GRAIN , T|A|S ), // 142 Thomas Grain Truck
|
||||
MR( 32873, 20, 15, 85, CT_GRAIN , T|A|S ), // 143 Goss Grain Truck
|
||||
MR( 5479, 20, 15, 55, CT_WOOD , T|A|S ), // 144 Witcombe Wood Truck
|
||||
MR( 19724, 20, 15, 55, CT_WOOD , T|A|S ), // 145 Foster Wood Truck
|
||||
MR( 35430, 20, 15, 85, CT_WOOD , T|A|S ), // 146 Moreland Wood Truck
|
||||
MR( 5479, 20, 15, 55, CT_IRON_ORE , T ), // 147 MPS Iron Ore Truck
|
||||
MR( 20820, 20, 15, 55, CT_IRON_ORE , T ), // 148 Uhl Iron Ore Truck
|
||||
MR( 33238, 20, 15, 85, CT_IRON_ORE , T ), // 149 Chippy Iron Ore Truck
|
||||
MR( 5479, 20, 15, 55, CT_STEEL , T ), // 150 Balogh Steel Truck
|
||||
MR( 21185, 20, 15, 55, CT_STEEL , T ), // 151 Uhl Steel Truck
|
||||
MR( 31777, 20, 15, 85, CT_STEEL , T ), // 152 Kelling Steel Truck
|
||||
MR( 5479, 20, 15, 55, CT_VALUABLES , T|A|S ), // 153 Balogh Armoured Truck
|
||||
MR( 22281, 20, 15, 55, CT_VALUABLES , T|A|S ), // 154 Uhl Armoured Truck
|
||||
MR( 33603, 20, 15, 85, CT_VALUABLES , T|A|S ), // 155 Foster Armoured Truck
|
||||
MR( 5479, 20, 15, 55, CT_FOOD , A|S ), // 156 Foster Food Van
|
||||
MR( 18628, 20, 15, 55, CT_FOOD , A|S ), // 157 Perry Food Van
|
||||
MR( 30681, 20, 15, 85, CT_FOOD , A|S ), // 158 Chippy Food Van
|
||||
MR( 5479, 20, 15, 55, CT_PAPER , A ), // 159 Uhl Paper Truck
|
||||
MR( 21185, 20, 15, 55, CT_PAPER , A ), // 160 Balogh Paper Truck
|
||||
MR( 31777, 20, 15, 85, CT_PAPER , A ), // 161 MPS Paper Truck
|
||||
MR( 5479, 20, 15, 55, CT_COPPER_ORE , S ), // 162 MPS Copper Ore Truck
|
||||
MR( 20820, 20, 15, 55, CT_COPPER_ORE , S ), // 163 Uhl Copper Ore Truck
|
||||
MR( 33238, 20, 15, 85, CT_COPPER_ORE , S ), // 164 Goss Copper Ore Truck
|
||||
MR( 5479, 20, 15, 55, CT_WATER , S ), // 165 Uhl Water Tanker
|
||||
MR( 20970, 20, 15, 55, CT_WATER , S ), // 166 Balogh Water Tanker
|
||||
MR( 33388, 20, 15, 85, CT_WATER , S ), // 167 MPS Water Tanker
|
||||
MR( 5479, 20, 15, 55, CT_FRUIT , S ), // 168 Balogh Fruit Truck
|
||||
MR( 21335, 20, 15, 55, CT_FRUIT , S ), // 169 Uhl Fruit Truck
|
||||
MR( 33753, 20, 15, 85, CT_FRUIT , S ), // 170 Kelling Fruit Truck
|
||||
MR( 5479, 20, 15, 55, CT_RUBBER , S ), // 171 Balogh Rubber Truck
|
||||
MR( 20604, 20, 15, 55, CT_RUBBER , S ), // 172 Uhl Rubber Truck
|
||||
MR( 33023, 20, 15, 85, CT_RUBBER , S ), // 173 RMT Rubber Truck
|
||||
MR( 5479, 20, 15, 55, CT_SUGAR , Y), // 174 MightyMover Sugar Truck
|
||||
MR( 19724, 20, 15, 55, CT_SUGAR , Y), // 175 Powernaught Sugar Truck
|
||||
MR( 33238, 20, 15, 85, CT_SUGAR , Y), // 176 Wizzowow Sugar Truck
|
||||
MR( 5479, 20, 15, 55, CT_COLA , Y), // 177 MightyMover Cola Truck
|
||||
MR( 20089, 20, 15, 55, CT_COLA , Y), // 178 Powernaught Cola Truck
|
||||
MR( 33603, 20, 15, 85, CT_COLA , Y), // 179 Wizzowow Cola Truck
|
||||
MR( 5479, 20, 15, 55, CT_COTTON_CANDY, Y), // 180 MightyMover Candyfloss Truck
|
||||
MR( 20454, 20, 15, 55, CT_COTTON_CANDY, Y), // 181 Powernaught Candyfloss Truck
|
||||
MR( 33969, 20, 15, 85, CT_COTTON_CANDY, Y), // 182 Wizzowow Candyfloss Truck
|
||||
MR( 5479, 20, 15, 55, CT_TOFFEE , Y), // 183 MightyMover Toffee Truck
|
||||
MR( 20820, 20, 15, 55, CT_TOFFEE , Y), // 184 Powernaught Toffee Truck
|
||||
MR( 34334, 20, 15, 85, CT_TOFFEE , Y), // 185 Wizzowow Toffee Truck
|
||||
MR( 5479, 20, 15, 55, CT_TOYS , Y), // 186 MightyMover Toy Van
|
||||
MR( 21185, 20, 15, 55, CT_TOYS , Y), // 187 Powernaught Toy Van
|
||||
MR( 34699, 20, 15, 85, CT_TOYS , Y), // 188 Wizzowow Toy Van
|
||||
MR( 5479, 20, 15, 55, CT_CANDY , Y), // 189 MightyMover Sweet Truck
|
||||
MR( 21550, 20, 15, 55, CT_CANDY , Y), // 190 Powernaught Sweet Truck
|
||||
MR( 35064, 20, 15, 85, CT_CANDY , Y), // 191 Wizzowow Sweet Truck
|
||||
MR( 5479, 20, 15, 55, CT_BATTERIES , Y), // 192 MightyMover Battery Truck
|
||||
MR( 19874, 20, 15, 55, CT_BATTERIES , Y), // 193 Powernaught Battery Truck
|
||||
MR( 35430, 20, 15, 85, CT_BATTERIES , Y), // 194 Wizzowow Battery Truck
|
||||
MR( 5479, 20, 15, 55, CT_FIZZY_DRINKS, Y), // 195 MightyMover Fizzy Drink Truck
|
||||
MR( 20239, 20, 15, 55, CT_FIZZY_DRINKS, Y), // 196 Powernaught Fizzy Drink Truck
|
||||
MR( 35795, 20, 15, 85, CT_FIZZY_DRINKS, Y), // 197 Wizzowow Fizzy Drink Truck
|
||||
MR( 5479, 20, 15, 55, CT_PLASTIC , Y), // 198 MightyMover Plastic Truck
|
||||
MR( 20604, 20, 15, 55, CT_PLASTIC , Y), // 199 Powernaught Plastic Truck
|
||||
MR( 32873, 20, 15, 85, CT_PLASTIC , Y), // 200 Wizzowow Plastic Truck
|
||||
MR( 5479, 20, 15, 55, CT_BUBBLES , Y), // 201 MightyMover Bubble Truck
|
||||
MR( 20970, 20, 15, 55, CT_BUBBLES , Y), // 202 Powernaught Bubble Truck
|
||||
MR( 33023, 20, 15, 85, CT_BUBBLES , Y), // 203 Wizzowow Bubble Truck
|
||||
MS( 2922, 5, 30, 50, CT_OIL , T|A|S ), // 204 MPS Oil Tanker
|
||||
MS( 17167, 5, 30, 90, CT_OIL , T|A|S ), // 205 CS-Inc. Oil Tanker
|
||||
MS( 2192, 5, 30, 55, CT_PASSENGERS , T|A|S ), // 206 MPS Passenger Ferry
|
||||
MS( 18628, 5, 30, 90, CT_PASSENGERS , T|A|S ), // 207 FFP Passenger Ferry
|
||||
MS( 17257, 10, 25, 90, CT_PASSENGERS , T|A|S ), // 208 Bakewell 300 Hovercraft
|
||||
MS( 9587, 5, 30, 40, CT_PASSENGERS , Y), // 209 Chugger-Chug Passenger Ferry
|
||||
MS( 20544, 5, 30, 90, CT_PASSENGERS , Y), // 210 Shivershake Passenger Ferry
|
||||
MS( 2557, 5, 30, 55, CT_GOODS , T|A|S ), // 211 Yate Cargo ship
|
||||
MS( 19724, 5, 30, 98, CT_GOODS , T|A|S ), // 212 Bakewell Cargo ship
|
||||
MS( 9587, 5, 30, 45, CT_GOODS , Y), // 213 Mightymover Cargo ship
|
||||
MS( 22371, 5, 30, 90, CT_GOODS , Y), // 214 Powernaut Cargo ship
|
||||
MA( 2922, 20, 20, 20, T|A|S ), // 215 Sampson U52
|
||||
MA( 9922, 20, 24, 20, T|A|S ), // 216 Coleman Count
|
||||
MA( 12659, 20, 18, 20, T|A|S ), // 217 FFP Dart
|
||||
MA( 17652, 20, 25, 35, T|A|S ), // 218 Yate Haugan
|
||||
MA( 4929, 20, 30, 30, T|A|S ), // 219 Bakewell Cotswald LB-3
|
||||
MA( 13695, 20, 23, 25, T|A|S ), // 220 Bakewell Luckett LB-8
|
||||
MA( 16341, 20, 26, 30, T|A|S ), // 221 Bakewell Luckett LB-9
|
||||
MA( 21395, 20, 25, 30, T|A|S ), // 222 Bakewell Luckett LB80
|
||||
MA( 18263, 20, 20, 30, T|A|S ), // 223 Bakewell Luckett LB-10
|
||||
MA( 25233, 20, 25, 30, T|A|S ), // 224 Bakewell Luckett LB-11
|
||||
MA( 15371, 20, 22, 25, T|A|S ), // 225 Yate Aerospace YAC 1-11
|
||||
MA( 15461, 20, 25, 25, T|A|S ), // 226 Darwin 100
|
||||
MA( 16952, 20, 22, 25, T|A|S ), // 227 Darwin 200
|
||||
MA( 17227, 20, 25, 30, T|A|S ), // 228 Darwin 300
|
||||
MA( 22371, 20, 25, 35, T|A|S ), // 229 Darwin 400
|
||||
MA( 22341, 20, 25, 30, T|A|S ), // 230 Darwin 500
|
||||
MA( 27209, 20, 25, 30, T|A|S ), // 231 Darwin 600
|
||||
MA( 17988, 20, 20, 30, T|A|S ), // 232 Guru Galaxy
|
||||
MA( 18993, 20, 24, 35, T|A|S ), // 233 Airtaxi A21
|
||||
MA( 22401, 20, 24, 30, T|A|S ), // 234 Airtaxi A31
|
||||
MA( 24472, 20, 24, 30, T|A|S ), // 235 Airtaxi A32
|
||||
MA( 26724, 20, 24, 30, T|A|S ), // 236 Airtaxi A33
|
||||
MA( 22005, 20, 25, 30, T|A|S ), // 237 Yate Aerospace YAe46
|
||||
MA( 24107, 20, 20, 35, T|A|S ), // 238 Dinger 100
|
||||
MA( 29310, 20, 25, 60, T|A|S ), // 239 AirTaxi A34-1000
|
||||
MA( 35520, 20, 22, 30, T|A|S ), // 240 Yate Z-Shuttle
|
||||
MA( 36981, 20, 22, 30, T|A|S ), // 241 Kelling K1
|
||||
MA( 38807, 20, 22, 50, T|A|S ), // 242 Kelling K6
|
||||
MA( 42094, 20, 25, 30, T|A|S ), // 243 Kelling K7
|
||||
MA( 44651, 20, 23, 30, T|A|S ), // 244 Darwin 700
|
||||
MA( 40268, 20, 25, 30, T|A|S ), // 245 FFP Hyperdart 2
|
||||
MA( 33693, 20, 25, 50, T|A|S ), // 246 Dinger 200
|
||||
MA( 32963, 20, 20, 60, T|A|S ), // 247 Dinger 1000
|
||||
MA( 9222, 20, 20, 35, Y), // 248 Ploddyphut 100
|
||||
MA( 12874, 20, 20, 35, Y), // 249 Ploddyphut 500
|
||||
MA( 16892, 20, 20, 35, Y), // 250 Flashbang X1
|
||||
MA( 21275, 20, 20, 99, Y), // 251 Juggerplane M1
|
||||
MA( 23832, 20, 20, 99, Y), // 252 Flashbang Wizzer
|
||||
MA( 13575, 20, 20, 40, T|A|S ), // 253 Tricario Helicopter
|
||||
MA( 28215, 20, 20, 30, T|A|S ), // 254 Guru X2 Helicopter
|
||||
MA( 13575, 20, 20, 99, Y), // 255 Powernaut Helicopter
|
||||
};
|
||||
#undef Y
|
||||
#undef S
|
||||
#undef A
|
||||
#undef T
|
||||
#undef MT
|
||||
#undef MW
|
||||
#undef MR
|
||||
#undef MS
|
||||
#undef MA
|
||||
|
||||
/**
|
||||
* Writes the properties of a rail vehicle into the RailVehicleInfo struct.
|
||||
* @see RailVehicleInfo
|
||||
* @param a image_index
|
||||
* @param b type
|
||||
* @param c cost_factor
|
||||
* @param d max_speed (1 unit = 1/1.6 mph = 1 km-ish/h)
|
||||
* @param e power (hp)
|
||||
* @param f weight (tons)
|
||||
* @param g running_cost
|
||||
* @param h running_cost_class
|
||||
* @param i capacity (persons, bags, tons, pieces, items, cubic metres, ...)
|
||||
* @param j railtype
|
||||
* @param k engclass
|
||||
* Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76
|
||||
* Air drag value depends on the top speed of the vehicle.
|
||||
*/
|
||||
#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, {j}, d, e, f, g, h, k, i, 0, 0, 0, VE_DEFAULT, 0, 76, 0, 0 }
|
||||
#define M RAILVEH_MULTIHEAD
|
||||
#define W RAILVEH_WAGON
|
||||
#define G RAILVEH_SINGLEHEAD
|
||||
#define S EC_STEAM
|
||||
#define D EC_DIESEL
|
||||
#define E EC_ELECTRIC
|
||||
#define N EC_MONORAIL
|
||||
#define V EC_MAGLEV
|
||||
/* Wagons always have engine type 0, i.e. steam. */
|
||||
#define A EC_STEAM
|
||||
|
||||
#define R RAILTYPE_RAIL
|
||||
#define C RAILTYPE_ELECTRIC
|
||||
#define O RAILTYPE_MONO
|
||||
#define L RAILTYPE_MAGLEV
|
||||
|
||||
#define RC_S PR_RUNNING_TRAIN_STEAM
|
||||
#define RC_D PR_RUNNING_TRAIN_DIESEL
|
||||
#define RC_E PR_RUNNING_TRAIN_ELECTRIC
|
||||
#define RC_W INVALID_PRICE
|
||||
|
||||
static const RailVehicleInfo _orig_rail_vehicle_info[] = {
|
||||
/* image_index max_speed running_cost engclass
|
||||
* | type | power | running_cost_class
|
||||
* | | cost_factor | weight | | capacity
|
||||
* | | | | | | | | | railtype
|
||||
* | | | | | | | | | | | */
|
||||
/* Rail */
|
||||
RVI( 2, G, 7, 64, 300, 47, 50, RC_S, 0, R, S), // 0 Kirby Paul Tank (Steam)
|
||||
RVI(19, G, 8, 80, 600, 65, 65, RC_D, 0, R, D), // 1 MJS 250 (Diesel)
|
||||
RVI( 2, G, 10, 72, 400, 85, 90, RC_S, 0, R, S), // 2 Ploddyphut Choo-Choo
|
||||
RVI( 0, G, 15, 96, 900, 130, 130, RC_S, 0, R, S), // 3 Powernaut Choo-Choo
|
||||
RVI( 1, G, 19, 112, 1000, 140, 145, RC_S, 0, R, S), // 4 Mightymover Choo-Choo
|
||||
RVI(12, G, 16, 120, 1400, 95, 125, RC_D, 0, R, D), // 5 Ploddyphut Diesel
|
||||
RVI(14, G, 20, 152, 2000, 120, 135, RC_D, 0, R, D), // 6 Powernaut Diesel
|
||||
RVI( 3, G, 14, 88, 1100, 145, 130, RC_S, 0, R, S), // 7 Wills 2-8-0 (Steam)
|
||||
RVI( 0, G, 13, 112, 1000, 131, 120, RC_S, 0, R, S), // 8 Chaney 'Jubilee' (Steam)
|
||||
RVI( 1, G, 19, 128, 1200, 162, 140, RC_S, 0, R, S), // 9 Ginzu 'A4' (Steam)
|
||||
RVI( 0, G, 22, 144, 1600, 170, 130, RC_S, 0, R, S), // 10 SH '8P' (Steam)
|
||||
RVI( 8, M, 11, 112, 600, 32, 85, RC_D, 38, R, D), // 11 Manley-Morel DMU (Diesel)
|
||||
RVI(10, M, 14, 120, 700, 38, 70, RC_D, 40, R, D), // 12 'Dash' (Diesel)
|
||||
RVI( 4, G, 15, 128, 1250, 72, 95, RC_D, 0, R, D), // 13 SH/Hendry '25' (Diesel)
|
||||
RVI( 5, G, 17, 144, 1750, 101, 120, RC_D, 0, R, D), // 14 UU '37' (Diesel)
|
||||
RVI( 4, G, 18, 160, 2580, 112, 140, RC_D, 0, R, D), // 15 Floss '47' (Diesel)
|
||||
RVI(14, G, 23, 96, 4000, 150, 135, RC_D, 0, R, D), // 16 CS 4000 (Diesel)
|
||||
RVI(12, G, 16, 112, 2400, 120, 105, RC_D, 0, R, D), // 17 CS 2400 (Diesel)
|
||||
RVI(13, G, 30, 112, 6600, 207, 155, RC_D, 0, R, D), // 18 Centennial (Diesel)
|
||||
RVI(15, G, 18, 104, 1500, 110, 105, RC_D, 0, R, D), // 19 Kelling 3100 (Diesel)
|
||||
RVI(16, M, 35, 160, 3500, 95, 205, RC_D, 0, R, D), // 20 Turner Turbo (Diesel)
|
||||
RVI(18, G, 21, 104, 2200, 120, 145, RC_D, 0, R, D), // 21 MJS 1000 (Diesel)
|
||||
RVI( 6, M, 20, 200, 4500, 70, 190, RC_D, 4, R, D), // 22 SH '125' (Diesel)
|
||||
RVI(20, G, 26, 160, 3600, 84, 180, RC_E, 0, C, E), // 23 SH '30' (Electric)
|
||||
RVI(20, G, 30, 176, 5000, 82, 205, RC_E, 0, C, E), // 24 SH '40' (Electric)
|
||||
RVI(21, M, 40, 240, 7000, 90, 240, RC_E, 0, C, E), // 25 'T.I.M.' (Electric)
|
||||
RVI(23, M, 43, 264, 8000, 95, 250, RC_E, 0, C, E), // 26 'AsiaStar' (Electric)
|
||||
RVI(33, W, 247, 0, 0, 25, 0, RC_W, 40, R, A), // 27 Passenger Carriage
|
||||
RVI(35, W, 228, 0, 0, 21, 0, RC_W, 30, R, A), // 28 Mail Van
|
||||
RVI(34, W, 176, 0, 0, 18, 0, RC_W, 30, R, A), // 29 Coal Truck
|
||||
RVI(36, W, 200, 0, 0, 24, 0, RC_W, 30, R, A), // 30 Oil Tanker
|
||||
RVI(37, W, 192, 0, 0, 20, 0, RC_W, 25, R, A), // 31 Livestock Van
|
||||
RVI(38, W, 190, 0, 0, 21, 0, RC_W, 25, R, A), // 32 Goods Van
|
||||
RVI(39, W, 182, 0, 0, 19, 0, RC_W, 30, R, A), // 33 Grain Hopper
|
||||
RVI(40, W, 181, 0, 0, 16, 0, RC_W, 30, R, A), // 34 Wood Truck
|
||||
RVI(41, W, 179, 0, 0, 19, 0, RC_W, 30, R, A), // 35 Iron Ore Hopper
|
||||
RVI(42, W, 196, 0, 0, 18, 0, RC_W, 20, R, A), // 36 Steel Truck
|
||||
RVI(43, W, 255, 0, 0, 30, 0, RC_W, 20, R, A), // 37 Armoured Van
|
||||
RVI(44, W, 191, 0, 0, 22, 0, RC_W, 25, R, A), // 38 Food Van
|
||||
RVI(45, W, 196, 0, 0, 18, 0, RC_W, 20, R, A), // 39 Paper Truck
|
||||
RVI(46, W, 179, 0, 0, 19, 0, RC_W, 30, R, A), // 40 Copper Ore Hopper
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 25, R, A), // 41 Water Tanker
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 25, R, A), // 42 Fruit Truck
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 21, R, A), // 43 Rubber Truck
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 30, R, A), // 44 Sugar Truck
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 30, R, A), // 45 Candyfloss Hopper
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 30, R, A), // 46 Toffee Hopper
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 20, R, A), // 47 Bubble Van
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 25, R, A), // 48 Cola Tanker
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 25, R, A), // 49 Sweet Van
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 20, R, A), // 50 Toy Van
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 22, R, A), // 51 Battery Truck
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 25, R, A), // 52 Fizzy Drink Truck
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 30, R, A), // 53 Plastic Truck
|
||||
/* Monorail */
|
||||
RVI(25, G, 52, 304, 9000, 95, 230, RC_E, 0, O, N), // 54 'X2001' (Electric)
|
||||
RVI(26, M, 60, 336, 10000, 85, 240, RC_E, 25, O, N), // 55 'Millennium Z1' (Electric)
|
||||
RVI(26, G, 53, 320, 5000, 95, 230, RC_E, 0, O, N), // 56 Wizzowow Z99
|
||||
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 45, O, A), // 57 Passenger Carriage
|
||||
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 35, O, A), // 58 Mail Van
|
||||
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 35, O, A), // 59 Coal Truck
|
||||
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 35, O, A), // 60 Oil Tanker
|
||||
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 30, O, A), // 61 Livestock Van
|
||||
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 30, O, A), // 62 Goods Van
|
||||
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 35, O, A), // 63 Grain Hopper
|
||||
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 35, O, A), // 64 Wood Truck
|
||||
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 35, O, A), // 65 Iron Ore Hopper
|
||||
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 25, O, A), // 66 Steel Truck
|
||||
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 25, O, A), // 67 Armoured Van
|
||||
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 30, O, A), // 68 Food Van
|
||||
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 25, O, A), // 69 Paper Truck
|
||||
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 35, O, A), // 70 Copper Ore Hopper
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 30, O, A), // 71 Water Tanker
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 30, O, A), // 72 Fruit Truck
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 26, O, A), // 73 Rubber Truck
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 35, O, A), // 74 Sugar Truck
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 35, O, A), // 75 Candyfloss Hopper
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 35, O, A), // 76 Toffee Hopper
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 25, O, A), // 77 Bubble Van
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 30, O, A), // 78 Cola Tanker
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 30, O, A), // 79 Sweet Van
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 25, O, A), // 80 Toy Van
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 27, O, A), // 81 Battery Truck
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 30, O, A), // 82 Fizzy Drink Truck
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 35, O, A), // 83 Plastic Truck
|
||||
/* Maglev */
|
||||
RVI(28, G, 70, 400, 10000, 105, 250, RC_E, 0, L, V), // 84 Lev1 'Leviathan' (Electric)
|
||||
RVI(29, G, 74, 448, 12000, 120, 253, RC_E, 0, L, V), // 85 Lev2 'Cyclops' (Electric)
|
||||
RVI(30, G, 82, 480, 15000, 130, 254, RC_E, 0, L, V), // 86 Lev3 'Pegasus' (Electric)
|
||||
RVI(31, M, 95, 640, 20000, 150, 255, RC_E, 0, L, V), // 87 Lev4 'Chimaera' (Electric)
|
||||
RVI(28, G, 70, 480, 10000, 120, 250, RC_E, 0, L, V), // 88 Wizzowow Rocketeer
|
||||
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 47, L, A), // 89 Passenger Carriage
|
||||
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 37, L, A), // 90 Mail Van
|
||||
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 37, L, A), // 91 Coal Truck
|
||||
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 37, L, A), // 92 Oil Tanker
|
||||
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 32, L, A), // 93 Livestock Van
|
||||
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 32, L, A), // 94 Goods Van
|
||||
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 37, L, A), // 95 Grain Hopper
|
||||
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 37, L, A), // 96 Wood Truck
|
||||
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 37, L, A), // 97 Iron Ore Hopper
|
||||
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 27, L, A), // 98 Steel Truck
|
||||
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 27, L, A), // 99 Armoured Van
|
||||
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 32, L, A), // 100 Food Van
|
||||
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 27, L, A), // 101 Paper Truck
|
||||
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 37, L, A), // 102 Copper Ore Hopper
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 32, L, A), // 103 Water Tanker
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 32, L, A), // 104 Fruit Truck
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 28, L, A), // 105 Rubber Truck
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 37, L, A), // 106 Sugar Truck
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 37, L, A), // 107 Candyfloss Hopper
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 37, L, A), // 108 Toffee Hopper
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 27, L, A), // 109 Bubble Van
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 32, L, A), // 110 Cola Tanker
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 32, L, A), // 111 Sweet Van
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 27, L, A), // 112 Toy Van
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 29, L, A), // 113 Battery Truck
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 32, L, A), // 114 Fizzy Drink Truck
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 37, L, A), // 115 Plastic Truck
|
||||
};
|
||||
#undef RC_W
|
||||
#undef RC_E
|
||||
#undef RC_D
|
||||
#undef RC_S
|
||||
#undef L
|
||||
#undef O
|
||||
#undef C
|
||||
#undef R
|
||||
#undef V
|
||||
#undef N
|
||||
#undef E
|
||||
#undef D
|
||||
#undef S
|
||||
#undef G
|
||||
#undef W
|
||||
#undef M
|
||||
#undef RVI
|
||||
|
||||
/**
|
||||
* Writes the properties of a ship into the ShipVehicleInfo struct.
|
||||
* @see ShipVehicleInfo
|
||||
* @param a image_index
|
||||
* @param b cost_factor
|
||||
* @param c max_speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
|
||||
* @param d capacity (persons, bags, tons, pieces, items, cubic metres, ...)
|
||||
* @param e running_cost
|
||||
* @param f sound effect
|
||||
* @param g refittable
|
||||
*/
|
||||
#define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g, VE_DEFAULT, 0, 0 }
|
||||
static const ShipVehicleInfo _orig_ship_vehicle_info[] = {
|
||||
/* image_index capacity refittable
|
||||
* | cost_factor running_cost |
|
||||
* | | max_speed | sfx |
|
||||
* | | | | | | | */
|
||||
SVI( 1, 160, 48, 220, 140, SND_06_SHIP_HORN, 0 ), // 0 MPS Oil Tanker
|
||||
SVI( 1, 176, 80, 350, 125, SND_06_SHIP_HORN, 0 ), // 1 CS-Inc. Oil Tanker
|
||||
SVI( 2, 96, 64, 100, 90, SND_07_FERRY_HORN, 0 ), // 2 MPS Passenger Ferry
|
||||
SVI( 2, 112, 128, 130, 80, SND_07_FERRY_HORN, 0 ), // 3 FFP Passenger Ferry
|
||||
SVI( 3, 148, 224, 100, 190, SND_07_FERRY_HORN, 0 ), // 4 Bakewell 300 Hovercraft
|
||||
SVI( 2, 96, 64, 100, 90, SND_07_FERRY_HORN, 0 ), // 5 Chugger-Chug Passenger Ferry
|
||||
SVI( 2, 112, 128, 130, 80, SND_07_FERRY_HORN, 0 ), // 6 Shivershake Passenger Ferry
|
||||
SVI( 0, 128, 48, 160, 150, SND_06_SHIP_HORN, 1 ), // 7 Yate Cargo ship
|
||||
SVI( 0, 144, 80, 190, 113, SND_06_SHIP_HORN, 1 ), // 8 Bakewell Cargo ship
|
||||
SVI( 0, 128, 48, 160, 150, SND_06_SHIP_HORN, 1 ), // 9 Mightymover Cargo ship
|
||||
SVI( 0, 144, 80, 190, 113, SND_06_SHIP_HORN, 1 ), // 10 Powernaut Cargo ship
|
||||
};
|
||||
#undef SVI
|
||||
|
||||
/**
|
||||
* Writes the properties of an aircraft into the AircraftVehicleInfo struct.
|
||||
* @see AircraftVehicleInfo
|
||||
* @param a image_index
|
||||
* @param b cost_factor
|
||||
* @param c running_Cost
|
||||
* @param d subtype (bit 0 - plane, bit 1 - large plane)
|
||||
* @param e sound effect
|
||||
* @param f acceleration (1 unit = 3/8 mph/tick = 3/5 km-ish/h/tick) (stays the same in the variable)
|
||||
* @param g max_speed (1 unit = 8 mph = 12.8 km-ish/h) (is converted to km-ish/h by the macro)
|
||||
* @param h mail_capacity (bags)
|
||||
* @param i passenger_capacity (persons)
|
||||
*/
|
||||
#define AVI(a, b, c, d, e, f, g, h, i) { a, b, c, d, e, f, (g * 128) / 10, h, i, 0 }
|
||||
#define H AIR_HELI
|
||||
#define P AIR_CTOL
|
||||
#define J AIR_CTOL | AIR_FAST
|
||||
static const AircraftVehicleInfo _orig_aircraft_vehicle_info[] = {
|
||||
/* image_index sfx acceleration
|
||||
* | cost_factor | | max_speed
|
||||
* | | running_cost | | mail_capacity
|
||||
* | | | subtype | | | | passenger_capacity
|
||||
* | | | | | | | | | */
|
||||
AVI( 1, 14, 85, P, SND_08_PLANE_TAKE_OFF, 18, 37, 4, 25 ), // 0 Sampson U52
|
||||
AVI( 0, 15, 100, P, SND_08_PLANE_TAKE_OFF, 20, 37, 8, 65 ), // 1 Coleman Count
|
||||
AVI( 2, 16, 130, J, SND_09_JET, 35, 74, 10, 90 ), // 2 FFP Dart
|
||||
AVI( 8, 75, 250, J, SND_3B_JET_OVERHEAD, 50, 181, 20, 100 ), // 3 Yate Haugan
|
||||
AVI( 5, 15, 98, P, SND_08_PLANE_TAKE_OFF, 20, 37, 6, 30 ), // 4 Bakewell Cotswald LB-3
|
||||
AVI( 6, 18, 240, J, SND_09_JET, 40, 74, 30, 200 ), // 5 Bakewell Luckett LB-8
|
||||
AVI( 2, 17, 150, P, SND_09_JET, 35, 74, 15, 100 ), // 6 Bakewell Luckett LB-9
|
||||
AVI( 2, 18, 245, J, SND_09_JET, 40, 74, 30, 150 ), // 7 Bakewell Luckett LB80
|
||||
AVI( 3, 19, 192, J, SND_09_JET, 40, 74, 40, 220 ), // 8 Bakewell Luckett LB-10
|
||||
AVI( 3, 20, 190, J, SND_09_JET, 40, 74, 25, 230 ), // 9 Bakewell Luckett LB-11
|
||||
AVI( 2, 16, 135, J, SND_09_JET, 35, 74, 10, 95 ), // 10 Yate Aerospace YAC 1-11
|
||||
AVI( 2, 18, 240, J, SND_09_JET, 40, 74, 35, 170 ), // 11 Darwin 100
|
||||
AVI( 4, 17, 155, J, SND_09_JET, 40, 74, 15, 110 ), // 12 Darwin 200
|
||||
AVI( 7, 30, 253, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 50, 300 ), // 13 Darwin 300
|
||||
AVI( 4, 18, 210, J, SND_09_JET, 40, 74, 25, 200 ), // 14 Darwin 400
|
||||
AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 240 ), // 15 Darwin 500
|
||||
AVI( 4, 27, 230, J, SND_09_JET, 40, 74, 40, 260 ), // 16 Darwin 600
|
||||
AVI( 3, 25, 225, J, SND_09_JET, 40, 74, 35, 240 ), // 17 Guru Galaxy
|
||||
AVI( 4, 20, 235, J, SND_09_JET, 40, 74, 30, 260 ), // 18 Airtaxi A21
|
||||
AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 210 ), // 19 Airtaxi A31
|
||||
AVI( 4, 18, 170, J, SND_09_JET, 40, 74, 20, 160 ), // 20 Airtaxi A32
|
||||
AVI( 4, 26, 210, J, SND_09_JET, 40, 74, 20, 220 ), // 21 Airtaxi A33
|
||||
AVI( 6, 16, 125, P, SND_09_JET, 50, 74, 10, 80 ), // 22 Yate Aerospace YAe46
|
||||
AVI( 2, 17, 145, P, SND_09_JET, 40, 74, 10, 85 ), // 23 Dinger 100
|
||||
AVI( 11, 16, 130, P, SND_09_JET, 40, 74, 10, 75 ), // 24 AirTaxi A34-1000
|
||||
AVI( 10, 16, 149, P, SND_09_JET, 40, 74, 10, 85 ), // 25 Yate Z-Shuttle
|
||||
AVI( 15, 17, 170, P, SND_09_JET, 40, 74, 18, 65 ), // 26 Kelling K1
|
||||
AVI( 12, 18, 210, J, SND_09_JET, 40, 74, 25, 110 ), // 27 Kelling K6
|
||||
AVI( 13, 20, 230, J, SND_09_JET, 40, 74, 60, 180 ), // 28 Kelling K7
|
||||
AVI( 14, 21, 220, J, SND_09_JET, 40, 74, 65, 150 ), // 29 Darwin 700
|
||||
AVI( 16, 19, 160, J, SND_09_JET, 40, 181, 45, 85 ), // 30 FFP Hyperdart 2
|
||||
AVI( 17, 24, 248, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 80, 400 ), // 31 Dinger 200
|
||||
AVI( 18, 80, 251, J, SND_3B_JET_OVERHEAD, 50, 181, 45, 130 ), // 32 Dinger 1000
|
||||
AVI( 20, 13, 85, P, SND_45_PLANE_CRASHING, 18, 37, 5, 25 ), // 33 Ploddyphut 100
|
||||
AVI( 21, 18, 100, P, SND_46_PLANE_ENGINE_SPUTTERING, 20, 37, 9, 60 ), // 34 Ploddyphut 500
|
||||
AVI( 22, 25, 140, P, SND_09_JET, 40, 74, 12, 90 ), // 35 Flashbang X1
|
||||
AVI( 23, 32, 220, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 40, 200 ), // 36 Juggerplane M1
|
||||
AVI( 24, 80, 255, J, SND_3B_JET_OVERHEAD, 50, 181, 30, 100 ), // 37 Flashbang Wizzer
|
||||
AVI( 9, 15, 81, H, SND_09_JET, 20, 25, 15, 40 ), // 38 Tricario Helicopter
|
||||
AVI( 19, 17, 77, H, SND_09_JET, 20, 40, 20, 55 ), // 39 Guru X2 Helicopter
|
||||
AVI( 25, 15, 80, H, SND_09_JET, 20, 25, 10, 40 ), // 40 Powernaut Helicopter
|
||||
};
|
||||
#undef J
|
||||
#undef P
|
||||
#undef H
|
||||
#undef AVI
|
||||
|
||||
/**
|
||||
* Writes the properties of a road vehicle into the RoadVehicleInfo struct.
|
||||
* @see RoadVehicleInfo
|
||||
* @param a image_index
|
||||
* @param b cost_factor
|
||||
* @param c running_cost
|
||||
* @param d sound effect
|
||||
* @param e max_speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
|
||||
* @param f capacity (persons, bags, tons, pieces, items, cubic metres, ...)
|
||||
* @param g weight (1/4 ton)
|
||||
* @param h power (10 hp)
|
||||
* Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76
|
||||
* Air drag value depends on the top speed of the vehicle.
|
||||
*/
|
||||
#define ROV(a, b, c, d, e, f, g, h) { a, b, c, PR_RUNNING_ROADVEH, d, e, f, g, h, 76, 0, VE_DEFAULT, 0 }
|
||||
static const RoadVehicleInfo _orig_road_vehicle_info[] = {
|
||||
/* image_index sfx max_speed power
|
||||
* | cost_factor | | capacity |
|
||||
* | | running_cost | | weight
|
||||
* | | | | | | | |*/
|
||||
ROV( 0, 120, 91, SND_19_BUS_START_PULL_AWAY, 112, 31, 42, 9), // 0 MPS Regal Bus
|
||||
ROV( 17, 140, 128, SND_1C_TRUCK_START_2, 176, 35, 60, 12), // 1 Hereford Leopard Bus
|
||||
ROV( 17, 150, 178, SND_1B_TRUCK_START, 224, 37, 70, 15), // 2 Foster Bus
|
||||
ROV( 34, 160, 240, SND_1B_TRUCK_START, 255, 40, 100, 25), // 3 Foster MkII Superbus
|
||||
ROV( 51, 120, 91, SND_3C_COMEDY_CAR, 112, 30, 42, 9), // 4 Ploddyphut MkI Bus
|
||||
ROV( 51, 140, 171, SND_3E_COMEDY_CAR_2, 192, 35, 60, 15), // 5 Ploddyphut MkII Bus
|
||||
ROV( 51, 160, 240, SND_3C_COMEDY_CAR, 240, 38, 90, 25), // 6 Ploddyphut MkIII Bus
|
||||
ROV( 1, 108, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 7 Balogh Coal Truck
|
||||
ROV( 18, 128, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 8 Uhl Coal Truck
|
||||
ROV( 35, 138, 240, SND_19_BUS_START_PULL_AWAY, 224, 28, 69, 45), // 9 DW Coal Truck
|
||||
ROV( 2, 115, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 10 MPS Mail Truck
|
||||
ROV( 19, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 28, 48, 22), // 11 Reynard Mail Truck
|
||||
ROV( 36, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, 69, 45), // 12 Perry Mail Truck
|
||||
ROV( 57, 115, 90, SND_3E_COMEDY_CAR_2, 96, 22, 38, 12), // 13 MightyMover Mail Truck
|
||||
ROV( 57, 135, 168, SND_3C_COMEDY_CAR, 176, 28, 48, 22), // 14 Powernaught Mail Truck
|
||||
ROV( 57, 145, 240, SND_3E_COMEDY_CAR_2, 224, 30, 69, 45), // 15 Wizzowow Mail Truck
|
||||
ROV( 3, 110, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, 38, 12), // 16 Witcombe Oil Tanker
|
||||
ROV( 20, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 17 Foster Oil Tanker
|
||||
ROV( 37, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 18 Perry Oil Tanker
|
||||
ROV( 4, 105, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, 38, 12), // 19 Talbott Livestock Van
|
||||
ROV( 21, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, 48, 22), // 20 Uhl Livestock Van
|
||||
ROV( 38, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, 69, 45), // 21 Foster Livestock Van
|
||||
ROV( 5, 107, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, 38, 12), // 22 Balogh Goods Truck
|
||||
ROV( 22, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, 48, 22), // 23 Craighead Goods Truck
|
||||
ROV( 39, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, 69, 45), // 24 Goss Goods Truck
|
||||
ROV( 6, 114, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 25 Hereford Grain Truck
|
||||
ROV( 23, 133, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 26 Thomas Grain Truck
|
||||
ROV( 40, 143, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, 69, 45), // 27 Goss Grain Truck
|
||||
ROV( 7, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 28 Witcombe Wood Truck
|
||||
ROV( 24, 137, 168, SND_19_BUS_START_PULL_AWAY, 176, 22, 48, 22), // 29 Foster Wood Truck
|
||||
ROV( 41, 147, 240, SND_19_BUS_START_PULL_AWAY, 224, 24, 69, 45), // 30 Moreland Wood Truck
|
||||
ROV( 8, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 31 MPS Iron Ore Truck
|
||||
ROV( 25, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 32 Uhl Iron Ore Truck
|
||||
ROV( 42, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 33 Chippy Iron Ore Truck
|
||||
ROV( 9, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, 38, 12), // 34 Balogh Steel Truck
|
||||
ROV( 26, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, 48, 22), // 35 Uhl Steel Truck
|
||||
ROV( 43, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, 69, 45), // 36 Kelling Steel Truck
|
||||
ROV( 10, 145, 90, SND_19_BUS_START_PULL_AWAY, 96, 12, 38, 12), // 37 Balogh Armoured Truck
|
||||
ROV( 27, 170, 168, SND_19_BUS_START_PULL_AWAY, 176, 15, 48, 22), // 38 Uhl Armoured Truck
|
||||
ROV( 44, 180, 240, SND_19_BUS_START_PULL_AWAY, 224, 16, 69, 45), // 39 Foster Armoured Truck
|
||||
ROV( 11, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, 38, 12), // 40 Foster Food Van
|
||||
ROV( 28, 134, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, 48, 22), // 41 Perry Food Van
|
||||
ROV( 45, 144, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, 69, 45), // 42 Chippy Food Van
|
||||
ROV( 12, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, 38, 12), // 43 Uhl Paper Truck
|
||||
ROV( 29, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, 48, 22), // 44 Balogh Paper Truck
|
||||
ROV( 46, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, 69, 45), // 45 MPS Paper Truck
|
||||
ROV( 13, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 46 MPS Copper Ore Truck
|
||||
ROV( 30, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 47 Uhl Copper Ore Truck
|
||||
ROV( 47, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 48 Goss Copper Ore Truck
|
||||
ROV( 14, 111, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, 38, 12), // 49 Uhl Water Tanker
|
||||
ROV( 31, 141, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 50 Balogh Water Tanker
|
||||
ROV( 48, 151, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 51 MPS Water Tanker
|
||||
ROV( 15, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 18, 38, 12), // 52 Balogh Fruit Truck
|
||||
ROV( 32, 148, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, 48, 22), // 53 Uhl Fruit Truck
|
||||
ROV( 49, 158, 240, SND_19_BUS_START_PULL_AWAY, 224, 23, 69, 45), // 54 Kelling Fruit Truck
|
||||
ROV( 16, 117, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, 38, 12), // 55 Balogh Rubber Truck
|
||||
ROV( 33, 147, 168, SND_19_BUS_START_PULL_AWAY, 176, 19, 48, 22), // 56 Uhl Rubber Truck
|
||||
ROV( 50, 157, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, 69, 45), // 57 RMT Rubber Truck
|
||||
ROV( 52, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 58 MightyMover Sugar Truck
|
||||
ROV( 52, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 59 Powernaught Sugar Truck
|
||||
ROV( 52, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 60 Wizzowow Sugar Truck
|
||||
ROV( 53, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 61 MightyMover Cola Truck
|
||||
ROV( 53, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 62 Powernaught Cola Truck
|
||||
ROV( 53, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 63 Wizzowow Cola Truck
|
||||
ROV( 54, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 64 MightyMover Candyfloss Truck
|
||||
ROV( 54, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 65 Powernaught Candyfloss Truck
|
||||
ROV( 54, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 66 Wizzowow Candyfloss Truck
|
||||
ROV( 55, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 67 MightyMover Toffee Truck
|
||||
ROV( 55, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 68 Powernaught Toffee Truck
|
||||
ROV( 55, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 69 Wizzowow Toffee Truck
|
||||
ROV( 56, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 70 MightyMover Toy Van
|
||||
ROV( 56, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 71 Powernaught Toy Van
|
||||
ROV( 56, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 72 Wizzowow Toy Van
|
||||
ROV( 58, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 73 MightyMover Sweet Truck
|
||||
ROV( 58, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 74 Powernaught Sweet Truck
|
||||
ROV( 58, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 75 Wizzowow Sweet Truck
|
||||
ROV( 59, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 76 MightyMover Battery Truck
|
||||
ROV( 59, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 77 Powernaught Battery Truck
|
||||
ROV( 59, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 78 Wizzowow Battery Truck
|
||||
ROV( 60, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 79 MightyMover Fizzy Drink Truck
|
||||
ROV( 60, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 80 Powernaught Fizzy Drink Truck
|
||||
ROV( 60, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 81 Wizzowow Fizzy Drink Truck
|
||||
ROV( 61, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 82 MightyMover Plastic Truck
|
||||
ROV( 61, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 83 Powernaught Plastic Truck
|
||||
ROV( 61, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 84 Wizzowow Plastic Truck
|
||||
ROV( 62, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 85 MightyMover Bubble Truck
|
||||
ROV( 62, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 86 Powernaught Bubble Truck
|
||||
ROV( 62, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 87 Wizzowow Bubble Truck
|
||||
};
|
||||
#undef ROV
|
||||
|
||||
#endif /* ENGINES_H */
|
||||
186
src/table/gameopt_settings.ini
Normal file
186
src/table/gameopt_settings.ini
Normal file
@@ -0,0 +1,186 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
static const uint GAME_DIFFICULTY_NUM = 18;
|
||||
static uint16 _old_diff_custom[GAME_DIFFICULTY_NUM];
|
||||
uint8 _old_diff_level; ///< Old difficulty level from old savegames
|
||||
uint8 _old_units; ///< Old units from old savegames
|
||||
|
||||
/* Most of these strings are used both for gameopt-backward compatability
|
||||
* and the settings tables. The rest is here for consistency. */
|
||||
static const char *_locale_currencies = "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|RON|RUR|SIT|SEK|YTL|SKK|BRL|EEK|custom";
|
||||
static const char *_locale_units = "imperial|metric|si";
|
||||
static const char *_town_names = "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovak|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian|catalan";
|
||||
static const char *_climates = "temperate|arctic|tropic|toyland";
|
||||
static const char *_autosave_interval = "off|monthly|quarterly|half year|yearly";
|
||||
static const char *_roadsides = "left|right";
|
||||
static const char *_savegame_date = "long|short|iso";
|
||||
#ifdef ENABLE_NETWORK
|
||||
static const char *_server_langs = "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN";
|
||||
#endif /* ENABLE_NETWORK */
|
||||
static const char *_osk_activation = "disabled|double|single|immediately";
|
||||
static const char *_settings_profiles = "easy|medium|hard";
|
||||
static const char *_news_display = "off|summarized|full";
|
||||
|
||||
static const SettingDesc _gameopt_settings[] = {
|
||||
/* In version 4 a new difficulty setting has been added to the difficulty settings,
|
||||
* town attitude towards demolishing. Needs special handling because some dimwit thought
|
||||
* it funny to have the GameDifficulty struct be an array while it is a struct of
|
||||
* same-sized members
|
||||
* XXX - To save file-space and since values are never bigger than about 10? only
|
||||
* save the first 16 bits in the savegame. Question is why the values are still int32
|
||||
* and why not byte for example?
|
||||
* 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack
|
||||
* for savegames version 0 - though it is an array, it has to go through the byteswap process */
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, $var, $length, $def, $min, $max, $interval, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_NULL = SDT_NULL($length, $from, $to),
|
||||
SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat),
|
||||
SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_END = SDT_END()
|
||||
|
||||
[defaults]
|
||||
flags = 0
|
||||
guiflags = 0
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDTG_GENERAL]
|
||||
name = ""diff_custom""
|
||||
sdt_cmd = SDT_INTLIST
|
||||
sle_cmd = SL_ARR
|
||||
type = SLE_FILE_I16 | SLE_VAR_U16
|
||||
flags = SLF_NOT_IN_CONFIG
|
||||
var = _old_diff_custom
|
||||
length = 17
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0
|
||||
full = NULL
|
||||
to = SLV_4
|
||||
|
||||
[SDTG_GENERAL]
|
||||
name = ""diff_custom""
|
||||
sdt_cmd = SDT_INTLIST
|
||||
sle_cmd = SL_ARR
|
||||
type = SLE_UINT16
|
||||
flags = SLF_NOT_IN_CONFIG
|
||||
var = _old_diff_custom
|
||||
length = 18
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0
|
||||
full = NULL
|
||||
from = SLV_4
|
||||
|
||||
##
|
||||
[SDTG_VAR]
|
||||
name = ""diff_level""
|
||||
var = _old_diff_level
|
||||
type = SLE_UINT8
|
||||
flags = SLF_NOT_IN_CONFIG
|
||||
def = SP_CUSTOM
|
||||
min = SP_EASY
|
||||
max = SP_CUSTOM
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_OMANY]
|
||||
base = GameSettings
|
||||
var = locale.currency
|
||||
type = SLE_UINT8
|
||||
flags = SLF_NO_NETWORK_SYNC
|
||||
def = 0
|
||||
max = CURRENCY_END - 1
|
||||
full = _locale_currencies
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_OMANY]
|
||||
name = ""units""
|
||||
var = _old_units
|
||||
type = SLE_UINT8
|
||||
flags = SLF_NOT_IN_CONFIG
|
||||
def = 1
|
||||
max = 2
|
||||
full = _locale_units
|
||||
cat = SC_BASIC
|
||||
|
||||
# There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow
|
||||
# these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI.
|
||||
[SDT_OMANY]
|
||||
base = GameSettings
|
||||
var = game_creation.town_name
|
||||
type = SLE_UINT8
|
||||
def = 0
|
||||
max = 255
|
||||
full = _town_names
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_OMANY]
|
||||
base = GameSettings
|
||||
var = game_creation.landscape
|
||||
type = SLE_UINT8
|
||||
def = 0
|
||||
max = 3
|
||||
full = _climates
|
||||
load = ConvertLandscape
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = game_creation.snow_line_height
|
||||
type = SLE_UINT8
|
||||
def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT
|
||||
min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT
|
||||
max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT
|
||||
to = SLV_22
|
||||
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
from = SLV_22
|
||||
to = SLV_165
|
||||
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
to = SLV_23
|
||||
|
||||
[SDTC_OMANY]
|
||||
var = gui.autosave
|
||||
type = SLE_UINT8
|
||||
from = SLV_23
|
||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||
def = 1
|
||||
max = 4
|
||||
full = _autosave_interval
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_OMANY]
|
||||
base = GameSettings
|
||||
var = vehicle.road_side
|
||||
type = SLE_UINT8
|
||||
def = 1
|
||||
max = 1
|
||||
full = _roadsides
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_END]
|
||||
|
||||
168
src/table/genland.h
Normal file
168
src/table/genland.h
Normal file
@@ -0,0 +1,168 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file genland.h Table used to generate deserts and/or rain forests. */
|
||||
|
||||
#define M(x, y) {x, y}
|
||||
|
||||
static const TileIndexDiffC _make_desert_or_rainforest_data[] = {
|
||||
M(-5, -6),
|
||||
M(-4, -6),
|
||||
M(-3, -6),
|
||||
M(-2, -6),
|
||||
M(-1, -6),
|
||||
M( 0, -5),
|
||||
M( 1, -5),
|
||||
M( 2, -5),
|
||||
M( 3, -5),
|
||||
M( 4, -5),
|
||||
M( 5, -5),
|
||||
M(-5, -5),
|
||||
M(-4, -5),
|
||||
M(-3, -5),
|
||||
M(-2, -5),
|
||||
M(-1, -5),
|
||||
M( 0, -4),
|
||||
M( 1, -4),
|
||||
M( 2, -4),
|
||||
M( 3, -4),
|
||||
M( 4, -4),
|
||||
M( 5, -4),
|
||||
M(-5, -4),
|
||||
M(-4, -4),
|
||||
M(-3, -4),
|
||||
M(-2, -4),
|
||||
M(-1, -4),
|
||||
M( 0, -3),
|
||||
M( 1, -3),
|
||||
M( 2, -3),
|
||||
M( 3, -3),
|
||||
M( 4, -3),
|
||||
M( 5, -3),
|
||||
M(-5, -3),
|
||||
M(-4, -3),
|
||||
M(-3, -3),
|
||||
M(-2, -3),
|
||||
M(-1, -3),
|
||||
M( 0, -2),
|
||||
M( 1, -2),
|
||||
M( 2, -2),
|
||||
M( 3, -2),
|
||||
M( 4, -2),
|
||||
M( 5, -2),
|
||||
M(-5, -2),
|
||||
M(-4, -2),
|
||||
M(-3, -2),
|
||||
M(-2, -2),
|
||||
M(-1, -2),
|
||||
M( 0, -1),
|
||||
M( 1, -1),
|
||||
M( 2, -1),
|
||||
M( 3, -1),
|
||||
M( 4, -1),
|
||||
M( 5, -1),
|
||||
M(-5, -1),
|
||||
M(-4, -1),
|
||||
M(-3, -1),
|
||||
M(-2, -1),
|
||||
M(-1, -1),
|
||||
M( 0, 0),
|
||||
M( 1, 0),
|
||||
M( 2, 0),
|
||||
M( 3, 0),
|
||||
M( 4, 0),
|
||||
M( 5, 0),
|
||||
M(-5, 0),
|
||||
M(-4, 0),
|
||||
M(-3, 0),
|
||||
M(-2, 0),
|
||||
M(-1, 0),
|
||||
M( 0, 1),
|
||||
M( 1, 1),
|
||||
M( 2, 1),
|
||||
M( 3, 1),
|
||||
M( 4, 1),
|
||||
M( 5, 1),
|
||||
M(-5, 1),
|
||||
M(-4, 1),
|
||||
M(-3, 1),
|
||||
M(-2, 1),
|
||||
M(-1, 1),
|
||||
M( 0, 2),
|
||||
M( 1, 2),
|
||||
M( 2, 2),
|
||||
M( 3, 2),
|
||||
M( 4, 2),
|
||||
M( 5, 2),
|
||||
M(-5, 2),
|
||||
M(-4, 2),
|
||||
M(-3, 2),
|
||||
M(-2, 2),
|
||||
M(-1, 2),
|
||||
M( 0, 3),
|
||||
M( 1, 3),
|
||||
M( 2, 3),
|
||||
M( 3, 3),
|
||||
M( 4, 3),
|
||||
M( 5, 3),
|
||||
M(-5, 3),
|
||||
M(-4, 3),
|
||||
M(-3, 3),
|
||||
M(-2, 3),
|
||||
M(-1, 3),
|
||||
M( 0, 4),
|
||||
M( 1, 4),
|
||||
M( 2, 4),
|
||||
M( 3, 4),
|
||||
M( 4, 4),
|
||||
M( 5, 4),
|
||||
M(-5, 4),
|
||||
M(-4, 4),
|
||||
M(-3, 4),
|
||||
M(-2, 4),
|
||||
M(-1, 4),
|
||||
M( 0, 5),
|
||||
M( 1, 5),
|
||||
M( 2, 5),
|
||||
M( 3, 5),
|
||||
M( 4, 5),
|
||||
M( 5, 5),
|
||||
M( 6, -3),
|
||||
M(-6, -4),
|
||||
M(-3, 5),
|
||||
M(-3, -7),
|
||||
M( 6, -2),
|
||||
M(-6, -3),
|
||||
M(-2, 5),
|
||||
M(-2, -7),
|
||||
M( 6, -1),
|
||||
M(-6, -2),
|
||||
M(-1, 5),
|
||||
M(-1, -7),
|
||||
M( 6, 0),
|
||||
M(-6, -1),
|
||||
M( 0, 6),
|
||||
M( 0, -6),
|
||||
M( 6, 1),
|
||||
M(-6, 0),
|
||||
M( 1, 6),
|
||||
M( 1, -6),
|
||||
M( 6, 2),
|
||||
M(-6, 1),
|
||||
M( 2, 6),
|
||||
M( 2, -6),
|
||||
M( 6, 3),
|
||||
M(-6, 2),
|
||||
M( 3, 6),
|
||||
M( 3, -6)
|
||||
};
|
||||
|
||||
|
||||
|
||||
#undef M
|
||||
344
src/table/heightmap_colours.h
Normal file
344
src/table/heightmap_colours.h
Normal file
@@ -0,0 +1,344 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file heightmap_colours.h The colour tables for heightmaps.
|
||||
*/
|
||||
|
||||
/** Height map colours for the green colour scheme, ordered by height. */
|
||||
static const uint32 _green_map_heights[] = {
|
||||
MKCOLOUR(0x59595958),
|
||||
MKCOLOUR(0x59595958),
|
||||
MKCOLOUR(0x59595959),
|
||||
MKCOLOUR(0x5959595A),
|
||||
MKCOLOUR(0x59595A59),
|
||||
MKCOLOUR(0x59595A5A),
|
||||
MKCOLOUR(0x595A5959),
|
||||
MKCOLOUR(0x595A595A),
|
||||
MKCOLOUR(0x595A5A59),
|
||||
MKCOLOUR(0x595A5A5A),
|
||||
MKCOLOUR(0x5A595959),
|
||||
MKCOLOUR(0x5A59595A),
|
||||
MKCOLOUR(0x5A595A59),
|
||||
MKCOLOUR(0x5A595A5A),
|
||||
MKCOLOUR(0x5A5A5959),
|
||||
MKCOLOUR(0x5A5A595A),
|
||||
MKCOLOUR(0x5A5A5A59),
|
||||
MKCOLOUR(0x5A5A5A5A),
|
||||
MKCOLOUR(0x5A5A5A5B),
|
||||
MKCOLOUR(0x5A5A5B5A),
|
||||
MKCOLOUR(0x5A5A5B5B),
|
||||
MKCOLOUR(0x5A5B5A5A),
|
||||
MKCOLOUR(0x5A5B5A5B),
|
||||
MKCOLOUR(0x5A5B5B5A),
|
||||
MKCOLOUR(0x5A5B5B5B),
|
||||
MKCOLOUR(0x5B5A5A5A),
|
||||
MKCOLOUR(0x5B5A5A5B),
|
||||
MKCOLOUR(0x5B5A5B5A),
|
||||
MKCOLOUR(0x5B5A5B5B),
|
||||
MKCOLOUR(0x5B5B5A5A),
|
||||
MKCOLOUR(0x5B5B5A5B),
|
||||
MKCOLOUR(0x5B5B5B5B),
|
||||
MKCOLOUR(0x5B5B5B5C),
|
||||
MKCOLOUR(0x5B5B5C5B),
|
||||
MKCOLOUR(0x5B5B5C5C),
|
||||
MKCOLOUR(0x5B5C5B5B),
|
||||
MKCOLOUR(0x5B5C5B5C),
|
||||
MKCOLOUR(0x5B5C5C5B),
|
||||
MKCOLOUR(0x5B5C5C5C),
|
||||
MKCOLOUR(0x5C5B5B5B),
|
||||
MKCOLOUR(0x5C5B5B5C),
|
||||
MKCOLOUR(0x5C5B5C5B),
|
||||
MKCOLOUR(0x5C5B5C5C),
|
||||
MKCOLOUR(0x5C5C5B5B),
|
||||
MKCOLOUR(0x5C5C5B5C),
|
||||
MKCOLOUR(0x5C5C5C5C),
|
||||
MKCOLOUR(0x5C5C5C5D),
|
||||
MKCOLOUR(0x5C5C5D5C),
|
||||
MKCOLOUR(0x5C5C5D5D),
|
||||
MKCOLOUR(0x5C5D5C5C),
|
||||
MKCOLOUR(0x5C5D5C5D),
|
||||
MKCOLOUR(0x5C5D5D5C),
|
||||
MKCOLOUR(0x5C5D5D5D),
|
||||
MKCOLOUR(0x5D5C5C5C),
|
||||
MKCOLOUR(0x5D5C5C5D),
|
||||
MKCOLOUR(0x5D5C5D5C),
|
||||
MKCOLOUR(0x5D5C5D5D),
|
||||
MKCOLOUR(0x5D5D5C5C),
|
||||
MKCOLOUR(0x5D5D5C5D),
|
||||
MKCOLOUR(0x5D5D5D5D),
|
||||
MKCOLOUR(0x5D5D5D5E),
|
||||
MKCOLOUR(0x5D5D5E5D),
|
||||
MKCOLOUR(0x5D5D5E5E),
|
||||
MKCOLOUR(0x5D5E5D5D),
|
||||
MKCOLOUR(0x5D5E5D5E),
|
||||
MKCOLOUR(0x5D5E5E5D),
|
||||
MKCOLOUR(0x5D5E5E5E),
|
||||
MKCOLOUR(0x5E5D5D5D),
|
||||
MKCOLOUR(0x5E5D5D5E),
|
||||
MKCOLOUR(0x5E5D5E5D),
|
||||
MKCOLOUR(0x5E5D5E5E),
|
||||
MKCOLOUR(0x5E5D5D5D),
|
||||
MKCOLOUR(0x5E5D5D5E),
|
||||
MKCOLOUR(0x5E5E5E5E),
|
||||
MKCOLOUR(0x5E5E5E5F),
|
||||
MKCOLOUR(0x5E5E5F5E),
|
||||
MKCOLOUR(0x5E5E5F5F),
|
||||
MKCOLOUR(0x5E5F5E5E),
|
||||
MKCOLOUR(0x5E5F5E5F),
|
||||
MKCOLOUR(0x5E5F5F5E),
|
||||
MKCOLOUR(0x5E5F5F5F),
|
||||
MKCOLOUR(0x5F5E5E5E),
|
||||
MKCOLOUR(0x5F5E5E5F),
|
||||
MKCOLOUR(0x5F5E5F5E),
|
||||
MKCOLOUR(0x5F5E5F5F),
|
||||
MKCOLOUR(0x5F5F5E5E),
|
||||
MKCOLOUR(0x5F5F5E5F),
|
||||
MKCOLOUR(0x5F5F5F5F),
|
||||
MKCOLOUR(0x5F5F5F1F),
|
||||
MKCOLOUR(0x5F5F1F5F),
|
||||
MKCOLOUR(0x5F5F1F1F),
|
||||
MKCOLOUR(0x5F1F5F1F),
|
||||
MKCOLOUR(0x5F1F1F1F),
|
||||
MKCOLOUR(0x1F5F5F5F),
|
||||
MKCOLOUR(0x1F5F5F1F),
|
||||
MKCOLOUR(0x1F5F1F5F),
|
||||
MKCOLOUR(0x1F5F1F1F),
|
||||
MKCOLOUR(0x1F1F5F5F),
|
||||
MKCOLOUR(0x1F1F5F1F),
|
||||
MKCOLOUR(0x1F1F1F5F),
|
||||
MKCOLOUR(0x1F1F1F1F),
|
||||
MKCOLOUR(0x1F1F1F27),
|
||||
MKCOLOUR(0x1F1F271F),
|
||||
MKCOLOUR(0x1F1F2727),
|
||||
MKCOLOUR(0x1F271F1F),
|
||||
MKCOLOUR(0x1F271F27),
|
||||
MKCOLOUR(0x1F272727),
|
||||
MKCOLOUR(0x271F1F1F),
|
||||
MKCOLOUR(0x271F1F27),
|
||||
MKCOLOUR(0x271F271F),
|
||||
MKCOLOUR(0x271F2727),
|
||||
MKCOLOUR(0x27271F1F),
|
||||
MKCOLOUR(0x27271F27),
|
||||
MKCOLOUR(0x2727271F),
|
||||
MKCOLOUR(0x27272727),
|
||||
};
|
||||
|
||||
/** Height map colours for the dark green colour scheme, ordered by height. */
|
||||
static const uint32 _dark_green_map_heights[] = {
|
||||
MKCOLOUR(0x60606060),
|
||||
MKCOLOUR(0x60606061),
|
||||
MKCOLOUR(0x60606160),
|
||||
MKCOLOUR(0x60606161),
|
||||
MKCOLOUR(0x60616060),
|
||||
MKCOLOUR(0x60616061),
|
||||
MKCOLOUR(0x60616160),
|
||||
MKCOLOUR(0x60616161),
|
||||
MKCOLOUR(0x61606060),
|
||||
MKCOLOUR(0x61606061),
|
||||
MKCOLOUR(0x61606160),
|
||||
MKCOLOUR(0x61606161),
|
||||
MKCOLOUR(0x61616060),
|
||||
MKCOLOUR(0x61616061),
|
||||
MKCOLOUR(0x61616160),
|
||||
MKCOLOUR(0x61616161),
|
||||
MKCOLOUR(0x61616162),
|
||||
MKCOLOUR(0x61616261),
|
||||
MKCOLOUR(0x61616262),
|
||||
MKCOLOUR(0x61626161),
|
||||
MKCOLOUR(0x61626162),
|
||||
MKCOLOUR(0x61626261),
|
||||
MKCOLOUR(0x61626262),
|
||||
MKCOLOUR(0x62616161),
|
||||
MKCOLOUR(0x62616162),
|
||||
MKCOLOUR(0x62616261),
|
||||
MKCOLOUR(0x62616262),
|
||||
MKCOLOUR(0x62626161),
|
||||
MKCOLOUR(0x62626162),
|
||||
MKCOLOUR(0x62626261),
|
||||
MKCOLOUR(0x62626262),
|
||||
MKCOLOUR(0x62626263),
|
||||
MKCOLOUR(0x62626362),
|
||||
MKCOLOUR(0x62626363),
|
||||
MKCOLOUR(0x62636262),
|
||||
MKCOLOUR(0x62636263),
|
||||
MKCOLOUR(0x62636362),
|
||||
MKCOLOUR(0x62636363),
|
||||
MKCOLOUR(0x63626262),
|
||||
MKCOLOUR(0x63626263),
|
||||
MKCOLOUR(0x63626362),
|
||||
MKCOLOUR(0x63626363),
|
||||
MKCOLOUR(0x63636262),
|
||||
MKCOLOUR(0x63636263),
|
||||
MKCOLOUR(0x63636362),
|
||||
MKCOLOUR(0x63636363),
|
||||
MKCOLOUR(0x63636364),
|
||||
MKCOLOUR(0x63636463),
|
||||
MKCOLOUR(0x63636464),
|
||||
MKCOLOUR(0x63646363),
|
||||
MKCOLOUR(0x63646364),
|
||||
MKCOLOUR(0x63646463),
|
||||
MKCOLOUR(0x63646464),
|
||||
MKCOLOUR(0x64636363),
|
||||
MKCOLOUR(0x64636364),
|
||||
MKCOLOUR(0x64636463),
|
||||
MKCOLOUR(0x64636464),
|
||||
MKCOLOUR(0x64646363),
|
||||
MKCOLOUR(0x64646364),
|
||||
MKCOLOUR(0x64646463),
|
||||
MKCOLOUR(0x64646464),
|
||||
MKCOLOUR(0x64646465),
|
||||
MKCOLOUR(0x64646564),
|
||||
MKCOLOUR(0x64646565),
|
||||
MKCOLOUR(0x64656464),
|
||||
MKCOLOUR(0x64656465),
|
||||
MKCOLOUR(0x64656564),
|
||||
MKCOLOUR(0x64656565),
|
||||
MKCOLOUR(0x65646464),
|
||||
MKCOLOUR(0x65646465),
|
||||
MKCOLOUR(0x65646564),
|
||||
MKCOLOUR(0x65646565),
|
||||
MKCOLOUR(0x65656464),
|
||||
MKCOLOUR(0x65656465),
|
||||
MKCOLOUR(0x65656564),
|
||||
MKCOLOUR(0x65656565),
|
||||
MKCOLOUR(0x65656566),
|
||||
MKCOLOUR(0x65656665),
|
||||
MKCOLOUR(0x65656666),
|
||||
MKCOLOUR(0x65666565),
|
||||
MKCOLOUR(0x65666566),
|
||||
MKCOLOUR(0x65666665),
|
||||
MKCOLOUR(0x65666666),
|
||||
MKCOLOUR(0x66656565),
|
||||
MKCOLOUR(0x66656566),
|
||||
MKCOLOUR(0x66656665),
|
||||
MKCOLOUR(0x66656666),
|
||||
MKCOLOUR(0x66666565),
|
||||
MKCOLOUR(0x66666566),
|
||||
MKCOLOUR(0x66666665),
|
||||
MKCOLOUR(0x66666666),
|
||||
MKCOLOUR(0x66666667),
|
||||
MKCOLOUR(0x66666766),
|
||||
MKCOLOUR(0x66666767),
|
||||
MKCOLOUR(0x66676666),
|
||||
MKCOLOUR(0x66676667),
|
||||
MKCOLOUR(0x66676766),
|
||||
MKCOLOUR(0x66676767),
|
||||
MKCOLOUR(0x67676767),
|
||||
};
|
||||
|
||||
/** Height map colours for the violet colour scheme, ordered by height. */
|
||||
static const uint32 _violet_map_heights[] = {
|
||||
MKCOLOUR(0x80808080),
|
||||
MKCOLOUR(0x80808081),
|
||||
MKCOLOUR(0x80808180),
|
||||
MKCOLOUR(0x80808181),
|
||||
MKCOLOUR(0x80818080),
|
||||
MKCOLOUR(0x80818081),
|
||||
MKCOLOUR(0x80818180),
|
||||
MKCOLOUR(0x80818181),
|
||||
MKCOLOUR(0x81808080),
|
||||
MKCOLOUR(0x81808081),
|
||||
MKCOLOUR(0x81808180),
|
||||
MKCOLOUR(0x81808181),
|
||||
MKCOLOUR(0x81818080),
|
||||
MKCOLOUR(0x81818081),
|
||||
MKCOLOUR(0x81818180),
|
||||
MKCOLOUR(0x81818181),
|
||||
MKCOLOUR(0x81818182),
|
||||
MKCOLOUR(0x81818281),
|
||||
MKCOLOUR(0x81818282),
|
||||
MKCOLOUR(0x81828181),
|
||||
MKCOLOUR(0x81828182),
|
||||
MKCOLOUR(0x81828281),
|
||||
MKCOLOUR(0x81828282),
|
||||
MKCOLOUR(0x82818181),
|
||||
MKCOLOUR(0x82818182),
|
||||
MKCOLOUR(0x82818281),
|
||||
MKCOLOUR(0x82818282),
|
||||
MKCOLOUR(0x82828181),
|
||||
MKCOLOUR(0x82828182),
|
||||
MKCOLOUR(0x82828281),
|
||||
MKCOLOUR(0x82828282),
|
||||
MKCOLOUR(0x82828283),
|
||||
MKCOLOUR(0x82828382),
|
||||
MKCOLOUR(0x82828383),
|
||||
MKCOLOUR(0x82838282),
|
||||
MKCOLOUR(0x82838283),
|
||||
MKCOLOUR(0x82838382),
|
||||
MKCOLOUR(0x82838383),
|
||||
MKCOLOUR(0x83828282),
|
||||
MKCOLOUR(0x83828283),
|
||||
MKCOLOUR(0x83828382),
|
||||
MKCOLOUR(0x83828383),
|
||||
MKCOLOUR(0x83838282),
|
||||
MKCOLOUR(0x83838283),
|
||||
MKCOLOUR(0x83838382),
|
||||
MKCOLOUR(0x83838383),
|
||||
MKCOLOUR(0x83838384),
|
||||
MKCOLOUR(0x83838483),
|
||||
MKCOLOUR(0x83838484),
|
||||
MKCOLOUR(0x83848383),
|
||||
MKCOLOUR(0x83848384),
|
||||
MKCOLOUR(0x83848483),
|
||||
MKCOLOUR(0x83848484),
|
||||
MKCOLOUR(0x84838383),
|
||||
MKCOLOUR(0x84838384),
|
||||
MKCOLOUR(0x84838483),
|
||||
MKCOLOUR(0x84838484),
|
||||
MKCOLOUR(0x84848383),
|
||||
MKCOLOUR(0x84848384),
|
||||
MKCOLOUR(0x84848483),
|
||||
MKCOLOUR(0x84848484),
|
||||
MKCOLOUR(0x84848485),
|
||||
MKCOLOUR(0x84848584),
|
||||
MKCOLOUR(0x84848585),
|
||||
MKCOLOUR(0x84858484),
|
||||
MKCOLOUR(0x84858485),
|
||||
MKCOLOUR(0x84858584),
|
||||
MKCOLOUR(0x84858585),
|
||||
MKCOLOUR(0x85848484),
|
||||
MKCOLOUR(0x85848485),
|
||||
MKCOLOUR(0x85848584),
|
||||
MKCOLOUR(0x85848585),
|
||||
MKCOLOUR(0x85858484),
|
||||
MKCOLOUR(0x85858485),
|
||||
MKCOLOUR(0x85858584),
|
||||
MKCOLOUR(0x85858585),
|
||||
MKCOLOUR(0x85858586),
|
||||
MKCOLOUR(0x85858685),
|
||||
MKCOLOUR(0x85858686),
|
||||
MKCOLOUR(0x85868585),
|
||||
MKCOLOUR(0x85868586),
|
||||
MKCOLOUR(0x85868685),
|
||||
MKCOLOUR(0x85868686),
|
||||
MKCOLOUR(0x85868585),
|
||||
MKCOLOUR(0x85868586),
|
||||
MKCOLOUR(0x85868685),
|
||||
MKCOLOUR(0x85868686),
|
||||
MKCOLOUR(0x86868585),
|
||||
MKCOLOUR(0x86868586),
|
||||
MKCOLOUR(0x86868685),
|
||||
MKCOLOUR(0x86868686),
|
||||
MKCOLOUR(0x86868687),
|
||||
MKCOLOUR(0x86868786),
|
||||
MKCOLOUR(0x86868787),
|
||||
MKCOLOUR(0x86878686),
|
||||
MKCOLOUR(0x86878687),
|
||||
MKCOLOUR(0x86878786),
|
||||
MKCOLOUR(0x86878787),
|
||||
MKCOLOUR(0x87868686),
|
||||
MKCOLOUR(0x87868687),
|
||||
MKCOLOUR(0x87868786),
|
||||
MKCOLOUR(0x87868787),
|
||||
MKCOLOUR(0x87878686),
|
||||
MKCOLOUR(0x87878687),
|
||||
MKCOLOUR(0x87878786),
|
||||
MKCOLOUR(0x87878787),
|
||||
};
|
||||
958
src/table/industry_land.h
Normal file
958
src/table/industry_land.h
Normal file
@@ -0,0 +1,958 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file industry_land.h Information about the behaviour of the default industry tiles. */
|
||||
|
||||
/**
|
||||
* This is used to gather some data about animation
|
||||
* drawing in the industry code
|
||||
* Image_1-2-3 are in fact only offset in the sprites
|
||||
* used by the industry.
|
||||
* To specify an invalid one, either 255 or 0 is used,
|
||||
* depending of the industry.
|
||||
*/
|
||||
struct DrawIndustryAnimationStruct {
|
||||
int x; ///< coordinate x of the first image offset
|
||||
byte image_1; ///< image offset 1
|
||||
byte image_2; ///< image offset 2
|
||||
byte image_3; ///< image offset 3
|
||||
};
|
||||
|
||||
/**
|
||||
* Simple structure gathering x,y coordinates for
|
||||
* industries animations
|
||||
*/
|
||||
struct DrawIndustryCoordinates {
|
||||
byte x; ///< coordinate x of the pair
|
||||
byte y; ///< coordinate y of the pair
|
||||
};
|
||||
|
||||
/**
|
||||
* Macro to ease the declaration of the array
|
||||
* @param s1 sprite ID of ground sprite
|
||||
* @param p1 palette ID of ground sprite
|
||||
* @param s2 sprite ID of building sprite
|
||||
* @param p2 palette ID of building sprite
|
||||
* @param sx coordinate x of the sprite
|
||||
* @param sy coordinate y of the sprite
|
||||
* @param w width of the sprite
|
||||
* @param h height of the sprite
|
||||
* @param dz virtual height of the sprite
|
||||
* @param p this allows to specify a special drawing procedure.
|
||||
* @see DrawBuildingsTileStruct
|
||||
*/
|
||||
#define M(s1, p1, s2, p2, sx, sy, w, h, dz, p) { { s1, p1 }, { s2, p2 }, sx, sy, w, h, dz, p }
|
||||
|
||||
/** Structure for industry tiles drawing */
|
||||
static const DrawBuildingsTileStruct _industry_draw_tile_data[NEW_INDUSTRYTILEOFFSET * 4] = {
|
||||
M( 0xf54, PAL_NONE, 0x7db, PAL_NONE, 7, 0, 9, 9, 10, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7dc, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7de, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7df, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7df, PAL_NONE, 7, 0, 9, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e0, PAL_NONE, 1, 2, 15, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e1, PAL_NONE, 1, 2, 15, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e2, PAL_NONE, 1, 2, 15, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7e2, PAL_NONE, 1, 2, 15, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e3, PAL_NONE, 4, 4, 9, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e4, PAL_NONE, 4, 4, 9, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7e5, PAL_NONE, 4, 4, 9, 9, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7e5, PAL_NONE, 4, 4, 9, 9, 30, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7fd, PAL_NONE, 1, 1, 14, 14, 5, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7fe, PAL_NONE, 1, 1, 14, 14, 44, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7ff, PAL_NONE, 1, 1, 14, 14, 44, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7ff, PAL_NONE, 1, 1, 14, 14, 44, 0),
|
||||
M( 0xf54, PAL_NONE, 0x800, PAL_NONE, 0, 2, 16, 12, 6, 0),
|
||||
M( 0xf54, PAL_NONE, 0x801, PAL_NONE, 0, 2, 16, 12, 47, 0),
|
||||
M( 0xf54, PAL_NONE, 0x802, PAL_NONE, 0, 2, 16, 12, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x802, PAL_NONE, 0, 2, 16, 12, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x803, PAL_NONE, 1, 0, 14, 15, 5, 0),
|
||||
M( 0xf54, PAL_NONE, 0x804, PAL_NONE, 1, 0, 14, 15, 19, 0),
|
||||
M( 0xf54, PAL_NONE, 0x805, PAL_NONE, 1, 0, 14, 15, 21, 0),
|
||||
M( 0xf54, PAL_NONE, 0x805, PAL_NONE, 1, 0, 14, 15, 21, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x806, PAL_NONE, 1, 2, 14, 11, 32, 5),
|
||||
M( 0xf54, PAL_NONE, 0x80d, PAL_NONE, 1, 0, 13, 16, 8, 0),
|
||||
M( 0xf54, PAL_NONE, 0x80e, PAL_NONE, 1, 0, 13, 16, 20, 0),
|
||||
M( 0xf54, PAL_NONE, 0x80f, PAL_NONE, 1, 0, 13, 16, 20, 0),
|
||||
M( 0xf54, PAL_NONE, 0x80f, PAL_NONE, 1, 0, 13, 16, 20, 0),
|
||||
M( 0xf54, PAL_NONE, 0x810, PAL_NONE, 0, 1, 16, 14, 8, 0),
|
||||
M( 0xf54, PAL_NONE, 0x811, PAL_NONE, 0, 1, 16, 14, 21, 0),
|
||||
M( 0xf54, PAL_NONE, 0x812, PAL_NONE, 0, 1, 16, 14, 21, 0),
|
||||
M( 0xf54, PAL_NONE, 0x812, PAL_NONE, 0, 1, 16, 14, 21, 0),
|
||||
M( 0xf54, PAL_NONE, 0x813, PAL_NONE, 1, 1, 14, 14, 12, 0),
|
||||
M( 0xf54, PAL_NONE, 0x814, PAL_NONE, 1, 1, 14, 14, 15, 0),
|
||||
M( 0xf54, PAL_NONE, 0x815, PAL_NONE, 1, 1, 14, 14, 22, 0),
|
||||
M( 0xf54, PAL_NONE, 0x815, PAL_NONE, 1, 1, 14, 14, 22, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x816, PAL_NONE, 0, 0, 16, 15, 20, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x817, PAL_NONE, 0, 1, 16, 13, 19, 0),
|
||||
M( 0x81d, PAL_NONE, 0x818, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x819, PAL_NONE, 0, 0, 16, 16, 15, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81a, PAL_NONE, 0, 0, 16, 16, 31, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81b, PAL_NONE, 0, 0, 16, 16, 39, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0xf54, PAL_NONE, 0x81e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 4, 0),
|
||||
M( 0xf54, PAL_NONE, 0x81f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 24, 0),
|
||||
M( 0xf54, PAL_NONE, 0x820 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 27, 0),
|
||||
M( 0x58c, PAL_NONE, 0x820 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 27, 0),
|
||||
M( 0xf54, PAL_NONE, 0x821 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 3, 0),
|
||||
M( 0xf54, PAL_NONE, 0x822 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 63, 0),
|
||||
M( 0xf54, PAL_NONE, 0x823 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 62, 0),
|
||||
M( 0x58c, PAL_NONE, 0x823 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 62, 0),
|
||||
M( 0xf54, PAL_NONE, 0x824 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 3, 0),
|
||||
M( 0xf54, PAL_NONE, 0x825 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 72, 0),
|
||||
M( 0xf54, PAL_NONE, 0x825 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 72, 0),
|
||||
M( 0x58c, PAL_NONE, 0x826 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 80, 0),
|
||||
M( 0xf54, PAL_NONE, 0x827 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0),
|
||||
M( 0xf54, PAL_NONE, 0x828 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0),
|
||||
M( 0xf54, PAL_NONE, 0x829 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0),
|
||||
M( 0x58c, PAL_NONE, 0x829 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 26, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 44, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 46, 0),
|
||||
M( 0x58c, PAL_NONE, 0x82c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 46, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82d, PAL_NONE, 3, 1, 10, 13, 2, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82e, PAL_NONE, 3, 1, 10, 13, 11, 0),
|
||||
M( 0xf54, PAL_NONE, 0x82f, PAL_NONE, 3, 1, 10, 13, 11, 0),
|
||||
M( 0x58c, PAL_NONE, 0x82f, PAL_NONE, 3, 1, 10, 13, 11, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x833, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x837, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x834, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x834, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x830, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x838, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x835, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x835, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x831, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x839, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x836, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x836, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0xfdd, PAL_NONE, 0x832, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87f, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x880, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x881, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x882, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x883, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x883, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x882, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x881, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x880, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87f, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0),
|
||||
M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0),
|
||||
M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x869, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x862 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x866 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86a, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x863 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x867 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x864 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x868 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x865 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0xf54, PAL_NONE, 0x871 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x875 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x875 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x879 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x872 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x876 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x876 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x87a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x873 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x877 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x877 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x87b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x874 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x878 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x878 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x87c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7ea, PAL_NONE, 3, 2, 8, 8, 18, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7eb, PAL_NONE, 3, 2, 8, 8, 37, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7ed, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7ee, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7ee, PAL_NONE, 3, 2, 8, 8, 49, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7ef, PAL_NONE, 3, 2, 10, 7, 20, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f0, PAL_NONE, 3, 2, 10, 7, 40, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f1, PAL_NONE, 3, 2, 10, 7, 40, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7f1, PAL_NONE, 3, 2, 10, 7, 40, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f2, PAL_NONE, 4, 4, 7, 8, 22, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f3, PAL_NONE, 4, 4, 7, 8, 22, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f4, PAL_NONE, 4, 4, 7, 8, 22, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7f4, PAL_NONE, 4, 4, 7, 8, 22, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f5, PAL_NONE, 2, 1, 11, 13, 12, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f6, PAL_NONE, 2, 1, 11, 13, 12, 0),
|
||||
M( 0xf54, PAL_NONE, 0x7f7, PAL_NONE, 2, 1, 11, 13, 12, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x7f7, PAL_NONE, 2, 1, 11, 13, 12, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x85c, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x851, PAL_NONE, 0x852, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x851, PAL_NONE, 0x852, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x846 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x847 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x85d, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x853, PAL_NONE, 0x854, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x853, PAL_NONE, 0x854, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x848 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x849 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x85e, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x855, PAL_NONE, 0x856, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x855, PAL_NONE, 0x856, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x84a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x84b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x85f, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x857, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x857, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x84c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x860, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x858, PAL_NONE, 0x859, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x858, PAL_NONE, 0x859, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x84d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x84e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x861, PAL_NONE, 0, 0, 1, 1, 1, 0),
|
||||
M( 0x85a, PAL_NONE, 0x85b, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x85a, PAL_NONE, 0x85b, PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x84f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x850 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x886, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x887, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x890 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x890 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x891 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x892 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x893 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x893 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x894 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x895 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x896 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x896 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x897 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x898, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x899, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x899, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89a, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a6, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89b, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89c, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89c, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89d, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89e, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89f, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x89f, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a1, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a2, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a3, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a4, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a2, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a3, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8a5, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8a7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8b7, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8b7, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8c7, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8a8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8a9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8b9, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8b9, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8c9, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8aa, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ba, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ba, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ca, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ab, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8cb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ac, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8cc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ad, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8cd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ae, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8be, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8be, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ce, PAL_NONE, 0x8d7, PAL_NONE, 0, 0, 16, 16, 35, 0),
|
||||
M( 0x8af, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8bf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8cf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8b6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8c6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8d6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ce, PAL_NONE, 0x8d7, PAL_NONE, 0, 0, 16, 16, 35, 0),
|
||||
M( 0x8ce, PAL_NONE, 0x8d8, PAL_NONE, 0, 0, 16, 16, 35, 0),
|
||||
M( 0x8ce, PAL_NONE, 0x8d9, PAL_NONE, 0, 0, 16, 16, 35, 0),
|
||||
M( 0x8ce, PAL_NONE, 0x8d9, PAL_NONE, 0, 0, 16, 16, 35, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x888, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x889, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8da, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e3, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e3, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ec, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8db, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e4, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e4, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ed, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8dc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e5, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e5, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ee, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8dd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e6, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e6, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8ef, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8de, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8df, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e9, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8e9, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x8f2, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ea, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ea, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8e2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8eb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8eb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x905, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x905, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x915, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x906, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x906, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x916, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x907, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x907, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x917, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x908, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x908, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x918, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8f9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x909, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x909, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x919, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8fa, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8fb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8fc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8fd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8fe, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x8ff, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x90f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x91f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x900, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x910, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x910, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x920, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x901, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x911, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x911, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x921, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x902, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x912, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x912, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x922, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x903, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x913, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x913, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x923, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x904, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x914, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x914, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x924, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x925, PAL_NONE, 0x926, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x925, PAL_NONE, 0x926, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x925, PAL_NONE, 0x927, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x925, PAL_NONE, 0x927, PAL_NONE, 0, 0, 16, 16, 30, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x930 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x928 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x929 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x929 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x11c6, PAL_NONE, 0x92a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x869, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x862 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x866 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86a, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x863 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x867 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x864 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x868 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x86c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x865 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x931, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x935, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x935, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x939, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x932, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x936, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x936, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x93a, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x933, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x937, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x937, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x93b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x934, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x938, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x938, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x93c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x81d, PAL_NONE, 0x818, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x819, PAL_NONE, 0, 0, 16, 16, 15, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81a, PAL_NONE, 0, 0, 16, 16, 31, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81b, PAL_NONE, 0, 0, 16, 16, 39, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1245 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1248 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1248 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x124b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1247 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x124a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x124a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x124d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1246 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1249 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1249 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x124c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x81d, PAL_NONE, 0x124e, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x124f, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1250, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1251, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1253, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1254, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1254, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x81d, PAL_NONE, 0x1255, PAL_NONE, 0, 0, 16, 16, 10, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1261, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1262, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x125d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1260, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1260, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x7e6, PAL_NONE, 0x1263, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1264, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1264, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1268, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1265, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1265, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1269, PAL_NONE, 0, 0, 16, 16, 50, 4),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1266, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1266, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x126a, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1267, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1267, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x126b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x126c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1271, PAL_NONE, 0x1279, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1272, PAL_NONE, 0x127a, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1273, PAL_NONE, 0x127b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1274, PAL_NONE, 0x127c, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1275, PAL_NONE, 0x127d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1276, PAL_NONE, 0x127e, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1277, PAL_NONE, 0x127f, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1278, PAL_NONE, 0x1280, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1284 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1283 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1283 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1286 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1281 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1282 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1282 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1285 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3),
|
||||
M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3),
|
||||
M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2),
|
||||
M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2),
|
||||
M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2),
|
||||
M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2),
|
||||
M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0),
|
||||
M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1),
|
||||
M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1),
|
||||
M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1),
|
||||
M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1),
|
||||
};
|
||||
#undef M
|
||||
|
||||
/* this is ONLY used for Sugar Mine*/
|
||||
static const DrawIndustryAnimationStruct _draw_industry_spec1[96] = {
|
||||
{ 8, 4, 0, 0},
|
||||
{ 6, 0, 1, 0},
|
||||
{ 4, 0, 2, 0},
|
||||
{ 6, 0, 3, 0},
|
||||
{ 8, 0, 4, 0},
|
||||
{ 10, 0, 5, 0},
|
||||
{ 12, 0, 6, 0},
|
||||
{ 10, 0, 1, 0},
|
||||
{ 8, 0, 2, 0},
|
||||
{ 6, 0, 3, 0},
|
||||
{ 4, 0, 4, 0},
|
||||
{ 6, 0, 5, 1},
|
||||
{ 8, 0, 6, 1},
|
||||
{ 10, 0, 1, 1},
|
||||
{ 12, 0, 2, 1},
|
||||
{ 10, 0, 3, 1},
|
||||
{ 8, 1, 4, 1},
|
||||
{ 6, 1, 5, 1},
|
||||
{ 4, 1, 6, 1},
|
||||
{ 6, 1, 1, 1},
|
||||
{ 8, 1, 2, 1},
|
||||
{ 10, 1, 3, 1},
|
||||
{ 12, 1, 4, 1},
|
||||
{ 10, 1, 5, 2},
|
||||
{ 8, 1, 6, 2},
|
||||
{ 6, 1, 1, 2},
|
||||
{ 4, 1, 2, 2},
|
||||
{ 6, 1, 3, 2},
|
||||
{ 8, 1, 4, 2},
|
||||
{ 10, 1, 5, 2},
|
||||
{ 12, 1, 6, 2},
|
||||
{ 10, 1, 1, 2},
|
||||
{ 8, 2, 2, 2},
|
||||
{ 6, 2, 3, 2},
|
||||
{ 4, 2, 4, 3},
|
||||
{ 6, 2, 5, 3},
|
||||
{ 8, 2, 6, 3},
|
||||
{ 10, 2, 1, 3},
|
||||
{ 12, 2, 2, 3},
|
||||
{ 10, 2, 3, 3},
|
||||
{ 8, 2, 4, 3},
|
||||
{ 6, 2, 5, 3},
|
||||
{ 4, 2, 6, 3},
|
||||
{ 6, 2, 1, 3},
|
||||
{ 8, 2, 2, 3},
|
||||
{ 10, 2, 3, 4},
|
||||
{ 12, 2, 4, 4},
|
||||
{ 10, 2, 5, 4},
|
||||
{ 8, 3, 6, 4},
|
||||
{ 6, 3, 1, 4},
|
||||
{ 4, 3, 2, 4},
|
||||
{ 6, 3, 3, 4},
|
||||
{ 8, 3, 4, 4},
|
||||
{ 10, 3, 5, 4},
|
||||
{ 12, 3, 6, 4},
|
||||
{ 10, 3, 1, 4},
|
||||
{ 8, 3, 2, 4},
|
||||
{ 6, 3, 3, 4},
|
||||
{ 4, 3, 4, 4},
|
||||
{ 6, 3, 5, 4},
|
||||
{ 8, 3, 6, 4},
|
||||
{ 10, 3, 1, 4},
|
||||
{ 12, 3, 2, 4},
|
||||
{ 10, 3, 3, 4},
|
||||
{ 8, 4, 4, 4},
|
||||
{ 6, 4, 5, 4},
|
||||
{ 4, 4, 6, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 12, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 4, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 12, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 4, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 12, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 4, 4, 0, 4},
|
||||
{ 6, 4, 0, 4},
|
||||
{ 8, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
{ 12, 4, 0, 4},
|
||||
{ 10, 4, 0, 4},
|
||||
};
|
||||
|
||||
/* this is ONLY used for Sugar Mine*/
|
||||
static const DrawIndustryCoordinates _drawtile_proc1[5] = {
|
||||
{22, 73},
|
||||
{17, 70},
|
||||
{14, 69},
|
||||
{10, 66},
|
||||
{ 8, 41},
|
||||
};
|
||||
|
||||
/**
|
||||
* this is ONLY used for Toy Factory.
|
||||
* 255 means no drawing
|
||||
* @param img1 offset from base sprite SPR_IT_SUGAR_MINE_SIEVE
|
||||
* @param img2 offset from base sprite SPR_IT_SUGAR_MINE_CLOUDS
|
||||
* @param img3 offset from base sprite SPR_IT_SUGAR_MINE_PILE
|
||||
*/
|
||||
#define MD( img1, img2, img3) { (50 - img1 * 2), img1, img2, img3 }
|
||||
static const DrawIndustryAnimationStruct _industry_anim_offs_toys[] = {
|
||||
MD(255, 255, 0),
|
||||
MD( 0, 255, 0),
|
||||
MD( 1, 255, 0),
|
||||
MD( 2, 255, 0),
|
||||
MD( 3, 255, 0),
|
||||
MD( 4, 255, 0),
|
||||
MD( 5, 255, 0),
|
||||
MD( 6, 255, 0),
|
||||
MD( 7, 255, 0),
|
||||
MD( 8, 255, 0),
|
||||
MD( 9, 255, 0),
|
||||
MD( 10, 255, 0),
|
||||
MD( 11, 255, 0),
|
||||
MD( 12, 255, 0),
|
||||
MD( 13, 255, 0),
|
||||
MD( 14, 255, 0),
|
||||
MD( 15, 255, 0),
|
||||
MD( 16, 255, 0),
|
||||
MD( 17, 255, 0),
|
||||
MD( 18, 255, 0),
|
||||
MD( 18, 255, 1),
|
||||
MD( 18, 255, 2),
|
||||
MD( 18, 255, 4),
|
||||
MD( 18, 255, 6),
|
||||
MD( 18, 255, 8),
|
||||
MD( 18, 255, 11),
|
||||
MD( 18, 255, 14),
|
||||
MD( 18, 255, 17),
|
||||
MD( 18, 255, 20),
|
||||
MD( 18, 255, 24),
|
||||
MD(255, 0, 29),
|
||||
MD(255, 0, 24),
|
||||
MD(255, 0, 20),
|
||||
MD(255, 0, 17),
|
||||
MD(255, 0, 14),
|
||||
MD(255, 0, 11),
|
||||
MD(255, 0, 8),
|
||||
MD(255, 0, 6),
|
||||
MD(255, 0, 4),
|
||||
MD(255, 0, 2),
|
||||
MD(255, 0, 1),
|
||||
MD(255, 1, 0),
|
||||
MD(255, 2, 0),
|
||||
MD(255, 3, 0),
|
||||
MD(255, 4, 0),
|
||||
MD(255, 5, 0),
|
||||
MD(255, 6, 0),
|
||||
MD(255, 7, 0),
|
||||
MD(255, 8, 0),
|
||||
MD(255, 255, 0),
|
||||
};
|
||||
#undef MD
|
||||
|
||||
/* this is ONLY used for Toffee Quarry*/
|
||||
static const byte _industry_anim_offs_toffee[] = {
|
||||
255, 0, 0, 0, 2, 4, 6, 8, 10, 9,
|
||||
7, 5, 3, 1, 255, 0, 0, 0, 2, 4,
|
||||
6, 8, 10, 9, 7, 5, 3, 1, 255, 0,
|
||||
0, 0, 2, 4, 6, 8, 10, 9, 7, 5,
|
||||
3, 1, 255, 0, 0, 0, 2, 4, 6, 8,
|
||||
10, 9, 7, 5, 3, 1, 255, 0, 0, 0,
|
||||
2, 4, 6, 8, 10, 9, 7, 5, 3, 1
|
||||
};
|
||||
|
||||
/* this is ONLY used for the Bubble Generator*/
|
||||
static const byte _industry_anim_offs_bubbles[] = {
|
||||
68, 69, 71, 74, 77, 80, 83, 85, 86, 86,
|
||||
86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
|
||||
86, 86, 85, 84, 83, 82, 81, 80, 79, 78,
|
||||
77, 76, 75, 74, 73, 72, 71, 70, 69, 68,
|
||||
};
|
||||
|
||||
/**
|
||||
* Movement of the sparks , only used for Power Station
|
||||
*/
|
||||
static const DrawIndustryCoordinates _coal_plant_sparks[] = {
|
||||
{11, 23},
|
||||
{11, 11},
|
||||
{14, 6},
|
||||
{13, 3},
|
||||
{18, 1},
|
||||
{15, 0},
|
||||
};
|
||||
|
||||
145
src/table/landscape_sprite.h
Normal file
145
src/table/landscape_sprite.h
Normal file
@@ -0,0 +1,145 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file landscape_sprite.h Offsets of sprites to replace for non-temperate landscapes. */
|
||||
|
||||
static const SpriteID END = 0xFFFF;
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_arctic[] = {
|
||||
0xF67, 0xF9F,
|
||||
0xAAD, 0xAB0,
|
||||
0x83A, 0x845,
|
||||
0xFA0, 0xFC9,
|
||||
0x43F, 0x45E,
|
||||
0x566, 0x56D,
|
||||
0x945, 0x94C,
|
||||
0x3ED, 0x40C,
|
||||
0x515, 0x51C,
|
||||
0x55A, 0x561,
|
||||
0x534, 0x546,
|
||||
0x93D, 0x944,
|
||||
0x955, 0x95C,
|
||||
0xFDD, 0xFEC,
|
||||
0x87D, 0x883,
|
||||
0xA2B, 0xA39,
|
||||
0x497, 0x4B0,
|
||||
0x572, 0x575,
|
||||
0x94D, 0x954,
|
||||
0x818, 0x81D,
|
||||
0x3DE, 0x3EB,
|
||||
0x1212, 0x1212,
|
||||
END
|
||||
};
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_tropic[] = {
|
||||
0xF67, 0xF9F,
|
||||
0xAAD, 0xAB0,
|
||||
0xFA0, 0xFC9,
|
||||
0x43F, 0x45E,
|
||||
0x566, 0x56D,
|
||||
0x945, 0x94C,
|
||||
0x3ED, 0x40C,
|
||||
0x515, 0x51C,
|
||||
0x55A, 0x561,
|
||||
0x547, 0x559,
|
||||
0x93D, 0x944,
|
||||
0x955, 0x95C,
|
||||
0xFDD, 0xFEC,
|
||||
0x87D, 0x883,
|
||||
0xA2B, 0xA39,
|
||||
0x497, 0x4B0,
|
||||
0x572, 0x575,
|
||||
0x94D, 0x954,
|
||||
0x5AE, 0x5AF,
|
||||
0x118D, 0x11D8,
|
||||
0x534, 0x546,
|
||||
0x40D, 0x426,
|
||||
0x45F, 0x478,
|
||||
0x4B1, 0x4CA,
|
||||
0x95D, 0x97C,
|
||||
0x3DE, 0x3EB,
|
||||
0x562, 0x565,
|
||||
0x56E, 0x571,
|
||||
0x57A, 0x57D,
|
||||
0x83A, 0x845,
|
||||
0xFF5, 0xFF5,
|
||||
0xFF8, 0xFF8,
|
||||
0x1212, 0x1212,
|
||||
END
|
||||
};
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_toyland[] = {
|
||||
0xF54, 0xF9F,
|
||||
0xFDD, 0xFE5,
|
||||
0xFEC, 0xFEC,
|
||||
0xFA0, 0xFC9,
|
||||
0x818, 0x81D,
|
||||
0x521, 0x546,
|
||||
0x57E, 0x57F,
|
||||
0x3ED, 0x40C,
|
||||
0x43F, 0x45E,
|
||||
0x491, 0x4B0,
|
||||
0xA48, 0xA48,
|
||||
0x4FB, 0x50A,
|
||||
0x55A, 0x561,
|
||||
0x566, 0x56D,
|
||||
0x572, 0x579,
|
||||
0x427, 0x42C,
|
||||
0x479, 0x47E,
|
||||
0x4CB, 0x4D0,
|
||||
0x4EF, 0x4FA,
|
||||
0xE9D, 0xECC,
|
||||
0xF3D, 0xF40,
|
||||
0xB59, 0xB60,
|
||||
0xE5D, 0xE6C,
|
||||
0xA49, 0xA59,
|
||||
0xA63, 0xA68,
|
||||
0xA5A, 0xA62,
|
||||
0xA78, 0xA83,
|
||||
0xA69, 0xA77,
|
||||
0xA84, 0xAA3,
|
||||
0xAA7, 0xAAC,
|
||||
0xA2B, 0xA47,
|
||||
0x3DE, 0x3EB,
|
||||
0x47F, 0x488,
|
||||
0x4D1, 0x4DA,
|
||||
0x42D, 0x436,
|
||||
0x515, 0x51C,
|
||||
0x580, 0x585,
|
||||
0xC14, 0xCB3,
|
||||
0xAAD, 0xAB0,
|
||||
0xAB5, 0xB00,
|
||||
0xB69, 0xB70,
|
||||
0xB61, 0xB68,
|
||||
0xBC9, 0xBD0,
|
||||
0xBD9, 0xBE0,
|
||||
0xBA9, 0xBB0,
|
||||
0xBC1, 0xBC4,
|
||||
0x2D0, 0x2D0,
|
||||
0xAA5, 0xAA6,
|
||||
0x50F, 0x50F,
|
||||
0x2EA, 0x2EA,
|
||||
0x2ED, 0x2EE,
|
||||
0x512, 0x513,
|
||||
0x4EB, 0x4EE,
|
||||
0x4E7, 0x4EA,
|
||||
0x985, 0xA28,
|
||||
0x10E4, 0x1133,
|
||||
0x93D, 0x95C,
|
||||
0x97D, 0x984,
|
||||
0x7DA, 0x7DA,
|
||||
0x2E6, 0x2E6,
|
||||
0x1, 0x1,
|
||||
0xE54, 0xE54,
|
||||
0x51F, 0x520,
|
||||
0x514, 0x514,
|
||||
0x511, 0x511,
|
||||
0x322, 0x322,
|
||||
END
|
||||
};
|
||||
321
src/table/misc_settings.ini
Normal file
321
src/table/misc_settings.ini
Normal file
@@ -0,0 +1,321 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
extern char _config_language_file[MAX_PATH];
|
||||
|
||||
static const char *_support8bppmodes = "no|system|hardware";
|
||||
|
||||
static const SettingDescGlobVarList _misc_settings[] = {
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDTG_LIST = SDTG_LIST($name, $type, $length, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $guiflags, $var, $def, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_STR = SDTG_STR($name, $type, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_END = SDTG_END()
|
||||
|
||||
[defaults]
|
||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||
guiflags = 0
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDTG_MMANY]
|
||||
name = ""display_opt""
|
||||
type = SLE_UINT8
|
||||
var = _display_opt
|
||||
def = (1 << DO_SHOW_TOWN_NAMES | 1 << DO_SHOW_STATION_NAMES | 1 << DO_SHOW_SIGNS | 1 << DO_FULL_ANIMATION | 1 << DO_FULL_DETAIL | 1 << DO_SHOW_WAYPOINT_NAMES | 1 << DO_SHOW_COMPETITOR_SIGNS)
|
||||
full = ""SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION||FULL_DETAIL|WAYPOINTS|SHOW_COMPETITOR_SIGNS""
|
||||
|
||||
[SDTG_BOOL]
|
||||
name = ""fullscreen""
|
||||
var = _fullscreen
|
||||
def = false
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_OMANY]
|
||||
name = ""support8bpp""
|
||||
type = SLE_UINT8
|
||||
var = _support8bpp
|
||||
def = 0
|
||||
max = 2
|
||||
full = _support8bppmodes
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""graphicsset""
|
||||
type = SLE_STRQ
|
||||
var = BaseGraphics::ini_set
|
||||
def = NULL
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""soundsset""
|
||||
type = SLE_STRQ
|
||||
var = BaseSounds::ini_set
|
||||
def = NULL
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""musicset""
|
||||
type = SLE_STRQ
|
||||
var = BaseMusic::ini_set
|
||||
def = NULL
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""videodriver""
|
||||
type = SLE_STRQ
|
||||
var = _ini_videodriver
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""musicdriver""
|
||||
type = SLE_STRQ
|
||||
var = _ini_musicdriver
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""sounddriver""
|
||||
type = SLE_STRQ
|
||||
var = _ini_sounddriver
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""blitter""
|
||||
type = SLE_STRQ
|
||||
var = _ini_blitter
|
||||
def = NULL
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""language""
|
||||
type = SLE_STRB
|
||||
var = _config_language_file
|
||||
def = NULL
|
||||
cat = SC_BASIC
|
||||
|
||||
; workaround for implicit lengthof() in SDTG_LIST
|
||||
[SDTG_LIST]
|
||||
name = ""resolution""
|
||||
type = SLE_INT
|
||||
length = 2
|
||||
var = _cur_resolution
|
||||
def = ""640,480""
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""screenshot_format""
|
||||
type = SLE_STRB
|
||||
var = _screenshot_format_name
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""savegame_format""
|
||||
type = SLE_STRB
|
||||
var = _savegame_format
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_BOOL]
|
||||
name = ""rightclick_emulate""
|
||||
var = _rightclick_emulate
|
||||
def = false
|
||||
|
||||
[SDTG_STR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""small_font""
|
||||
type = SLE_STRB
|
||||
var = _freetype.small.font
|
||||
def = NULL
|
||||
|
||||
[SDTG_STR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""medium_font""
|
||||
type = SLE_STRB
|
||||
var = _freetype.medium.font
|
||||
def = NULL
|
||||
|
||||
[SDTG_STR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""large_font""
|
||||
type = SLE_STRB
|
||||
var = _freetype.large.font
|
||||
def = NULL
|
||||
|
||||
[SDTG_STR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""mono_font""
|
||||
type = SLE_STRB
|
||||
var = _freetype.mono.font
|
||||
def = NULL
|
||||
|
||||
[SDTG_VAR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""small_size""
|
||||
type = SLE_UINT
|
||||
var = _freetype.small.size
|
||||
def = 0
|
||||
min = 0
|
||||
max = 72
|
||||
|
||||
[SDTG_VAR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""medium_size""
|
||||
type = SLE_UINT
|
||||
var = _freetype.medium.size
|
||||
def = 0
|
||||
min = 0
|
||||
max = 72
|
||||
|
||||
[SDTG_VAR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""large_size""
|
||||
type = SLE_UINT
|
||||
var = _freetype.large.size
|
||||
def = 0
|
||||
min = 0
|
||||
max = 72
|
||||
|
||||
[SDTG_VAR]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""mono_size""
|
||||
type = SLE_UINT
|
||||
var = _freetype.mono.size
|
||||
def = 0
|
||||
min = 0
|
||||
max = 72
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""small_aa""
|
||||
var = _freetype.small.aa
|
||||
def = false
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""medium_aa""
|
||||
var = _freetype.medium.aa
|
||||
def = false
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""large_aa""
|
||||
var = _freetype.large.aa
|
||||
def = false
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = WITH_FREETYPE
|
||||
name = ""mono_aa""
|
||||
var = _freetype.mono.aa
|
||||
def = false
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""sprite_cache_size_px""
|
||||
type = SLE_UINT
|
||||
var = _sprite_cache_size
|
||||
def = 128
|
||||
min = 1
|
||||
max = 512
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""player_face""
|
||||
type = SLE_UINT32
|
||||
var = _company_manager_face
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0xFFFFFFFF
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""transparency_options""
|
||||
type = SLE_UINT
|
||||
var = _transparency_opt
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0x1FF
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""transparency_locks""
|
||||
type = SLE_UINT
|
||||
var = _transparency_lock
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0x1FF
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""invisibility_options""
|
||||
type = SLE_UINT
|
||||
var = _invisibility_opt
|
||||
def = 0
|
||||
min = 0
|
||||
max = 0xFF
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""keyboard""
|
||||
type = SLE_STRB
|
||||
var = _keyboard_opt[0]
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_STR]
|
||||
name = ""keyboard_caps""
|
||||
type = SLE_STRB
|
||||
var = _keyboard_opt[1]
|
||||
def = NULL
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""last_newgrf_count""
|
||||
type = SLE_UINT32
|
||||
var = _settings_client.gui.last_newgrf_count
|
||||
def = 100
|
||||
min = 0
|
||||
max = UINT32_MAX
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""gui_zoom""
|
||||
type = SLE_UINT8
|
||||
var = _gui_zoom
|
||||
def = ZOOM_LVL_OUT_4X
|
||||
min = ZOOM_LVL_MIN
|
||||
max = ZOOM_LVL_OUT_4X
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""font_zoom""
|
||||
type = SLE_UINT8
|
||||
var = _font_zoom
|
||||
def = ZOOM_LVL_OUT_4X
|
||||
min = ZOOM_LVL_MIN
|
||||
max = ZOOM_LVL_OUT_4X
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_END]
|
||||
|
||||
579
src/table/newgrf_debug_data.h
Normal file
579
src/table/newgrf_debug_data.h
Normal file
@@ -0,0 +1,579 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file newgrf_debug_data.h Data 'tables' for NewGRF debugging. */
|
||||
|
||||
#include "../newgrf_house.h"
|
||||
#include "../newgrf_engine.h"
|
||||
|
||||
/* Helper for filling property tables */
|
||||
#define NIP(prop, base, variable, type, name) { name, (ptrdiff_t)cpp_offsetof(base, variable), cpp_sizeof(base, variable), prop, type }
|
||||
#define NIP_END() { NULL, 0, 0, 0, 0 }
|
||||
|
||||
/* Helper for filling callback tables */
|
||||
#define NIC(cb_id, base, variable, bit) { #cb_id, (ptrdiff_t)cpp_offsetof(base, variable), cpp_sizeof(base, variable), bit, cb_id }
|
||||
#define NIC_END() { NULL, 0, 0, 0, 0 }
|
||||
|
||||
/* Helper for filling variable tables */
|
||||
#define NIV(var, name) { name, var }
|
||||
#define NIV_END() { NULL, 0 }
|
||||
|
||||
|
||||
/*** NewGRF Vehicles ***/
|
||||
|
||||
#define NICV(cb_id, bit) NIC(cb_id, Engine, info.callback_mask, bit)
|
||||
static const NICallback _nic_vehicles[] = {
|
||||
NICV(CBID_VEHICLE_VISUAL_EFFECT, CBM_VEHICLE_VISUAL_EFFECT),
|
||||
NICV(CBID_VEHICLE_LENGTH, CBM_VEHICLE_LENGTH),
|
||||
NICV(CBID_VEHICLE_LOAD_AMOUNT, CBM_VEHICLE_LOAD_AMOUNT),
|
||||
NICV(CBID_VEHICLE_REFIT_CAPACITY, CBM_VEHICLE_REFIT_CAPACITY),
|
||||
NICV(CBID_VEHICLE_ARTIC_ENGINE, CBM_VEHICLE_ARTIC_ENGINE),
|
||||
NICV(CBID_VEHICLE_CARGO_SUFFIX, CBM_VEHICLE_CARGO_SUFFIX),
|
||||
NICV(CBID_TRAIN_ALLOW_WAGON_ATTACH, CBM_NO_BIT),
|
||||
NICV(CBID_VEHICLE_ADDITIONAL_TEXT, CBM_NO_BIT),
|
||||
NICV(CBID_VEHICLE_COLOUR_MAPPING, CBM_VEHICLE_COLOUR_REMAP),
|
||||
NICV(CBID_VEHICLE_START_STOP_CHECK, CBM_NO_BIT),
|
||||
NICV(CBID_VEHICLE_32DAY_CALLBACK, CBM_NO_BIT),
|
||||
NICV(CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT),
|
||||
NICV(CBID_VEHICLE_AUTOREPLACE_SELECTION, CBM_NO_BIT),
|
||||
NICV(CBID_VEHICLE_MODIFY_PROPERTY, CBM_NO_BIT),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
|
||||
static const NIVariable _niv_vehicles[] = {
|
||||
NIV(0x40, "position in consist and length"),
|
||||
NIV(0x41, "position and length of chain of same vehicles"),
|
||||
NIV(0x42, "transported cargo types"),
|
||||
NIV(0x43, "player info"),
|
||||
NIV(0x44, "aircraft info"),
|
||||
NIV(0x45, "curvature info"),
|
||||
NIV(0x46, "motion counter"),
|
||||
NIV(0x47, "vehicle cargo info"),
|
||||
NIV(0x48, "vehicle type info"),
|
||||
NIV(0x49, "year of construction"),
|
||||
NIV(0x4A, "current rail type info"),
|
||||
NIV(0x4B, "long date of last service"),
|
||||
NIV(0x4C, "current max speed"),
|
||||
NIV(0x4D, "position in articulated vehicle"),
|
||||
NIV(0x60, "count vehicle id occurrences"),
|
||||
// 0x61 not useful, since it requires register 0x10F
|
||||
NIV(0x62, "Curvature/position difference to other vehicle"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHVehicle : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return Vehicle::Get(index)->GetGRF() != NULL; }
|
||||
uint GetParent(uint index) const { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); }
|
||||
const void *GetInstance(uint index)const { return Vehicle::Get(index); }
|
||||
const void *GetSpec(uint index) const { return Vehicle::Get(index)->GetEngine(); }
|
||||
void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_VEHICLE_NAME, index); }
|
||||
uint32 GetGRFID(uint index) const { return Vehicle::Get(index)->GetGRFID(); }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
Vehicle *v = Vehicle::Get(index);
|
||||
VehicleResolverObject ro(v->engine_type, v, VehicleResolverObject::WO_CACHED);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_vehicle = {
|
||||
NULL,
|
||||
_nic_vehicles,
|
||||
_niv_vehicles,
|
||||
new NIHVehicle(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF station (tiles) ***/
|
||||
|
||||
#define NICS(cb_id, bit) NIC(cb_id, StationSpec, callback_mask, bit)
|
||||
static const NICallback _nic_stations[] = {
|
||||
NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL),
|
||||
NICS(CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT),
|
||||
NICS(CBID_STATION_TILE_LAYOUT, CBM_NO_BIT),
|
||||
NICS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT),
|
||||
NICS(CBID_STATION_ANIM_NEXT_FRAME, CBM_STATION_ANIMATION_NEXT_FRAME),
|
||||
NICS(CBID_STATION_ANIMATION_SPEED, CBM_STATION_ANIMATION_SPEED),
|
||||
NICS(CBID_STATION_LAND_SLOPE_CHECK, CBM_STATION_SLOPE_CHECK),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
static const NIVariable _niv_stations[] = {
|
||||
NIV(0x40, "platform info and relative position"),
|
||||
NIV(0x41, "platform info and relative position for individually built sections"),
|
||||
NIV(0x42, "terrain and track type"),
|
||||
NIV(0x43, "player info"),
|
||||
NIV(0x44, "path signalling info"),
|
||||
NIV(0x45, "rail continuation info"),
|
||||
NIV(0x46, "platform info and relative position from middle"),
|
||||
NIV(0x47, "platform info and relative position from middle for individually built sections"),
|
||||
NIV(0x48, "bitmask of accepted cargoes"),
|
||||
NIV(0x49, "platform info and relative position of same-direction section"),
|
||||
NIV(0x4A, "current animation frame"),
|
||||
NIV(0x60, "amount of cargo waiting"),
|
||||
NIV(0x61, "time since last cargo pickup"),
|
||||
NIV(0x62, "rating of cargo"),
|
||||
NIV(0x63, "time spent on route"),
|
||||
NIV(0x64, "information about last vehicle picking cargo up"),
|
||||
NIV(0x65, "amount of cargo acceptance"),
|
||||
NIV(0x66, "animation frame of nearby tile"),
|
||||
NIV(0x67, "land info of nearby tiles"),
|
||||
NIV(0x68, "station info of nearby tiles"),
|
||||
NIV(0x69, "information about cargo accepted in the past"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHStation : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return GetStationSpec(index) != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }
|
||||
const void *GetInstance(uint index)const { return NULL; }
|
||||
const void *GetSpec(uint index) const { return GetStationSpec(index); }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
StationResolverObject ro(GetStationSpec(index), Station::GetByTile(index), index);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_station = {
|
||||
NULL,
|
||||
_nic_stations,
|
||||
_niv_stations,
|
||||
new NIHStation(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF house tiles ***/
|
||||
|
||||
#define NICH(cb_id, bit) NIC(cb_id, HouseSpec, callback_mask, bit)
|
||||
static const NICallback _nic_house[] = {
|
||||
NICH(CBID_HOUSE_ALLOW_CONSTRUCTION, CBM_HOUSE_ALLOW_CONSTRUCTION),
|
||||
NICH(CBID_HOUSE_ANIMATION_NEXT_FRAME, CBM_HOUSE_ANIMATION_NEXT_FRAME),
|
||||
NICH(CBID_HOUSE_ANIMATION_START_STOP, CBM_HOUSE_ANIMATION_START_STOP),
|
||||
NICH(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, CBM_HOUSE_CONSTRUCTION_STATE_CHANGE),
|
||||
NICH(CBID_HOUSE_COLOUR, CBM_HOUSE_COLOUR),
|
||||
NICH(CBID_HOUSE_CARGO_ACCEPTANCE, CBM_HOUSE_CARGO_ACCEPTANCE),
|
||||
NICH(CBID_HOUSE_ANIMATION_SPEED, CBM_HOUSE_ANIMATION_SPEED),
|
||||
NICH(CBID_HOUSE_DESTRUCTION, CBM_HOUSE_DESTRUCTION),
|
||||
NICH(CBID_HOUSE_ACCEPT_CARGO, CBM_HOUSE_ACCEPT_CARGO),
|
||||
NICH(CBID_HOUSE_PRODUCE_CARGO, CBM_HOUSE_PRODUCE_CARGO),
|
||||
NICH(CBID_HOUSE_DENY_DESTRUCTION, CBM_HOUSE_DENY_DESTRUCTION),
|
||||
NICH(CBID_HOUSE_WATCHED_CARGO_ACCEPTED, CBM_NO_BIT),
|
||||
NICH(CBID_HOUSE_CUSTOM_NAME, CBM_NO_BIT),
|
||||
NICH(CBID_HOUSE_DRAW_FOUNDATIONS, CBM_HOUSE_DRAW_FOUNDATIONS),
|
||||
NICH(CBID_HOUSE_AUTOSLOPE, CBM_HOUSE_AUTOSLOPE),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
static const NIVariable _niv_house[] = {
|
||||
NIV(0x40, "construction state of tile and pseudo-random value"),
|
||||
NIV(0x41, "age of building in years"),
|
||||
NIV(0x42, "town zone"),
|
||||
NIV(0x43, "terrain type"),
|
||||
NIV(0x44, "building counts"),
|
||||
NIV(0x45, "town expansion bits"),
|
||||
NIV(0x46, "current animation frame"),
|
||||
NIV(0x47, "xy coordinate of the building"),
|
||||
NIV(0x60, "other building counts (old house type)"),
|
||||
NIV(0x61, "other building counts (new house type)"),
|
||||
NIV(0x62, "land info of nearby tiles"),
|
||||
NIV(0x63, "current animation frame of nearby house tile"),
|
||||
NIV(0x64, "cargo acceptance history of nearby stations"),
|
||||
NIV(0x65, "distance of nearest house matching a given criterion"),
|
||||
NIV(0x66, "class and ID of nearby house tile"),
|
||||
NIV(0x67, "GRFID of nearby house tile"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHHouse : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return HouseSpec::Get(GetHouseType(index))->grf_prop.grffile != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, GetTownIndex(index)); }
|
||||
const void *GetInstance(uint index)const { return NULL; }
|
||||
const void *GetSpec(uint index) const { return HouseSpec::Get(GetHouseType(index)); }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_TOWN_NAME, GetTownIndex(index), index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? HouseSpec::Get(GetHouseType(index))->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
HouseResolverObject ro(GetHouseType(index), index, Town::GetByTile(index));
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_house = {
|
||||
NULL,
|
||||
_nic_house,
|
||||
_niv_house,
|
||||
new NIHHouse(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF industry tiles ***/
|
||||
|
||||
#define NICIT(cb_id, bit) NIC(cb_id, IndustryTileSpec, callback_mask, bit)
|
||||
static const NICallback _nic_industrytiles[] = {
|
||||
NICIT(CBID_INDTILE_ANIM_START_STOP, CBM_NO_BIT),
|
||||
NICIT(CBID_INDTILE_ANIM_NEXT_FRAME, CBM_INDT_ANIM_NEXT_FRAME),
|
||||
NICIT(CBID_INDTILE_ANIMATION_SPEED, CBM_INDT_ANIM_SPEED),
|
||||
NICIT(CBID_INDTILE_CARGO_ACCEPTANCE, CBM_INDT_CARGO_ACCEPTANCE),
|
||||
NICIT(CBID_INDTILE_ACCEPT_CARGO, CBM_INDT_ACCEPT_CARGO),
|
||||
NICIT(CBID_INDTILE_SHAPE_CHECK, CBM_INDT_SHAPE_CHECK),
|
||||
NICIT(CBID_INDTILE_DRAW_FOUNDATIONS, CBM_INDT_DRAW_FOUNDATIONS),
|
||||
NICIT(CBID_INDTILE_AUTOSLOPE, CBM_INDT_AUTOSLOPE),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
static const NIVariable _niv_industrytiles[] = {
|
||||
NIV(0x40, "construction state of tile"),
|
||||
NIV(0x41, "ground type"),
|
||||
NIV(0x42, "current town zone in nearest town"),
|
||||
NIV(0x43, "relative position"),
|
||||
NIV(0x44, "animation frame"),
|
||||
NIV(0x60, "land info of nearby tiles"),
|
||||
NIV(0x61, "animation stage of nearby tiles"),
|
||||
NIV(0x62, "get industry or airport tile ID at offset"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHIndustryTile : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_INDUSTRIES, GetIndustryIndex(index)); }
|
||||
const void *GetInstance(uint index)const { return NULL; }
|
||||
const void *GetSpec(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index)); }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_INDUSTRY_NAME, GetIndustryIndex(index), index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
IndustryTileResolverObject ro(GetIndustryGfx(index), index, Industry::GetByTile(index));
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_industrytile = {
|
||||
NULL,
|
||||
_nic_industrytiles,
|
||||
_niv_industrytiles,
|
||||
new NIHIndustryTile(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF industries ***/
|
||||
|
||||
static const NIProperty _nip_industries[] = {
|
||||
NIP(0x25, Industry, produced_cargo[ 0], NIT_CARGO, "produced cargo 0"),
|
||||
NIP(0x25, Industry, produced_cargo[ 1], NIT_CARGO, "produced cargo 1"),
|
||||
NIP(0x25, Industry, produced_cargo[ 2], NIT_CARGO, "produced cargo 2"),
|
||||
NIP(0x25, Industry, produced_cargo[ 3], NIT_CARGO, "produced cargo 3"),
|
||||
NIP(0x25, Industry, produced_cargo[ 4], NIT_CARGO, "produced cargo 4"),
|
||||
NIP(0x25, Industry, produced_cargo[ 5], NIT_CARGO, "produced cargo 5"),
|
||||
NIP(0x25, Industry, produced_cargo[ 6], NIT_CARGO, "produced cargo 6"),
|
||||
NIP(0x25, Industry, produced_cargo[ 7], NIT_CARGO, "produced cargo 7"),
|
||||
NIP(0x25, Industry, produced_cargo[ 8], NIT_CARGO, "produced cargo 8"),
|
||||
NIP(0x25, Industry, produced_cargo[ 9], NIT_CARGO, "produced cargo 9"),
|
||||
NIP(0x25, Industry, produced_cargo[10], NIT_CARGO, "produced cargo 10"),
|
||||
NIP(0x25, Industry, produced_cargo[11], NIT_CARGO, "produced cargo 11"),
|
||||
NIP(0x25, Industry, produced_cargo[12], NIT_CARGO, "produced cargo 12"),
|
||||
NIP(0x25, Industry, produced_cargo[13], NIT_CARGO, "produced cargo 13"),
|
||||
NIP(0x25, Industry, produced_cargo[14], NIT_CARGO, "produced cargo 14"),
|
||||
NIP(0x25, Industry, produced_cargo[15], NIT_CARGO, "produced cargo 15"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 0], NIT_CARGO, "accepted cargo 0"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 1], NIT_CARGO, "accepted cargo 1"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 2], NIT_CARGO, "accepted cargo 2"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 3], NIT_CARGO, "accepted cargo 3"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 4], NIT_CARGO, "accepted cargo 4"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 5], NIT_CARGO, "accepted cargo 5"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 6], NIT_CARGO, "accepted cargo 6"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 7], NIT_CARGO, "accepted cargo 7"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 8], NIT_CARGO, "accepted cargo 8"),
|
||||
NIP(0x26, Industry, accepts_cargo[ 9], NIT_CARGO, "accepted cargo 9"),
|
||||
NIP(0x26, Industry, accepts_cargo[10], NIT_CARGO, "accepted cargo 10"),
|
||||
NIP(0x26, Industry, accepts_cargo[11], NIT_CARGO, "accepted cargo 11"),
|
||||
NIP(0x26, Industry, accepts_cargo[12], NIT_CARGO, "accepted cargo 12"),
|
||||
NIP(0x26, Industry, accepts_cargo[13], NIT_CARGO, "accepted cargo 13"),
|
||||
NIP(0x26, Industry, accepts_cargo[14], NIT_CARGO, "accepted cargo 14"),
|
||||
NIP(0x26, Industry, accepts_cargo[15], NIT_CARGO, "accepted cargo 15"),
|
||||
NIP_END()
|
||||
};
|
||||
|
||||
#define NICI(cb_id, bit) NIC(cb_id, IndustrySpec, callback_mask, bit)
|
||||
static const NICallback _nic_industries[] = {
|
||||
NICI(CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY),
|
||||
NICI(CBID_INDUSTRY_LOCATION, CBM_IND_LOCATION),
|
||||
NICI(CBID_INDUSTRY_PRODUCTION_CHANGE, CBM_IND_PRODUCTION_CHANGE),
|
||||
NICI(CBID_INDUSTRY_MONTHLYPROD_CHANGE, CBM_IND_MONTHLYPROD_CHANGE),
|
||||
NICI(CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX),
|
||||
NICI(CBID_INDUSTRY_FUND_MORE_TEXT, CBM_IND_FUND_MORE_TEXT),
|
||||
NICI(CBID_INDUSTRY_WINDOW_MORE_TEXT, CBM_IND_WINDOW_MORE_TEXT),
|
||||
NICI(CBID_INDUSTRY_SPECIAL_EFFECT, CBM_IND_SPECIAL_EFFECT),
|
||||
NICI(CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO),
|
||||
NICI(CBID_INDUSTRY_DECIDE_COLOUR, CBM_IND_DECIDE_COLOUR),
|
||||
NICI(CBID_INDUSTRY_INPUT_CARGO_TYPES, CBM_IND_INPUT_CARGO_TYPES),
|
||||
NICI(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, CBM_IND_OUTPUT_CARGO_TYPES),
|
||||
NICI(CBID_INDUSTRY_PROD_CHANGE_BUILD, CBM_IND_PROD_CHANGE_BUILD),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
static const NIVariable _niv_industries[] = {
|
||||
NIV(0x40, "waiting cargo 0"),
|
||||
NIV(0x41, "waiting cargo 1"),
|
||||
NIV(0x42, "waiting cargo 2"),
|
||||
NIV(0x43, "distance to closest dry/land tile"),
|
||||
NIV(0x44, "layout number"),
|
||||
NIV(0x45, "player info"),
|
||||
NIV(0x46, "industry construction date"),
|
||||
NIV(0x60, "get industry tile ID at offset"),
|
||||
NIV(0x61, "get random tile bits at offset"),
|
||||
NIV(0x62, "land info of nearby tiles"),
|
||||
NIV(0x63, "animation stage of nearby tiles"),
|
||||
NIV(0x64, "distance on nearest industry with given type"),
|
||||
NIV(0x65, "get town zone and Manhattan distance of closest town"),
|
||||
NIV(0x66, "get square of Euclidean distance of closes town"),
|
||||
NIV(0x67, "count of industry and distance of closest instance"),
|
||||
NIV(0x68, "count of industry and distance of closest instance with layout filter"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHIndustry : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Industry::Get(index)->town->index); }
|
||||
const void *GetInstance(uint index)const { return Industry::Get(index); }
|
||||
const void *GetSpec(uint index) const { return GetIndustrySpec(Industry::Get(index)->type); }
|
||||
void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_INDUSTRY_NAME, index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
Industry *i = Industry::Get(index);
|
||||
IndustriesResolverObject ro(i->location.tile, i, i->type);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
|
||||
uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); }
|
||||
|
||||
const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
|
||||
{
|
||||
const Industry *i = (const Industry *)this->GetInstance(index);
|
||||
if (i->psa == NULL) return NULL;
|
||||
return (int32 *)(&i->psa->storage);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_industry = {
|
||||
_nip_industries,
|
||||
_nic_industries,
|
||||
_niv_industries,
|
||||
new NIHIndustry(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF objects ***/
|
||||
|
||||
#define NICO(cb_id, bit) NIC(cb_id, ObjectSpec, callback_mask, bit)
|
||||
static const NICallback _nic_objects[] = {
|
||||
NICO(CBID_OBJECT_LAND_SLOPE_CHECK, CBM_OBJ_SLOPE_CHECK),
|
||||
NICO(CBID_OBJECT_ANIMATION_NEXT_FRAME, CBM_OBJ_ANIMATION_NEXT_FRAME),
|
||||
NICO(CBID_OBJECT_ANIMATION_START_STOP, CBM_NO_BIT),
|
||||
NICO(CBID_OBJECT_ANIMATION_SPEED, CBM_OBJ_ANIMATION_SPEED),
|
||||
NICO(CBID_OBJECT_COLOUR, CBM_OBJ_COLOUR),
|
||||
NICO(CBID_OBJECT_FUND_MORE_TEXT, CBM_OBJ_FUND_MORE_TEXT),
|
||||
NICO(CBID_OBJECT_AUTOSLOPE, CBM_OBJ_AUTOSLOPE),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
static const NIVariable _niv_objects[] = {
|
||||
NIV(0x40, "relative position"),
|
||||
NIV(0x41, "tile information"),
|
||||
NIV(0x42, "construction date"),
|
||||
NIV(0x43, "animation counter"),
|
||||
NIV(0x44, "object founder"),
|
||||
NIV(0x45, "get town zone and Manhattan distance of closest town"),
|
||||
NIV(0x46, "get square of Euclidean distance of closes town"),
|
||||
NIV(0x47, "colour"),
|
||||
NIV(0x48, "view"),
|
||||
NIV(0x60, "get object ID at offset"),
|
||||
NIV(0x61, "get random tile bits at offset"),
|
||||
NIV(0x62, "land info of nearby tiles"),
|
||||
NIV(0x63, "animation stage of nearby tiles"),
|
||||
NIV(0x64, "distance on nearest object with given type"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHObject : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return ObjectSpec::GetByTile(index)->grf_prop.grffile != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Object::GetByTile(index)->town->index); }
|
||||
const void *GetInstance(uint index)const { return Object::GetByTile(index); }
|
||||
const void *GetSpec(uint index) const { return ObjectSpec::GetByTile(index); }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT, INVALID_STRING_ID, index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? ObjectSpec::GetByTile(index)->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
ObjectResolverObject ro(ObjectSpec::GetByTile(index), Object::GetByTile(index), index);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_object = {
|
||||
NULL,
|
||||
_nic_objects,
|
||||
_niv_objects,
|
||||
new NIHObject(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF rail types ***/
|
||||
|
||||
static const NIVariable _niv_railtypes[] = {
|
||||
NIV(0x40, "terrain type"),
|
||||
NIV(0x41, "enhanced tunnels"),
|
||||
NIV(0x42, "level crossing status"),
|
||||
NIV(0x43, "construction date"),
|
||||
NIV(0x44, "town zone"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHRailType : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return true; }
|
||||
uint GetParent(uint index) const { return UINT32_MAX; }
|
||||
const void *GetInstance(uint index)const { return NULL; }
|
||||
const void *GetSpec(uint index) const { return NULL; }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE, INVALID_STRING_ID, index); }
|
||||
uint32 GetGRFID(uint index) const { return 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
/* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype.
|
||||
* However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */
|
||||
RailTypeResolverObject ro(NULL, index, TCX_NORMAL, RTSG_END);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_railtype = {
|
||||
NULL,
|
||||
NULL,
|
||||
_niv_railtypes,
|
||||
new NIHRailType(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF airport tiles ***/
|
||||
|
||||
#define NICAT(cb_id, bit) NIC(cb_id, AirportTileSpec, callback_mask, bit)
|
||||
static const NICallback _nic_airporttiles[] = {
|
||||
NICAT(CBID_AIRPTILE_DRAW_FOUNDATIONS, CBM_AIRT_DRAW_FOUNDATIONS),
|
||||
NICAT(CBID_AIRPTILE_ANIM_START_STOP, CBM_NO_BIT),
|
||||
NICAT(CBID_AIRPTILE_ANIM_NEXT_FRAME, CBM_AIRT_ANIM_NEXT_FRAME),
|
||||
NICAT(CBID_AIRPTILE_ANIMATION_SPEED, CBM_AIRT_ANIM_SPEED),
|
||||
NIC_END()
|
||||
};
|
||||
|
||||
class NIHAirportTile : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile != NULL; }
|
||||
uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }
|
||||
const void *GetInstance(uint index)const { return NULL; }
|
||||
const void *GetSpec(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index)); }
|
||||
void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
|
||||
uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile->grfid : 0; }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
AirportTileResolverObject ro(AirportTileSpec::GetByTile(index), index, Station::GetByTile(index));
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_airporttile = {
|
||||
NULL,
|
||||
_nic_airporttiles,
|
||||
_niv_industrytiles, // Yes, they share this (at least now)
|
||||
new NIHAirportTile(),
|
||||
};
|
||||
|
||||
|
||||
/*** NewGRF towns ***/
|
||||
|
||||
static const NIVariable _niv_towns[] = {
|
||||
NIV(0x40, "larger town effect on this town"),
|
||||
NIV(0x41, "town index"),
|
||||
NIV(0x82, "population"),
|
||||
NIV(0x94, "zone radius 0"),
|
||||
NIV(0x96, "zone radius 1"),
|
||||
NIV(0x98, "zone radius 2"),
|
||||
NIV(0x9A, "zone radius 3"),
|
||||
NIV(0x9C, "zone radius 4"),
|
||||
NIV(0xB6, "number of buildings"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
class NIHTown : public NIHelper {
|
||||
bool IsInspectable(uint index) const { return Town::IsValidID(index); }
|
||||
uint GetParent(uint index) const { return UINT32_MAX; }
|
||||
const void *GetInstance(uint index)const { return Town::Get(index); }
|
||||
const void *GetSpec(uint index) const { return NULL; }
|
||||
void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_TOWN_NAME, index); }
|
||||
uint32 GetGRFID(uint index) const { return 0; }
|
||||
bool PSAWithParameter() const { return true; }
|
||||
uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); }
|
||||
|
||||
/* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
|
||||
{
|
||||
TownResolverObject ro(NULL, Town::Get(index), true);
|
||||
return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
|
||||
}
|
||||
|
||||
const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
|
||||
{
|
||||
Town *t = Town::Get(index);
|
||||
|
||||
std::list<PersistentStorage *>::iterator iter;
|
||||
for (iter = t->psa_list.begin(); iter != t->psa_list.end(); iter++) {
|
||||
if ((*iter)->grfid == grfid) return (int32 *)(&(*iter)->storage[0]);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
};
|
||||
|
||||
static const NIFeature _nif_town = {
|
||||
NULL,
|
||||
NULL,
|
||||
_niv_towns,
|
||||
new NIHTown(),
|
||||
};
|
||||
|
||||
/** Table with all NIFeatures. */
|
||||
static const NIFeature * const _nifeatures[] = {
|
||||
&_nif_vehicle, // GSF_TRAINS
|
||||
&_nif_vehicle, // GSF_ROADVEHICLES
|
||||
&_nif_vehicle, // GSF_SHIPS
|
||||
&_nif_vehicle, // GSF_AIRCRAFT
|
||||
&_nif_station, // GSF_STATIONS
|
||||
NULL, // GSF_CANALS (no callbacks/action2 implemented)
|
||||
NULL, // GSF_BRIDGES (no callbacks/action2)
|
||||
&_nif_house, // GSF_HOUSES
|
||||
NULL, // GSF_GLOBALVAR (has no "physical" objects)
|
||||
&_nif_industrytile, // GSF_INDUSTRYTILES
|
||||
&_nif_industry, // GSF_INDUSTRIES
|
||||
NULL, // GSF_CARGOES (has no "physical" objects)
|
||||
NULL, // GSF_SOUNDFX (has no "physical" objects)
|
||||
NULL, // GSF_AIRPORTS (feature not implemented)
|
||||
NULL, // GSF_SIGNALS (feature not implemented)
|
||||
&_nif_object, // GSF_OBJECTS
|
||||
&_nif_railtype, // GSF_RAILTYPES
|
||||
&_nif_airporttile, // GSF_AIRPORTTILES
|
||||
&_nif_town, // GSF_FAKE_TOWNS
|
||||
};
|
||||
assert_compile(lengthof(_nifeatures) == GSF_FAKE_END);
|
||||
150
src/table/object_land.h
Normal file
150
src/table/object_land.h
Normal file
@@ -0,0 +1,150 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file object_land.h Sprites to use and how to display them for object tiles. */
|
||||
|
||||
#define TILE_SEQ_LINE(sz, img) { 0, 0, 0, 16, 16, sz, {img, PAL_NONE} },
|
||||
#define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
|
||||
|
||||
static const DrawTileSeqStruct _object_nothing[] = {
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_transmitter_seq[] = {
|
||||
{ 7, 7, 0, 2, 2, 70, {SPR_TRANSMITTER, PAL_NONE}},
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_lighthouse_seq[] = {
|
||||
{ 4, 4, 0, 7, 7, 61, {SPR_LIGHTHOUSE, PAL_NONE}},
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_statue_seq[] = {
|
||||
{ 0, 0, 0, 16, 16, 25, {SPR_STATUE_COMPANY | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}},
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_owned_land_seq[] = {
|
||||
{ 8, 8, 0, 1, 1, 6, {SPR_BOUGHT_LAND | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}},
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
extern const DrawTileSprites _objects[] = {
|
||||
{ { SPR_FLAT_2_THIRD_GRASS_TILE, PAL_NONE }, _object_transmitter_seq },
|
||||
{ { SPR_FLAT_2_THIRD_GRASS_TILE, PAL_NONE }, _object_lighthouse_seq },
|
||||
{ { SPR_CONCRETE_GROUND, PAL_NONE }, _object_statue_seq },
|
||||
{ { SPR_FLAT_BARE_LAND, PAL_NONE }, _object_owned_land_seq },
|
||||
};
|
||||
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_medium_north[] = {
|
||||
TILE_SEQ_LINE(20, SPR_MEDIUMHQ_NORTH_WALL | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_medium_east[] = {
|
||||
TILE_SEQ_LINE(20, SPR_MEDIUMHQ_EAST_WALL | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_medium_west[] = {
|
||||
TILE_SEQ_LINE(20, SPR_MEDIUMHQ_WEST_WALL | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_large_north[] = {
|
||||
TILE_SEQ_LINE(50, SPR_LARGEHQ_NORTH_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_large_east[] = {
|
||||
TILE_SEQ_LINE(50, SPR_LARGEHQ_EAST_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_large_west[] = {
|
||||
TILE_SEQ_LINE(50, SPR_LARGEHQ_WEST_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_huge_north[] = {
|
||||
TILE_SEQ_LINE(60, SPR_HUGEHQ_NORTH_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_huge_east[] = {
|
||||
TILE_SEQ_LINE(60, SPR_HUGEHQ_EAST_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _object_hq_huge_west[] = {
|
||||
TILE_SEQ_LINE(60, SPR_HUGEHQ_WEST_BUILD | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
#undef TILE_SEQ_LINE
|
||||
#undef TILE_SEQ_END
|
||||
|
||||
#define TILE_SPRITE_LINE(img, dtss) { {img | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}, dtss },
|
||||
|
||||
static const DrawTileSprites _object_hq[] = {
|
||||
TILE_SPRITE_LINE(SPR_TINYHQ_NORTH, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_TINYHQ_WEST, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_TINYHQ_EAST, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_TINYHQ_SOUTH, _object_nothing)
|
||||
|
||||
TILE_SPRITE_LINE(SPR_SMALLHQ_NORTH, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_SMALLHQ_WEST, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_SMALLHQ_EAST, _object_nothing)
|
||||
TILE_SPRITE_LINE(SPR_SMALLHQ_SOUTH, _object_nothing)
|
||||
|
||||
TILE_SPRITE_LINE(SPR_MEDIUMHQ_NORTH, _object_hq_medium_north)
|
||||
TILE_SPRITE_LINE(SPR_MEDIUMHQ_WEST, _object_hq_medium_west)
|
||||
TILE_SPRITE_LINE(SPR_MEDIUMHQ_EAST, _object_hq_medium_east)
|
||||
TILE_SPRITE_LINE(SPR_MEDIUMHQ_SOUTH, _object_nothing)
|
||||
|
||||
TILE_SPRITE_LINE(SPR_LARGEHQ_NORTH_GROUND, _object_hq_large_north)
|
||||
TILE_SPRITE_LINE(SPR_LARGEHQ_WEST_GROUND, _object_hq_large_west)
|
||||
TILE_SPRITE_LINE(SPR_LARGEHQ_EAST_GROUND, _object_hq_large_east)
|
||||
TILE_SPRITE_LINE(SPR_LARGEHQ_SOUTH, _object_nothing)
|
||||
|
||||
TILE_SPRITE_LINE(SPR_HUGEHQ_NORTH_GROUND, _object_hq_huge_north)
|
||||
TILE_SPRITE_LINE(SPR_HUGEHQ_WEST_GROUND, _object_hq_huge_west)
|
||||
TILE_SPRITE_LINE(SPR_HUGEHQ_EAST_GROUND, _object_hq_huge_east)
|
||||
TILE_SPRITE_LINE(SPR_HUGEHQ_SOUTH, _object_nothing)
|
||||
};
|
||||
|
||||
#undef TILE_SPRITE_LINE
|
||||
|
||||
#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, MAX_DAY + 1, flags, {0, 0, 0, 0}, 0, height, 1, gen_amount, true }
|
||||
|
||||
/* Climates
|
||||
* T = Temperate
|
||||
* A = Sub-Arctic
|
||||
* S = Sub-Tropic
|
||||
* Y = Toyland */
|
||||
#define T 1
|
||||
#define A 2
|
||||
#define S 4
|
||||
#define Y 8
|
||||
/** Specification of the original object structures. */
|
||||
extern const ObjectSpec _original_objects[] = {
|
||||
M(STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER, 0x11, 0, 0, 10, T|A|S , 15, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT),
|
||||
M(STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE, 0x11, 0, 0, 8, T|A , 8, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT | OBJECT_FLAG_SCALE_BY_WATER),
|
||||
M(STR_TOWN_BUILDING_NAME_STATUE_1, 0x11, 0, 0, 5, T|S|A|Y, 0, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_ONLY_IN_SCENEDIT), // Yes, we disallow building this everywhere. Happens in "special" case!
|
||||
M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND, 0x11, 10, 10, 0, T|S|A|Y, 0, OBJECT_FLAG_AUTOREMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_CLEAR_INCOME | OBJECT_FLAG_HAS_NO_FOUNDATION ), // Only non-silly use case is to use it when you cannot build a station, so disallow bridges
|
||||
M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS, 0x22, 0, 0, 7, T|S|A|Y, 0, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME),
|
||||
};
|
||||
|
||||
#undef M
|
||||
#undef Y
|
||||
#undef S
|
||||
#undef A
|
||||
#undef T
|
||||
82
src/table/palette_convert.h
Normal file
82
src/table/palette_convert.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file palette_convert.h Translation tables from one GRF to another GRF. */
|
||||
|
||||
/** Converting from the Windows palette to the DOS palette */
|
||||
extern const byte _palmap_w2d[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, // 0..7
|
||||
8, 9, 10, 11, 12, 13, 14, 15, // 8..15
|
||||
16, 17, 18, 19, 20, 21, 22, 23, // 16..23
|
||||
24, 25, 26, 27, 28, 29, 30, 31, // 24..31
|
||||
6, 7, 34, 35, 36, 37, 38, 39, // 32..39
|
||||
8, 41, 42, 43, 44, 45, 46, 47, // 40..47
|
||||
48, 49, 50, 51, 52, 53, 54, 55, // 48..55
|
||||
56, 57, 58, 59, 60, 61, 62, 63, // 56..63
|
||||
64, 65, 66, 67, 68, 69, 70, 71, // 64..71
|
||||
72, 73, 74, 75, 76, 77, 78, 79, // 72..79
|
||||
80, 81, 82, 83, 84, 85, 86, 87, // 80..87
|
||||
4, 89, 90, 91, 92, 93, 94, 95, // 88..95
|
||||
96, 97, 98, 99, 100, 101, 102, 103, // 96..103
|
||||
104, 105, 5, 107, 108, 109, 110, 111, // 104..111
|
||||
112, 113, 114, 115, 116, 117, 118, 119, // 112..119
|
||||
120, 121, 122, 123, 124, 125, 126, 127, // 120..127
|
||||
128, 129, 130, 131, 132, 133, 134, 135, // 128..135
|
||||
3, 137, 138, 139, 140, 141, 142, 143, // 136..143
|
||||
144, 145, 146, 147, 148, 149, 150, 151, // 144..151
|
||||
152, 153, 154, 155, 156, 157, 158, 159, // 152..159
|
||||
160, 161, 162, 163, 164, 165, 166, 167, // 160..167
|
||||
168, 169, 170, 171, 172, 173, 174, 175, // 168..175
|
||||
176, 177, 178, 179, 180, 181, 182, 183, // 176..183
|
||||
184, 185, 186, 187, 188, 189, 190, 191, // 184..191
|
||||
192, 193, 194, 195, 196, 197, 198, 199, // 192..199
|
||||
200, 201, 202, 203, 204, 205, 206, 207, // 200..207
|
||||
208, 209, 210, 211, 212, 213, 214, 1, // 208..215
|
||||
2, 245, 246, 247, 248, 249, 250, 251, // 216..223
|
||||
252, 253, 254, 227, 228, 229, 230, 231, // 224..231
|
||||
232, 233, 234, 235, 236, 237, 238, 239, // 232..239
|
||||
240, 241, 242, 243, 244, 9, 218, 219, // 240..247
|
||||
220, 221, 222, 223, 224, 225, 226, 255, // 248..255
|
||||
};
|
||||
|
||||
/** Converting from the DOS palette to the Windows palette */
|
||||
static const byte _palmap_d2w[] = {
|
||||
0, 215, 216, 136, 88, 106, 32, 33, // 0..7
|
||||
40, 245, 10, 11, 12, 13, 14, 15, // 8..15
|
||||
16, 17, 18, 19, 20, 21, 22, 23, // 16..23
|
||||
24, 25, 26, 27, 28, 29, 30, 31, // 24..31
|
||||
53, 54, 34, 35, 36, 37, 38, 39, // 32..39
|
||||
178, 41, 42, 43, 44, 45, 46, 47, // 40..47
|
||||
48, 49, 50, 51, 52, 53, 54, 55, // 48..55
|
||||
56, 57, 58, 59, 60, 61, 62, 63, // 56..63
|
||||
64, 65, 66, 67, 68, 69, 70, 71, // 64..71
|
||||
72, 73, 74, 75, 76, 77, 78, 79, // 72..79
|
||||
80, 81, 82, 83, 84, 85, 86, 87, // 80..87
|
||||
96, 89, 90, 91, 92, 93, 94, 95, // 88..95
|
||||
96, 97, 98, 99, 100, 101, 102, 103, // 96..103
|
||||
104, 105, 53, 107, 108, 109, 110, 111, // 104..111
|
||||
112, 113, 114, 115, 116, 117, 118, 119, // 112..119
|
||||
120, 121, 122, 123, 124, 125, 126, 127, // 120..127
|
||||
128, 129, 130, 131, 132, 133, 134, 135, // 128..135
|
||||
170, 137, 138, 139, 140, 141, 142, 143, // 136..143
|
||||
144, 145, 146, 147, 148, 149, 150, 151, // 144..151
|
||||
152, 153, 154, 155, 156, 157, 158, 159, // 152..159
|
||||
160, 161, 162, 163, 164, 165, 166, 167, // 160..167
|
||||
168, 169, 170, 171, 172, 173, 174, 175, // 168..175
|
||||
176, 177, 178, 179, 180, 181, 182, 183, // 176..183
|
||||
184, 185, 186, 187, 188, 189, 190, 191, // 184..191
|
||||
192, 193, 194, 195, 196, 197, 198, 199, // 192..199
|
||||
200, 201, 202, 203, 204, 205, 206, 207, // 200..207
|
||||
208, 209, 210, 211, 212, 213, 214, 215, // 208..215
|
||||
216, 217, 246, 247, 248, 249, 250, 251, // 216..223
|
||||
252, 253, 254, 227, 228, 229, 230, 231, // 224..231
|
||||
232, 233, 234, 235, 236, 237, 238, 239, // 232..239
|
||||
240, 241, 242, 243, 244, 217, 218, 219, // 240..247
|
||||
220, 221, 222, 223, 224, 225, 226, 255, // 248..255
|
||||
};
|
||||
149
src/table/palettes.h
Normal file
149
src/table/palettes.h
Normal file
@@ -0,0 +1,149 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file palettes.h The colour translation of the GRF palettes. */
|
||||
|
||||
#include "../core/endian_type.hpp"
|
||||
|
||||
#define M(r, g, b) Colour(r, g, b)
|
||||
|
||||
/** Colour palette (DOS) */
|
||||
static const Palette _palette = {
|
||||
{
|
||||
/* transparent */
|
||||
Colour(0, 0, 0, 0),
|
||||
/* grey scale */
|
||||
M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48),
|
||||
M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115),
|
||||
/* regular colours */
|
||||
M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
|
||||
M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
|
||||
M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
|
||||
M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
|
||||
M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
|
||||
M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
|
||||
M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72),
|
||||
M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
|
||||
M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
|
||||
M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
|
||||
M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
|
||||
M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
|
||||
M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
|
||||
M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
|
||||
M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
|
||||
M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
|
||||
M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
|
||||
M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
|
||||
M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
|
||||
M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
|
||||
M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
|
||||
M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
|
||||
M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
|
||||
M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
|
||||
M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 4), M( 88, 52, 12),
|
||||
M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
|
||||
M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
|
||||
M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
|
||||
M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
|
||||
M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
|
||||
M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
|
||||
M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
|
||||
M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
|
||||
M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
|
||||
M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
|
||||
M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
|
||||
M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
|
||||
M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
|
||||
M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
|
||||
M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
|
||||
M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
|
||||
M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
|
||||
M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
|
||||
M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
|
||||
M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
|
||||
M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
|
||||
M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
|
||||
M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
|
||||
M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
|
||||
M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
|
||||
M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
|
||||
M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172),
|
||||
/* unused pink */
|
||||
M(212, 0, 212),
|
||||
M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
|
||||
M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
|
||||
M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
|
||||
/* Palette animated colours (filled with data from #ExtraPaletteValues) */
|
||||
M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
|
||||
/* pure white */
|
||||
M(252, 252, 252)
|
||||
},
|
||||
0, // First dirty
|
||||
256 // Dirty count
|
||||
};
|
||||
|
||||
/** Description of the length of the palette cycle animations */
|
||||
static const uint EPV_CYCLES_DARK_WATER = 5; ///< length of the dark blue water animation
|
||||
static const uint EPV_CYCLES_LIGHTHOUSE = 4; ///< length of the lighthouse/stadium animation
|
||||
static const uint EPV_CYCLES_OIL_REFINERY = 7; ///< length of the oil refinery's fire animation
|
||||
static const uint EPV_CYCLES_FIZZY_DRINK = 5; ///< length of the fizzy drinks animation
|
||||
static const uint EPV_CYCLES_GLITTER_WATER = 15; ///< length of the glittery water animation
|
||||
|
||||
/** Description of tables for the palette animation */
|
||||
struct ExtraPaletteValues {
|
||||
Colour dark_water[EPV_CYCLES_DARK_WATER]; ///< dark blue water
|
||||
Colour dark_water_toyland[EPV_CYCLES_DARK_WATER]; ///< dark blue water Toyland
|
||||
Colour lighthouse[EPV_CYCLES_LIGHTHOUSE]; ///< lighthouse & stadium
|
||||
Colour oil_refinery[EPV_CYCLES_OIL_REFINERY]; ///< oil refinery
|
||||
Colour fizzy_drink[EPV_CYCLES_FIZZY_DRINK]; ///< fizzy drinks
|
||||
Colour glitter_water[EPV_CYCLES_GLITTER_WATER]; ///< glittery water
|
||||
Colour glitter_water_toyland[EPV_CYCLES_GLITTER_WATER]; ///< glittery water Toyland
|
||||
};
|
||||
|
||||
/** Actual palette animation tables */
|
||||
static const ExtraPaletteValues _extra_palette_values = {
|
||||
/* dark blue water */
|
||||
{ M( 32, 68, 112), M( 36, 72, 116), M( 40, 76, 120), M( 44, 80, 124),
|
||||
M( 48, 84, 128) },
|
||||
|
||||
/* dark blue water Toyland */
|
||||
{ M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
|
||||
M( 44, 124, 140) },
|
||||
|
||||
/* lighthouse & stadium */
|
||||
{ M(240, 208, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0) },
|
||||
|
||||
/* oil refinery */
|
||||
{ M(252, 60, 0), M(252, 84, 0), M(252, 108, 0), M(252, 124, 0),
|
||||
M(252, 148, 0), M(252, 172, 0), M(252, 196, 0) },
|
||||
|
||||
/* fizzy drinks */
|
||||
{ M( 76, 24, 8), M(108, 44, 24), M(144, 72, 52), M(176, 108, 84),
|
||||
M(212, 148, 128) },
|
||||
|
||||
/* glittery water */
|
||||
{ M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
|
||||
M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
|
||||
M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
|
||||
M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
|
||||
|
||||
/* glittery water Toyland */
|
||||
{ M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
|
||||
M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
|
||||
M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
|
||||
M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
|
||||
};
|
||||
#undef M
|
||||
85
src/table/pricebase.h
Normal file
85
src/table/pricebase.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file pricebase.h Price Bases */
|
||||
|
||||
extern const PriceBaseSpec _price_base_specs[] = {
|
||||
{ 100, PCAT_NONE, GSF_END, INVALID_PRICE }, ///< PR_STATION_VALUE
|
||||
{ 100, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_RAIL
|
||||
{ 95, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_ROAD
|
||||
{ 65, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_SIGNALS
|
||||
{ 275, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_BRIDGE
|
||||
{ 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_TRAIN
|
||||
{ 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_ROAD
|
||||
{ 700, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_SHIP
|
||||
{ 450, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TUNNEL
|
||||
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL
|
||||
{ 180, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL_LENGTH
|
||||
{ 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_AIRPORT
|
||||
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_BUS
|
||||
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_TRUCK
|
||||
{ 350, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_DOCK
|
||||
{ 400000, PCAT_CONSTRUCTION, GSF_TRAINS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_TRAIN
|
||||
{ 2000, PCAT_CONSTRUCTION, GSF_TRAINS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_WAGON
|
||||
{ 700000, PCAT_CONSTRUCTION, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_AIRCRAFT
|
||||
{ 14000, PCAT_CONSTRUCTION, GSF_ROADVEHICLES, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_ROAD
|
||||
{ 65000, PCAT_CONSTRUCTION, GSF_SHIPS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_SHIP
|
||||
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TREES
|
||||
{ 250, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_TERRAFORM
|
||||
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_GRASS
|
||||
{ 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROUGH
|
||||
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROCKS
|
||||
{ 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_FIELDS
|
||||
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TREES
|
||||
{ -70, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_RAIL
|
||||
{ 10, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_SIGNALS
|
||||
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_BRIDGE
|
||||
{ 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_TRAIN
|
||||
{ 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_ROAD
|
||||
{ 90, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_SHIP
|
||||
{ 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TUNNEL
|
||||
{ 10000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_WATER
|
||||
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_RAIL
|
||||
{ 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_AIRPORT
|
||||
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_BUS
|
||||
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_TRUCK
|
||||
{ 55, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_DOCK
|
||||
{ 1600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_HOUSE
|
||||
{ 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROAD
|
||||
{ 5600, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_STEAM
|
||||
{ 5200, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_DIESEL
|
||||
{ 4800, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_ELECTRIC
|
||||
{ 9600, PCAT_RUNNING, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_RUNNING_AIRCRAFT
|
||||
{ 1600, PCAT_RUNNING, GSF_ROADVEHICLES, INVALID_PRICE }, ///< PR_RUNNING_ROADVEH
|
||||
{ 5600, PCAT_RUNNING, GSF_SHIPS, INVALID_PRICE }, ///< PR_RUNNING_SHIP
|
||||
{1000000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_INDUSTRY
|
||||
{ 1600, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_HOUSE }, ///< PR_CLEAR_INDUSTRY
|
||||
{ 40, PCAT_CONSTRUCTION, GSF_OBJECTS, PR_CLEAR_ROUGH }, ///< PR_BUILD_OBJECT
|
||||
{ 40, PCAT_CONSTRUCTION, GSF_OBJECTS, PR_CLEAR_ROUGH }, ///< PR_CLEAR_OBJECT
|
||||
{ 600, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_DEPOT_TRAIN }, ///< PR_BUILD_WAYPOINT_RAIL
|
||||
{ 80, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_DEPOT_TRAIN }, ///< PR_CLEAR_WAYPOINT_RAIL
|
||||
{ 350, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_STATION_DOCK }, ///< PR_BUILD_WAYPOINT_BUOY
|
||||
{ 50, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_STATION_TRUCK}, ///< PR_CLEAR_WAYPOINT_BUOY
|
||||
{1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_TOWN_ACTION
|
||||
{ 250, PCAT_CONSTRUCTION, GSF_END, PR_TERRAFORM }, ///< PR_BUILD_FOUNDATION
|
||||
{8000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_INDUSTRY_RAW
|
||||
{1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_TOWN
|
||||
{ 5000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_CANAL
|
||||
{ 5000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_CLEAR_CANAL
|
||||
{ 10000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_AQUEDUCT
|
||||
{ 2000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_BRIDGE }, ///< PR_CLEAR_AQUEDUCT
|
||||
{ 7500, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_LOCK
|
||||
{ 2000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_CLEAR_LOCK
|
||||
{ 10, PCAT_RUNNING, GSF_END, PR_BUILD_RAIL }, ///< PR_INFRASTRUCTURE_RAIL
|
||||
{ 10, PCAT_RUNNING, GSF_END, PR_BUILD_ROAD }, ///< PR_INFRASTRUCTURE_ROAD
|
||||
{ 8, PCAT_RUNNING, GSF_END, PR_BUILD_CANAL }, ///< PR_INFRASTRUCTURE_WATER
|
||||
{ 100, PCAT_RUNNING, GSF_END, PR_STATION_VALUE }, ///< PR_INFRASTRUCTURE_STATION
|
||||
{ 5000, PCAT_RUNNING, GSF_END, PR_BUILD_STATION_AIRPORT}, ///< PR_INFRASTRUCTURE_AIRPORT
|
||||
};
|
||||
assert_compile(lengthof(_price_base_specs) == PR_END);
|
||||
415
src/table/railtypes.h
Normal file
415
src/table/railtypes.h
Normal file
@@ -0,0 +1,415 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file railtypes.h
|
||||
* All the railtype-specific information is stored here.
|
||||
*/
|
||||
|
||||
#ifndef RAILTYPES_H
|
||||
#define RAILTYPES_H
|
||||
|
||||
/**
|
||||
* Global Railtype definition
|
||||
*/
|
||||
static const RailtypeInfo _original_railtypes[] = {
|
||||
/** Railway */
|
||||
{ // Main Sprites
|
||||
{ SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y,
|
||||
SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST,
|
||||
SPR_TRACKS_FOR_SLOPES_RAIL_BASE,
|
||||
SPR_CROSSING_OFF_X_RAIL,
|
||||
SPR_TUNNEL_ENTRY_REAR_RAIL
|
||||
},
|
||||
|
||||
/* GUI sprites */
|
||||
{ 0x4E3, 0x4E4, 0x4E5, 0x4E6,
|
||||
SPR_IMG_AUTORAIL,
|
||||
SPR_IMG_DEPOT_RAIL,
|
||||
SPR_IMG_TUNNEL_RAIL,
|
||||
SPR_IMG_CONVERT_RAIL,
|
||||
{}
|
||||
},
|
||||
|
||||
{
|
||||
SPR_CURSOR_NS_TRACK,
|
||||
SPR_CURSOR_SWNE_TRACK,
|
||||
SPR_CURSOR_EW_TRACK,
|
||||
SPR_CURSOR_NWSE_TRACK,
|
||||
SPR_CURSOR_AUTORAIL,
|
||||
SPR_CURSOR_RAIL_DEPOT,
|
||||
SPR_CURSOR_TUNNEL_RAIL,
|
||||
SPR_CURSOR_CONVERT_RAIL
|
||||
},
|
||||
|
||||
/* strings */
|
||||
{
|
||||
STR_RAIL_NAME_RAILROAD,
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION,
|
||||
STR_RAIL_MENU_RAILROAD_CONSTRUCTION,
|
||||
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION,
|
||||
STR_REPLACE_RAIL_VEHICLES,
|
||||
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE,
|
||||
},
|
||||
|
||||
/* Offset of snow tiles */
|
||||
SPR_RAIL_SNOW_OFFSET,
|
||||
|
||||
/* Powered railtypes */
|
||||
RAILTYPES_RAIL | RAILTYPES_ELECTRIC,
|
||||
|
||||
/* Compatible railtypes */
|
||||
RAILTYPES_RAIL | RAILTYPES_ELECTRIC,
|
||||
|
||||
/* bridge offset */
|
||||
0,
|
||||
|
||||
/* fallback_railtype */
|
||||
0,
|
||||
|
||||
/* curve speed advantage (multiplier) */
|
||||
0,
|
||||
|
||||
/* flags */
|
||||
RTFB_NONE,
|
||||
|
||||
/* cost multiplier */
|
||||
8,
|
||||
|
||||
/* maintenance cost multiplier */
|
||||
8,
|
||||
|
||||
/* acceleration type */
|
||||
0,
|
||||
|
||||
/* max speed */
|
||||
0,
|
||||
|
||||
/* rail type label */
|
||||
'RAIL',
|
||||
|
||||
/* alternate labels */
|
||||
RailTypeLabelList(),
|
||||
|
||||
/* map colour */
|
||||
0x0A,
|
||||
|
||||
/* introduction date */
|
||||
INVALID_DATE,
|
||||
|
||||
/* railtypes required for this to be introduced */
|
||||
RAILTYPES_NONE,
|
||||
|
||||
/* introduction rail types */
|
||||
RAILTYPES_RAIL,
|
||||
|
||||
/* sort order */
|
||||
0 << 4 | 7,
|
||||
|
||||
{ NULL },
|
||||
{ NULL },
|
||||
},
|
||||
|
||||
/** Electrified railway */
|
||||
{ // Main Sprites
|
||||
{ SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y,
|
||||
SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST,
|
||||
SPR_TRACKS_FOR_SLOPES_RAIL_BASE,
|
||||
SPR_CROSSING_OFF_X_RAIL,
|
||||
SPR_TUNNEL_ENTRY_REAR_RAIL
|
||||
},
|
||||
|
||||
/* GUI sprites */
|
||||
{
|
||||
SPR_BUILD_NS_ELRAIL,
|
||||
SPR_BUILD_X_ELRAIL,
|
||||
SPR_BUILD_EW_ELRAIL,
|
||||
SPR_BUILD_Y_ELRAIL,
|
||||
SPR_IMG_AUTOELRAIL,
|
||||
SPR_IMG_DEPOT_ELRAIL,
|
||||
SPR_BUILD_TUNNEL_ELRAIL,
|
||||
SPR_IMG_CONVERT_ELRAIL,
|
||||
{}
|
||||
},
|
||||
|
||||
{
|
||||
SPR_CURSOR_NS_ELRAIL,
|
||||
SPR_CURSOR_SWNE_ELRAIL,
|
||||
SPR_CURSOR_EW_ELRAIL,
|
||||
SPR_CURSOR_NWSE_ELRAIL,
|
||||
SPR_CURSOR_AUTOELRAIL,
|
||||
SPR_CURSOR_ELRAIL_DEPOT,
|
||||
SPR_CURSOR_TUNNEL_ELRAIL,
|
||||
SPR_CURSOR_CONVERT_ELRAIL
|
||||
},
|
||||
|
||||
/* strings */
|
||||
{
|
||||
STR_RAIL_NAME_ELRAIL,
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION,
|
||||
STR_RAIL_MENU_ELRAIL_CONSTRUCTION,
|
||||
STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION,
|
||||
STR_REPLACE_ELRAIL_VEHICLES,
|
||||
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE,
|
||||
},
|
||||
|
||||
/* Offset of snow tiles */
|
||||
SPR_RAIL_SNOW_OFFSET,
|
||||
|
||||
/* Powered railtypes */
|
||||
RAILTYPES_ELECTRIC,
|
||||
|
||||
/* Compatible railtypes */
|
||||
RAILTYPES_ELECTRIC | RAILTYPES_RAIL,
|
||||
|
||||
/* bridge offset */
|
||||
0,
|
||||
|
||||
/* fallback_railtype */
|
||||
0,
|
||||
|
||||
/* curve speed advantage (multiplier) */
|
||||
0,
|
||||
|
||||
/* flags */
|
||||
RTFB_CATENARY,
|
||||
|
||||
/* cost multiplier */
|
||||
12,
|
||||
|
||||
/* maintenance cost multiplier */
|
||||
12,
|
||||
|
||||
/* acceleration type */
|
||||
0,
|
||||
|
||||
/* max speed */
|
||||
0,
|
||||
|
||||
/* rail type label */
|
||||
'ELRL',
|
||||
|
||||
/* alternate labels */
|
||||
RailTypeLabelList(),
|
||||
|
||||
/* map colour */
|
||||
0x0A,
|
||||
|
||||
/* introduction date */
|
||||
INVALID_DATE,
|
||||
|
||||
/* railtypes required for this to be introduced */
|
||||
RAILTYPES_NONE,
|
||||
|
||||
/* introduction rail types */
|
||||
RAILTYPES_ELECTRIC,
|
||||
|
||||
/* sort order */
|
||||
1 << 4 | 7,
|
||||
|
||||
{ NULL },
|
||||
{ NULL },
|
||||
},
|
||||
|
||||
/** Monorail */
|
||||
{ // Main Sprites
|
||||
{ SPR_MONO_TRACK_Y, SPR_MONO_TRACK_N_S, SPR_MONO_TRACK_BASE, SPR_MONO_SINGLE_X, SPR_MONO_SINGLE_Y,
|
||||
SPR_MONO_SINGLE_NORTH, SPR_MONO_SINGLE_SOUTH, SPR_MONO_SINGLE_EAST, SPR_MONO_SINGLE_WEST,
|
||||
SPR_TRACKS_FOR_SLOPES_MONO_BASE,
|
||||
SPR_CROSSING_OFF_X_MONO,
|
||||
SPR_TUNNEL_ENTRY_REAR_MONO
|
||||
},
|
||||
|
||||
/* GUI sprites */
|
||||
{ 0x4E7, 0x4E8, 0x4E9, 0x4EA,
|
||||
SPR_IMG_AUTOMONO,
|
||||
SPR_IMG_DEPOT_MONO,
|
||||
SPR_IMG_TUNNEL_MONO,
|
||||
SPR_IMG_CONVERT_MONO,
|
||||
{}
|
||||
},
|
||||
|
||||
{
|
||||
SPR_CURSOR_NS_MONO,
|
||||
SPR_CURSOR_SWNE_MONO,
|
||||
SPR_CURSOR_EW_MONO,
|
||||
SPR_CURSOR_NWSE_MONO,
|
||||
SPR_CURSOR_AUTOMONO,
|
||||
SPR_CURSOR_MONO_DEPOT,
|
||||
SPR_CURSOR_TUNNEL_MONO,
|
||||
SPR_CURSOR_CONVERT_MONO
|
||||
},
|
||||
|
||||
/* strings */
|
||||
{
|
||||
STR_RAIL_NAME_MONORAIL,
|
||||
STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION,
|
||||
STR_RAIL_MENU_MONORAIL_CONSTRUCTION,
|
||||
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION,
|
||||
STR_REPLACE_MONORAIL_VEHICLES,
|
||||
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE,
|
||||
},
|
||||
|
||||
/* Offset of snow tiles */
|
||||
SPR_MONO_SNOW_OFFSET,
|
||||
|
||||
/* Powered railtypes */
|
||||
RAILTYPES_MONO,
|
||||
|
||||
/* Compatible Railtypes */
|
||||
RAILTYPES_MONO,
|
||||
|
||||
/* bridge offset */
|
||||
16,
|
||||
|
||||
/* fallback_railtype */
|
||||
1,
|
||||
|
||||
/* curve speed advantage (multiplier) */
|
||||
1,
|
||||
|
||||
/* flags */
|
||||
RTFB_NONE,
|
||||
|
||||
/* cost multiplier */
|
||||
16,
|
||||
|
||||
/* maintenance cost multiplier */
|
||||
16,
|
||||
|
||||
/* acceleration type */
|
||||
1,
|
||||
|
||||
/* max speed */
|
||||
0,
|
||||
|
||||
/* rail type label */
|
||||
'MONO',
|
||||
|
||||
/* alternate labels */
|
||||
RailTypeLabelList(),
|
||||
|
||||
/* map colour */
|
||||
0x0A,
|
||||
|
||||
/* introduction date */
|
||||
INVALID_DATE,
|
||||
|
||||
/* railtypes required for this to be introduced */
|
||||
RAILTYPES_NONE,
|
||||
|
||||
/* introduction rail types */
|
||||
RAILTYPES_MONO,
|
||||
|
||||
/* sort order */
|
||||
2 << 4 | 7,
|
||||
|
||||
{ NULL },
|
||||
{ NULL },
|
||||
},
|
||||
|
||||
/** Maglev */
|
||||
{ // Main sprites
|
||||
{ SPR_MGLV_TRACK_Y, SPR_MGLV_TRACK_N_S, SPR_MGLV_TRACK_BASE, SPR_MGLV_SINGLE_X, SPR_MGLV_SINGLE_Y,
|
||||
SPR_MGLV_SINGLE_NORTH, SPR_MGLV_SINGLE_SOUTH, SPR_MGLV_SINGLE_EAST, SPR_MGLV_SINGLE_WEST,
|
||||
SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE,
|
||||
SPR_CROSSING_OFF_X_MAGLEV,
|
||||
SPR_TUNNEL_ENTRY_REAR_MAGLEV
|
||||
},
|
||||
|
||||
/* GUI sprites */
|
||||
{ 0x4EB, 0x4EC, 0x4EE, 0x4ED,
|
||||
SPR_IMG_AUTOMAGLEV,
|
||||
SPR_IMG_DEPOT_MAGLEV,
|
||||
SPR_IMG_TUNNEL_MAGLEV,
|
||||
SPR_IMG_CONVERT_MAGLEV,
|
||||
{}
|
||||
},
|
||||
|
||||
{
|
||||
SPR_CURSOR_NS_MAGLEV,
|
||||
SPR_CURSOR_SWNE_MAGLEV,
|
||||
SPR_CURSOR_EW_MAGLEV,
|
||||
SPR_CURSOR_NWSE_MAGLEV,
|
||||
SPR_CURSOR_AUTOMAGLEV,
|
||||
SPR_CURSOR_MAGLEV_DEPOT,
|
||||
SPR_CURSOR_TUNNEL_MAGLEV,
|
||||
SPR_CURSOR_CONVERT_MAGLEV
|
||||
},
|
||||
|
||||
/* strings */
|
||||
{
|
||||
STR_RAIL_NAME_MAGLEV,
|
||||
STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION,
|
||||
STR_RAIL_MENU_MAGLEV_CONSTRUCTION,
|
||||
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION,
|
||||
STR_REPLACE_MAGLEV_VEHICLES,
|
||||
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE,
|
||||
},
|
||||
|
||||
/* Offset of snow tiles */
|
||||
SPR_MGLV_SNOW_OFFSET,
|
||||
|
||||
/* Powered railtypes */
|
||||
RAILTYPES_MAGLEV,
|
||||
|
||||
/* Compatible Railtypes */
|
||||
RAILTYPES_MAGLEV,
|
||||
|
||||
/* bridge offset */
|
||||
24,
|
||||
|
||||
/* fallback_railtype */
|
||||
2,
|
||||
|
||||
/* curve speed advantage (multiplier) */
|
||||
2,
|
||||
|
||||
/* flags */
|
||||
RTFB_NONE,
|
||||
|
||||
/* cost multiplier */
|
||||
24,
|
||||
|
||||
/* maintenance cost multiplier */
|
||||
24,
|
||||
|
||||
/* acceleration type */
|
||||
2,
|
||||
|
||||
/* max speed */
|
||||
0,
|
||||
|
||||
/* rail type label */
|
||||
'MGLV',
|
||||
|
||||
/* alternate labels */
|
||||
RailTypeLabelList(),
|
||||
|
||||
/* map colour */
|
||||
0x0A,
|
||||
|
||||
/* introduction date */
|
||||
INVALID_DATE,
|
||||
|
||||
/* railtypes required for this to be introduced */
|
||||
RAILTYPES_NONE,
|
||||
|
||||
/* introduction rail types */
|
||||
RAILTYPES_MAGLEV,
|
||||
|
||||
/* sort order */
|
||||
3 << 4 | 7,
|
||||
|
||||
{ NULL },
|
||||
{ NULL },
|
||||
},
|
||||
};
|
||||
|
||||
#endif /* RAILTYPES_H */
|
||||
291
src/table/road_land.h
Normal file
291
src/table/road_land.h
Normal file
@@ -0,0 +1,291 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file road_land.h Sprite constructs for road depots. */
|
||||
|
||||
#define TILE_SEQ_LINE(img, pal, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 20, {img, pal} },
|
||||
#define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
|
||||
|
||||
static const DrawTileSeqStruct _road_depot_NE[] = {
|
||||
TILE_SEQ_LINE(0x584 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _road_depot_SE[] = {
|
||||
TILE_SEQ_LINE(0x580 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 1, 16)
|
||||
TILE_SEQ_LINE(0x581 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _road_depot_SW[] = {
|
||||
TILE_SEQ_LINE(0x582 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 1)
|
||||
TILE_SEQ_LINE(0x583 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _road_depot_NW[] = {
|
||||
TILE_SEQ_LINE(0x585 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _road_depot[] = {
|
||||
{ {0xA4A, PAL_NONE}, _road_depot_NE },
|
||||
{ {0xA4A, PAL_NONE}, _road_depot_SE },
|
||||
{ {0xA4A, PAL_NONE}, _road_depot_SW },
|
||||
{ {0xA4A, PAL_NONE}, _road_depot_NW }
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _tram_depot_NE[] = {
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x35) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _tram_depot_SE[] = {
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x31) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 1, 16)
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x32) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _tram_depot_SW[] = {
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x33) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 1)
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x34) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _tram_depot_NW[] = {
|
||||
TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x36) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _tram_depot[] = {
|
||||
{ {0xA4A, PAL_NONE}, _tram_depot_NE },
|
||||
{ {0xA4A, PAL_NONE}, _tram_depot_SE },
|
||||
{ {0xA4A, PAL_NONE}, _tram_depot_SW },
|
||||
{ {0xA4A, PAL_NONE}, _tram_depot_NW }
|
||||
};
|
||||
|
||||
/* Sprite layout for level crossings. The SpriteIDs are actually offsets
|
||||
* from the base SpriteID returned from the NewGRF sprite resolver. */
|
||||
static const DrawTileSeqStruct _crossing_layout_ALL[] = {
|
||||
TILE_SEQ_LINE(2, PAL_NONE, 0, 0, 3, 3)
|
||||
TILE_SEQ_LINE(4, PAL_NONE, 0, 13, 3, 3)
|
||||
TILE_SEQ_LINE(6, PAL_NONE, 13, 0, 3, 3)
|
||||
TILE_SEQ_LINE(8, PAL_NONE, 13, 13, 3, 3)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _crossing_layout = {
|
||||
{0, PAL_NONE}, _crossing_layout_ALL
|
||||
};
|
||||
|
||||
#undef TILE_SEQ_LINE
|
||||
#undef TILE_SEQ_END
|
||||
|
||||
|
||||
static const SpriteID _road_tile_sprites_1[16] = {
|
||||
0, 0x546, 0x545, 0x53B, 0x544, 0x534, 0x53E, 0x539,
|
||||
0x543, 0x53C, 0x535, 0x538, 0x53D, 0x537, 0x53A, 0x536
|
||||
};
|
||||
|
||||
static const SpriteID _road_frontwire_sprites_1[16] = {
|
||||
0, 0x54, 0x55, 0x5B, 0x54, 0x54, 0x5E, 0x5A, 0x55, 0x5C, 0x55, 0x58, 0x5D, 0x57, 0x59, 0x56
|
||||
};
|
||||
|
||||
static const SpriteID _road_backpole_sprites_1[16] = {
|
||||
0, 0x38, 0x39, 0x40, 0x38, 0x38, 0x43, 0x3E, 0x39, 0x41, 0x39, 0x3C, 0x42, 0x3B, 0x3D, 0x3A
|
||||
};
|
||||
|
||||
#define MAKELINE(a, b, c) { a, b, c },
|
||||
#define ENDLINE { 0, 0, 0 }
|
||||
|
||||
static const DrawRoadTileStruct _roadside_nothing[] = {
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_3[] = {
|
||||
MAKELINE(0x57f, 1, 8)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_5[] = {
|
||||
MAKELINE(0x57f, 1, 8)
|
||||
MAKELINE(0x57e, 14, 8)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_6[] = {
|
||||
MAKELINE(0x57e, 8, 1)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_7[] = {
|
||||
MAKELINE(0x57f, 1, 8)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_9[] = {
|
||||
MAKELINE(0x57f, 8, 14)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_10[] = {
|
||||
MAKELINE(0x57f, 8, 14)
|
||||
MAKELINE(0x57e, 8, 1)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_11[] = {
|
||||
MAKELINE(0x57f, 8, 14)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_12[] = {
|
||||
MAKELINE(0x57e, 8, 1)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_13[] = {
|
||||
MAKELINE(0x57e, 14, 8)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_14[] = {
|
||||
MAKELINE(0x57e, 8, 1)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_19[] = {
|
||||
MAKELINE(0x1212, 0, 2)
|
||||
MAKELINE(0x1212, 3, 9)
|
||||
MAKELINE(0x1212, 10, 12)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_21[] = {
|
||||
MAKELINE(0x1212, 0, 2)
|
||||
MAKELINE(0x1212, 0, 10)
|
||||
MAKELINE(0x1212, 12, 2)
|
||||
MAKELINE(0x1212, 12, 10)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_22[] = {
|
||||
MAKELINE(0x1212, 10, 0)
|
||||
MAKELINE(0x1212, 3, 3)
|
||||
MAKELINE(0x1212, 0, 10)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_23[] = {
|
||||
MAKELINE(0x1212, 0, 2)
|
||||
MAKELINE(0x1212, 0, 10)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_25[] = {
|
||||
MAKELINE(0x1212, 12, 2)
|
||||
MAKELINE(0x1212, 9, 9)
|
||||
MAKELINE(0x1212, 2, 12)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_26[] = {
|
||||
MAKELINE(0x1212, 2, 0)
|
||||
MAKELINE(0x1212, 10, 0)
|
||||
MAKELINE(0x1212, 2, 12)
|
||||
MAKELINE(0x1212, 10, 12)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_27[] = {
|
||||
MAKELINE(0x1212, 2, 12)
|
||||
MAKELINE(0x1212, 10, 12)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_28[] = {
|
||||
MAKELINE(0x1212, 2, 0)
|
||||
MAKELINE(0x1212, 9, 3)
|
||||
MAKELINE(0x1212, 12, 10)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_29[] = {
|
||||
MAKELINE(0x1212, 12, 2)
|
||||
MAKELINE(0x1212, 12, 10)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct _road_display_datas2_30[] = {
|
||||
MAKELINE(0x1212, 2, 0)
|
||||
MAKELINE(0x1212, 10, 0)
|
||||
ENDLINE
|
||||
};
|
||||
|
||||
#undef MAKELINE
|
||||
#undef ENDLINE
|
||||
|
||||
static const DrawRoadTileStruct * const _roadside_none[] = {
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing,
|
||||
_roadside_nothing, _roadside_nothing
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct * const _roadside_lamps[] = {
|
||||
_roadside_nothing,
|
||||
_roadside_nothing,
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_3,
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_5,
|
||||
_road_display_datas2_6,
|
||||
_road_display_datas2_7,
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_9,
|
||||
_road_display_datas2_10,
|
||||
_road_display_datas2_11,
|
||||
_road_display_datas2_12,
|
||||
_road_display_datas2_13,
|
||||
_road_display_datas2_14,
|
||||
_roadside_nothing,
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct * const _roadside_trees[] = {
|
||||
_roadside_nothing,
|
||||
_roadside_nothing,
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_19,
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_21,
|
||||
_road_display_datas2_22,
|
||||
_road_display_datas2_23,
|
||||
|
||||
_roadside_nothing,
|
||||
_road_display_datas2_25,
|
||||
_road_display_datas2_26,
|
||||
_road_display_datas2_27,
|
||||
_road_display_datas2_28,
|
||||
_road_display_datas2_29,
|
||||
_road_display_datas2_30,
|
||||
_roadside_nothing,
|
||||
};
|
||||
|
||||
static const DrawRoadTileStruct * const * const _road_display_table[] = {
|
||||
_roadside_none,
|
||||
_roadside_none,
|
||||
_roadside_none,
|
||||
_roadside_lamps,
|
||||
_roadside_none,
|
||||
_roadside_trees,
|
||||
};
|
||||
1486
src/table/roadveh_movement.h
Normal file
1486
src/table/roadveh_movement.h
Normal file
File diff suppressed because it is too large
Load Diff
0
src/table/settings.h.postamble
Normal file
0
src/table/settings.h.postamble
Normal file
136
src/table/settings.h.preamble
Normal file
136
src/table/settings.h.preamble
Normal file
@@ -0,0 +1,136 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file table/settings.h Settings to save in the savegame and config file. */
|
||||
|
||||
/* Callback function used in _settings[] as well as _company_settings[] */
|
||||
static size_t ConvertLandscape(const char *value);
|
||||
|
||||
|
||||
/****************************
|
||||
* OTTD specific INI stuff
|
||||
****************************/
|
||||
|
||||
/**
|
||||
* Settings-macro usage:
|
||||
* The list might look daunting at first, but is in general easy to understand.
|
||||
* The macros can be grouped depending on where the config variable is
|
||||
* stored:
|
||||
* 1. SDTG_something
|
||||
* These are for global variables, so this is the one you will use
|
||||
* for a #SettingDescGlobVarList section. Here 'var' refers to a
|
||||
* global variable.
|
||||
* 2. SDTC_something
|
||||
* These are for client-only variables. Here the 'var' refers to an
|
||||
* entry inside _settings_client.
|
||||
* 3. SDT_something
|
||||
* Thse are for members in the struct described by the current
|
||||
* #SettingDesc list / .ini file. Here, 'base' specifies type of the
|
||||
* struct while 'var' points out the member of the struct (the actual
|
||||
* struct to store it in is implicitely defined by the #SettingDesc
|
||||
* list / .ini file preamble the entry is in).
|
||||
*
|
||||
* The something part defines the type of variable to store. There are a
|
||||
* lot of types. Easy ones are:
|
||||
* - VAR: any number type, 'type' field specifies what number. eg int8 or uint32
|
||||
* - BOOL: a boolean number type
|
||||
* - STR: a string or character. 'type' field specifies what string. Normal, string, or quoted
|
||||
* A bit more difficult to use are MMANY (meaning ManyOfMany) and OMANY (OneOfMany)
|
||||
* These are actually normal numbers, only bitmasked. In MMANY several bits can
|
||||
* be set, in the other only one.
|
||||
* If nothing fits you, you can use the GENERAL macros, but it exposes the
|
||||
* internal structure somewhat so it needs a little looking. There are _NULL()
|
||||
* macros as well, these fill up space so you can add more settings there (in
|
||||
* place) and you DON'T have to increase the savegame version.
|
||||
*
|
||||
* While reading values from openttd.cfg, some values may not be converted
|
||||
* properly, for any kind of reasons. In order to allow a process of self-cleaning
|
||||
* mechanism, a callback procedure is made available. You will have to supply the function, which
|
||||
* will work on a string, one function per setting. And of course, enable the callback param
|
||||
* on the appropriate macro.
|
||||
*/
|
||||
|
||||
#define NSD_GENERAL(name, def, cmd, guiflags, min, max, interval, many, str, strhelp, strval, proc, load, cat)\
|
||||
{name, (const void*)(size_t)(def), {(byte)cmd}, {(uint16)guiflags}, min, max, interval, many, str, strhelp, strval, proc, load, cat}
|
||||
|
||||
/* Macros for various objects to go in the configuration file.
|
||||
* This section is for global variables */
|
||||
#define SDTG_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, var, length, def, min, max, interval, full, str, strhelp, strval, proc, from, to, cat)\
|
||||
{NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, NULL, cat), SLEG_GENERAL(sle_cmd, var, type | flags, length, from, to)}
|
||||
|
||||
#define SDTG_VAR(name, type, flags, guiflags, var, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_NUMX, SL_VAR, type, flags, guiflags, var, 0, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_BOOL(name, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_LIST(name, type, length, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_INTLIST, SL_ARR, type, flags, guiflags, var, length, def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_STR(name, type, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_STRING, SL_STR, type, flags, guiflags, var, sizeof(var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_OMANY(name, type, flags, guiflags, var, def, max, full, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_MMANY(name, type, flags, guiflags, var, def, full, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(name, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, 0, 0, full, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTG_NULL(length, from, to)\
|
||||
{{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_NULL(length, from, to)}
|
||||
|
||||
#define SDTG_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_END()}
|
||||
|
||||
/* Macros for various objects to go in the configuration file.
|
||||
* This section is for structures where their various members are saved */
|
||||
#define SDT_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, base, var, length, def, min, max, interval, full, str, strhelp, strval, proc, load, from, to, cat)\
|
||||
{NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, load, cat), SLE_GENERAL(sle_cmd, base, var, type | flags, length, from, to)}
|
||||
|
||||
#define SDT_VAR(base, var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, base, var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_BOOL(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, base, var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_LIST(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_STR(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, base, var, sizeof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_CHR(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_STRING, SL_VAR, SLE_CHAR, flags, guiflags, base, var, 1, def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_OMANY(base, var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, load, cat)\
|
||||
SDT_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, load, from, to, cat)
|
||||
|
||||
#define SDT_MMANY(base, var, type, flags, guiflags, def, full, str, proc, strhelp, strval, from, to, cat)\
|
||||
SDT_GENERAL(#var, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, 0, 0, full, str, strhelp, strval, proc, NULL, from, to, cat)
|
||||
|
||||
#define SDT_NULL(length, from, to)\
|
||||
{{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_CONDNULL(length, from, to)}
|
||||
|
||||
|
||||
#define SDTC_VAR(var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTC_BOOL(var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, _settings_client.var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTC_LIST(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTC_STR(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, _settings_client.var, sizeof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDTC_OMANY(var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, cat)\
|
||||
SDTG_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat)
|
||||
|
||||
#define SDT_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_END()}
|
||||
|
||||
3966
src/table/settings.ini
Normal file
3966
src/table/settings.ini
Normal file
File diff suppressed because it is too large
Load Diff
1588
src/table/sprites.h
Normal file
1588
src/table/sprites.h
Normal file
File diff suppressed because it is too large
Load Diff
1004
src/table/station_land.h
Normal file
1004
src/table/station_land.h
Normal file
File diff suppressed because it is too large
Load Diff
210
src/table/strgen_tables.h
Normal file
210
src/table/strgen_tables.h
Normal file
@@ -0,0 +1,210 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file table/strgen_tables.h Tables of commands for strgen */
|
||||
|
||||
#include "../core/enum_type.hpp"
|
||||
|
||||
enum CmdFlags {
|
||||
C_NONE = 0x0, ///< Nothing special about this command
|
||||
C_DONTCOUNT = 0x1, ///< These commands aren't counted for comparison
|
||||
C_CASE = 0x2, ///< These commands support cases
|
||||
C_GENDER = 0x4, ///< These commands support genders
|
||||
};
|
||||
DECLARE_ENUM_AS_BIT_SET(CmdFlags)
|
||||
|
||||
struct Buffer;
|
||||
typedef void (*ParseCmdProc)(Buffer *buffer, char *buf, int value);
|
||||
|
||||
struct CmdStruct {
|
||||
const char *cmd;
|
||||
ParseCmdProc proc;
|
||||
long value;
|
||||
uint8 consumes;
|
||||
int8 default_plural_offset;
|
||||
CmdFlags flags;
|
||||
};
|
||||
|
||||
extern void EmitSingleChar(Buffer *buffer, char *buf, int value);
|
||||
extern void EmitPlural(Buffer *buffer, char *buf, int value);
|
||||
extern void EmitGender(Buffer *buffer, char *buf, int value);
|
||||
|
||||
static const CmdStruct _cmd_structs[] = {
|
||||
/* Font size */
|
||||
{"NORMAL_FONT", EmitSingleChar, SCC_NORMALFONT, 0, -1, C_NONE},
|
||||
{"TINY_FONT", EmitSingleChar, SCC_TINYFONT, 0, -1, C_NONE},
|
||||
{"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, -1, C_NONE},
|
||||
{"MONO_FONT", EmitSingleChar, SCC_MONOFONT, 0, -1, C_NONE},
|
||||
|
||||
/* Colours */
|
||||
{"BLUE", EmitSingleChar, SCC_BLUE, 0, -1, C_DONTCOUNT},
|
||||
{"SILVER", EmitSingleChar, SCC_SILVER, 0, -1, C_DONTCOUNT},
|
||||
{"GOLD", EmitSingleChar, SCC_GOLD, 0, -1, C_DONTCOUNT},
|
||||
{"RED", EmitSingleChar, SCC_RED, 0, -1, C_DONTCOUNT},
|
||||
{"PURPLE", EmitSingleChar, SCC_PURPLE, 0, -1, C_DONTCOUNT},
|
||||
{"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, -1, C_DONTCOUNT},
|
||||
{"ORANGE", EmitSingleChar, SCC_ORANGE, 0, -1, C_DONTCOUNT},
|
||||
{"GREEN", EmitSingleChar, SCC_GREEN, 0, -1, C_DONTCOUNT},
|
||||
{"YELLOW", EmitSingleChar, SCC_YELLOW, 0, -1, C_DONTCOUNT},
|
||||
{"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, -1, C_DONTCOUNT},
|
||||
{"CREAM", EmitSingleChar, SCC_CREAM, 0, -1, C_DONTCOUNT},
|
||||
{"BROWN", EmitSingleChar, SCC_BROWN, 0, -1, C_DONTCOUNT},
|
||||
{"WHITE", EmitSingleChar, SCC_WHITE, 0, -1, C_DONTCOUNT},
|
||||
{"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, -1, C_DONTCOUNT},
|
||||
{"GRAY", EmitSingleChar, SCC_GRAY, 0, -1, C_DONTCOUNT},
|
||||
{"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, -1, C_DONTCOUNT},
|
||||
{"BLACK", EmitSingleChar, SCC_BLACK, 0, -1, C_DONTCOUNT},
|
||||
{"PUSH_COLOUR", EmitSingleChar, SCC_PUSH_COLOUR, 0, -1, C_DONTCOUNT},
|
||||
{"POP_COLOUR", EmitSingleChar, SCC_POP_COLOUR, 0, -1, C_DONTCOUNT},
|
||||
|
||||
{"REV", EmitSingleChar, SCC_REVISION, 0, -1, C_NONE}, // openttd revision string
|
||||
|
||||
{"STRING1", EmitSingleChar, SCC_STRING1, 2, -1, C_CASE | C_GENDER}, // included string that consumes the string id and ONE argument
|
||||
{"STRING2", EmitSingleChar, SCC_STRING2, 3, -1, C_CASE | C_GENDER}, // included string that consumes the string id and TWO arguments
|
||||
{"STRING3", EmitSingleChar, SCC_STRING3, 4, -1, C_CASE | C_GENDER}, // included string that consumes the string id and THREE arguments
|
||||
{"STRING4", EmitSingleChar, SCC_STRING4, 5, -1, C_CASE | C_GENDER}, // included string that consumes the string id and FOUR arguments
|
||||
{"STRING5", EmitSingleChar, SCC_STRING5, 6, -1, C_CASE | C_GENDER}, // included string that consumes the string id and FIVE arguments
|
||||
{"STRING6", EmitSingleChar, SCC_STRING6, 7, -1, C_CASE | C_GENDER}, // included string that consumes the string id and SIX arguments
|
||||
{"STRING7", EmitSingleChar, SCC_STRING7, 8, -1, C_CASE | C_GENDER}, // included string that consumes the string id and SEVEN arguments
|
||||
|
||||
{"STATION_FEATURES", EmitSingleChar, SCC_STATION_FEATURES, 1, -1, C_NONE}, // station features string, icons of the features
|
||||
{"INDUSTRY", EmitSingleChar, SCC_INDUSTRY_NAME, 1, -1, C_CASE | C_GENDER}, // industry, takes an industry #, can have cases
|
||||
{"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, 1, C_NONE | C_GENDER},
|
||||
{"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, 1, C_NONE}, // short cargo description, only ### tons, or ### litres
|
||||
{"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, 1, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name
|
||||
{"CARGO_LIST", EmitSingleChar, SCC_CARGO_LIST, 1, -1, C_CASE},
|
||||
{"POWER", EmitSingleChar, SCC_POWER, 1, 0, C_NONE},
|
||||
{"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, 0, C_NONE},
|
||||
{"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, 0, C_NONE},
|
||||
{"WEIGHT_LONG", EmitSingleChar, SCC_WEIGHT_LONG, 1, 0, C_NONE},
|
||||
{"WEIGHT_SHORT", EmitSingleChar, SCC_WEIGHT_SHORT, 1, 0, C_NONE},
|
||||
{"FORCE", EmitSingleChar, SCC_FORCE, 1, 0, C_NONE},
|
||||
{"VELOCITY", EmitSingleChar, SCC_VELOCITY, 1, 0, C_NONE},
|
||||
{"HEIGHT", EmitSingleChar, SCC_HEIGHT, 1, 0, C_NONE},
|
||||
|
||||
{"P", EmitPlural, 0, 0, -1, C_DONTCOUNT}, // plural specifier
|
||||
{"G", EmitGender, 0, 0, -1, C_DONTCOUNT}, // gender specifier
|
||||
|
||||
{"DATE_TINY", EmitSingleChar, SCC_DATE_TINY, 1, -1, C_NONE},
|
||||
{"DATE_SHORT", EmitSingleChar, SCC_DATE_SHORT, 1, -1, C_CASE},
|
||||
{"DATE_LONG", EmitSingleChar, SCC_DATE_LONG, 1, -1, C_CASE},
|
||||
{"DATE_ISO", EmitSingleChar, SCC_DATE_ISO, 1, -1, C_NONE},
|
||||
|
||||
{"STRING", EmitSingleChar, SCC_STRING, 1, -1, C_CASE | C_GENDER},
|
||||
{"RAW_STRING", EmitSingleChar, SCC_RAW_STRING_POINTER, 1, -1, C_NONE | C_GENDER},
|
||||
|
||||
/* Numbers */
|
||||
{"COMMA", EmitSingleChar, SCC_COMMA, 1, 0, C_NONE}, // Number with comma
|
||||
{"DECIMAL", EmitSingleChar, SCC_DECIMAL, 2, 0, C_NONE}, // Number with comma and fractional part. Second parameter is number of fractional digits, first parameter is number times 10**(second parameter).
|
||||
{"NUM", EmitSingleChar, SCC_NUM, 1, 0, C_NONE}, // Signed number
|
||||
{"ZEROFILL_NUM", EmitSingleChar, SCC_ZEROFILL_NUM, 2, 0, C_NONE}, // Unsigned number with zero fill, e.g. "02". First parameter is number, second minimum length
|
||||
{"BYTES", EmitSingleChar, SCC_BYTES, 1, 0, C_NONE}, // Unsigned number with "bytes", i.e. "1.02 MiB or 123 KiB"
|
||||
{"HEX", EmitSingleChar, SCC_HEX, 1, 0, C_NONE}, // Hexadecimally printed number
|
||||
|
||||
{"CURRENCY_LONG", EmitSingleChar, SCC_CURRENCY_LONG, 1, 0, C_NONE},
|
||||
{"CURRENCY_SHORT", EmitSingleChar, SCC_CURRENCY_SHORT, 1, 0, C_NONE}, // compact currency
|
||||
|
||||
{"WAYPOINT", EmitSingleChar, SCC_WAYPOINT_NAME, 1, -1, C_NONE | C_GENDER}, // waypoint name
|
||||
{"STATION", EmitSingleChar, SCC_STATION_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"DEPOT", EmitSingleChar, SCC_DEPOT_NAME, 2, -1, C_NONE | C_GENDER},
|
||||
{"TOWN", EmitSingleChar, SCC_TOWN_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"GROUP", EmitSingleChar, SCC_GROUP_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"SIGN", EmitSingleChar, SCC_SIGN_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"ENGINE", EmitSingleChar, SCC_ENGINE_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"VEHICLE", EmitSingleChar, SCC_VEHICLE_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"COMPANY", EmitSingleChar, SCC_COMPANY_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
{"COMPANY_NUM", EmitSingleChar, SCC_COMPANY_NUM, 1, -1, C_NONE},
|
||||
{"PRESIDENT_NAME", EmitSingleChar, SCC_PRESIDENT_NAME, 1, -1, C_NONE | C_GENDER},
|
||||
|
||||
{"", EmitSingleChar, '\n', 0, -1, C_DONTCOUNT},
|
||||
{"{", EmitSingleChar, '{', 0, -1, C_DONTCOUNT},
|
||||
{"UP_ARROW", EmitSingleChar, SCC_UP_ARROW, 0, -1, C_DONTCOUNT},
|
||||
{"SMALL_UP_ARROW", EmitSingleChar, SCC_SMALL_UP_ARROW, 0, -1, C_DONTCOUNT},
|
||||
{"SMALL_DOWN_ARROW", EmitSingleChar, SCC_SMALL_DOWN_ARROW, 0, -1, C_DONTCOUNT},
|
||||
{"TRAIN", EmitSingleChar, SCC_TRAIN, 0, -1, C_DONTCOUNT},
|
||||
{"LORRY", EmitSingleChar, SCC_LORRY, 0, -1, C_DONTCOUNT},
|
||||
{"BUS", EmitSingleChar, SCC_BUS, 0, -1, C_DONTCOUNT},
|
||||
{"PLANE", EmitSingleChar, SCC_PLANE, 0, -1, C_DONTCOUNT},
|
||||
{"SHIP", EmitSingleChar, SCC_SHIP, 0, -1, C_DONTCOUNT},
|
||||
{"NBSP", EmitSingleChar, 0xA0, 0, -1, C_DONTCOUNT},
|
||||
{"COPYRIGHT", EmitSingleChar, 0xA9, 0, -1, C_DONTCOUNT},
|
||||
{"DOWN_ARROW", EmitSingleChar, SCC_DOWN_ARROW, 0, -1, C_DONTCOUNT},
|
||||
{"CHECKMARK", EmitSingleChar, SCC_CHECKMARK, 0, -1, C_DONTCOUNT},
|
||||
{"CROSS", EmitSingleChar, SCC_CROSS, 0, -1, C_DONTCOUNT},
|
||||
{"RIGHT_ARROW", EmitSingleChar, SCC_RIGHT_ARROW, 0, -1, C_DONTCOUNT},
|
||||
{"SMALL_LEFT_ARROW", EmitSingleChar, SCC_LESS_THAN, 0, -1, C_DONTCOUNT},
|
||||
{"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN, 0, -1, C_DONTCOUNT},
|
||||
|
||||
/* The following are directional formatting codes used to get the RTL strings right:
|
||||
* http://www.unicode.org/unicode/reports/tr9/#Directional_Formatting_Codes */
|
||||
{"LRM", EmitSingleChar, CHAR_TD_LRM, 0, -1, C_DONTCOUNT},
|
||||
{"RLM", EmitSingleChar, CHAR_TD_RLM, 0, -1, C_DONTCOUNT},
|
||||
{"LRE", EmitSingleChar, CHAR_TD_LRE, 0, -1, C_DONTCOUNT},
|
||||
{"RLE", EmitSingleChar, CHAR_TD_RLE, 0, -1, C_DONTCOUNT},
|
||||
{"LRO", EmitSingleChar, CHAR_TD_LRO, 0, -1, C_DONTCOUNT},
|
||||
{"RLO", EmitSingleChar, CHAR_TD_RLO, 0, -1, C_DONTCOUNT},
|
||||
{"PDF", EmitSingleChar, CHAR_TD_PDF, 0, -1, C_DONTCOUNT},
|
||||
};
|
||||
|
||||
/** Description of a plural form */
|
||||
struct PluralForm {
|
||||
int plural_count; ///< The number of plural forms
|
||||
const char *description; ///< Human readable description of the form
|
||||
const char *names; ///< Plural names
|
||||
};
|
||||
|
||||
/** The maximum number of plurals. */
|
||||
static const int MAX_PLURALS = 5;
|
||||
|
||||
/** All plural forms used */
|
||||
static const PluralForm _plural_forms[] = {
|
||||
{ 2, "Two forms: special case for 1.", "\"1\" \"other\"" },
|
||||
{ 1, "Only one form.", "\"other\"" },
|
||||
{ 2, "Two forms: special case for 0 to 1.", "\"0..1\" \"other\"" },
|
||||
{ 3, "Three forms: special cases for 0, and numbers ending in 1 except when ending in 11.", "\"1,21,31,...\" \"other\" \"0\"" },
|
||||
{ 5, "Five forms: special cases for 1, 2, 3 to 6, and 7 to 10.", "\"1\" \"2\" \"3..6\" \"7..10\" \"other\"" },
|
||||
{ 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 9 except when ending in 12 to 19.", "\"1,21,31,...\" \"2..9,22..29,32..39,...\" \"other\"" },
|
||||
{ 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 4 except when ending in 12 to 14.", "\"1,21,31,...\" \"2..4,22..24,32..34,...\" \"other\"" },
|
||||
{ 3, "Three forms: special cases for 1, and numbers ending in 2 to 4 except when ending in 12 to 14.", "\"1\" \"2..4,22..24,32..34,...\" \"other\"" },
|
||||
{ 4, "Four forms: special cases for numbers ending in 01, 02, and 03 to 04.", "\"1,101,201,...\" \"2,102,202,...\" \"3..4,103..104,203..204,...\" \"other\"" },
|
||||
{ 2, "Two forms: special case for numbers ending in 1 except when ending in 11.", "\"1,21,31,...\" \"other\"" },
|
||||
{ 3, "Three forms: special cases for 1, and 2 to 4.", "\"1\" \"2..4\" \"other\"" },
|
||||
{ 2, "Two forms: cases for numbers ending with a consonant, and with a vowel.", "\"yeong,il,sam,yuk,chil,pal\" \"i,sa,o,gu\"" },
|
||||
{ 4, "Four forms: special cases for 1, 0 and numbers ending in 02 to 10, and numbers ending in 11 to 19.", "\"1\" \"0,2..10,102..110,202..210,...\" \"11..19,111..119,211..219,...\" \"other\"" },
|
||||
{ 4, "Four forms: special cases for 1 and 11, 2 and 12, 3..10 and 13..19.", "\"1,11\" \"2,12\" \"3..10,13..19\" \"other\"" },
|
||||
};
|
||||
|
||||
/* Flags:
|
||||
* 0 = nothing
|
||||
* t = translator editable
|
||||
* l = ltr/rtl choice
|
||||
* p = plural choice
|
||||
* d = separator char (replace spaces with {NBSP})
|
||||
* x1 = hexadecimal number of 1 byte
|
||||
* x2 = hexadecimal number of 2 bytes
|
||||
* g = gender
|
||||
* c = cases
|
||||
* a = array, i.e. list of strings
|
||||
*/
|
||||
/** All pragmas used */
|
||||
static const char * const _pragmas[][4] = {
|
||||
/* name flags default description */
|
||||
{ "name", "0", "", "English name for the language" },
|
||||
{ "ownname", "t", "", "Localised name for the language" },
|
||||
{ "isocode", "0", "", "ISO code for the language" },
|
||||
{ "plural", "tp", "0", "Plural form to use" },
|
||||
{ "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" },
|
||||
{ "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" },
|
||||
{ "digitsepcur", "td", ",", "Digit grouping separator for currency numbers" },
|
||||
{ "decimalsep", "td", ".", "Decimal separator" },
|
||||
{ "winlangid", "x2", "0x0000", "Language ID for Windows" },
|
||||
{ "grflangid", "x1", "0x00", "Language ID for NewGRFs" },
|
||||
{ "gender", "tag", "", "List of genders" },
|
||||
{ "case", "tac", "", "List of cases" },
|
||||
};
|
||||
31
src/table/string_colours.h
Normal file
31
src/table/string_colours.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file string_colours.h The colour translation of GRF's strings. */
|
||||
|
||||
/** Colour mapping for #TextColour. */
|
||||
static const byte _string_colourmap[17] = {
|
||||
150, // TC_BLUE
|
||||
12, // TC_SILVER
|
||||
189, // TC_GOLD
|
||||
184, // TC_RED
|
||||
174, // TC_PURPLE
|
||||
30, // TC_LIGHT_BROWN
|
||||
195, // TC_ORANGE
|
||||
209, // TC_GREEN
|
||||
68, // TC_YELLOW
|
||||
95, // TC_DARK_GREEN
|
||||
79, // TC_CREAM
|
||||
116, // TC_BROWN
|
||||
15, // TC_WHITE
|
||||
152, // TC_LIGHT_BLUE
|
||||
6, // TC_GREY
|
||||
133, // TC_DARK_BLUE
|
||||
1, // TC_BLACK
|
||||
};
|
||||
2281
src/table/town_land.h
Normal file
2281
src/table/town_land.h
Normal file
File diff suppressed because it is too large
Load Diff
3317
src/table/townname.h
Normal file
3317
src/table/townname.h
Normal file
File diff suppressed because it is too large
Load Diff
54
src/table/track_land.h
Normal file
54
src/table/track_land.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file track_land.h Sprites to use and how to display them for train depot tiles. */
|
||||
|
||||
#define TILE_SEQ_LINE(img, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 23, {img, PAL_NONE} },
|
||||
#define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
|
||||
|
||||
|
||||
static const DrawTileSeqStruct _depot_gfx_NE[] = {
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_NE | (1 << PALETTE_MODIFIER_COLOUR), 2, 13, 13, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _depot_gfx_SE[] = {
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_1 | (1 << PALETTE_MODIFIER_COLOUR), 2, 2, 1, 13)
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_2 | (1 << PALETTE_MODIFIER_COLOUR), 13, 2, 1, 13)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _depot_gfx_SW[] = {
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_1 | (1 << PALETTE_MODIFIER_COLOUR), 2, 2, 13, 1)
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_2 | (1 << PALETTE_MODIFIER_COLOUR), 2, 13, 13, 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _depot_gfx_NW[] = {
|
||||
TILE_SEQ_LINE(SPR_RAIL_DEPOT_NW | (1 << PALETTE_MODIFIER_COLOUR), 13, 2, 1, 13)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _depot_gfx_table[] = {
|
||||
{ {SPR_FLAT_GRASS_TILE, PAL_NONE}, _depot_gfx_NE },
|
||||
{ {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_SE },
|
||||
{ {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_SW },
|
||||
{ {SPR_FLAT_GRASS_TILE, PAL_NONE}, _depot_gfx_NW }
|
||||
};
|
||||
|
||||
static const DrawTileSprites _depot_invisible_gfx_table[] = {
|
||||
{ {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_NE },
|
||||
{ {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_SE },
|
||||
{ {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_SW },
|
||||
{ {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_NW }
|
||||
};
|
||||
|
||||
#undef TILE_SEQ_LINE
|
||||
#undef TILE_SEQ_END
|
||||
|
||||
70
src/table/train_cmd.h
Normal file
70
src/table/train_cmd.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file train_cmd.h Sprites to use for trains. */
|
||||
|
||||
static const SpriteID _engine_sprite_base[] = {
|
||||
0x0B59, 0x0B61, 0x0B69, 0x0BE1, 0x0B71, 0x0B75, 0x0B7D, 0x0B7D,
|
||||
0x0B85, 0x0B85, 0x0B8D, 0x0B8D, 0x0BC9, 0x0BD1, 0x0BD9, 0x0BE9,
|
||||
0x0BED, 0x0BED, 0x0BF5, 0x0BF9, 0x0B79, 0x0B9D, 0x0B9D, 0x0B95,
|
||||
0x0B95, 0x0BA5, 0x0BA9, 0x0BA9, 0x0BC1, 0x0BC5, 0x0BB1, 0x0BB9,
|
||||
0x0BB9, 0x0AAD, 0x0AB1, 0x0AB5, 0x0AB9, 0x0ABD, 0x0AC1, 0x0AC9,
|
||||
0x0ACD, 0x0AD5, 0x0AD1, 0x0AD9, 0x0AC5, 0x0AD1, 0x0AD5, 0x0AF9,
|
||||
0x0AFD, 0x0B05, 0x0AB9, 0x0AC1, 0x0AC9, 0x0AD1, 0x0AD9, 0x0AE1,
|
||||
0x0AE5, 0x0AE9, 0x0AF1, 0x0AF9, 0x0B0D, 0x0B11, 0x0B15, 0x0B19,
|
||||
0x0B1D, 0x0B21, 0x0B29, 0x0B2D, 0x0B35, 0x0B31, 0x0B39, 0x0B25,
|
||||
0x0B31, 0x0B35,
|
||||
};
|
||||
|
||||
/* For how many directions do we have sprites? (8 or 4; if 4, the other 4
|
||||
* directions are symmetric. */
|
||||
static const byte _engine_sprite_and[] = {
|
||||
7, 7, 7, 7, 3, 3, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 3,
|
||||
7, 7, 3, 7, 3, 7, 7, 7,
|
||||
7, 3, 7, 7, 3, 3, 7, 7,
|
||||
7, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3,
|
||||
};
|
||||
|
||||
/* Non-zero for multihead trains. */
|
||||
static const byte _engine_sprite_add[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 4,
|
||||
0, 4, 0, 4, 0, 0, 0, 0,
|
||||
0, 4, 0, 0, 0, 0, 4, 0,
|
||||
4, 0, 0, 4, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0,
|
||||
};
|
||||
|
||||
|
||||
static const byte _wagon_full_adder[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 44, 0, 0, 0, 0, 24,
|
||||
24, 24, 24, 0, 0, 32, 32, 0,
|
||||
4, 4, 4, 4, 4, 4, 4, 0,
|
||||
0, 4, 4, 4, 0, 44, 0, 0,
|
||||
0, 0, 24, 24, 24, 24, 0, 0,
|
||||
32, 32
|
||||
};
|
||||
|
||||
assert_compile(lengthof(_engine_sprite_base) == lengthof(_engine_sprite_and));
|
||||
assert_compile(lengthof(_engine_sprite_base) == lengthof(_engine_sprite_add));
|
||||
assert_compile(lengthof(_engine_sprite_base) == lengthof(_wagon_full_adder));
|
||||
230
src/table/tree_land.h
Normal file
230
src/table/tree_land.h
Normal file
@@ -0,0 +1,230 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file tree_land.h Sprites to use and how to display them for tree tiles. */
|
||||
|
||||
#ifndef TREE_LAND_H
|
||||
#define TREE_LAND_H
|
||||
|
||||
static const byte _tree_base_by_landscape[4] = {0, 12, 20, 32};
|
||||
static const byte _tree_count_by_landscape[4] = {12, 8, 12, 9};
|
||||
|
||||
struct TreePos {
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
};
|
||||
|
||||
static const TreePos _tree_layout_xy[][4] = {
|
||||
{ { 9, 3 }, { 1, 8 }, { 0, 0 }, { 8, 9 } },
|
||||
{ { 4, 4 }, { 9, 1 }, { 6, 9 }, { 0, 9 } },
|
||||
{ { 9, 1 }, { 0, 9 }, { 6, 6 }, { 3, 0 } },
|
||||
{ { 3, 9 }, { 8, 2 }, { 9, 9 }, { 1, 5 } }
|
||||
};
|
||||
|
||||
static const PalSpriteID _tree_layout_sprite[164 + (79 - 48 + 1)][4] = {
|
||||
{ { 0x652, PAL_NONE }, { 0x659, PAL_NONE }, { 0x660, PAL_NONE }, { 0x667, PAL_NONE } }, // 0
|
||||
{ { 0x652, PAL_NONE }, { 0x667, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x675, PAL_NONE } }, // 1
|
||||
{ { 0x652, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x659, PAL_NONE }, { 0x675, PAL_NONE } }, // 2
|
||||
{ { 0x652, PAL_NONE }, { 0x652, PAL_NONE }, { 0x660, PAL_NONE }, { 0x66e, PAL_NONE } }, // 3
|
||||
{ { 0x660, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE }, { 0x652, PAL_NONE } }, // 4
|
||||
{ { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x660, PAL_NONE }, { 0x660, PAL_NONE } }, // 5
|
||||
{ { 0x660, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE }, { 0x66e, PAL_NONE } }, // 6
|
||||
{ { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE } }, // 7
|
||||
{ { 0x675, PAL_NONE }, { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x675, PAL_NONE } }, // 8
|
||||
{ { 0x675, PAL_NONE }, { 0x659, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE } }, // 9
|
||||
{ { 0x675, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE } }, // 10
|
||||
{ { 0x675, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE }, { 0x667, PAL_NONE } }, // 11
|
||||
{ { 0x628, PAL_NONE }, { 0x652, PAL_NONE }, { 0x660, PAL_NONE }, { 0x62f, PAL_NONE } }, // 12
|
||||
{ { 0x628, PAL_NONE }, { 0x636, PAL_NONE }, { 0x675, PAL_NONE }, { 0x644, PAL_NONE } }, // 13
|
||||
{ { 0x628, PAL_NONE }, { 0x652, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x66e, PAL_NONE } }, // 14
|
||||
{ { 0x628, PAL_NONE }, { 0x667, PAL_NONE }, { 0x644, PAL_NONE }, { 0x652, PAL_NONE } }, // 15
|
||||
{ { 0x644, PAL_NONE }, { 0x659, PAL_NONE }, { 0x660, PAL_NONE }, { 0x628, PAL_NONE } }, // 16
|
||||
{ { 0x644, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x659, PAL_NONE }, { 0x636, PAL_NONE } }, // 17
|
||||
{ { 0x644, PAL_NONE }, { 0x675, PAL_NONE }, { 0x652, PAL_NONE }, { 0x63d, PAL_NONE } }, // 18
|
||||
{ { 0x644, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x652, PAL_NONE } }, // 19
|
||||
{ { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x628, PAL_NONE }, { 0x636, PAL_NONE } }, // 20
|
||||
{ { 0x636, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 21
|
||||
{ { 0x636, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 22
|
||||
{ { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 23
|
||||
{ { 0x64b, PAL_NONE }, { 0x628, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE } }, // 24
|
||||
{ { 0x64b, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x644, PAL_NONE }, { 0x636, PAL_NONE } }, // 25
|
||||
{ { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x628, PAL_NONE } }, // 26
|
||||
{ { 0x64b, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x63d, PAL_NONE } }, // 27
|
||||
{ { 0x62f, PAL_NONE }, { 0x644, PAL_NONE }, { 0x644, PAL_NONE }, { 0x636, PAL_NONE } }, // 28
|
||||
{ { 0x62f, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE }, { 0x628, PAL_NONE } }, // 29
|
||||
{ { 0x62f, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 30
|
||||
{ { 0x62f, PAL_NONE }, { 0x636, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE } }, // 31
|
||||
{ { 0x67c, PAL_NONE }, { 0x675, PAL_NONE }, { 0x683, PAL_NONE }, { 0x67c, PAL_NONE } }, // 32
|
||||
{ { 0x67c, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x659, PAL_NONE } }, // 33
|
||||
{ { 0x67c, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE } }, // 34
|
||||
{ { 0x67c, PAL_NONE }, { 0x691, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x68a, PAL_NONE } }, // 35
|
||||
{ { 0x68a, PAL_NONE }, { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x68a, PAL_NONE } }, // 36
|
||||
{ { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x683, PAL_NONE }, { 0x68a, PAL_NONE } }, // 37
|
||||
{ { 0x68a, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x691, PAL_NONE }, { 0x68a, PAL_NONE } }, // 38
|
||||
{ { 0x68a, PAL_NONE }, { 0x683, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x69f, PAL_NONE } }, // 39
|
||||
{ { 0x698, PAL_NONE }, { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x652, PAL_NONE } }, // 40
|
||||
{ { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x660, PAL_NONE }, { 0x667, PAL_NONE } }, // 41
|
||||
{ { 0x698, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x698, PAL_NONE } }, // 42
|
||||
{ { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x691, PAL_NONE } }, // 43
|
||||
{ { 0x6a6, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x660, PAL_NONE } }, // 44
|
||||
{ { 0x6a6, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x652, PAL_NONE } }, // 45
|
||||
{ { 0x6a6, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x691, PAL_NONE } }, // 46
|
||||
{ { 0x6a6, PAL_NONE }, { 0x691, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x6a6, PAL_NONE } }, // 47
|
||||
{ { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 48
|
||||
{ { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6d0, PAL_NONE } }, // 49
|
||||
{ { 0x6ad, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 50
|
||||
{ { 0x6ad, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 51
|
||||
{ { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 52
|
||||
{ { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 53
|
||||
{ { 0x6d0, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 54
|
||||
{ { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 55
|
||||
{ { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 56
|
||||
{ { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 57
|
||||
{ { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 58
|
||||
{ { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 59
|
||||
{ { 0x6c2, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 60
|
||||
{ { 0x6c2, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 61
|
||||
{ { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 62
|
||||
{ { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 63
|
||||
{ { 0x6c9, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 64
|
||||
{ { 0x6c9, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 65
|
||||
{ { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 66
|
||||
{ { 0x6c9, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 67
|
||||
{ { 0x6b4, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 68
|
||||
{ { 0x6b4, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 69
|
||||
{ { 0x6b4, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 70
|
||||
{ { 0x6b4, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 71
|
||||
{ { 0x6bb, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 72
|
||||
{ { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 73
|
||||
{ { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 74
|
||||
{ { 0x6bb, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 75
|
||||
{ { 0x6de, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 76
|
||||
{ { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6d0, PAL_NONE } }, // 77
|
||||
{ { 0x6de, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 78
|
||||
{ { 0x6de, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 79
|
||||
{ { 0x72b, PAL_NONE }, { 0x732, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x739, PAL_NONE } }, // 80
|
||||
{ { 0x72b, PAL_NONE }, { 0x747, PAL_NONE }, { 0x755, PAL_NONE }, { 0x72b, PAL_NONE } }, // 81
|
||||
{ { 0x72b, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x76a, PAL_NONE }, { 0x786, PAL_NONE } }, // 82
|
||||
{ { 0x72b, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x72b, PAL_NONE } }, // 83
|
||||
{ { 0x732, PAL_NONE }, { 0x732, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x739, PAL_NONE } }, // 84
|
||||
{ { 0x732, PAL_NONE }, { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x732, PAL_NONE } }, // 85
|
||||
{ { 0x732, PAL_NONE }, { 0x732, PAL_NONE }, { 0x755, PAL_NONE }, { 0x794, PAL_NONE } }, // 86
|
||||
{ { 0x732, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x732, PAL_NONE }, { 0x78d, PAL_NONE } }, // 87
|
||||
{ { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x747, PAL_NONE }, { 0x740, PAL_NONE } }, // 88
|
||||
{ { 0x747, PAL_NONE }, { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x76a, PAL_NONE } }, // 89
|
||||
{ { 0x747, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x755, PAL_NONE }, { 0x747, PAL_NONE } }, // 90
|
||||
{ { 0x747, PAL_NONE }, { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x747, PAL_NONE } }, // 91
|
||||
{ { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x794, PAL_NONE } }, // 92
|
||||
{ { 0x74e, PAL_NONE }, { 0x755, PAL_NONE }, { 0x732, PAL_NONE }, { 0x74e, PAL_NONE } }, // 93
|
||||
{ { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x786, PAL_NONE }, { 0x747, PAL_NONE } }, // 94
|
||||
{ { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x732, PAL_NONE }, { 0x794, PAL_NONE } }, // 95
|
||||
{ { 0x76a, PAL_NONE }, { 0x76a, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE } }, // 96
|
||||
{ { 0x76a, PAL_NONE }, { 0x794, PAL_NONE }, { 0x732, PAL_NONE }, { 0x76a, PAL_NONE } }, // 97
|
||||
{ { 0x76a, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x76a, PAL_NONE } }, // 98
|
||||
{ { 0x76a, PAL_NONE }, { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x78d, PAL_NONE } }, // 99
|
||||
{ { 0x78d, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x794, PAL_NONE } }, // 100
|
||||
{ { 0x78d, PAL_NONE }, { 0x732, PAL_NONE }, { 0x739, PAL_NONE }, { 0x747, PAL_NONE } }, // 101
|
||||
{ { 0x78d, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x76a, PAL_NONE } }, // 102
|
||||
{ { 0x78d, PAL_NONE }, { 0x786, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x794, PAL_NONE } }, // 103
|
||||
{ { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x740, PAL_NONE }, { 0x732, PAL_NONE } }, // 104
|
||||
{ { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x732, PAL_NONE } }, // 105
|
||||
{ { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x786, PAL_NONE } }, // 106
|
||||
{ { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x794, PAL_NONE } }, // 107
|
||||
{ { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE } }, // 108
|
||||
{ { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE } }, // 109
|
||||
{ { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE } }, // 110
|
||||
{ { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE } }, // 111
|
||||
{ { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x724, PAL_NONE } }, // 112
|
||||
{ { 0x75c, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x763, PAL_NONE } }, // 113
|
||||
{ { 0x75c, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x71d, PAL_NONE } }, // 114
|
||||
{ { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x75c, PAL_NONE } }, // 115
|
||||
{ { 0x771, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE } }, // 116
|
||||
{ { 0x771, PAL_NONE }, { 0x747, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE } }, // 117
|
||||
{ { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x724, PAL_NONE } }, // 118
|
||||
{ { 0x771, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x763, PAL_NONE } }, // 119
|
||||
{ { 0x71d, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x771, PAL_NONE }, { 0x724, PAL_NONE } }, // 120
|
||||
{ { 0x71d, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x763, PAL_NONE }, { 0x71d, PAL_NONE } }, // 121
|
||||
{ { 0x71d, PAL_NONE }, { 0x724, PAL_NONE }, { 0x794, PAL_NONE }, { 0x71d, PAL_NONE } }, // 122
|
||||
{ { 0x71d, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x78d, PAL_NONE } }, // 123
|
||||
{ { 0x794, PAL_NONE }, { 0x724, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x794, PAL_NONE } }, // 124
|
||||
{ { 0x794, PAL_NONE }, { 0x794, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE } }, // 125
|
||||
{ { 0x794, PAL_NONE }, { 0x724, PAL_NONE }, { 0x794, PAL_NONE }, { 0x71d, PAL_NONE } }, // 126
|
||||
{ { 0x794, PAL_NONE }, { 0x794, PAL_NONE }, { 0x771, PAL_NONE }, { 0x78d, PAL_NONE } }, // 127
|
||||
{ { 0x79b, PALETTE_TO_RED }, { 0x79b, PALETTE_TO_PALE_GREEN }, { 0x79b, PALETTE_TO_MAUVE }, { 0x79b, PALETTE_TO_PURPLE } }, // 128
|
||||
{ { 0x79b, PAL_NONE }, { 0x79b, PALETTE_TO_GREY }, { 0x79b, PALETTE_TO_GREEN }, { 0x79b, PALETTE_TO_WHITE } }, // 129
|
||||
{ { 0x79b, PALETTE_TO_GREEN }, { 0x79b, PALETTE_TO_ORANGE }, { 0x79b, PALETTE_TO_PINK }, { 0x79b, PAL_NONE } }, // 130
|
||||
{ { 0x79b, PALETTE_TO_YELLOW }, { 0x79b, PALETTE_TO_RED }, { 0x79b, PALETTE_TO_CREAM }, { 0x79b, PALETTE_TO_RED } }, // 131
|
||||
{ { 0x7a2, PAL_NONE }, { 0x7a2, PALETTE_TO_RED }, { 0x7a2, PALETTE_TO_PINK }, { 0x7a2, PALETTE_TO_PURPLE } }, // 132
|
||||
{ { 0x7a2, PALETTE_TO_MAUVE }, { 0x7a2, PALETTE_TO_GREEN }, { 0x7a2, PALETTE_TO_PINK }, { 0x7a2, PALETTE_TO_GREY } }, // 133
|
||||
{ { 0x7a2, PALETTE_TO_RED }, { 0x7a2, PALETTE_TO_PALE_GREEN }, { 0x7a2, PALETTE_TO_YELLOW }, { 0x7a2, PALETTE_TO_WHITE } }, // 134
|
||||
{ { 0x7a2, PALETTE_TO_ORANGE }, { 0x7a2, PALETTE_TO_MAUVE }, { 0x7a2, PALETTE_TO_CREAM }, { 0x7a2, PALETTE_TO_BROWN } }, // 135
|
||||
{ { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PAL_NONE }, { 0x7a9, PALETTE_TO_ORANGE }, { 0x7a9, PALETTE_TO_GREY } }, // 136
|
||||
{ { 0x7a9, PALETTE_TO_ORANGE }, { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PALETTE_TO_PALE_GREEN }, { 0x7a9, PALETTE_TO_MAUVE } }, // 137
|
||||
{ { 0x7a9, PALETTE_TO_PINK }, { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PALETTE_TO_BROWN } }, // 138
|
||||
{ { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PAL_NONE }, { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PALETTE_TO_CREAM } }, // 139
|
||||
{ { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 140
|
||||
{ { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 141
|
||||
{ { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 142
|
||||
{ { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 143
|
||||
{ { 0x7b7, PALETTE_TO_PINK }, { 0x7b7, PALETTE_TO_RED }, { 0x7b7, PALETTE_TO_ORANGE }, { 0x7b7, PALETTE_TO_MAUVE } }, // 144
|
||||
{ { 0x7b7, PALETTE_TO_RED }, { 0x7b7, PAL_NONE }, { 0x7b7, PALETTE_TO_GREY }, { 0x7b7, PALETTE_TO_CREAM } }, // 145
|
||||
{ { 0x7b7, PALETTE_TO_GREEN }, { 0x7b7, PALETTE_TO_BROWN }, { 0x7b7, PALETTE_TO_PINK }, { 0x7b7, PALETTE_TO_RED } }, // 146
|
||||
{ { 0x7b7, PAL_NONE }, { 0x7b7, PALETTE_TO_PALE_GREEN }, { 0x7b7, PALETTE_TO_ORANGE }, { 0x7b7, PALETTE_TO_RED } }, // 147
|
||||
{ { 0x7be, PALETTE_TO_RED }, { 0x7be, PALETTE_TO_PINK }, { 0x7be, PALETTE_TO_GREEN }, { 0x7be, PAL_NONE } }, // 148
|
||||
{ { 0x7be, PALETTE_TO_GREEN }, { 0x7be, PALETTE_TO_BROWN }, { 0x7be, PALETTE_TO_PURPLE }, { 0x7be, PALETTE_TO_GREY } }, // 149
|
||||
{ { 0x7be, PALETTE_TO_MAUVE }, { 0x7be, PALETTE_TO_CREAM }, { 0x7be, PALETTE_TO_ORANGE }, { 0x7be, PALETTE_TO_RED } }, // 150
|
||||
{ { 0x7be, PAL_NONE }, { 0x7be, PALETTE_TO_RED }, { 0x7be, PALETTE_TO_PALE_GREEN }, { 0x7be, PALETTE_TO_PINK } }, // 151
|
||||
{ { 0x7c5, PALETTE_TO_YELLOW }, { 0x7c5, PALETTE_TO_RED }, { 0x7c5, PALETTE_TO_WHITE }, { 0x7c5, PALETTE_TO_CREAM } }, // 152
|
||||
{ { 0x7c5, PALETTE_TO_RED }, { 0x7c5, PALETTE_TO_PALE_GREEN }, { 0x7c5, PALETTE_TO_BROWN }, { 0x7c5, PALETTE_TO_YELLOW } }, // 153
|
||||
{ { 0x7c5, PAL_NONE }, { 0x7c5, PALETTE_TO_PURPLE }, { 0x7c5, PALETTE_TO_GREEN }, { 0x7c5, PALETTE_TO_YELLOW } }, // 154
|
||||
{ { 0x7c5, PALETTE_TO_PINK }, { 0x7c5, PALETTE_TO_CREAM }, { 0x7c5, PAL_NONE }, { 0x7c5, PALETTE_TO_GREY } }, // 155
|
||||
{ { 0x7cc, PALETTE_TO_YELLOW }, { 0x7cc, PALETTE_TO_GREY }, { 0x7cc, PALETTE_TO_PURPLE }, { 0x7cc, PALETTE_TO_BROWN } }, // 156
|
||||
{ { 0x7cc, PALETTE_TO_GREEN }, { 0x7cc, PAL_NONE }, { 0x7cc, PALETTE_TO_CREAM }, { 0x7cc, PALETTE_TO_WHITE } }, // 157
|
||||
{ { 0x7cc, PALETTE_TO_RED }, { 0x7cc, PALETTE_TO_PALE_GREEN }, { 0x7cc, PALETTE_TO_MAUVE }, { 0x7cc, PALETTE_TO_RED } }, // 158
|
||||
{ { 0x7cc, PALETTE_TO_PINK }, { 0x7cc, PALETTE_TO_ORANGE }, { 0x7cc, PALETTE_TO_GREEN }, { 0x7cc, PALETTE_TO_YELLOW } }, // 159
|
||||
{ { 0x7d3, PALETTE_TO_RED }, { 0x7d3, PALETTE_TO_PINK }, { 0x7d3, PALETTE_TO_BROWN }, { 0x7d3, PALETTE_TO_WHITE } }, // 160
|
||||
{ { 0x7d3, PALETTE_TO_GREEN }, { 0x7d3, PALETTE_TO_ORANGE }, { 0x7d3, PALETTE_TO_GREY }, { 0x7d3, PALETTE_TO_MAUVE } }, // 161
|
||||
{ { 0x7d3, PALETTE_TO_YELLOW }, { 0x7d3, PALETTE_TO_PALE_GREEN }, { 0x7d3, PAL_NONE }, { 0x7d3, PALETTE_TO_CREAM } }, // 162
|
||||
{ { 0x7d3, PALETTE_TO_GREY }, { 0x7d3, PALETTE_TO_RED }, { 0x7d3, PALETTE_TO_WHITE }, { 0x7d3, PAL_NONE } }, // 163
|
||||
/* the extra things follow */
|
||||
{ { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 0
|
||||
{ { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x708, PAL_NONE } }, // 1
|
||||
{ { 0x6e5, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 2
|
||||
{ { 0x6e5, PAL_NONE }, { 0x708, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 3
|
||||
{ { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 4
|
||||
{ { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x701, PAL_NONE } }, // 5
|
||||
{ { 0x708, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 6
|
||||
{ { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 7
|
||||
{ { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE } }, // 8
|
||||
{ { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 9
|
||||
{ { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 10
|
||||
{ { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 11
|
||||
{ { 0x6fa, PAL_NONE }, { 0x708, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 12
|
||||
{ { 0x6fa, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 13
|
||||
{ { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 14
|
||||
{ { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x701, PAL_NONE } }, // 15
|
||||
{ { 0x701, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 16
|
||||
{ { 0x701, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x70f, PAL_NONE } }, // 17
|
||||
{ { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 18
|
||||
{ { 0x701, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 19
|
||||
{ { 0x6ec, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x716, PAL_NONE }, { 0x701, PAL_NONE } }, // 20
|
||||
{ { 0x6ec, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 21
|
||||
{ { 0x6ec, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 22
|
||||
{ { 0x6ec, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 23
|
||||
{ { 0x6f3, PAL_NONE }, { 0x708, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 24
|
||||
{ { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x70f, PAL_NONE } }, // 25
|
||||
{ { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 26
|
||||
{ { 0x6f3, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 27
|
||||
{ { 0x716, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 28
|
||||
{ { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x708, PAL_NONE } }, // 29
|
||||
{ { 0x716, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 30
|
||||
{ { 0x716, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 31
|
||||
};
|
||||
|
||||
#endif /* TREE_LAND_H */
|
||||
40
src/table/unicode.h
Normal file
40
src/table/unicode.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file unicode.h Character mapping for using Unicode characters in OTTD. */
|
||||
|
||||
struct DefaultUnicodeMapping {
|
||||
WChar code; ///< Unicode value
|
||||
byte key; ///< Character index of sprite
|
||||
};
|
||||
|
||||
static const byte CLRA = 0; ///< Identifier to clear all glyphs at this codepoint
|
||||
|
||||
/* Default unicode mapping table for sprite based glyphs.
|
||||
* This table allows us use unicode characters even though the glyphs don't
|
||||
* exist, or are in the wrong place, in the standard sprite fonts.
|
||||
* This is not used for FreeType rendering */
|
||||
|
||||
static const DefaultUnicodeMapping _default_unicode_map[] = {
|
||||
{ 0x00A0, 0x20 }, // Non-breaking space / Up arrow
|
||||
{ 0x00AA, CLRA }, // Feminine ordinal indicator / Down arrow
|
||||
{ 0x00AC, CLRA }, // Not sign / Tick mark
|
||||
{ 0x00AD, 0x20 }, // Soft hyphen / X mark
|
||||
{ 0x00AF, CLRA }, // Macron / Right arrow
|
||||
{ 0x00B4, CLRA }, // Acute accent / Train symbol
|
||||
{ 0x00B5, CLRA }, // Micro sign / Truck symbol
|
||||
{ 0x00B6, CLRA }, // Pilcrow sign / Bus symbol
|
||||
{ 0x00B7, CLRA }, // Middle dot / Aircraft symbol
|
||||
{ 0x00B8, CLRA }, // Cedilla / Ship symbol
|
||||
{ 0x00B9, CLRA }, // Superscript 1 / Superscript -1
|
||||
{ 0x00BC, CLRA }, // One quarter / Small up arrow
|
||||
{ 0x00BD, CLRA }, // One half / Small down arrow
|
||||
{ 0x0178, 0x9F }, // Capital letter Y with diaeresis
|
||||
{ 0x010D, 0x63 }, // Small letter c with caron
|
||||
};
|
||||
164
src/table/water_land.h
Normal file
164
src/table/water_land.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file water_land.h Sprites to use and how to display them for water tiles (depots/locks). */
|
||||
|
||||
/**
|
||||
* Constructor macro for an image without a palette in a DrawTileSeqStruct array.
|
||||
* @param dx Offset in x direction
|
||||
* @param dy Offset in y direction
|
||||
* @param dz Offset in z direction
|
||||
* @param sx Size in x direction
|
||||
* @param sy Size in y direction
|
||||
* @param sz Size in z direction
|
||||
* @param img Sprite to draw
|
||||
*/
|
||||
#define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img) { dx, dy, dz, sx, sy, sz, {img, PAL_NONE} },
|
||||
|
||||
/** Constructor macro for a terminating DrawTileSeqStruct entry in an array */
|
||||
#define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
|
||||
|
||||
/**
|
||||
* Constructor macro of a DrawTileSprites structure
|
||||
* @param img Ground sprite without palette of the tile
|
||||
* @param dtss Sequence child sprites of the tile
|
||||
*/
|
||||
#define TILE_SPRITE_LINE(img, dtss) { {img, PAL_NONE}, dtss },
|
||||
|
||||
static const DrawTileSeqStruct _shipdepot_display_seq_1[] = {
|
||||
TILE_SEQ_LINE( 0, 15, 0, 16, 1, 0x14, 0xFE8 | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _shipdepot_display_seq_2[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 16, 1, 0x14, 0xFEA)
|
||||
TILE_SEQ_LINE( 0, 15, 0, 16, 1, 0x14, 0xFE6 | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _shipdepot_display_seq_3[] = {
|
||||
TILE_SEQ_LINE( 15, 0, 0, 1, 0x10, 0x14, 0xFE9 | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _shipdepot_display_seq_4[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 1, 16, 0x14, 0xFEB)
|
||||
TILE_SEQ_LINE( 15, 0, 0, 1, 16, 0x14, 0xFE7 | (1 << PALETTE_MODIFIER_COLOUR))
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _shipdepot_display_data[][DEPOT_PART_END] = {
|
||||
{ // AXIS_X
|
||||
TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_1) // DEPOT_PART_NORTH
|
||||
TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_2) // DEPOT_PART_SOUTH
|
||||
},
|
||||
{ // AXIS_Y
|
||||
TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_3) // DEPOT_PART_NORTH
|
||||
TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_4) // DEPOT_PART_SOUTH
|
||||
},
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_0[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 0 + 1)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 4 + 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_1[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 0)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 4)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_2[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 0 + 2)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 4 + 2)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_3[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 0 + 3)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 4 + 3)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_0b[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 8 + 1)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 12 + 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_1b[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x1, 0x10, 0x14, 8)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 0x1, 0x10, 0x14, 12)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_2b[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 8 + 2)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 12 + 2)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_3b[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 8 + 3)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 12 + 3)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_0t[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 16 + 1)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 20 + 1)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_1t[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x1, 0x10, 0x14, 16)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 0x1, 0x10, 0x14, 20)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_2t[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 16 + 2)
|
||||
TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 20 + 2)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSeqStruct _lock_display_seq_3t[] = {
|
||||
TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 16 + 3)
|
||||
TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 20 + 3)
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
static const DrawTileSprites _lock_display_data[][DIAGDIR_END] = {
|
||||
{ // LOCK_PART_MIDDLE
|
||||
TILE_SPRITE_LINE(1, _lock_display_seq_0) // NE
|
||||
TILE_SPRITE_LINE(0, _lock_display_seq_1) // SE
|
||||
TILE_SPRITE_LINE(2, _lock_display_seq_2) // SW
|
||||
TILE_SPRITE_LINE(3, _lock_display_seq_3) // NW
|
||||
},
|
||||
|
||||
{ // LOCK_PART_LOWER
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_0b) // NE
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_1b) // SE
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_2b) // SW
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_3b) // NW
|
||||
},
|
||||
|
||||
{ // LOCK_PART_UPPER
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_0t) // NE
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_1t) // SE
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_2t) // SW
|
||||
TILE_SPRITE_LINE(0xFDD, _lock_display_seq_3t) // NW
|
||||
},
|
||||
};
|
||||
|
||||
#undef TILE_SEQ_LINE
|
||||
#undef TILE_SEQ_END
|
||||
#undef TILE_SPRITE_LINE
|
||||
61
src/table/win32_settings.ini
Normal file
61
src/table/win32_settings.ini
Normal file
@@ -0,0 +1,61 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
/* win32_v.cpp only settings */
|
||||
#if defined(_WIN32) && !defined(DEDICATED)
|
||||
extern bool _force_full_redraw, _window_maximize;
|
||||
extern uint _display_hz;
|
||||
|
||||
static const SettingDescGlobVarList _win32_settings[] = {
|
||||
[post-amble]
|
||||
};
|
||||
#endif /* _WIN32 */
|
||||
[templates]
|
||||
SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDTG_END = SDTG_END()
|
||||
|
||||
[defaults]
|
||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||
guiflags = 0
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""display_hz""
|
||||
type = SLE_UINT
|
||||
var = _display_hz
|
||||
def = 0
|
||||
min = 0
|
||||
max = 120
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_BOOL]
|
||||
name = ""force_full_redraw""
|
||||
var = _force_full_redraw
|
||||
def = false
|
||||
cat = SC_EXPERT
|
||||
|
||||
[SDTG_BOOL]
|
||||
name = ""window_maximize""
|
||||
var = _window_maximize
|
||||
def = false
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDTG_END]
|
||||
|
||||
55
src/table/window_settings.ini
Normal file
55
src/table/window_settings.ini
Normal file
@@ -0,0 +1,55 @@
|
||||
; $Id$
|
||||
;
|
||||
; This file is part of OpenTTD.
|
||||
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
;
|
||||
|
||||
[pre-amble]
|
||||
|
||||
static const SettingDesc _window_settings[] = {
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat),
|
||||
SDT_END = SDT_END()
|
||||
|
||||
[defaults]
|
||||
base = WindowDesc
|
||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||
guiflags = 0
|
||||
interval = 0
|
||||
str = STR_NULL
|
||||
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
|
||||
strval = STR_NULL
|
||||
proc = NULL
|
||||
load = NULL
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
|
||||
|
||||
|
||||
[SDT_BOOL]
|
||||
var = pref_sticky
|
||||
def = false
|
||||
|
||||
[SDT_VAR]
|
||||
var = pref_width
|
||||
type = SLE_INT16
|
||||
def = 0
|
||||
min = 0
|
||||
max = 32000
|
||||
|
||||
[SDT_VAR]
|
||||
var = pref_height
|
||||
type = SLE_INT16
|
||||
def = 0
|
||||
min = 0
|
||||
max = 32000
|
||||
|
||||
[SDT_END]
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user