(svn r10533) [NoAI] -Sync with trunk r10460:r10532.
--- a/config.lib Thu Jul 12 15:52:17 2007 +0000
+++ b/config.lib Fri Jul 13 09:18:50 2007 +0000
@@ -702,9 +702,9 @@
log 1 "checking revision... no detection"
log 1 "WARNING: there is no means to determine the version."
log 1 "WARNING: please use a subversion or git checkout of OpenTTD."
- log 1 "WARNING: this version will be allowed by all game servers,"
- log 1 "WARNING: but you will be kicked from all incompatible"
- log 1 "WARNING: servers as you will desync."
+ log 1 "WARNING: this version is only allowed by game servers that"
+ log 1 "WARNING: have been compiled without version detection."
+ log 1 "WARNING: there is a great chance you desync."
log 1 "WARNING: USE WITH CAUTION!"
sleep 5
@@ -753,15 +753,14 @@
OBJS_SUBDIR="release"
if [ "$os" = "OSX" ]; then
# these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
- CFLAGS="$CFLAGS -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic"
+ CFLAGS="-O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic $CFLAGS"
else
if [ "$os" = "MORPHOS" ]; then
- CFLAGS="$CFLAGS -I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations"
- CFLAGS="$CFLAGS -mcpu=604 -fno-inline -mstring -mmultiple"
+ CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
LDFLAGS="$LDFLAGS -noixemul"
fi
- CFLAGS="$CFLAGS -O2 -fomit-frame-pointer"
+ CFLAGS="-O2 -fomit-frame-pointer $CFLAGS"
fi
else
OBJS_SUBDIR="debug"
--- a/src/airport_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/airport_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -183,7 +183,7 @@
DrawWindowWidgets(w);
// strings such as 'Size' and 'Coverage Area'
// 'Coverage Area'
- DrawStationCoverageAreaText(2, 206, (uint)-1, rad);
+ DrawStationCoverageAreaText(2, 206, SCT_ALL, rad);
break;
}
--- a/src/articulated_vehicles.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/articulated_vehicles.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -21,7 +21,7 @@
uint i;
for (i = 1; i < 10; i++) {
- uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL);
+ uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, NULL);
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
}
@@ -36,7 +36,7 @@
if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
for (uint i = 1; i < 10; i++) {
- uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, v);
+ uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
/* Attempt to use pre-allocated vehicles until they run out. This can happen
--- a/src/command.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/command.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -429,7 +429,7 @@
/* toplevel network safe docommand function for the current player. must not be called recursively.
* the callback is called when the command succeeded or failed. */
-bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd)
+bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd, bool my_cmd)
{
CommandCost res, res2;
CommandProc *proc;
@@ -455,7 +455,7 @@
/** Spectator has no rights except for the (dedicated) server which
* is/can be a spectator but as the server it can do anything */
if (_current_player == PLAYER_SPECTATOR && !_network_server) {
- ShowErrorMessage(_error_message, error_part1, x, y);
+ if (my_cmd) ShowErrorMessage(_error_message, error_part1, x, y);
_cmd_text = NULL;
return false;
}
@@ -572,7 +572,7 @@
if (res2.GetCost() != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
if (_additional_cash_required != 0) {
SetDParam(0, _additional_cash_required);
- ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, error_part1, x, y);
+ if (my_cmd) ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, error_part1, x, y);
if (res2.GetCost() == 0) goto callb_err;
}
}
@@ -585,7 +585,7 @@
show_error:
/* show error message if the command fails? */
- if (IsLocalPlayer() && error_part1 != 0) {
+ if (IsLocalPlayer() && error_part1 != 0 && my_cmd) {
ShowErrorMessage(_error_message, error_part1, x, y);
}
--- a/src/command.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/command.h Fri Jul 13 09:18:50 2007 +0000
@@ -201,7 +201,7 @@
/* command.cpp */
typedef void CommandCallback(bool success, TileIndex tile, uint32 p1, uint32 p2);
CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc);
-bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd);
+bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd, bool my_cmd = true);
#ifdef ENABLE_NETWORK
--- a/src/date.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/date.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -13,6 +13,9 @@
#include "network/network_server.h"
#include "functions.h"
#include "currency.h"
+#ifdef DEBUG_DUMP_COMMANDS
+#include "saveload.h"
+#endif
Year _cur_year;
Month _cur_month;
@@ -259,6 +262,12 @@
/* yes, call various monthly loops */
if (_game_mode != GM_MENU) {
+#ifdef DEBUG_DUMP_COMMANDS
+ char name[MAX_PATH];
+ snprintf(name, lengthof(name), "dmp_cmds_%d.sav", _date);
+ SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR);
+ debug_dump_commands("ddc:save:%s\n", name);
+#endif /* DUMP_COMMANDS */
if (_opt.autosave != 0 && (_cur_month % _autosave_months[_opt.autosave]) == 0) {
_do_autosave = true;
RedrawAutosave();
--- a/src/dock_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/dock_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -250,7 +250,7 @@
SetTileSelectSize(1, 1);
}
- DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
+ DrawStationCoverageAreaText(4, 50, SCT_ALL, rad);
break;
}
--- a/src/driver.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/driver.h Fri Jul 13 09:18:50 2007 +0000
@@ -16,8 +16,6 @@
class Driver {
public:
- virtual bool CanProbe() = 0;
-
virtual const char *Start(const char * const *parm) = 0;
virtual void Stop() = 0;
@@ -40,6 +38,7 @@
private:
Driver::Type type;
char *name;
+ int priority;
typedef std::map<std::string, DriverFactoryBase *> Drivers;
static Drivers &GetDrivers()
@@ -66,13 +65,14 @@
* @param name the name of the driver.
* @note an assert() will be trigger if 2 driver with the same name try to register.
*/
- void RegisterDriver(const char *name, Driver::Type type)
+ void RegisterDriver(const char *name, Driver::Type type, int priority)
{
/* Don't register nameless Drivers */
if (name == NULL) return;
this->name = strdup(name);
this->type = type;
+ this->priority = priority;
/* Prefix the name with driver type to make it unique */
char buf[32];
@@ -101,17 +101,16 @@
if (*name == '\0') {
/* Probe for this driver */
- Drivers::iterator it = GetDrivers().begin();
- for (; it != GetDrivers().end(); ++it) {
- DriverFactoryBase *d = (*it).second;
+ for (int priority = 10; priority >= 0; priority--) {
+ Drivers::iterator it = GetDrivers().begin();
+ for (; it != GetDrivers().end(); ++it) {
+ DriverFactoryBase *d = (*it).second;
- /* Check driver type */
- if (d->type != type) continue;
+ /* Check driver type */
+ if (d->type != type) continue;
+ if (d->priority != priority) continue;
- Driver *newd = d->CreateInstance();
- if (!newd->CanProbe()) {
- DEBUG(driver, 1, "Skipping probe of driver '%s'", d->name);
- } else {
+ Driver *newd = d->CreateInstance();
const char *err = newd->Start(NULL);
if (err == NULL) {
DEBUG(driver, 1, "Successfully probed %s driver '%s'", GetDriverTypeName(type), d->name);
@@ -121,9 +120,8 @@
}
DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err);
+ delete newd;
}
-
- delete newd;
}
error("Couldn't find any suitable %s driver", GetDriverTypeName(type));
} else {
@@ -185,10 +183,14 @@
for (Driver::Type type = Driver::DT_BEGIN; type != Driver::DT_END; type++) {
p += snprintf(p, last - p, "List of %s drivers:\n", GetDriverTypeName(type));
- Drivers::iterator it = GetDrivers().begin();
- for (; it != GetDrivers().end(); it++) {
- DriverFactoryBase *d = (*it).second;
- if (d->type == type) p += snprintf(p, last - p, "%18s: %s\n", d->name, d->GetDescription());
+ for (int priority = 10; priority >= 0; priority--) {
+ Drivers::iterator it = GetDrivers().begin();
+ for (; it != GetDrivers().end(); it++) {
+ DriverFactoryBase *d = (*it).second;
+ if (d->type != type) continue;
+ if (d->priority != priority) continue;
+ p += snprintf(p, last - p, "%18s: %s\n", d->name, d->GetDescription());
+ }
}
p += snprintf(p, last - p, "\n");
--- a/src/economy.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/economy.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -36,6 +36,7 @@
#include "newgrf_sound.h"
#include "newgrf_callbacks.h"
#include "newgrf_industries.h"
+#include "newgrf_industrytiles.h"
#include "unmovable.h"
#include "date.h"
#include "cargotype.h"
@@ -1210,18 +1211,18 @@
indspec = GetIndustrySpec(ind->type);
uint i;
- if (indspec->produced_cargo[0] == CT_INVALID) continue;
-
for (i = 0; i < lengthof(indspec->accepts_cargo); i++) {
- if (cargo_type == indspec->accepts_cargo[i] &&
- (indspec->input_cargo_multiplier[i][0] != 0 || indspec->input_cargo_multiplier[i][1] != 0)) {
- break;
- }
+ if (cargo_type == indspec->accepts_cargo[i]) break;
}
/* Check if matching cargo has been found */
if (i == lengthof(indspec->accepts_cargo)) continue;
+ if (HASBIT(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) {
+ uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->xy);
+ if (res == 0) continue;
+ }
+
uint dist = DistanceManhattan(ind->xy, xy);
if (dist < best_dist) {
@@ -1241,11 +1242,17 @@
if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(callback, CBM_IND_PRODUCTION_256_TICKS)) {
best->incoming_cargo_waiting[accepted_cargo_index] = min(num_pieces + best->incoming_cargo_waiting[accepted_cargo_index], 0xFFFF);
- if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) IndustryProductionCallback(ind, 0);
+ if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) {
+ IndustryProductionCallback(best, 0);
+ } else {
+ InvalidateWindow(WC_INDUSTRY_VIEW, best->index);
+ }
} else {
best->produced_cargo_waiting[0] = min(best->produced_cargo_waiting[0] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][0] / 256), 0xFFFF);
best->produced_cargo_waiting[1] = min(best->produced_cargo_waiting[1] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][1] / 256), 0xFFFF);
}
+
+ StartStopIndustryTileAnimation(best, IAT_INDUSTRY_RECEIVED_CARGO);
}
}
--- a/src/group_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/group_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -90,7 +90,7 @@
/**
- * Add a vehicle to a group
+ * Create a new vehicle group.
* @param tile unused
* @param p1 vehicle type
* @param p2 unused
@@ -117,7 +117,7 @@
/**
- * Add a vehicle to a group
+ * Add all vehicles in the given group to the default group and then deletes the group.
* @param tile unused
* @param p1 index of array group
* - p1 bit 0-15 : GroupID
--- a/src/gui.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/gui.h Fri Jul 13 09:18:50 2007 +0000
@@ -108,7 +108,13 @@
void ShowEstimatedCostOrIncome(Money cost, int x, int y);
void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
-void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
+enum StationCoverageType {
+ SCT_PASSENGERS_ONLY,
+ SCT_NON_PASSENGERS_ONLY,
+ SCT_ALL
+};
+
+void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad);
void CheckRedrawStationCoverage(const Window *w);
void ShowSmallMap();
--- a/src/industry.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry.h Fri Jul 13 09:18:50 2007 +0000
@@ -186,6 +186,10 @@
///< state instead of the construction state
/* Newgrf data */
uint8 callback_flags; ///< Flags telling which grf callback is set
+ uint16 animation_info; ///< Information about the animation (is it looping, how many loops etc)
+ uint8 animation_speed; ///< The speed of the animation
+ uint8 animation_triggers; ///< When to start the animation
+ uint8 animation_special_flags; ///< Extra flags to influence the animation
bool enabled; ///< entity still avaible (by default true).newgrf can disable it, though
struct GRFFileProps grf_prop;
};
--- a/src/industry_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -330,12 +330,36 @@
static void GetAcceptedCargo_Industry(TileIndex tile, AcceptedCargo ac)
{
- const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile));
- CargoID a;
+ IndustryGfx gfx = GetIndustryGfx(tile);
+ const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+
+ /* When we have to use a callback, we put our data in the next two variables */
+ CargoID raw_accepts_cargo[lengthof(itspec->accepts_cargo)];
+ uint8 raw_acceptance[lengthof(itspec->acceptance)];
+
+ /* And then these will always point to a same sized array with the required data */
+ const CargoID *accepts_cargo = itspec->accepts_cargo;
+ const uint8 *acceptance = itspec->acceptance;
+
+ if (HASBIT(itspec->callback_flags, CBM_INDT_ACCEPT_CARGO)) {
+ uint16 res = GetIndustryTileCallback(CBID_INDTILE_ACCEPT_CARGO, 0, 0, gfx, GetIndustryByTile(tile), tile);
+ if (res != CALLBACK_FAILED) {
+ accepts_cargo = raw_accepts_cargo;
+ for (uint i = 0; i < lengthof(itspec->accepts_cargo); i++) raw_accepts_cargo[i] = GetCargoTranslation(GB(res, i * 5, 5), itspec->grf_prop.grffile);
+ }
+ }
+
+ if (HASBIT(itspec->callback_flags, CBM_INDT_CARGO_ACCEPTANCE)) {
+ uint16 res = GetIndustryTileCallback(CBID_INDTILE_CARGO_ACCEPTANCE, 0, 0, gfx, GetIndustryByTile(tile), tile);
+ if (res != CALLBACK_FAILED) {
+ acceptance = raw_acceptance;
+ for (uint i = 0; i < lengthof(itspec->accepts_cargo); i++) raw_acceptance[i] = GB(res, i * 4, 4);
+ }
+ }
for (byte i = 0; i < lengthof(itspec->accepts_cargo); i++) {
- a = itspec->accepts_cargo[i];
- if (a != CT_INVALID) ac[a] = itspec->acceptance[i];
+ CargoID a = accepts_cargo[i];
+ if (a != CT_INVALID) ac[a] = acceptance[i];
}
}
@@ -389,7 +413,7 @@
am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[0], cw);
i->this_month_transported[0] += am;
- if (am != 0) {
+ if (am != 0 && !StartStopIndustryTileAnimation(i, IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
if (newgfx != INDUSTRYTILE_NOANIM) {
@@ -418,8 +442,14 @@
static void AnimateTile_Industry(TileIndex tile)
{
byte m;
+ IndustryGfx gfx = GetIndustryGfx(tile);
- switch (GetIndustryGfx(tile)) {
+ if (GetIndustryTileSpec(gfx)->animation_info != 0xFFFF) {
+ AnimateNewIndustryTile(tile);
+ return;
+ }
+
+ switch (gfx) {
case GFX_SUGAR_MINE_SIEVE:
if ((_tick_counter & 1) == 0) {
m = GetIndustryAnimationState(tile) + 1;
@@ -605,6 +635,7 @@
stage = GetIndustryConstructionStage(tile) + 1;
SetIndustryConstructionCounter(tile, 0);
SetIndustryConstructionStage(tile, stage);
+ StartStopIndustryTileAnimation(tile, IAT_CONSTRUCTION_STATE_CHANGE);
if (stage == 3) {
SetIndustryCompleted(tile, true);
}
@@ -613,7 +644,15 @@
if (!IsIndustryCompleted(tile)) return;
- switch (GetIndustryGfx(tile)) {
+ IndustryGfx gfx = GetIndustryGfx(tile);
+ if (gfx >= NEW_INDUSTRYTILEOFFSET) {
+ /* New industry */
+ const IndustryTileSpec *its = GetIndustryTileSpec(gfx);
+ if (its->animation_info != 0xFFFF) AddAnimatedTile(tile);
+ return;
+ }
+
+ switch (gfx) {
case GFX_POWERPLANT_CHIMNEY:
CreateIndustryEffectSmoke(tile);
break;
@@ -677,6 +716,8 @@
TransportIndustryGoods(tile);
+ if (StartStopIndustryTileAnimation(tile, IAT_TILELOOP)) return;
+
newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
if (newgfx != INDUSTRYTILE_NOANIM) {
ResetIndustryConstructionStage(tile);
@@ -905,11 +946,6 @@
if (tile != INVALID_TILE) PlantFarmField(tile, i->index);
}
-static void MaybePlantFarmField(const Industry *i)
-{
- if (CHANCE16(1, 8)) PlantRandomFarmField(i);
-}
-
/**
* Search callback function for ChopLumberMillTrees
* @param tile to test
@@ -974,10 +1010,23 @@
i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + i->production_rate[0]);
i->produced_cargo_waiting[1] = min(0xffff, i->produced_cargo_waiting[1] + i->production_rate[1]);
- if (indbehav & INDUSTRYBEH_PLANT_FIELDS) {
- MaybePlantFarmField(i);
- } else if ((indbehav & INDUSTRYBEH_CUT_TREES) && (i->counter & 0x1FF) == 0) {
- ChopLumberMillTrees(i);
+ if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
+ bool plant;
+ if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+ plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
+ } else {
+ plant = CHANCE16(1, 8);
+ }
+
+ if (plant) PlantRandomFarmField(i);
+ }
+ if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
+ bool cut = ((i->counter & 0x1FF) == 0);
+ if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+ cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
+ }
+
+ if (cut) ChopLumberMillTrees(i);
}
}
}
@@ -1000,6 +1049,7 @@
if (_game_mode == GM_EDITOR) return;
FOR_ALL_INDUSTRIES(i) {
+ StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
ProduceIndustryGoods(i);
}
}
@@ -1133,7 +1183,7 @@
return t;
}
-static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable *it, int type)
+static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable *it, int type, bool *custom_shape_check = NULL)
{
_error_message = STR_0239_SITE_UNSUITABLE;
@@ -1154,54 +1204,55 @@
if (!EnsureNoVehicle(cur_tile)) return false;
if (MayHaveBridgeAbove(cur_tile) && IsBridgeAbove(cur_tile)) return false;
+ const IndustryTileSpec *its = GetIndustryTileSpec(it->gfx);
IndustyBehaviour ind_behav = GetIndustrySpec(type)->behaviour;
- if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
- /* As soon as the tile is not water, bail out.
- * But that does not mean the search is over. You have
- * to make sure every tile of the industry will be only water*/
- if (!IsClearWaterTile(cur_tile)) return false;
+ if (HASBIT(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
+ if (custom_shape_check != NULL) *custom_shape_check = true;
+ if (!PerformIndustryTileSlopeCheck(cur_tile, its, type, it->gfx)) return false;
} else {
- Slope tileh;
-
- if (IsClearWaterTile(cur_tile)) return false;
-
- tileh = GetTileSlope(cur_tile, NULL);
- if (IsSteepSlope(tileh)) return false;
+ if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
+ /* As soon as the tile is not water, bail out.
+ * But that does not mean the search is over. You have
+ * to make sure every tile of the industry will be only water*/
+ if (!IsClearWaterTile(cur_tile)) return false;
+ } else {
+ Slope tileh;
- if (_patches.land_generator != LG_TERRAGENESIS || !_generating_world) {
- /* It is almost impossible to have a fully flat land in TG, so what we
- * do is that we check if we can make the land flat later on. See
- * CheckIfCanLevelIndustryPlatform(). */
- if (tileh != SLOPE_FLAT) {
- Slope t;
- byte bits = GetIndustryTileSpec(it->gfx)->slopes_refused;
+ if (IsClearWaterTile(cur_tile)) return false;
- if (bits & 0x10) return false;
-
- t = ComplementSlope(tileh);
+ tileh = GetTileSlope(cur_tile, NULL);
+ if (IsSteepSlope(tileh)) return false;
- if (bits & 1 && (t & SLOPE_NW)) return false;
- if (bits & 2 && (t & SLOPE_NE)) return false;
- if (bits & 4 && (t & SLOPE_SW)) return false;
- if (bits & 8 && (t & SLOPE_SE)) return false;
+ if (_patches.land_generator != LG_TERRAGENESIS || !_generating_world) {
+ /* It is almost impossible to have a fully flat land in TG, so what we
+ * do is that we check if we can make the land flat later on. See
+ * CheckIfCanLevelIndustryPlatform(). */
+ if (tileh != SLOPE_FLAT) {
+ Slope t;
+ byte bits = its->slopes_refused;
+
+ if (bits & 0x10) return false;
+
+ t = ComplementSlope(tileh);
+
+ if (bits & 1 && (t & SLOPE_NW)) return false;
+ if (bits & 2 && (t & SLOPE_NE)) return false;
+ if (bits & 4 && (t & SLOPE_SW)) return false;
+ if (bits & 8 && (t & SLOPE_SE)) return false;
+ }
}
}
+ }
- if (ind_behav & INDUSTRYBEH_ONLY_INTOWN) {
- if (!IsTileType(cur_tile, MP_HOUSE)) {
- _error_message = STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS;
- return false;
- }
- } else {
- if (ind_behav & INDUSTRYBEH_ONLY_NEARTOWN) {
- if (!IsTileType(cur_tile, MP_HOUSE)) goto do_clear;
- } else {
-do_clear:
- if (CmdFailed(DoCommand(cur_tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR)))
- return false;
- }
+ if (ind_behav & INDUSTRYBEH_ONLY_INTOWN) {
+ if (!IsTileType(cur_tile, MP_HOUSE)) {
+ _error_message = STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS;
+ return false;
}
+ if (CmdFailed(DoCommand(cur_tile, 0, 0, 0, CMD_LANDSCAPE_CLEAR))) return false;
+ } else if ((ind_behav & INDUSTRYBEH_ONLY_NEARTOWN) == 0 || !IsTileType(cur_tile, MP_HOUSE)) {
+ if (CmdFailed(DoCommand(cur_tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR))) return false;
}
}
} while ((++it)->ti.x != -0x80);
@@ -1458,30 +1509,36 @@
* @param type of industry to build
* @param flags of operations to conduct
* @param indspec pointer to industry specifications
- * @param it pointer to list of tile type to build
+ * @param itspec_index the index of the itsepc to build/fund
* @return the pointer of the newly created industry, or NULL if it failed
*/
-static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, const IndustryTileTable *it)
+static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, uint itspec_index)
{
- const Town *t;
- Industry *i;
+ const IndustryTileTable *it = indspec->table[itspec_index];
+ bool custom_shape_check = false;
- if (!CheckIfIndustryTilesAreFree(tile, it, type)) return NULL;
- if (_patches.land_generator == LG_TERRAGENESIS && _generating_world && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
- if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
+ if (!CheckIfIndustryTilesAreFree(tile, it, type, &custom_shape_check)) return NULL;
+
+ if (HASBIT(GetIndustrySpec(type)->callback_flags, CBM_IND_LOCATION)) {
+ if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index)) return NULL;
+ } else {
+ if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
+ }
+
+ if (!custom_shape_check && _patches.land_generator == LG_TERRAGENESIS && _generating_world && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
if (!CheckIfTooCloseToIndustry(tile, type)) return NULL;
- t = CheckMultipleIndustryInTown(tile, type);
+ const Town *t = CheckMultipleIndustryInTown(tile, type);
if (t == NULL) return NULL;
if (!CheckIfIndustryIsAllowed(tile, type, t)) return NULL;
if (!CheckSuitableIndustryPos(tile)) return NULL;
- i = AllocateIndustry();
+ Industry *i = AllocateIndustry();
if (i == NULL) return NULL;
if (flags & DC_EXEC) {
- CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
+ if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
DoCreateNewIndustry(i, tile, type, it, t, OWNER_NONE);
}
@@ -1513,19 +1570,26 @@
/* If the patch for raw-material industries is not on, you cannot build raw-material industries.
* Raw material industries are industries that do not accept cargo (at least for now) */
- if (_patches.raw_industry_construction == 0 && indspec->IsRawIndustry()) {
+ if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 0 && indspec->IsRawIndustry()) {
return CMD_ERROR;
}
- if (_patches.raw_industry_construction == 2 && indspec->IsRawIndustry()) {
+ if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && indspec->IsRawIndustry()) {
if (flags & DC_EXEC) {
/* Prospecting has a chance to fail, however we cannot guarantee that something can
* be built on the map, so the chance gets lower when the map is fuller, but there
* is nothing we can really do about that. */
if (Random() <= indspec->prospecting_chance) {
for (int i = 0; i < 5000; i++) {
- const IndustryTileTable *it = indspec->table[RandomRange(indspec->num_table)];
- if (CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, it) != NULL) break;
+ uint tilespec_index = RandomRange(indspec->num_table);
+ const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, tilespec_index);
+ if (ind != NULL) {
+ SetDParam(0, indspec->name);
+ SetDParam(1, ind->town->index);
+ AddNewsItem(indspec->new_industry_text,
+ NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0);
+ break;
+ }
}
}
}
@@ -1538,7 +1602,7 @@
if (--num < 0) return_cmd_error(STR_0239_SITE_UNSUITABLE);
} while (!CheckIfIndustryTilesAreFree(tile, it = itt[num], p1));
- if (CreateNewIndustryHelper(tile, p1, flags, indspec, it) == NULL) return CMD_ERROR;
+ if (CreateNewIndustryHelper(tile, p1, flags, indspec, num) == NULL) return CMD_ERROR;
}
return CommandCost(indspec->GetConstructionCost());
@@ -1548,9 +1612,8 @@
Industry *CreateNewIndustry(TileIndex tile, IndustryType type)
{
const IndustrySpec *indspec = GetIndustrySpec(type);
- const IndustryTileTable *it = indspec->table[RandomRange(indspec->num_table)];
- return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, it);
+ return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table));
}
static const byte _numof_industry_table[5][11] = {
--- a/src/industry_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -20,263 +20,327 @@
#include "variables.h"
#include "helpers.hpp"
#include "cargotype.h"
+#include "newgrf.h"
+#include "newgrf_callbacks.h"
+#include "newgrf_industries.h"
+#include "newgrf_text.h"
-/* industries per climate, according to the different construction windows */
-const byte _build_industry_types[4][12] = {
- { 1, 2, 4, 6, 8, 0, 3, 5, 9, 11, 18 },
- { 1, 14, 4, 13, 7, 0, 3, 9, 11, 15 },
- { 25, 13, 4, 23, 22, 11, 17, 10, 24, 19, 20, 21 },
- { 27, 30, 31, 33, 26, 28, 29, 32, 34, 35, 36 },
+extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
+
+/**
+ * Search callback function for TryBuildIndustry
+ * @param tile to test
+ * @param data that is passed by the caller. In this case, the type of industry been tested
+ * @return the success (or not) of the operation
+ */
+static bool SearchTileForIndustry(TileIndex tile, uint32 data)
+{
+ return CreateNewIndustry(tile, data) != NULL;
+}
+
+/**
+ * Perform a 9*9 tiles circular search around a tile
+ * in order to find a suitable zone to create the desired industry
+ * @param tile to start search for
+ * @param type of the desired industry
+ * @return the success (or not) of the operation
+ */
+static bool TryBuildIndustry(TileIndex tile, int type)
+{
+ return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
+}
+bool _ignore_restrictions;
+
+enum {
+ DYNA_INDU_MATRIX_WIDGET = 2,
+ DYNA_INDU_INFOPANEL = 4,
+ DYNA_INDU_FUND_WIDGET,
+ DYNA_INDU_RESIZE_WIDGET,
};
-static void UpdateIndustryProduction(Industry *i);
+static struct IndustryData {
+ uint16 count;
+ IndustryType select;
+ byte index[NUM_INDUSTRYTYPES + 1];
+ StringID additional_text[NUM_INDUSTRYTYPES + 1];
+} _industrydata;
-static void BuildIndustryWndProc(Window *w, WindowEvent *e)
+static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
- case WE_PAINT:
- DrawWindowWidgets(w);
- if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
- int ind_type = _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1];
+ case WE_CREATE: {
+ IndustryType ind;
+ const IndustrySpec *indsp;
- SetDParam(0, GetIndustrySpec(ind_type)->GetConstructionCost());
- DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
- }
- break;
+ /* Shorten the window to the equivalant of the additionnal purchase
+ * info coming from the callback. SO it will only be available to tis full
+ * height when newindistries are loaded */
+ if (!_loaded_newgrf_features.has_newindustries) {
+ w->widget[DYNA_INDU_INFOPANEL].bottom -= 44;
+ w->widget[DYNA_INDU_FUND_WIDGET].bottom -= 44;
+ w->widget[DYNA_INDU_FUND_WIDGET].top -= 44;
+ w->widget[DYNA_INDU_RESIZE_WIDGET].bottom -= 44;
+ w->widget[DYNA_INDU_RESIZE_WIDGET].top -= 44;
+ w->resize.height = w->height -= 44;
+ }
- case WE_CLICK: {
- int wid = e->we.click.widget;
- if (wid >= 3) {
- if (HandlePlacePushButton(w, wid, SPR_CURSOR_INDUSTRY, 1, NULL))
- WP(w, def_d).data_1 = wid - 3;
+ /* Initilialize structures */
+ memset(&_industrydata.index, 0xFF, NUM_INDUSTRYTYPES);
+ memset(&_industrydata.additional_text, STR_NULL, NUM_INDUSTRYTYPES);
+ _industrydata.count = 0;
+
+ /* first indutry type is selected.
+ * I'll be damned if there are none available ;) */
+ _industrydata.select = 0;
+ w->vscroll.cap = 8; // rows in grid, same in scroller
+ w->resize.step_height = 13;
+
+ if (_game_mode == GM_EDITOR) { // give room for the Many Random "button"
+ _industrydata.index[_industrydata.count] = INVALID_INDUSTRYTYPE;
+ _industrydata.count++;
+ }
+
+ /* We'll perform two distinct loops, one for secondary industries, and the other one for
+ * primary ones. Each loop will fill the _industrydata structure. */
+ for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+ indsp = GetIndustrySpec(ind);
+ if (indsp->enabled && (!indsp->IsRawIndustry() || _game_mode == GM_EDITOR)) {
+ _industrydata.index[_industrydata.count] = ind;
+ _industrydata.count++;
+ }
+ }
+
+ if (_patches.raw_industry_construction != 0 && _game_mode != GM_EDITOR) {
+ for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+ indsp = GetIndustrySpec(ind);
+ if (indsp->enabled && indsp->IsRawIndustry()) {
+ _industrydata.index[_industrydata.count] = ind;
+ _industrydata.count++;
+ }
+ }
+ }
+ } break;
+
+ case WE_PAINT: {
+ const IndustrySpec *indsp = (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) ? NULL : GetIndustrySpec(_industrydata.index[_industrydata.select]);
+ StringID str = STR_4827_REQUIRES;
+ int x_str = w->widget[DYNA_INDU_INFOPANEL].left + 3;
+ int y_str = w->widget[DYNA_INDU_INFOPANEL].top + 3;
+ const Widget *wi = &w->widget[DYNA_INDU_INFOPANEL];
+ int max_width = wi->right - wi->left - 4;
+
+ /* Raw industries might be prospected. Show this fact by changing the string */
+ if (_game_mode == GM_EDITOR) {
+ w->widget[DYNA_INDU_FUND_WIDGET].data = STR_BUILD_NEW_INDUSTRY;
+ } else {
+ w->widget[DYNA_INDU_FUND_WIDGET].data = (_patches.raw_industry_construction == 2 && indsp->IsRawIndustry()) ? STR_PROSPECT_NEW_INDUSTRY : STR_FUND_NEW_INDUSTRY;
+ }
+
+ SetVScrollCount(w, _industrydata.count);
+
+ DrawWindowWidgets(w);
+
+ /* and now with the matrix painting */
+ for (byte i = 0; i < w->vscroll.cap && ((i + w->vscroll.pos) < _industrydata.count); i++) {
+ int offset = i * 13;
+ int x = 3;
+ int y = 16;
+ bool selected = _industrydata.select == i + w->vscroll.pos;
+
+ if (_industrydata.index[i + w->vscroll.pos] == INVALID_INDUSTRYTYPE) {
+ DrawString(21, y + offset, STR_MANY_RANDOM_INDUSTRIES, selected ? 12 : 6);
+ continue;
+ }
+ const IndustrySpec *indsp = GetIndustrySpec(_industrydata.index[i + w->vscroll.pos]);
+
+ /* Draw the name of the industry in white is selected, otherwise, in orange */
+ DrawString(20, y + offset, indsp->name, selected ? 12 : 6);
+ GfxFillRect(x, y + 1 + offset, x + 10, y + 7 + offset, selected ? 15 : 0);
+ GfxFillRect(x + 1, y + 2 + offset, x + 9, y + 6 + offset, indsp->map_colour);
+ }
+
+ if (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) {
+ DrawStringMultiLine(x_str, y_str, STR_RANDOM_INDUSTRIES_TIP, max_width, wi->bottom - wi->top - 40);
+ break;
+ }
+
+ if (_game_mode != GM_EDITOR) {
+ SetDParam(0, indsp->GetConstructionCost());
+ DrawStringTruncated(x_str, y_str, STR_482F_COST, 0, max_width);
+ y_str += 11;
+ }
+
+ /* Draw the accepted cargos, if any. Otherwhise, will print "Nothing" */
+ if (indsp->accepts_cargo[0] != CT_INVALID) {
+ SetDParam(0, GetCargo(indsp->accepts_cargo[0])->name);
+ if (indsp->accepts_cargo[1] != CT_INVALID) {
+ SetDParam(1, GetCargo(indsp->accepts_cargo[1])->name);
+ str = STR_4828_REQUIRES;
+ if (indsp->accepts_cargo[2] != CT_INVALID) {
+ SetDParam(2, GetCargo(indsp->accepts_cargo[2])->name);
+ str = STR_4829_REQUIRES;
+ }
+ }
+ } else {
+ SetDParam(0, STR_00D0_NOTHING);
+ }
+ DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+ y_str += 11;
+ /* Draw the produced cargos, if any. Otherwhise, will print "Nothing" */
+ str = STR_4827_PRODUCES;
+ if (indsp->produced_cargo[0] != CT_INVALID) {
+ SetDParam(0, GetCargo(indsp->produced_cargo[0])->name);
+ if (indsp->produced_cargo[1] != CT_INVALID) {
+ SetDParam(1, GetCargo(indsp->produced_cargo[1])->name);
+ str = STR_4828_PRODUCES;
+ }
+ } else {
+ SetDParam(0, STR_00D0_NOTHING);
+ }
+ DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+ /* Get the additional purchase info text, if it has not already been */
+ if (_industrydata.additional_text[_industrydata.select] == STR_NULL) { // Have i been called already?
+ if (HASBIT(indsp->callback_flags, CBM_IND_FUND_MORE_TEXT)) { // No. Can it be called?
+ uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_FUND_MORE_TEXT, 0, 0, NULL, _industrydata.index[_industrydata.select], INVALID_TILE);
+ if (callback_res != CALLBACK_FAILED) { // Did it failed?
+ StringID newtxt = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res); // No. here's the new string
+ _industrydata.additional_text[_industrydata.select] = newtxt; // Store it for further usage
+ }
+ }
+ }
+
+ y_str += 11;
+ /* Draw the Additional purchase text, provided by newgrf callback, if any.
+ * Otherwhise, will print Nothing */
+ if (_industrydata.additional_text[_industrydata.select] != STR_NULL &&
+ _industrydata.additional_text[_industrydata.select] != STR_UNDEFINED) {
+
+ SetDParam(0, _industrydata.additional_text[_industrydata.select]);
+ DrawStringMultiLine(x_str, y_str, STR_JUST_STRING, max_width, wi->bottom - wi->top - 40); // text is white, for now
+ }
+ } break;
+
+ case WE_CLICK:
+ switch (e->we.click.widget) {
+ case DYNA_INDU_MATRIX_WIDGET: {
+ IndustryType type;
+ int y = (e->we.click.pt.y - w->widget[DYNA_INDU_MATRIX_WIDGET].top) / 13 + w->vscroll.pos ;
+
+ if (y >= 0 && y < _industrydata.count) { //Isit within the boundaries of available data?
+ _industrydata.select = y;
+ type = _industrydata.index[_industrydata.select];
+
+ SetWindowDirty(w);
+ if ((_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(type)->IsRawIndustry()) ||
+ type == INVALID_INDUSTRYTYPE) {
+ /* Reset the button state if going to prospecting or "build many industries" */
+ RaiseWindowButtons(w);
+ ResetObjectToPlace();
+ }
+ }
+ } break;
+
+ case DYNA_INDU_FUND_WIDGET: {
+ IndustryType type = _industrydata.index[_industrydata.select];
+
+ if (type == INVALID_INDUSTRYTYPE) {
+ HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+ WP(w, def_d).data_1 = -1;
+
+ if (GetNumTowns() == 0) {
+ ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
+ } else {
+ extern void GenerateIndustries();
+ _generating_world = true;
+ GenerateIndustries();
+ _generating_world = false;
+ }
+ } else if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(type)->IsRawIndustry()) {
+ DoCommandP(0, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+ HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+ WP(w, def_d).data_1 = -1;
+ } else if (HandlePlacePushButton(w, DYNA_INDU_FUND_WIDGET, SPR_CURSOR_INDUSTRY, 1, NULL)) {
+ WP(w, def_d).data_1 = _industrydata.select;
+ }
+ }
+ break;
+ } break;
+
+ case WE_RESIZE: {
+ w->vscroll.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
+ w->widget[DYNA_INDU_MATRIX_WIDGET].data = (w->vscroll.cap << 8) + 1;
+ } break;
+
+ case WE_PLACE_OBJ: {
+ IndustryType type = _industrydata.index[_industrydata.select];
+
+ if (WP(w, def_d).data_1 == -1) break;
+ if (_game_mode == GM_EDITOR) {
+ /* Show error if no town exists at all */
+ if (GetNumTowns() == 0) {
+ SetDParam(0, GetIndustrySpec(type)->name);
+ ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+ return;
+ }
+
+ _current_player = OWNER_NONE;
+ _generating_world = true;
+ _ignore_restrictions = true;
+ if (!TryBuildIndustry(e->we.place.tile, type)) {
+ SetDParam(0, GetIndustrySpec(type)->name);
+ ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+ } else {
+ ResetObjectToPlace();
+ }
+ _ignore_restrictions = false;
+ _generating_world = false;
+ } else if (DoCommandP(e->we.place.tile, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY))) {
+ ResetObjectToPlace();
}
} break;
- case WE_PLACE_OBJ:
- if (DoCommandP(e->we.place.tile, _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1], 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY)))
- ResetObjectToPlace();
+ case WE_ABORT_PLACE_OBJ:
+ RaiseWindowButtons(w);
break;
- case WE_ABORT_PLACE_OBJ:
- RaiseWindowButtons(w);
+ case WE_TIMEOUT:
+ if (WP(w, def_d).data_1 == -1) {
+ RaiseWindowButtons(w);
+ WP(w, def_d).data_1 = 0;
+ }
break;
}
}
-static const Widget _build_industry_land0_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land2_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land0_widgets_extra[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 110, 121, STR_0245_OIL_RIG, STR_CONSTRUCT_OIL_RIG_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 136, 147, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 149, 160, STR_0249_IRON_ORE_MINE, STR_CONSTRUCT_IRON_ORE_MINE_TIP},
-
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets_extra[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 174, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 110, 121, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 123, 134, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 136, 147, STR_024F_GOLD_MINE, STR_CONSTRUCT_GOLD_MINE_TIP},
+static const Widget _build_dynamic_industry_widgets[] = {
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
+{ WWT_CAPTION, RESIZE_RIGHT, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
+{ WWT_MATRIX, RESIZE_RB, 7, 0, 157, 14, 118, 0x801, STR_INDUSTRY_SELECTION_HINT},
+{ WWT_SCROLLBAR, RESIZE_LRB, 7, 158, 169, 14, 118, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{ WWT_PANEL, RESIZE_RTB, 7, 0, 169, 119, 199, 0x0, STR_NULL},
+{ WWT_TEXTBTN, RESIZE_RTB, 7, 0, 157, 200, 211, STR_FUND_NEW_INDUSTRY, STR_NULL},
+{ WWT_RESIZEBOX, RESIZE_LRTB, 7, 158, 169, 200, 211, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
-static const Widget _build_industry_land2_widgets_extra[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 200, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 84, 95, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 97, 108, STR_0255_DIAMOND_MINE, STR_CONSTRUCT_DIAMOND_MINE_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 110, 121, STR_0256_COPPER_ORE_MINE, STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 136, 147, STR_0251_FRUIT_PLANTATION, STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 149, 160, STR_0252_RUBBER_PLANTATION, STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 162, 173, STR_0253_WATER_SUPPLY, STR_CONSTRUCT_WATER_SUPPLY_TIP},
-{ WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets_extra[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 71, 82, STR_0257_COTTON_CANDY_FOREST, STR_CONSTRUCT_COTTON_CANDY_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 84, 95, STR_0259_BATTERY_FARM, STR_CONSTRUCT_BATTERY_FARM_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 97, 108, STR_025A_COLA_WELLS, STR_CONSTRUCT_COLA_WELLS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 110, 121, STR_025D_PLASTIC_FOUNTAINS, STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 123, 134, STR_025F_BUBBLE_GENERATOR, STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 136, 147, STR_0260_TOFFEE_QUARRY, STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 149, 160, STR_0261_SUGAR_MINE, STR_CONSTRUCT_SUGAR_MINE_TIP},
-{ WIDGETS_END},
-};
-
-
-static const WindowDesc _build_industry_land0_desc = {
- WDP_AUTO, WDP_AUTO, 170, 116,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land0_widgets,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc = {
- WDP_AUTO, WDP_AUTO, 170, 116,
+static const WindowDesc _build_industry_dynamic_desc = {
+ WDP_AUTO, WDP_AUTO, 170, 212,
WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land1_widgets,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc = {
- WDP_AUTO, WDP_AUTO, 170, 116,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land2_widgets,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc = {
- WDP_AUTO, WDP_AUTO, 170, 116,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land3_widgets,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land0_desc_extra = {
- WDP_AUTO, WDP_AUTO, 170, 188,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land0_widgets_extra,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc_extra = {
- WDP_AUTO, WDP_AUTO, 170, 175,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land1_widgets_extra,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc_extra = {
- WDP_AUTO, WDP_AUTO, 170, 201,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land2_widgets_extra,
- BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc_extra = {
- WDP_AUTO, WDP_AUTO, 170, 188,
- WC_BUILD_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _build_industry_land3_widgets_extra,
- BuildIndustryWndProc
-};
-
-static const WindowDesc * const _industry_window_desc[2][4] = {
- {
- &_build_industry_land0_desc,
- &_build_industry_land1_desc,
- &_build_industry_land2_desc,
- &_build_industry_land3_desc,
- },
- {
- &_build_industry_land0_desc_extra,
- &_build_industry_land1_desc_extra,
- &_build_industry_land2_desc_extra,
- &_build_industry_land3_desc_extra,
- },
+ WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
+ _build_dynamic_industry_widgets,
+ BuildDynamicIndustryWndProc,
};
void ShowBuildIndustryWindow()
{
- if (!IsValidPlayer(_current_player)) return;
- AllocateWindowDescFront(_industry_window_desc[(_patches.raw_industry_construction == 0) ? 0 : 1][_opt_ptr->landscape], 0);
+ if (_game_mode != GM_EDITOR && !IsValidPlayer(_current_player)) return;
+ AllocateWindowDescFront(&_build_industry_dynamic_desc, 0);
}
+static void UpdateIndustryProduction(Industry *i);
+
static inline bool isProductionMinimum(const Industry *i, int pt) {
return i->production_rate[pt] == 1;
}
@@ -299,14 +363,57 @@
* WP(w,vp2_d).data_3 is for the click pos (left or right) */
switch (e->event) {
+ case WE_CREATE: {
+ /* Count the number of lines that we need to resize the GUI with */
+ const IndustrySpec *ind = GetIndustrySpec(GetIndustry(w->window_number)->type);
+ int lines = -3;
+
+ if (HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) {
+ for (uint j = 0; j < 3 && ind->accepts_cargo[j] != CT_INVALID; j++) {
+ if (j == 0) lines++;
+ lines++;
+ }
+ } else if (ind->accepts_cargo[0] != CT_INVALID) {
+ lines++;
+ }
+
+ for (uint j = 0; j < 2 && ind->produced_cargo[j] != CT_INVALID; j++) {
+ if (j == 0) {
+ if (ind->accepts_cargo[0] != CT_INVALID) lines++;
+ lines++;
+ }
+ lines++;
+ }
+
+ if (HASBIT(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) lines += 2;
+
+ for (uint j = 5; j <= 7; j++) {
+ if (j != 5) w->widget[j].top += lines * 10;
+ w->widget[j].bottom += lines * 10;
+ }
+ w->height += lines * 10;
+ } break;
+
case WE_PAINT: {
- const Industry *i = GetIndustry(w->window_number);
+ Industry *i = GetIndustry(w->window_number);
const IndustrySpec *ind = GetIndustrySpec(i->type);
+ int y = 111;
SetDParam(0, w->window_number);
DrawWindowWidgets(w);
- if (ind->accepts_cargo[0] != CT_INVALID) {
+ if (HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) {
+ for (uint j = 0; j < 3 && ind->accepts_cargo[j] != CT_INVALID; j++) {
+ if (j == 0) {
+ DrawString(2, y, STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING, 0);
+ y += 10;
+ }
+ SetDParam(0, ind->accepts_cargo[j]);
+ SetDParam(1, i->incoming_cargo_waiting[j]);
+ DrawString(4, y, STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO, 0);
+ y += 10;
+ }
+ } else if (ind->accepts_cargo[0] != CT_INVALID) {
StringID str;
SetDParam(0, GetCargo(ind->accepts_cargo[0])->name);
@@ -319,39 +426,44 @@
str = STR_4829_REQUIRES;
}
}
- DrawString(2, 107, str, 0);
+ DrawString(2, y, str, 0);
+ y += 10;
}
- if (ind->produced_cargo[0] != CT_INVALID) {
- DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
+ for (uint j = 0; j < 2 && ind->produced_cargo[j] != CT_INVALID; j++) {
+ if (j == 0) {
+ if (ind->accepts_cargo[0] != CT_INVALID) y += 10;
+ DrawString(2, y, STR_482A_PRODUCTION_LAST_MONTH, 0);
+ y += 10;
+ }
- SetDParam(0, ind->produced_cargo[0]);
- SetDParam(1, i->last_month_production[0]);
+ SetDParam(0, ind->produced_cargo[j]);
+ SetDParam(1, i->last_month_production[j]);
- SetDParam(2, i->last_month_pct_transported[0] * 100 >> 8);
- DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
+ SetDParam(2, i->last_month_pct_transported[j] * 100 >> 8);
+ DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), y, STR_482B_TRANSPORTED, 0);
/* Let's put out those buttons.. */
if (IsProductionAlterable(i)) {
- DrawArrowButtons(5, 127, 3, (WP(w, vp2_d).data_2 == 1) ? WP(w, vp2_d).data_3 : 0,
- !isProductionMinimum(i, 0), !isProductionMaximum(i, 0));
+ DrawArrowButtons(5, y, 3, (WP(w, vp2_d).data_2 == j + 1) ? WP(w, vp2_d).data_3 : 0,
+ !isProductionMinimum(i, j), !isProductionMaximum(i, j));
}
+ y += 10;
+ }
- if (ind->produced_cargo[1] != CT_INVALID) {
- SetDParam(0, ind->produced_cargo[1]);
- SetDParam(1, i->last_month_production[1]);
- SetDParam(2, i->last_month_pct_transported[1] * 100 >> 8);
- DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
- /* Let's put out those buttons.. */
- if (IsProductionAlterable(i)) {
- DrawArrowButtons(5, 137, 3, (WP(w, vp2_d).data_2 == 2) ? WP(w, vp2_d).data_3 : 0,
- !isProductionMinimum(i, 1), !isProductionMaximum(i, 1));
+ /* Get the extra message for the GUI */
+ if (HASBIT(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) {
+ uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->xy);
+ if (callback_res != CALLBACK_FAILED) {
+ StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
+ if (message != STR_NULL && message != STR_UNDEFINED) {
+ y += 10;
+ DrawString(2, y, message, 0);
}
}
}
DrawWindowViewport(w);
- }
- break;
+ } break;
case WE_CLICK: {
Industry *i;
@@ -366,8 +478,8 @@
if (!IsProductionAlterable(i)) return;
x = e->we.click.pt.x;
- line = (e->we.click.pt.y - 127) / 10;
- if (e->we.click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) &&
+ line = (e->we.click.pt.y - 121) / 10;
+ if (e->we.click.pt.y >= 121 && IS_INT_INSIDE(line, 0, 2) &&
GetIndustrySpec(i->type)->produced_cargo[line] != CT_INVALID) {
if (IS_INT_INSIDE(x, 5, 25) ) {
/* Clicked buttons, decrease or increase production */
--- a/src/lang/american.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/american.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Deliver cargo to a station only when there is a demand: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Allow building very long bridges: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Allow goto depot orders: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Manual primary industry construction method: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :none
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as other industries
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecting
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Allow multiple similar industries per town: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industries of the same type can be built close to each other: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Always show long date in the status bar: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Are you sure you want to create a random landscape?
STR_MANY_RANDOM_TOWNS :{BLACK}Many random towns
STR_RANDOM_TOWNS_TIP :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES :Many random industries
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cover the map with randomly placed industries
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't generate industries...
@@ -1976,6 +1980,7 @@
STR_4829_REQUIRES :{BLACK}Requires: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Production last month:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transported)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Center the main view on industry location
--- a/src/lang/brazilian_portuguese.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1243,7 +1243,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Tem certeza que deseja criar um terreno aleatório?
STR_MANY_RANDOM_TOWNS :{BLACK}Várias cidades aleatórias
STR_RANDOM_TOWNS_TIP :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES :Várias indústrias aleatórias
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Impossível gerar indústrias...
@@ -1984,6 +1984,13 @@
STR_4829_REQUIRES :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Carga aguardando processamento
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produz: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produz: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produção no mês passado:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centralizar visualização na localização da indústria
@@ -3373,3 +3380,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Placa anterior
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Fundar
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prosperir
+STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolha a indústria apropriada
--- a/src/lang/bulgarian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/bulgarian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1036,6 +1036,9 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Доставяне на стока до станция само ако има търсене: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Строене на много дълги мостове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Сервиз в маршрута: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :нищо
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :като други промишлености
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :предстоящ
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Няколко еднакви индустрии на град: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Индустрии от еднакъв тип могат да бъдат строени близо една до друга: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Показване на дълга дата в статус бара: {ORANGE}{STRING}
@@ -1112,6 +1115,9 @@
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Електрифицирани релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Еднорелси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Магниторелси
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Първо на разположение
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Последно на разположение
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Най-много използван
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Макс. влакове на играч: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Макс. брой коли на играч: {ORANGE}{STRING}
@@ -1235,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Потвърдете създаването на случаен терен?
STR_MANY_RANDOM_TOWNS :{BLACK}Много случайни градове
STR_RANDOM_TOWNS_TIP :{BLACK}Покриване на картата със случайно поставени градове
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Много случайни индустрии
+STR_MANY_RANDOM_INDUSTRIES :Много случайни индустрии
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Покриване на картата със случайно поставени индустрии
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Не може да се генерира промишленост...
@@ -1649,6 +1655,7 @@
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Автогарата не може да се построи...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Товарната гара не може да се построи...
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Товарна трамвайна гара неможе да бъде построена...
STR_180A_ROAD_CONSTRUCTION :Пътно строителство
STR_180A_TRAMWAY_CONSTRUCTION :Конструкциа на трамвайна линиа
STR_180B_BUILD_ROAD_SECTION :{BLACK}Строене на път
@@ -1894,6 +1901,7 @@
STR_3805_COAST_OR_RIVERBANK :Бряг или поречие
STR_3806_SHIP_DEPOT :Корабно депо
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Не може да бъде построено във водата
+STR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Трябва да разрушиш каналът първо
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Запази играта
@@ -1906,6 +1914,11 @@
STR_4007_GAME_SAVE_FAILED :{WHITE}Запазването на играта е неуспешно{}{STRING}
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Изтриването на файла е неуспешно
STR_4009_GAME_LOAD_FAILED :{WHITE}Отварянето на играта е неуспешно{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Вътрешна грешка: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Запазената игра е повредена - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Запазената игра е направена от по-нова версия
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Фаилат е непрочетим
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Фаилат е неписуем
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Списък с хард-дисковете, директориите и запазените игри
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Избрано име за запазена игра
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Изтрий избраната запазената игра
@@ -1962,6 +1975,13 @@
STR_4829_REQUIRES :{BLACK}Нуждае се от: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Товар чакащ до бъде преработен:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Произвежда: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Произвежда: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Произведено миналия месец:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% превозено)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Центриране главния прозорец върху индустрията
@@ -2076,6 +2096,7 @@
STR_SV_STNAME_LOWER :Долно {STRING}
STR_SV_STNAME_HELIPORT :{STRING} Хелипорт
STR_SV_STNAME_FOREST :{STRING} Дървета
+STR_SV_STNAME_FALLBACK :{STRING} Гара #{NUM}
############ end of savegame specific region!
@@ -2608,6 +2629,9 @@
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Ремонт без спиране в {TOWN} влаково депо
STR_TIMETABLE_GO_TO :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_FOR :Патувай за {STRING}
+STR_TIMETABLE_STAY_FOR :и остани за {STRING}
+STR_TIMETABLE_DAYS :{COMMA} ден{P "" s}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Отиващ към Влаковото депо на {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Отиващ към Влаковото депо на {TOWN}, {VELOCITY}
@@ -2650,6 +2674,7 @@
STR_REFIT :{BLACK}Преустройство
STR_REFIT_TIP :{BLACK}Избор какво преустройсто да се направи. Щракване със задържан контрол премахва инструкцията
STR_REFIT_ORDER :(Преустройство към {STRING})
+STR_TIMETABLE_VIEW :{BLACK}Разписание
STR_8829_ORDERS :{WHITE}{VEHICLE} (Заповеди)
STR_882A_END_OF_ORDERS :{SETX 10}- - Край на Заповедите - -
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
@@ -2723,6 +2748,7 @@
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Не може да се преименува влак...
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Изхвърляне на товара при достигане на избраното назначение
STR_886F_TRANSFER :{BLACK}Транфер
+STR_CLEAR_TIME :{BLACK}Изчисти времето
STR_TRAIN_STOPPING :{RED}Спира
STR_TRAIN_STOPPING_VEL :{RED}Спира, {VELOCITY}
@@ -2734,6 +2760,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Нов {STRING} е на разположение! - {ENGINE}
+STR_TIMETABLE_CHANGE_TIME :{BLACK}Промени времето
+STR_TIMETABLE_AUTOFILL :{BLACK}Афтонапълване
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Кола на пътя
@@ -2776,6 +2804,7 @@
STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Списък с избор на МПС-та - натисни върху МПС за информация
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Купи посоченото МПС
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Цена: {CURRENCY}{}Скорост: {VELOCITY}{}Оперативен разход: {CURRENCY}/год{}Вместимост: {CARGO}
+STR_ARTICULATED_RV_CAPACITY :{BLACK}Капацитет: {LTBLUE}
STR_BARE_CARGO :{CARGO}
STR_902C_NAME_ROAD_VEHICLE :{WHITE}Преименувай МПС-то
@@ -2943,6 +2972,7 @@
STR_GO_TO_AIRPORT_HANGAR :Отиди до Хангара на летище {STATION}
SERVICE_AT_AIRPORT_HANGAR :Сервиз в {STATION} хангар
+STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Разписание)
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Катастрофа с Цепелин на {STATION}!
@@ -3310,7 +3340,14 @@
STR_SIGN_NAME :{SIGN}
STR_VEHICLE_NAME :{VEHICLE}
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Името трябва да е уникално
#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Отиди до следващиат знак
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Отиди до предишниат знак
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Фонд
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Перспектива
+STR_BUILD_NEW_INDUSTRY :{BLACK}Построи
--- a/src/lang/catalan.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/catalan.txt Fri Jul 13 09:18:50 2007 +0000
@@ -215,7 +215,7 @@
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Vehicles de carretera
STR_00F7_SHIPS :{BLACK}{TINYFONT}Vaixells
-STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaus
+STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Avions
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rutes de Transport
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carbó
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Central Tèrmica
@@ -443,7 +443,7 @@
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Mostra la llista de trens de l'empresa
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Mostra la llista de vehicles de l'empresa
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Mostra la llista de vaixells de l'empresa
-STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Mostra la llista d'aeronaus de l'empresa
+STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Mostra la llista d'avions de l'empresa
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Apropar-se
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Allunyar-se
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Construeix vies
@@ -481,7 +481,7 @@
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Vehicle
-STR_019D_AIRCRAFT :Aeronau
+STR_019D_AIRCRAFT :Avió
STR_019E_SHIP :Vaixell
STR_019F_TRAIN :Tren
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} s'està envellint
@@ -852,14 +852,14 @@
STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE :{BLACK}Selecciona l'estil de paisatge 'subàrtic'
STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE :{BLACK}Selecciona l'estil de paisatge 'subtropical'
STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Selecciona l'estil de paisatge 'toyland'
-STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Patrocina la construcció d'una nova indústria
+STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financia la construcció d'una nova indústria
############ range for menu starts
STR_INDUSTRY_DIR :Directori d'indústries
-STR_0313_FUND_NEW_INDUSTRY :Patrocina una nova indústria
+STR_0313_FUND_NEW_INDUSTRY :Financia una nova indústria
############ range ends here
-STR_0314_FUND_NEW_INDUSTRY :{WHITE}Patrocina una nova indústria
+STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financia una nova indústria
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...només es pot construir en poblacions
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...només es pot construir en àrees de selva tropical
@@ -1001,16 +1001,16 @@
STR_SHIP_HAS_VOID_ORDER :{WHITE}Vaixell {COMMA} té una ordre buida
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}Vaixell {COMMA} té ordres duplicades
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Vaixell {COMMA} té una estació incorrecta en les ordres
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Aeronau {COMMA} té massa poques ordres a la planificació
-STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Aeronau {COMMA} té una ordre buida
-STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Aeronau {COMMA} has duplicate orders
-STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Aeronau {COMMA} té una estació incorrecta en les ordres
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}L'avió {COMMA} té massa poques ordres a la planificació
+STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}L'avió {COMMA} té una ordre buida
+STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}L'avió {COMMA} té ordres duplicades
+STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}L'avió {COMMA} té una estació incorrecta a les ordres
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Autorenovació ha fallat al tren {COMMA} (límit de diners)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Autorenovació ha fallat a l'automòbil {COMMA} (límit de diners)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Autorenovació ha fallat al vaixell {COMMA} (límit de diners)
-STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Autorenovació ha fallat a l'aeronau {COMMA} (límit de diners)
+STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}L'autorenovació ha fallat en l'avió {COMMA} (límit de diners)
STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}El tren {COMMA} és massa llarg després del canvi
STR_CONFIG_PATCHES :{BLACK}Configura Pedaços
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Entrega càrreges en una estació només quan ho demana: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permet construir ponts molt llargs: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Permet ordres anar a cotxeres: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Mètode de construcció de la indústria primària manual: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :cap
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :com les altres indústries
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospeccionant
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Permet vàries indústries similars per població: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Permet construir a prop indústries del mateix tipus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Mostra sempre la data llarga a la barra d'estat: {ORANGE}{STRING}
@@ -1117,12 +1121,12 @@
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Mostra les eines de construcció quan no hi hagi disponibles vehicles adequats: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max trens per jugador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Max automòbils per jugador: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Max aeronaus per jugador: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Max avions per jugador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Max vaixells per jugador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Desactiva trens per l'ordinador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Desactiva automòbils per a l'ordinador: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Desactiva aeronaus per l'ordinador: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Desactiva els avions per l'ordinador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Desactiva vaixells per l'ordinador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Activa nova IA (alfa): {ORANGE}{STRING}
@@ -1132,8 +1136,8 @@
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Interval de manteniment per defecte dels trens: {ORANGE}desactivat
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Interval de manteniment per defecte dels automòbils: {ORANGE}{STRING} dies/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Interval de manteniment per defecte dels automòbils: {ORANGE}desactivat
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}{STRING} dies/%
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}desactivat
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Interval de manteniment per defecte dels avions: {ORANGE}{STRING} dies/%
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Interval de manteniment per defecte dels avions: {ORANGE}desactivat
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}{STRING} dies/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}desactivat
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Desactiva manteniment quan les avaries s'estableixen a cap: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Estàs segur que vols crear un paisatge aleatori?
STR_MANY_RANDOM_TOWNS :{BLACK}Moltes poblacions aleatòries
STR_RANDOM_TOWNS_TIP :{BLACK}Omple el mapa amb poblacions situades aleatòriament
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Moltes indústries aleatòries
+STR_MANY_RANDOM_INDUSTRIES :Moltes indústries aleatòries
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Omple el mapa amb indústries situades aleatòriament
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}No es poden generar indústries...
@@ -1281,21 +1285,21 @@
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Construeix Mina de Carbó
STR_CONSTRUCT_FOREST_TIP :{BLACK}Planta un Bosc
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Construeix una Plataforma Petrolífera
-STR_CONSTRUCT_FARM_TIP :{BLACK}Funda Granja
+STR_CONSTRUCT_FARM_TIP :{BLACK}Financia Granja
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Construeix una Mina de Coure
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Perfora per buscar Petroli
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Construeix una Mina d'Or
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Construeix una Mina de Diamants
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Construeix una Mina de Ferro
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Funda Plantació de Fruita
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Funda Plantació de Cautxú
-STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Funda Surtidor d'Aigua
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Financia Plantació de Fruita
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Financia Plantació de Cautxú
+STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Financia Surtidor d'Aigua
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Planta un Bosc de Cotó de Sucre
-STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Funda Granja de Piles
+STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Financia Granja de Piles
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Perfora per buscar Cola
-STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Funda Fonts de Plàstic
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Financia Fonts de Plàstic
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Construeix un Generador de Bombolles
-STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Funda Cantera de Caramel
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Financia Cantera de Caramel
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Construeix una Mina de Sucre
STR_INDUSTRYDIR_CAPTION :{WHITE}Indústries
@@ -1758,17 +1762,17 @@
STR_2046_SMALL_ADVERTISING_CAMPAIGN :Petita campanya de publicitat
STR_2047_MEDIUM_ADVERTISING_CAMPAIGN :Mitjana campanya de publicitat
STR_2048_LARGE_ADVERTISING_CAMPAIGN :Gran campanya de publicitat
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION :Patrocina la reconstrucció dels carrers de la població
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION :Financia la reconstrucció dels carrers de la població
STR_204A_BUILD_STATUE_OF_COMPANY :Construeix una estàtua del propietari de l'empresa
-STR_204B_FUND_NEW_BUILDINGS :Patrocina nous edificis
+STR_204B_FUND_NEW_BUILDINGS :Financia nous edificis
STR_204C_BUY_EXCLUSIVE_TRANSPORT :Compra els drets de transport en exclusiva
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY :Suborna les autoritats locals
STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Inicia una petita campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{} Cost: {CURRENCY}
STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Inicia una mitjana campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{} Cost: {CURRENCY}
STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Inicia una gran campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{} Cost: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Patrocina la reconstrucció de la xarxa local de carrers. Causa una notable distorsió del trànsit durant 6 mesos.{} Cost: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Financia la reconstrucció de la xarxa local de carrers. Dificulta notablement el trànsit durant 6 mesos.{} Cost: {CURRENCY}
STR_2051_BUILD_A_STATUE_IN_HONOR :{WHITE}{STRING}{}{YELLOW} Construeix una estatua en honor a la teva empresa.{} Cost: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Patrocina la construcció de nous edificis comercials en la població.{} Cost: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Financia la construcció de nous edificis comercials a la població.{} Cost: {CURRENCY}
STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Compra per 1 any els drets exclusius de transport en la població. La autoritat local només permetrà utilitzar les instal·lacions de la teva empresa de transports als passatgers i les mercaderies.{} Cost: {CURRENCY}
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Suborna les autoritats locals per incrementar el teu rati, a risc de greus penalitzacions si et pesquen!!.{} Cost: {CURRENCY}
STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}Caos de trànsit en {TOWN}!{}{}El programa de rehabilitació dels carrers patrocinat per {COMPANY} porta 6 mesos de misèria als motoristes!
@@ -1874,7 +1878,7 @@
STR_305C_0 :{STATION} {STATIONFEATURES}
STR_STATION_SIGN_TINY :{TINYFONT}{STATION}
STR_305E_RAILROAD_STATION :Estació de Ferrocarril
-STR_305F_AIRCRAFT_HANGAR :Hangar d'Aeronaus
+STR_305F_AIRCRAFT_HANGAR :Hangar d'Avions
STR_3060_AIRPORT :Aeroport
STR_3061_TRUCK_LOADING_AREA :Àrea de càrrega de camions
STR_3062_BUS_STATION :Parada d'autobús
@@ -1976,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}Necessita: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Càrrega en espera de ser processada:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produeix: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produeix: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Producció del darrer mes:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centra la pantalla principal al lloc de l'indústria
@@ -2055,7 +2066,7 @@
STR_SV_TRAIN_NAME :Tren {COMMA}
STR_SV_ROADVEH_NAME :Vehicle {COMMA}
STR_SV_SHIP_NAME :Vaixell {COMMA}
-STR_SV_AIRCRAFT_NAME :Aeronau {COMMA}
+STR_SV_AIRCRAFT_NAME :Avió {COMMA}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} Nort
@@ -2189,12 +2200,12 @@
STR_7012_NEW_VEHICLES :{GOLD}Nous Vehicles
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Desp. de Circ. de Trens
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Desp. de Circ. de Vehicles
-STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Desp. de Circ. d'Aeronaus
+STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Desp. de Circ. d'Avions
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Desp. de Circ. de Vaixells
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Manteniment de Propietats
STR_7018_TRAIN_INCOME :{GOLD}Ingressos de Tren
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Ingressos de Vehicles
-STR_701A_AIRCRAFT_INCOME :{GOLD}Ingressos d'Aeronaus
+STR_701A_AIRCRAFT_INCOME :{GOLD}Ingressos d'Avions
STR_701B_SHIP_INCOME :{GOLD}Ingressos de Vaixells
STR_701C_LOAN_INTEREST :{GOLD}Interessos del Prèstec
STR_701D_OTHER :{GOLD}Altres
@@ -2230,7 +2241,7 @@
STR_7039_VEHICLES :{GOLD}Vehicles:
STR_TRAINS :{WHITE}{COMMA} tren{P "" s}
STR_ROAD_VEHICLES :{WHITE}{COMMA} automòbil{P "" s}
-STR_AIRCRAFT :{WHITE}{COMMA} aeronau{P "" s}
+STR_AIRCRAFT :{WHITE}{COMMA} avió{P "" ns}
STR_SHIPS :{WHITE}{COMMA} vaixell{P "" s}
STR_7042_NONE :{WHITE}Cap
STR_7043_FACE_SELECTION :{WHITE}Selecció de cares
@@ -2593,7 +2604,7 @@
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Acabem de dissenyar el nou {STRING} - estàs interessat en fer ús exclusiu d'aquest vehicle durant un any, per veure com va, abans del seu llançament mundial ?
STR_8102_RAILROAD_LOCOMOTIVE :locomotora de tren
STR_8103_ROAD_VEHICLE :automòbil
-STR_8104_AIRCRAFT :aeronau
+STR_8104_AIRCRAFT :avió
STR_8105_SHIP :vaixell
STR_8106_MONORAIL_LOCOMOTIVE :locomotora de monorail
STR_8107_MAGLEV_LOCOMOTIVE :locomotora de maglev
@@ -2754,7 +2765,7 @@
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fer que l'ordre marcada forci al vehicle a volcar la càrrega
STR_886F_TRANSFER :{BLACK}Transf.
STR_CLEAR_TIME :{BLACK}Esborra Temps
-STR_RESET_LATENESS :{BLACK}Reseteja el comptador de retrassos
+STR_RESET_LATENESS :{BLACK}Reset. comptador de retràs
STR_TRAIN_STOPPING :{RED}Parant
STR_TRAIN_STOPPING_VEL :{RED}Parant, a {VELOCITY}
@@ -2920,15 +2931,15 @@
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Aeroports
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Aquí no es pot construir un aeroport...
-STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar d'Aeronaus
-STR_A003_NEW_AIRCRAFT :{BLACK}Nova Aeronau
-STR_CLONE_AIRCRAFT :{BLACK}Clona Aeronau
-STR_CLONE_AIRCRAFT_INFO :{BLACK}Fa una còpia de l'aeronau. Control-Clic compartirà les ordres
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Fa una còpia de l'aeronau. Prem aquest botó i després en una aeronau dins o fora l'hangar. Control-Clic compartirà les ordres
-STR_A005_NEW_AIRCRAFT :{WHITE}Nova Aeronau
-STR_A006_BUILD_AIRCRAFT :{BLACK}Construeix Aeronau
-STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}No es pot construir l'aeronau...
-STR_A009_AIRCRAFT :{WHITE}{COMPANY} - {COMMA} Aeronaus
+STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar d'Avions
+STR_A003_NEW_AIRCRAFT :{BLACK}Nou Avió
+STR_CLONE_AIRCRAFT :{BLACK}Clona Avió
+STR_CLONE_AIRCRAFT_INFO :{BLACK}Fa una còpia de l'avió. Control-Clic compartirà les ordres
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Fa una còpia de l'avió. Prem aquest botó i després en un avió dins o fora l'hangar. Control-Clic compartirà les ordres
+STR_A005_NEW_AIRCRAFT :{WHITE}Nou Avió
+STR_A006_BUILD_AIRCRAFT :{BLACK}Construeix Avió
+STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}No es pot construir l'avió...
+STR_A009_AIRCRAFT :{WHITE}{COMPANY} - {COMMA} Avions
STR_A00A :{WHITE}{VEHICLE}
STR_A00B_ORDERS :{WHITE}{VEHICLE} (Ordres)
STR_A00C_DETAILS :{WHITE}{VEHICLE} (Detalls)
@@ -2937,55 +2948,55 @@
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Benefici enguany: {LTBLUE}{CURRENCY} (darrer any: {CURRENCY})
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Rendibilitat: {LTBLUE}{COMMA}% {BLACK}Avaries des de l'últim manteniment: {LTBLUE}{COMMA}
STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construït: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
-STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}No es pot enviar l'aeronau a l'hangar...
+STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}No es pot enviar l'avió a l'hangar...
STR_HEADING_FOR_HANGAR :{ORANGE}Cap a l'hangar de {STATION}.
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Cap a l'hangar de {STATION}, a {VELOCITY}
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Revisió a l'hangar de {STATION}
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Revisió a l'hangar de {STATION}, {VELOCITY}
-STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}L' aeronau {COMMA} esperant a l'hangar
-STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronau en el camí
-STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}No es pot parar/arrencar l'aeronau...
-STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aeronau en vol
+STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}L'avió {COMMA} està esperant a l'hangar
+STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Avió al camí
+STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}No es pot parar/arrencar l'avió...
+STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}L'avió està volant
STR_A019_CAPACITY :{BLACK}Capacitat: {LTBLUE}{CARGO}, {CARGO}
STR_A01A_CAPACITY :{BLACK}Capacitat: {LTBLUE}{CARGO}
-STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}L' aeronau s'ha de parar a l'hangar
-STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}No es pot vendre l' aeronau...
+STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}L'avió s'ha de parar a l'hangar
+STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}No es pot vendre l'avió...
STR_A01D_AIRPORT_CONSTRUCTION :Construcció d'Aeroport
STR_A01E_BUILD_AIRPORT :{BLACK}Construeix un aeroport
-STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronau - clica en l'aeronau per informació
-STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construeix noves aeronaus (necessites un aeroport amb hangar)
-STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronau - clica en l' aeronau per informació
-STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construeix noves aeronaus
-STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrossega l'aeronau fins aquí per vendre-la
+STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avió - clica sobre l'avió per informació
+STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construeix nous avions (necessites un aeroport amb hangar)
+STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avió - clica sobre l'avió per informació
+STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construeix nous avions
+STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrossega l'avió fins aquí per vendre'l
STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}Centra la pantalla principal en la situació de l'hangar
-STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Llista de selecció d'Aeronaus - clica en una aeronau per informació
-STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construeix l'aeronau seleccionada
-STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Accions sobre l'aeronau actual - clica aquí per parar/arrencar l'aeronau
-STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Mostra les ordres de l'aeronau
-STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra la pantalla principal a la situació de l'aeronau
-STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia aeronau a l'hangar
-STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra els detalls de l'aeronau
+STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Llista de selecció d'Avions - clica sobre l'avió per informació
+STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construeix l'avió seleccionat
+STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Accions sobre l'avió actual - clica aquí per parar/arrencar l'avió
+STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Mostra les ordres de l'avió
+STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra la pantalla principal a la situació de l'avió
+STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia avió a l'hangar
+STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra els detalls de l'avió
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Cost: {CURRENCY} Max. Velocitat: {VELOCITY}{}Capacitat: {COMMA} passatgers, {COMMA} sacs de correu{}Cost de Circulació: {CURRENCY}/any
-STR_A030_NAME_AIRCRAFT :{WHITE}Anomena aeronau
-STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No es pot anomenar aeronaus...
-STR_A032_NAME_AIRCRAFT :{BLACK}Anomena aeronau
-STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}La primera aeronau arriba a {STATION}!
+STR_A030_NAME_AIRCRAFT :{WHITE}Anomena avió
+STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No es pot anomenar l'avió...
+STR_A032_NAME_AIRCRAFT :{BLACK}Anomena avió
+STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}El primer avió arriba a {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident d'avió!{}{COMMA} moren en una bola de foc a {STATION}
-STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident d'aviació!{}Aeronau sense combustible, {COMMA} morts en una bola de foc!
+STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident d'aviació!{}L'avió s'ha quedat sense combustible, {COMMA} morts en l'accident!
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Reanomena
-STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Reanomena tipus d'aeronau
-STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Reanomena tipus d'aeronau
-STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}No es pot reanomenar tipus d'aeronau...
-STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Remodela aeronaus per transportar diferent tipus de càrrega
+STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Reanomena tipus d'avió
+STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Reanomena tipus d'avió
+STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}No es pot reanomenar el tipus d'avió...
+STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Remodela avions per poder transportar diferents tipus de càrrega
STR_A03C_REFIT :{WHITE}{VEHICLE} (Remodela)
-STR_A03D_REFIT_AIRCRAFT :{BLACK}Remodela aeronau
+STR_A03D_REFIT_AIRCRAFT :{BLACK}Remodela avió
STR_A03E_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona tipus de càrrega a transportar
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Remodela aeronau per transportar el tipus de càrrega seleccionat
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Remodela l'avió per poder transportar el tipus de càrrega seleccionat
STR_A040_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Selecciona el tipus de càrrega a transportar:
STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova capacitat: {GOLD}{STRING}{}{BLACK}Cost de la remodelació: {GOLD}{CURRENCY}
-STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}No es pot remodelar l'aeronau...
+STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}No es pot remodelar l'avió...
STR_GO_TO_AIRPORT_HANGAR :Ves a l'hangar de {STATION}.
SERVICE_AT_AIRPORT_HANGAR :Manteniment en l'hangar de {STATION}.
@@ -3022,7 +3033,7 @@
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Prèstec:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Quantitat de vehicles. Inclou els automòbils, trens, vaixells i aeronaus.
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Quantitat de vehicles. Inclou els automòbils, trens, vaixells i avions.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Quantitat de parts d'estacions. Cada part d'una estació es compta (ex. estació de tren, parada d'autobus, aeroport), encara que estigui connectada a una altra estació.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}El benefici del vehicle amb els menors ingressos (de tots els vehicles més antics de 2 anys)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Quantitat de diners fets durant el mes amb el mínim benefici dels darrers 12 trimestres
@@ -3102,13 +3113,13 @@
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA} Trens
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA} Vehicles
-STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA} Aeronaus
+STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA} Avions
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA} Vaixells
-STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tots els trens que tinguin aquesta estació al seu itinerari
-STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tots els vehicles que tinguin aquesta estació al seu itinerari
-STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra totes les aeronaus que tinguin aquest aeroport al seu itinerari
-STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tots els vaixells que tinguin aquest port al seu itinerari
+STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tots els trens que tinguin aquesta estació en el seu itinerari
+STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tots els vehicles que tinguin aquesta estació en el seu itinerari
+STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra tots els avions que tinguin aquest aeroport en el seu itinerari
+STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tots els vaixells que tinguin aquest port en el seu itinerari
STR_VEH_WITH_SHARED_ORDERS_LIST :{WHITE}Ordres compartides de {COMMA} Vehicle{P "" s}
STR_VEH_WITH_SHARED_ORDERS_LIST_TIP :{BLACK}Mostra tots els vehicles que tenen les mateixes ordres
@@ -3125,7 +3136,7 @@
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Treure una llista de tots els trens amb aquesta cotxera en les seves ordres
STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}Treure una llista de tots els vehicles amb aquesta cotxera en les seves ordres
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Treure una llista de tots els vaixells amb aquesta drassana en les seves ordres
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Treu una llista de tots les aeronaus amb algun hangar en aquest aeroport en les seves ordres
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Treu una llista de tots els avions amb algun hangar d'aquest aeroport en les seves ordres
STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Autosubstitueix tots els trens de la cotxera
STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Autosubstitueix tots els vehicles de la cotxera
@@ -3266,10 +3277,10 @@
########### String for new airports
STR_SMALL_AIRPORT :{BLACK}Petit
-STR_CITY_AIRPORT :{BLACK}Ciutadà
+STR_CITY_AIRPORT :{BLACK}de Ciutat
STR_METRO_AIRPORT :{BLACK}Metropolità
STR_INTERNATIONAL_AIRPORT :{BLACK}Internacional
-STR_COMMUTER_AIRPORT :{BLACK}Viatjer
+STR_COMMUTER_AIRPORT :{BLACK}Regional
STR_INTERCONTINENTAL_AIRPORT :{BLACK}Intercontinental
STR_HELIPORT :{BLACK}Heliport
STR_HELIDEPOT :{BLACK}Helihangar
@@ -3321,7 +3332,7 @@
STR_GROUP_ALL_TRAINS :Tots els trens
STR_GROUP_ALL_ROADS :Tots els vehicles
STR_GROUP_ALL_SHIPS :Tots els vaixells
-STR_GROUP_ALL_AIRCRAFTS :Totes les aeronaus
+STR_GROUP_ALL_AIRCRAFTS :Tots els avions
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
STR_GROUP_ADD_SHARED_VEHICLE :Afegeix vehicles compartits
STR_GROUP_REMOVE_ALL_VEHICLES :Treu tots els vehicles
@@ -3329,7 +3340,7 @@
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tren{P "" s}
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Vehicle{P "" s}
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Vaixell{P "" s}
-STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronau
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Avió
STR_GROUP_RENAME_CAPTION :{BLACK}Canvia de nom el grup
STR_GROUP_REPLACE_CAPTION :{WHITE}Substitueix els Vehicles de "{GROUP}"
@@ -3365,3 +3376,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ves a la senyal anterior
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Financia
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospecciona
+STR_BUILD_NEW_INDUSTRY :{BLACK}Construeix
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolleix el tipus d'indústria adequada d'aquesta llista
--- a/src/lang/croatian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/croatian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1236,7 +1236,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Jeste li sigurni da želite napraviti nasumični krajolik?
STR_MANY_RANDOM_TOWNS :{BLACK}Mnogo nasumičnih gradova
STR_RANDOM_TOWNS_TIP :{BLACK}Popuni kartu nasumce smještenim gradovima
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mnoge nasumične industrije
+STR_MANY_RANDOM_INDUSTRIES :Mnoge nasumične industrije
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Popuni kartu nasumce smještenim industrijama
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne možeš generirati gospodarstva...
--- a/src/lang/czech.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/czech.txt Fri Jul 13 09:18:50 2007 +0000
@@ -836,6 +836,7 @@
STR_02C5_DIFFICULTY_SETTINGS :Nastavení obtížnosti
STR_02C7_CONFIG_PATCHES :Nastavení patchů
STR_NEWGRF_SETTINGS :Nastavení newgrf
+STR_TRANSPARENCY_OPTIONS :Nastavení průhlednosti
STR_GAMEOPTMENU_0A :
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Zobrazení jmen měst
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Zobrazení jmen stanic
@@ -863,7 +864,6 @@
STR_02DE_MAP_OF_WORLD :Mapa světa
STR_EXTRA_VIEW_PORT :Další pohled
STR_SIGN_LIST :Seznam popisků
-STR_TRANSPARENCY_OPTIONS :Nastavení průhlednosti
STR_02DF_TOWN_DIRECTORY :Seznam měst
STR_TOWN_POPULATION :{BLACK}Populace světa: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohled {COMMA}
@@ -1092,6 +1092,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Vozit zboží do stanice jen když je poptávka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Povolit stavbu velmi dlouhých mostů: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Povolit příkaz 'jeď do depa': {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Způsob manuálního budování průmyslu těžby surovin: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :žádný
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :jako u ostatniho průmyslu
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :průzkum
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Povolit více stejného průmyslu kolem jednoho města: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Průmysl stejného druhu může být budován poblíž sebe: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Ukazovat dlouhé datum ve stavové liště: {ORANGE}{STRING}
@@ -1160,7 +1164,19 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Rychlost skrolovacího kolečka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Zastavit automaticky hru při začínání nové hry: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Používat pokročilý seznam vozidel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Používat ukazatele naložení: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Povolit jizdní řády vozidel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Zobrazit jízdní řády v cyklech místo ve dnech: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Standardní druh kolejí (v nové hře/po načtení hry): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Normální koleje
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Elektrifikované koleje
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Monorail
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Maglev
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :První dostupný
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Nejlepší dostupný
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Nejpoužívanější
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Zobrazit nástroje pro budování i bez dostupných vozidel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maximum vlaků na hráče: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Maximum silničních vozidel na hráče: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Maximum letadel na hráče: {ORANGE}{STRING}
@@ -1283,7 +1299,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Opravdu chceš vytvořit nový náhodný terén?
STR_MANY_RANDOM_TOWNS :{BLACK}Hodně náhodných měst
STR_RANDOM_TOWNS_TIP :{BLACK}Pokryje krajinu mnoha náhodnými městy
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Hodně náhodného průmyslu
+STR_MANY_RANDOM_INDUSTRIES :Hodně náhodného průmyslu
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryje krajinu náhodným průmyslem
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemůžu generovat průmysl...
@@ -1948,6 +1964,7 @@
STR_3805_COAST_OR_RIVERBANK :Pobřeží nebo břeh
STR_3806_SHIP_DEPOT :Lodní depo
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}... nemohu stavět na vodě
+STR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Nejprve je třeba zničit průplav
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Uložit hru
@@ -1960,6 +1977,11 @@
STR_4007_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo{}{STRING}
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Nemohu smazat soubor
STR_4009_GAME_LOAD_FAILED :{WHITE}Nemohu otevřít hru{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interní chyba: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškozená hra - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra je z novější verze
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Soubor je nečitelný
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Do souboru nelze zapisovat
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Seznam jednotek, adresářů a uložených her
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Zvolené jméno uložené hry
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Smazat označenou uloženou hru
@@ -2016,6 +2038,9 @@
STR_4829_REQUIRES :{BLACK}Vyžaduje: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Náklad čekající na zpracování:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produkce minulý měsíc:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA} % přepraveno)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Nastavit pohled na průmysl
@@ -2130,8 +2155,7 @@
STR_SV_STNAME_LOWER :dolní {STRING}
STR_SV_STNAME_HELIPORT :{STRING} heliport
STR_SV_STNAME_FOREST :{STRING} les
-
-
+STR_SV_STNAME_FALLBACK :{STRING} Stanice #{NUM}
############ end of savegame specific region!
@@ -2669,6 +2693,13 @@
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Jet bez zastavení do železničního depa {TOWN}
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Údržba bez zastavení v železničním depu {TOWN}
+STR_TIMETABLE_GO_TO :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Výlet (mimo jízdní řád)
+STR_TIMETABLE_TRAVEL_FOR :Výlet na {STRING}
+STR_TIMETABLE_STAY_FOR :a zůstat {STRING}
+STR_TIMETABLE_DAYS :{COMMA} d{P en ny nů}
+STR_TIMETABLE_TICKS :{COMMA} cykl{P us y ů}
+
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Jedu do železničního depa {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Jedu do železničního depa {TOWN}, {VELOCITY}
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Údržba v železničním depu {TOWN}
@@ -2710,6 +2741,8 @@
STR_REFIT :{BLACK}Přestavět
STR_REFIT_TIP :{BLACK}Vyber, na který druh nákladu přestavět. CTRL-klik odstraní přestavbu z příkazu.
STR_REFIT_ORDER :(Přestavět na {STRING})
+STR_TIMETABLE_VIEW :{BLACK}Jízdní řád
+STR_TIMETABLE_VIEW_TOOLTIP :{BLACK}Přepnout na jízdní řád
STR_8829_ORDERS :{WHITE}{VEHICLE} (Příkazy)
STR_882A_END_OF_ORDERS :{SETX 10}- - Konec příkazů - -
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
@@ -2766,6 +2799,10 @@
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Vložit nový příkaz před označený příkaz nebo na konec seznamu
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Označený příkaz provádět do plného naložení
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Označený příkaz vyloží vozidlo
+STR_TIMETABLE_TOOLTIP :{BLACK}Jízdní řád - příkaz vybrat kliknutím.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Změnit čas pro splnění jízdního příkazu
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Zrušit čas pro splnění jízdního příkazu
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Smazat ukazatel zpoždění, takže vozidlo pojede na čas
STR_SERVICE_HINT :{BLACK}Přeskoč tento cíl, pokud není potřeba pravidelná údržba
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY} Hmotnost: {WEIGHT_S}{}Rychlost: {VELOCITY} Výkon: {POWER}{}Cena provozu: {CURRENCY} ročně{}Kapacita: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Porucha
@@ -2787,6 +2824,8 @@
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Nemohu přejmenovat typ železničního vozidla...
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}U označeného příkazu vozidlo musí vyložit náklad
STR_886F_TRANSFER :{BLACK}Překládka
+STR_CLEAR_TIME :{BLACK}Smazat čas
+STR_RESET_LATENESS :{BLACK}Smazat ukazatel zpoždění
STR_TRAIN_STOPPING :{RED}Zastavuje
STR_TRAIN_STOPPING_VEL :{RED}Zastavuje, {VELOCITY}
@@ -2798,6 +2837,18 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G á ý é} {STRING} k dispozici! - {ENGINE}
+STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Tomuto vozidlu nejde nastavit jízdní řád...
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozidla mohou čekat jen ve stanicích.
+STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Toto vozidlo v této stanici nestaví.
+STR_TIMETABLE_CHANGE_TIME :{BLACK}Změnit čas
+STR_TIMETABLE_STATUS_ON_TIME :Vozidlo jede na čas
+STR_TIMETABLE_STATUS_LATE :Vozidlo má {STRING} zpoždění
+STR_TIMETABLE_STATUS_EARLY :Vozidlo jede {STRING} napřed
+STR_TIMETABLE_TOTAL_TIME :Tento jízdní řád bude trvat {STRING}
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Tento jízdní řád bude trvat nejméně {STRING} (vozidla mimo jízdní řád)
+STR_TIMETABLE_AUTOFILL :{BLACK}Vyplnit automaticky
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vyplnit jízdní řád automaticky s hodnotami z první jízdy
+
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Silniční vozidlo v cestě
STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} silniční{P "" "" ch} vozid{P lo la el}
@@ -3009,6 +3060,8 @@
STR_GO_TO_AIRPORT_HANGAR :Poslat do hangáru {STATION}
SERVICE_AT_AIRPORT_HANGAR :Údržba v hangáru {STATION}
+STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Jízdní řád)
+
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Zeppelin se zřítil do {STATION}!
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Silniční vozidlo bylo zničeno při srážce s UFO!
@@ -3324,6 +3377,14 @@
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, kontrolních bodů a vedení
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Změna průhlednosti mostů
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti)
+STR_TRANSPARENT_LOADING_DESC :{BLACK}Přepnout průhlednost pro ukazatele naložení
+
+STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_UP_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW}
+STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UPARROW}{DOWNARROW}
##### Mass Order
STR_GROUP_NAME_FORMAT :Skupina {COMMA}
@@ -3361,4 +3422,17 @@
STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
+STR_COMPANY_NAME :{COMPANY}
+STR_ENGINE_NAME :{ENGINE}
+STR_GROUP_NAME :{GROUP}
+STR_PLAYER_NAME :{PLAYERNAME}
+STR_SIGN_NAME :{SIGN}
+STR_VEHICLE_NAME :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Jméno musí být unikátní
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Na další signál
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Na předešlý signál
+
########
--- a/src/lang/danish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/danish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aflever kun last til en station hvis der er en forespørgsel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillad bygning af meget lange broer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Tillad gå til depot ordrer: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Metode til manuel opførsel af primær industri: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ingen
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre industrier
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :efterforskning
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Tillad flere af samme slags industri per by: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Tillad flere af samme type industri tæt på hinanden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Vis altid lang dato i statusbaren: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Er du sikker på, at du vil lave et tilfældigt landskab?
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilfældige byer
STR_RANDOM_TOWNS_TIP :{BLACK}Dæk kortet med tilfældigt placerede byer
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfældige industrier
+STR_MANY_RANDOM_INDUSTRIES :Mange tilfældige industrier
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Dæk kortet med tilfældigt placerede industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke lave industrier...
@@ -1976,6 +1980,9 @@
STR_4829_REQUIRES :{BLACK}Kræver: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Fragt der venter på forarbejdning:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produktion sidste måned:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporteret)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrer skærmen over industriens lokalitet
--- a/src/lang/dutch.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/dutch.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1241,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Weet je zeker dat je een willekeurig landschap wil maken?
STR_MANY_RANDOM_TOWNS :{BLACK}Veel willekeurige steden
STR_RANDOM_TOWNS_TIP :{BLACK}Bedek de kaart met willekeurig geplaatste steden
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Veel willekeurige industrieën
+STR_MANY_RANDOM_INDUSTRIES :Veel willekeurige industrieën
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Bedek de kaart met willekeurig geplaatste industrieën
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan geen industrieën genereren
@@ -1980,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}Vereist: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Vracht klaar om te worden verwerkt:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produceert: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produceert: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Productie vorige maand:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% getransporteerd)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centreer het hoofdbeeld op de locatie van de industrie
@@ -3369,3 +3376,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ga naar vorige bord
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Investeer
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Onderzoek
+STR_BUILD_NEW_INDUSTRY :{BLACK}Bouw
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Kies de aangewezen industrie van de lijst
--- a/src/lang/english.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/english.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1241,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Are you sure you want to create a random landscape?
STR_MANY_RANDOM_TOWNS :{BLACK}Many random towns
STR_RANDOM_TOWNS_TIP :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES :Many random industries
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cover the map with randomly placed industries
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't generate industries...
@@ -1980,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}Requires: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Cargo waiting to be processed:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produces: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produces: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Production last month:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transported)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centre the main view on industry location
@@ -3369,3 +3376,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Go to previous sign
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Fund
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospect
+STR_BUILD_NEW_INDUSTRY :{BLACK}Build
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Choose the appropriate industry from this list
--- a/src/lang/esperanto.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/esperanto.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1224,7 +1224,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ĉu vi certas ke vi volas krei hazardan landaspekton?
STR_MANY_RANDOM_TOWNS :{BLACK}Multaj hazardaj urboj
STR_RANDOM_TOWNS_TIP :{BLACK}Kovru la mapon per hazarde metitajn urbojn
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Multaj hazardaj industrioj
+STR_MANY_RANDOM_INDUSTRIES :Multaj hazardaj industrioj
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Kovru la mapon per hazarde metitajn industriojn
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne povas generi industriojn...
--- a/src/lang/estonian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/estonian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1134,7 +1134,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Vii kaup jaama ainult siis, kui seal on nõudlus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Luba väga pikkade sildade ehitus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Luba 'mine depoosse' käsud: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Põhiline tööstuse rajamise viis: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :pole
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :nagu muud tööstused
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :uurides
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Luba mitu sama liiki tööstust linna kohta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Sama liiki tööstusi saab ehitada üksteise lähedale: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Alati näita olekuribal pikka kuupäeva: {ORANGE}{STRING}
@@ -1206,11 +1209,16 @@
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Kasuta laadimisnäidikuid: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Luba sõiduplaanide määramine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Kasuta sõiduplaanis päevade asemel tikse: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Algne rööbastee liik (mängu alustamisel/laadimisel): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Tavaline rööbastee
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Elektrifitseeritud rööbastee
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Monorelss
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Maglev
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Esimene saadaval
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Viimane saadaval
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Enim kasutatud
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Näita ehitustööriistu isegi siis, kui sobivaid sõidukeid veel pole: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Enim ronge mängija kohta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Enim mootorsõidukeid mängija kohta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Enim õhusõidukeid mängija kohta: {ORANGE}{STRING}
@@ -1333,7 +1341,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Oled sa kindel, et soovid luua suvalist maastikku?
STR_MANY_RANDOM_TOWNS :{BLACK}Palju suvalisi linnu
STR_RANDOM_TOWNS_TIP :{BLACK}Kaardi katmine suvaliselt asetatud linnadega
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Palju suvalisi tööstusi
+STR_MANY_RANDOM_INDUSTRIES :Palju suvalisi tööstusi
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Kata kaart suvaliselt paigutatud tööstustega
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Tööstust ei saa tekitada...
@@ -2072,6 +2080,9 @@
STR_4829_REQUIRES :{BLACK}Vajab: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Käitlust ootav kaup:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Eelmise kuu valmistoodang:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% veetud)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Vaate keskendamine tööstusele
@@ -2869,6 +2880,10 @@
STR_TIMETABLE_STATUS_ON_TIME :See sõiduk peab ajast kinni
STR_TIMETABLE_STATUS_LATE :See sõiduk on {STRING} hiljaks jäämas
STR_TIMETABLE_STATUS_EARLY :See sõiduk on {STRING} varajane
+STR_TIMETABLE_TOTAL_TIME :Selle sõiduplaani täitmine võtab {STRING}
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Selle sõiduplaani täitmine võtab vähemalt {STRING} (kõik ei ole planeeritud)
+STR_TIMETABLE_AUTOFILL :{BLACK}Täida ise
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Täida sõiduplaan ise esmareisi väärtustega
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Mootorsõiduk takistab teed
@@ -3450,7 +3465,10 @@
STR_SIGN_NAME :{SIGN}
STR_VEHICLE_NAME :{VEHICLE}
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Nime ei tohi korduda
#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Mine järgmise märgi juurde
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mine eelmise märgi juurde
########
--- a/src/lang/finnish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/finnish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1221,7 +1221,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Haluatko todella luoda satunnaisen maaston?
STR_MANY_RANDOM_TOWNS :{BLACK}Monta satunnaista kaupunkia
STR_RANDOM_TOWNS_TIP :{BLACK}Peitä kartta satunnaisesti sijoitetuilla kaupungeilla.
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Monta satunnaista teollisuusaluetta
+STR_MANY_RANDOM_INDUSTRIES :Monta satunnaista teollisuusaluetta
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Peitä kartta satunnaisesti sijoitetuilla teollisuusalueilla.
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Teollisuusaluetta ei voi luoda...
--- a/src/lang/french.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/french.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1242,7 +1242,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Etes-vous sûr de vouloir créer un terrain aléatoire?
STR_MANY_RANDOM_TOWNS :{BLACK}Beaucoup de villes au hasard
STR_RANDOM_TOWNS_TIP :{BLACK}Couvrir la carte avec des villes placées aléatoirement
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Beaucoup d'industries au hasard
+STR_MANY_RANDOM_INDUSTRIES :Beaucoup d'industries au hasard
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Couvrir la carte avec des industries placées au hasard
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne peut pas générer les industries...
@@ -1981,6 +1981,13 @@
STR_4829_REQUIRES :{BLACK}Nécessite: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Marchandise en attente d'être utilisée:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produit: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produit: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Production le mois dernier:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporté)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrer la vue sur l'industrie
@@ -3370,3 +3377,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Aller au panneau précédent
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Fonder
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospecter
+STR_BUILD_NEW_INDUSTRY :{BLACK}Construire
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Choisissez l'industrie appropriée dans cette liste
--- a/src/lang/galician.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/galician.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1148,7 +1148,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}¿Estás seguro de querer crear unha paisaxe aleatoria?
STR_MANY_RANDOM_TOWNS :{BLACK}Varias cidades aleatorias
STR_RANDOM_TOWNS_TIP :{BLACK}Cubri-lo mapa con cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Varias industrias aleatorias
+STR_MANY_RANDOM_INDUSTRIES :Varias industrias aleatorias
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non se poden xera-las industrias...
--- a/src/lang/german.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/german.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1035,6 +1035,8 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Liefere Fracht nur, wenn die Station diese annimmt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Erlaube das Bauen von sehr langen Brücken: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Erlaube "Gehe zum Depot"-Aufträge im Fahrplan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :keine
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :wie andere Industrie
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Erlaube mehrere gleichartige Industrien pro Stadt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Gleiche Industrien können nahe beieinander gebaut werden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Lange Datumsanzeige in der Statusleiste (links unten): {ORANGE}{STRING}
@@ -1103,6 +1105,8 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Scrollradgeschwindigkeit auf der Karte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automatische Pause bei Spielstart: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Erweiterte Fahrzeugliste benutzen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Aktiviere Fahrpläne für Fahrzeuge: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Zeige Zeitpläne in Ticks anstatt in Tagen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Standard-Gleistyp (bei Spielbeginn/geladenem Spiel): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :normales Gleis
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :elektrifiziertes Gleis
@@ -1233,7 +1237,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Soll wirklich eine zufällige Landschaft erzeugt werden?
STR_MANY_RANDOM_TOWNS :{BLACK}Viele zufällige Städte
STR_RANDOM_TOWNS_TIP :{BLACK}Bedecke die Karte mit zufällig platzierten Städten
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Viele zufällige Industrien
+STR_MANY_RANDOM_INDUSTRIES :Viele zufällige Industrien
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Bedecke die Karte mit zufällig platzierten Industrien
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann keine Industrie erzeugen...
@@ -1972,6 +1976,8 @@
STR_4829_REQUIRES :{BLACK}Benötigt: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produktion im letzten Monat:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% befördert)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Zentriere die Ansicht auf das Industriegebiet
@@ -2086,6 +2092,7 @@
STR_SV_STNAME_LOWER :Unter-{STRING}
STR_SV_STNAME_HELIPORT :{STRING} Heliport
STR_SV_STNAME_FOREST :{STRING} Wald
+STR_SV_STNAME_FALLBACK :{STRING} Station #{NUM}
############ end of savegame specific region!
@@ -2617,6 +2624,9 @@
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Fahre ohne Halt zu {TOWN} Zugdepot
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Wartung (ohne Halt) bei {TOWN} Zugdepot
+STR_TIMETABLE_GO_TO :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_FOR :Fahre für {STRING}
+STR_TIMETABLE_STAY_FOR :und bleibe für {STRING}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Unterwegs zu {TOWN} Zugdepot
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Unterwegs zu {TOWN} Zugdepot, {VELOCITY}
@@ -3293,6 +3303,11 @@
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Verändere die Transparenz für Bauten wie Leuchttürme und Antennen, evtl. in der Zukunft auch für Sehenswürdigkeiten
STR_TRANSPARENT_LOADING_DESC :{BLACK}Transparenz für Ladestandsanzeige umschalten
+STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_UP_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW}
+STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UPARROW}{DOWNARROW}
##### Mass Order
STR_GROUP_NAME_FORMAT :Gruppe {COMMA}
@@ -3330,5 +3345,17 @@
STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Profit dieses Jahr: {GREEN}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Profit dieses Jahr: {RED}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
+STR_COMPANY_NAME :{COMPANY}
+STR_ENGINE_NAME :{ENGINE}
+STR_GROUP_NAME :{GROUP}
+STR_PLAYER_NAME :{PLAYERNAME}
+STR_SIGN_NAME :{SIGN}
+STR_VEHICLE_NAME :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Name muss eindeutig sein
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Gehe zum nächsten Schild
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gehe zum vorherigen Schild
########
--- a/src/lang/hungarian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/hungarian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1307,7 +1307,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Biztos vagy benne hogy véletlen tájképet akarsz létrehozni?
STR_MANY_RANDOM_TOWNS :{BLACK}Sok véletlen város
STR_RANDOM_TOWNS_TIP :{BLACK}Elhelyez a térképen véletlenszerüen sok várost.
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Sok véletlen gazdasági épület
+STR_MANY_RANDOM_INDUSTRIES :Sok véletlen gazdasági épület
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nem tudok gazdasági épületet generálni...
@@ -2083,6 +2083,13 @@
STR_4829_REQUIRES :{BLACK}Felhasznál: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Feldolgozásra váró szállítmány:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Gyárt: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Gyárt: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Múlt havi termelés:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% elszállítva)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}A fő nézetet a gazdasági épületre állítja
@@ -3472,3 +3479,6 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Előző felirat
########
+
+STR_BUILD_NEW_INDUSTRY :{BLACK}Épít
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Válaszd ki a megfelelő ipartípust a listából
--- a/src/lang/icelandic.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/icelandic.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1192,7 +1192,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ertu viss um að þú viljir búa til handahófskennt land?
STR_MANY_RANDOM_TOWNS :{BLACK}Búa til marga bæi
STR_RANDOM_TOWNS_TIP :{BLACK}Þekja landið með bæjum
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Búa til marga iðnaði
+STR_MANY_RANDOM_INDUSTRIES :Búa til marga iðnaði
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Get ekki búið til iðnað...
--- a/src/lang/italian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/italian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1036,10 +1036,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Scarica le merci in una stazione solo se richieste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Consenti la costruzione di ponti molto lunghi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Consenti gli ordini 'Vai al deposito': {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Costruzione manuale delle industrie primarie: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :non permessa
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :come le altre industrie
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospezione
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Costruzione delle industrie primarie: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Non permessa
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Come le altre industrie
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospezione
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Consenti più industrie dello stesso tipo nella stessa città: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Consenti la costruzione di industrie uguali anche molto vicine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Mostra sempre la data lunga nella barra di stato: {ORANGE}{STRING}
@@ -1243,7 +1243,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Si è sicuri di voler generare un paesaggio casuale?
STR_MANY_RANDOM_TOWNS :{BLACK}Alcune città casuali
STR_RANDOM_TOWNS_TIP :{BLACK}Copre la mappa con città posizionate casualmente
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Alcune industrie casuali
+STR_MANY_RANDOM_INDUSTRIES :Alcune industrie casuali
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Copre la mappa con industrie posizionate casualmente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Impossibile generare industrie...
@@ -1982,13 +1982,20 @@
STR_4829_REQUIRES :{BLACK}Richiede: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Carico in attesa di lavorazione:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produce: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produce: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produzione il mese scorso:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% trasportato)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centra la visuale principale sulla posizione dell'industria
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nuov{G o a} {STRING} in costruzione vicino a {TOWN}!
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nuov{G o a} {STRING} piantat{G o a} vicino a {TOWN}!
STR_482F_COST :{BLACK}Costo: {YELLOW}{CURRENCY}
-STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Impossibile costruire questo tipo di industria qui...
+STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Imposibile costruire l'industria qui...
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...una foresta può essere piantata solo in una zona innevata
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{INDUSTRY} annuncia imminente chiusura!!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Per problemi di rifornimenti {INDUSTRY} annuncia imminente chiusura!
@@ -3371,3 +3378,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Va al cartello precedente
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Finanzia
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Esegui prospezione
+STR_BUILD_NEW_INDUSTRY :{BLACK}Costruisci
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Selezionare l'industria appropriata dalla lista
--- a/src/lang/japanese.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/japanese.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}需要のあるときのみ駅へ貨物を運送:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}超長型橋の建設を許容:{ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}「車庫へ回送」という指令を許容:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}第一次産業の手動の建設方法:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :なし
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :他の産業と同様
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探鉱
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}町内に重複している産業の建設を許容:{ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}同類の産業を近くに建設することを許容:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}常に状況バーに長型日付を表示:{ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}ランダムな地形を作成してもよろしいですか?
STR_MANY_RANDOM_TOWNS :{BLACK}多くのランダムな市町村
STR_RANDOM_TOWNS_TIP :{BLACK}地図にたくさんの市町村を建設します
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}多くのランダムな産業
+STR_MANY_RANDOM_INDUSTRIES :多くのランダムな産業
STR_RANDOM_INDUSTRIES_TIP :{BLACK}地図にたくさんの産業を建設します
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}産業が建設できません...
@@ -1976,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}必要な原料:{YELLOW}{STRING}、{STRING}、{STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}処理待ちの貨物:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}産物:{YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}産物:{YELLOW}{STRING}、{STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}先月の生産量:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK}({COMMA}%運送済み)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}主の画面を産業の場所に移動します
@@ -3365,3 +3376,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}前の標示へ移動
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}出資
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}調査
+STR_BUILD_NEW_INDUSTRY :{BLACK}建設
+STR_INDUSTRY_SELECTION_HINT :{BLACK}適当な産業を選択します
--- a/src/lang/korean.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/korean.txt Fri Jul 13 09:18:50 2007 +0000
@@ -48,7 +48,7 @@
STR_0026_CANDY :사탕
STR_0027_COLA :콜라
STR_0028_COTTON_CANDY :솜사탕
-STR_0029_BUBBLES :풍선껌
+STR_0029_BUBBLES :거품
STR_002A_TOFFEE :태피
STR_002B_BATTERIES :배터리
STR_002C_PLASTIC :플라스틱
@@ -80,7 +80,7 @@
STR_0046_CANDY :사탕
STR_0047_COLA :콜라
STR_0048_COTTON_CANDY :솜사탕
-STR_0049_BUBBLE :풍선껌
+STR_0049_BUBBLE :거품
STR_004A_TOFFEE :태피
STR_004B_BATTERY :배터리
STR_004C_PLASTIC :플라스틱
@@ -112,7 +112,7 @@
STR_QUANTITY_SWEETS :{COMMA} 자루의 사탕
STR_QUANTITY_COLA :{VOLUME}의 콜라
STR_QUANTITY_CANDYFLOSS :{WEIGHT}의 솜사탕
-STR_QUANTITY_BUBBLES :풍선껌 {COMMA} 상자
+STR_QUANTITY_BUBBLES :거품 {COMMA} 상자
STR_QUANTITY_TOFFEE :{WEIGHT}의 태피
STR_QUANTITY_BATTERIES :배터리 {COMMA} 상자
STR_QUANTITY_PLASTIC :{VOLUME}의 플라스틱
@@ -248,7 +248,7 @@
STR_0115_TOY_FACTORY :{BLACK}{TINYFONT}장난감 공장
STR_0116_PLASTIC_FOUNTAINS :{BLACK}{TINYFONT}플라스틱 분수
STR_0117_FIZZY_DRINK_FACTORY :{BLACK}{TINYFONT}탄산음료 공장
-STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}풍선껌 제조 공장
+STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}거품 제조 공장
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}태피 채취장
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}설탕 광산
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}철도역
@@ -460,7 +460,7 @@
STR_018B_CLOSE_WINDOW :{BLACK}창닫기
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}창 제목 - 창을 움직이려면 여기를 드래그하세요
STR_STICKY_BUTTON :{BLACK}이 창을 '모든 창 닫기' 키로 닫을 수 없게 하기
-STR_RESIZE_BUTTON :{BLACK}이 창의 크기를 조절하려면 여기를 클릭하고 드래그하세요.
+STR_RESIZE_BUTTON :{BLACK}이 창의 크기를 조절하려면 여기를 클릭하고 드래그하세요
STR_SAVELOAD_HOME_BUTTON :{BLACK}기본 저장/로드 디렉토리로 이동하려면 여기를 클릭하세요
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}사각형 모양의 땅에 있는 건물과 땅 등을 부숩니다.
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}땅의 모퉁이를 낮춥니다.
@@ -681,7 +681,7 @@
STR_025C_TOY_FACTORY :{BLACK}장난감 공장
STR_025D_PLASTIC_FOUNTAINS :{BLACK}플라스틱 분수
STR_025E_FIZZY_DRINK_FACTORY :{BLACK}탄산음료 공장
-STR_025F_BUBBLE_GENERATOR :{BLACK}풍선껌 제조 공장
+STR_025F_BUBBLE_GENERATOR :{BLACK}거품 제조 공장
STR_0260_TOFFEE_QUARRY :{BLACK}태피 채취장
STR_0261_SUGAR_MINE :{BLACK}설탕 광산
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}석탄 광산 건설
@@ -716,7 +716,7 @@
STR_027F_CONSTRUCT_TOY_FACTORY :{BLACK}장난감 공장 건설
STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS :{BLACK}플라스틱 분수 건설
STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY :{BLACK}탄산음료 공장 건설
-STR_0282_CONSTRUCT_BUBBLE_GENERATOR :{BLACK}풍선껌 제조 공장 건설
+STR_0282_CONSTRUCT_BUBBLE_GENERATOR :{BLACK}거품 제조 공장 건설
STR_0283_CONSTRUCT_TOFFEE_QUARRY :{BLACK}태피 채취장 건설
STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}설탕 광산 건설
STR_0285_CAN_T_BUILD_HERE :{WHITE}{STRING}을/를 여기에 건설할 수 없습니다...
@@ -1035,6 +1035,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}수요가 있을때만 화물을 역에 옮겨놓음 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}매우 긴 교각 건설 허용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}차량기지(차고/격납고)를 경로에 지정하는 것을 허용 : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}수동 기본 산업 건설 방법: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :없음
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :다른 산업시설처럼
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :답사
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}한 도시당 같은 종류의 산업시설의 중복 건설을 허용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}같은 종류의 산업 시설이 가까이에 지어지는 것을 허용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}날짜를 일(日)단위까지 상세하게 표시 : {ORANGE}{STRING}
@@ -1238,7 +1242,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}무작위로 지형을 생성하시겠습니까?
STR_MANY_RANDOM_TOWNS :{BLACK}무작위 도시 건설
STR_RANDOM_TOWNS_TIP :{BLACK}무작위로 도시를 건설합니다.
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}무작위 산업시설 건설
+STR_MANY_RANDOM_INDUSTRIES :무작위 산업시설 건설
STR_RANDOM_INDUSTRIES_TIP :{BLACK}무작위로 산업시설을 건설합니다.
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}산업시설을 생성할 수 없습니다...
@@ -1295,7 +1299,7 @@
STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}배터리 농장에 투자합니다.
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}콜라 우물을 팝니다.
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}플라스틱 분수에 투자합니다.
-STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}풍선껌 제조 공장을 건설합니다.
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}거품 제조 공장을 건설합니다.
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}태피 채취장에 투자합니다.
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}설탕 광산을 건설합니다.
@@ -1730,7 +1734,7 @@
STR_2028_BY :{YELLOW} ({DATE_SHORT}까지)
STR_202A_NONE :{ORANGE}없음
STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}이미 지급된 보조금:
-STR_202C_FROM_TO :{ORANGE}{STRING}에서 {STATION}까지 {STATION}{YELLOW} ({COMPANY}
+STR_202C_FROM_TO :{ORANGE}{1:STATION}에서 {2:STATION}까지 {0:STRING} 수송{YELLOW} ({3:COMPANY}
STR_202D_UNTIL :{YELLOW}, {DATE_SHORT}까지)
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}보조금 제공 계약 파기:{}{}{0:STRING}에서 {1:STRING}까지의 {2:STRING} 수송은 더이상 보조금을 지급하지 않습니다.
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}보조금 제공 철회:{}{}{1:STATION}에서 {2:STATION}까지의 {0:STRING} 수송은 더이상 보조금을 지급하지 않습니다.
@@ -1967,7 +1971,7 @@
STR_4821_TOY_FACTORY :장난감 공장
STR_4822_PLASTIC_FOUNTAINS :플라스틱 분수
STR_4823_FIZZY_DRINK_FACTORY :탄산음료 공장
-STR_4824_BUBBLE_GENERATOR :풍선껌 제조 공장
+STR_4824_BUBBLE_GENERATOR :거품 제조 공장
STR_4825_TOFFEE_QUARRY :태피 채취장
STR_4826_SUGAR_MINE :설탕 광산
@@ -1977,6 +1981,13 @@
STR_4829_REQUIRES :{BLACK}필요함: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}처리될 화물 대기:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}생산: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}생산: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}지난달 생산량:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% 수송됨)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}이 산업시설이 있는 곳으로 이동
@@ -2381,7 +2392,7 @@
STR_802C_SUGAR_TRUCK :설탕 수송차량
STR_802D_COTTON_CANDY_HOPPER :솜사탕 수송차량
STR_802E_TOFFEE_HOPPER :태피 수송차량
-STR_802F_BUBBLE_VAN :풍선껌 수송차량
+STR_802F_BUBBLE_VAN :거품 수송차량
STR_8030_COLA_TANKER :콜라 탱크
STR_8031_CANDY_VAN :사탕 수송차량
STR_8032_TOY_VAN :장난감 수송차량
@@ -2411,7 +2422,7 @@
STR_804A_SUGAR_TRUCK :설탕 수송차량
STR_804B_COTTON_CANDY_HOPPER :솜사탕
STR_804C_TOFFEE_HOPPER :태피 수송차량
-STR_804D_BUBBLE_VAN :풍선껌
+STR_804D_BUBBLE_VAN :거품 수송차량
STR_804E_COLA_TANKER :콜라 탱크
STR_804F_CANDY_VAN :사탕 수송차량
STR_8050_TOY_VAN :장난감 수송차량
@@ -2443,7 +2454,7 @@
STR_806A_SUGAR_TRUCK :설탕 수송차량
STR_806B_COTTON_CANDY_HOPPER :솜사탕
STR_806C_TOFFEE_HOPPER :태피 수송차량
-STR_806D_BUBBLE_VAN :풍선껌
+STR_806D_BUBBLE_VAN :거품 수송차량
STR_806E_COLA_TANKER :콜라 탱크
STR_806F_CANDY_VAN :사탕 수송차량
STR_8070_TOY_VAN :장난감 수송차량
@@ -2535,9 +2546,9 @@
STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover 플라스틱 수송차
STR_80C7_POWERNAUGHT_PLASTIC_TRUCK :Powernaught 플라스틱 수송차
STR_80C8_WIZZOWOW_PLASTIC_TRUCK :Wizzowow 플라스틱 수송차
-STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover 풍선껌 트럭
-STR_80CA_POWERNAUGHT_BUBBLE_TRUCK :Powernaught 풍선껌 트럭
-STR_80CB_WIZZOWOW_BUBBLE_TRUCK :Wizzowow 풍선껌 트럭
+STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover 거품 트럭
+STR_80CA_POWERNAUGHT_BUBBLE_TRUCK :Powernaught 거품 트럭
+STR_80CB_WIZZOWOW_BUBBLE_TRUCK :Wizzowow 거품 트럭
STR_80CC_MPS_OIL_TANKER :MPS 석유 탱크
STR_80CD_CS_INC_OIL_TANKER :CS-Inc. 석유 탱크
STR_80CE_MPS_PASSENGER_FERRY :MPS 여객선
@@ -2755,7 +2766,7 @@
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}선택된 경로에서 모든 화물을 내려서 쌓아놓도록 변경합니다.
STR_886F_TRANSFER :{BLACK}환승
STR_CLEAR_TIME :{BLACK}시간 초기화
-STR_RESET_LATENESS :{BLACK}지각 카운터 초기화
+STR_RESET_LATENESS :{BLACK}지연 카운터 초기화
STR_TRAIN_STOPPING :{RED}정지중
STR_TRAIN_STOPPING_VEL :{RED}{VELOCITY}의 속도로 정지중
@@ -3366,3 +3377,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}이전 팻말로 가기
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}투자
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}예측
+STR_BUILD_NEW_INDUSTRY :{BLACK}건설
+STR_INDUSTRY_SELECTION_HINT :{BLACK}목록에서 적당한 산업시설을 선택하십시오
--- a/src/lang/lithuanian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/lithuanian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1224,7 +1224,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ar tikrai norite sukurti atsitiktinį kraštovaizdį?
STR_MANY_RANDOM_TOWNS :{BLACK}Daug atsitiktinių miestų
STR_RANDOM_TOWNS_TIP :{BLACK}Sukuria miestus atsitiktinėse žemėlapio vietose
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Daug atsitiktinių pramonės įmonių
+STR_MANY_RANDOM_INDUSTRIES :Daug atsitiktinių pramonės įmonių
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Sukuria pramonės įmones atsitiktinėse žemėlapio vietose
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Neimanoma sukurti pramones imoniu...
--- a/src/lang/norwegian_bokmal.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1222,7 +1222,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Er du sikker på at du vil lage et tilfeldig generert landskap?
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byer
STR_RANDOM_TOWNS_TIP :{BLACK}Dekk kartet med tilfeldig plasserte byer
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfeldige industrier
+STR_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industrier
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Dekk kartet med tilfeldig plasserte industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke generere industrier...
--- a/src/lang/norwegian_nynorsk.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1238,7 +1238,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Er du sikker på at du vil lage eit tilfeldig generert landskap?
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byar
STR_RANDOM_TOWNS_TIP :{BLACK}Dekk kartet med tilfeldig plasserte byar
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfeldige industriar
+STR_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industriar
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Dekk kartet med tilfeldig plasserte industriar
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikkje lage industriar...
--- a/src/lang/piglatin.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/piglatin.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Eliverday argocay otay away ationstay onlyway enwhay erethay isway away emandday: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Allowway uildingbay eryvay onglay idgesbray: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Allowway otogay epotday ordersway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Anualmay imarypray industryway onstructioncay ethodmay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :onenay
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :asway otherway industriesway
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :ospectingpray
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Allowway ultiplemay imilarsay industriesway erpay owntay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industriesway ofway ethay amesay ypetay ancay ebay uiltbay oseclay otay eachway otherway: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Alwaysway owshay onglay ateday inway ethay atusstay arbay: {ORANGE}{STRING}
@@ -1102,10 +1106,19 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Apmay ollwheelscray eedspay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automaticallyway ausepay enwhay artingstay away ewnay amegay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Useway ethay advancedway ehiclevay istlay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Useway oadinglay indicatorsway:{ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Enableway imetablingtay orfay ehiclesvay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Owshay imetabletay inway ickstay atherray anthay aysday: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Efaultday ailray ypetay (afterway ewnay amegay/amegay oadlay): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Ormalnay Ailray
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Electrifiedway Ailray
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Onorailmay
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Aglevmay
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Irstfay availableway
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Astlay availableway
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Ostmay usedway
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Owshay uildingbay oolstay enwhay onay uitablesay ehiclesvay:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Axmay ainstray erpay ayerplay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Axmay oadray ehiclesvay erpay ayerplay: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Axmay aircraftway erpay ayerplay: {ORANGE}{STRING}
@@ -1228,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Areway ouyay uresay ouyay antway otay eatecray away andomray andscapelay?
STR_MANY_RANDOM_TOWNS :{BLACK}Anymay andomray ownstay
STR_RANDOM_TOWNS_TIP :{BLACK}Overcay ethay apmay ithway andomlyray acedplay ownstay
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Anymay andomray industriesway
+STR_MANY_RANDOM_INDUSTRIES :Anymay andomray industriesway
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Overcay ethay apmay ithway andomlyray acedplay industriesway
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}An'tcay enerategay industriesway...
@@ -3299,6 +3312,12 @@
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Oggletay ansparencytray orfay ucturesstray ikelay ighthouseslay andway antennasway, aybemay inway uturefay orfay eyecandyway
STR_TRANSPARENT_LOADING_DESC :{BLACK}Oggletay ansparencytray orfay oadinglay indicatorsway
+STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_UP_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW}
+STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UPARROW}{DOWNARROW}
##### Mass Order
STR_GROUP_NAME_FORMAT :Oupgray {COMMA}
@@ -3336,5 +3355,17 @@
STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Ofitpray isthay earyay: {GREEN}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Ofitpray isthay earyay: {RED}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
+STR_COMPANY_NAME :{COMPANY}
+STR_ENGINE_NAME :{ENGINE}
+STR_GROUP_NAME :{GROUP}
+STR_PLAYER_NAME :{PLAYERNAME}
+STR_SIGN_NAME :{SIGN}
+STR_VEHICLE_NAME :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Amenay ustmay ebay uniqueway
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Ogay otay extnay ignsay
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ogay otay eviouspray ignsay
########
--- a/src/lang/polish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/polish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1324,7 +1324,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Jesteś pewien że chcesz stworzyć losowy krajobraz?
STR_MANY_RANDOM_TOWNS :{BLACK}Wiele losowych miast
STR_RANDOM_TOWNS_TIP :{BLACK}Pokryj mapę losowo położonymi miastami
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Wiele losowych przedsiębiorstw
+STR_MANY_RANDOM_INDUSTRIES :Wiele losowych przedsiębiorstw
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nie można stworzyć przedsiębiorstw...
--- a/src/lang/portuguese.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/portuguese.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Entregar carga a uma estação só quando houver procura: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permitir a construção de pontes muito longas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Permitir ordens de ir para o depósito: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Método manual de construção de indústrias primárias: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :nenhum
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :como as outras indústrias
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecção
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Permitir várias indústrias semelhantes por cidade: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Indústrias do mesmo tipo podem ser construídas perto: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Mostrar sempre a data completa na barra de estado: {ORANGE}{STRING}
@@ -1051,7 +1055,7 @@
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Permitir sempre aeroportos pequenos: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Alertar em caso de perda do combóio: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Alertar em caso de perda do comboio: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Analisar ordens dos veículos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :Não
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :Sim, mas excluir veículos parados
@@ -1088,7 +1092,8 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Manutenção automática de helicópteros em heliportos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Ligar ferramentas de paisagem com as de construção: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Ao deslizar com o rato, mover a vista na direcção oposta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Mostrar uma dica de medição ao utilizar várias ferramentas de construção: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Suavizar deslocamento da navegação no mapa: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Mostrar as medidas nas várias ferramentas de construção: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Mostrar estampagens da companhia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Nenhum
STR_CONFIG_PATCHES_LIVERIES_OWN :Própria companhia
@@ -1100,6 +1105,11 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Desligado
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Velocidade do scrollwheel no mapa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pausa automática ao iniciar um novo jogo: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Usar a lista avançada de veículos: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Activar plano de horários para veículos: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Mostrar horário em tics em vez dias: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Tipo padrão de ferrovia (ao criar ou carregar jogo): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Linha Normal
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Linha Electrificada
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Monorail
@@ -1108,7 +1118,7 @@
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Último disponível
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Mais utilizado
-STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Mostrar ferramentas de construção quando não estiverem disponíveis veículos adequeados: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Mostrar ferramentas de construção quando não existirem veículos adequeados: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Máximo de comboios por jogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Máximo de veículos de estrada por jogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Máximo de aeronaves por jogador: {ORANGE}{STRING}
@@ -1231,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Tem a certeza que deseja criar um terreno aleatório?
STR_MANY_RANDOM_TOWNS :{BLACK}Várias cidades aleatórias
STR_RANDOM_TOWNS_TIP :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES :Várias indústrias aleatórias
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Não é possível gerar indústrias...
@@ -1654,6 +1664,7 @@
STR_180B_BUILD_ROAD_SECTION :{BLACK}Construir estradas
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Construir secção de carris para eléctricos
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir depósito (para criação e manutenção de veículos de estrada)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir depósito de eléctricos (para construção e manutenção)
STR_180D_BUILD_BUS_STATION :{BLACK}Construir estação de autocarros
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir área de carregamento de camiões
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construir paragem de eléctricos para passageiros
@@ -1663,7 +1674,9 @@
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel de estrada
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel para eléctricos
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alternar entre construir/remover estradas
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Alternar construir/remover linhas de eléctricos e sinais
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Seleccionar a orientação do depósito
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Escolher a orientação do depósito de eléctricos
STR_1814_ROAD :Estrada
STR_1815_ROAD_WITH_STREETLIGHTS :Estrada com iluminação
STR_1816_TREE_LINED_ROAD :Estrada com árvores
@@ -1672,6 +1685,7 @@
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Impossível remover estação...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Impossível remover estação...
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Impossível remover paragem de eléctricos de passageiros
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Impossível remover estação de eléctricos de mercadorias...
##id 0x2000
STR_2000_TOWNS :{WHITE}Cidades
@@ -1772,7 +1786,7 @@
STR_INDUSTRY :{INDUSTRY}
STR_TOWN :{TOWN}
-STR_INDUSTRY_FORMAT :{TOWN} {STRING}
+STR_INDUSTRY_FORMAT :{1:STRING} de {0:TOWN}
STR_STATION :{STATION}
##id 0x2800
@@ -1836,8 +1850,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} agora aceita {STRING} e {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Orientação da estação de autocarros
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Orientação da estação de carga
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientação da Estação de Eléctricos
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientação da Estação de Eléctricos
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Precisa de demolir a estação de autocarros primeiro
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Precisa de demolir a estação de carga primeiro
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Precisa demolir estação de eléctricos primeiro
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Precisa demolir estação de eléctricos primeiro
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Estações
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Nenhuma -
@@ -1849,6 +1867,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Seleccionar o tamanho da estação ferroviária
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Seleccionar a orientação da estação de autocarros
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Seleccionar a orientação da estação de carregamento de camiões
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de eléctricos
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de eléctricos
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Centrar visualização no local estação
STR_3054_SHOW_STATION_RATINGS :{BLACK}Mostrar avaliações da estação
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Alterar o nome da estação
@@ -1886,6 +1906,7 @@
STR_3805_COAST_OR_RIVERBANK :Costa ou margem
STR_3806_SHIP_DEPOT :Depósito naval
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Não é possível construir na água
+STR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Precisa de demolir o canal primeiro
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Guardar Jogo
@@ -1899,6 +1920,10 @@
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível eliminar ficheiro
STR_4009_GAME_LOAD_FAILED :{WHITE}Falha ao Abrir Jogo{}{STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ficheiro corrompido - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo gravado numa versão mais recente do jogo
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Impossível ler ficheiro
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Impossível escrever ficheiro
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de unidades, directorias e ficheiros de jogos guardados
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome escolhido para guardar o jogo
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eliminar o jogo guardado seleccionado
@@ -1955,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Carga aguardando processamento:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produz: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produz: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produção no último mês:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrar visualização na localização da indústria
@@ -2069,6 +2101,7 @@
STR_SV_STNAME_LOWER :{STRING} de baixo
STR_SV_STNAME_HELIPORT :Heliporto de {STRING}
STR_SV_STNAME_FOREST :Floresta de {STRING}
+STR_SV_STNAME_FALLBACK :{STRING} Estação #{NUM}
############ end of savegame specific region!
@@ -2298,9 +2331,11 @@
STR_LIVERY_HELICOPTER :Helicóptero
STR_LIVERY_SMALL_PLANE :Aeronave de Pequenas Dimensões
STR_LIVERY_LARGE_PLANE :Aeronave de Grandes Dimensões
+STR_LIVERY_PASSENGER_TRAM :Eléctrico de Passageiros
+STR_LIVERY_FREIGHT_TRAM :Eléctrico de Mercadorias
STR_LIVERY_GENERAL_TIP :{BLACK}Exibir esquema de cores geral
-STR_LIVERY_TRAIN_TIP :{BLACK}Exibir esquemas de cores dos combóios
+STR_LIVERY_TRAIN_TIP :{BLACK}Exibir esquemas de cores dos comboios
STR_LIVERY_ROADVEH_TIP :{BLACK}Exibir esquemas de cores dos veículos de estrada
STR_LIVERY_SHIP_TIP :{BLACK}Exibir esquemas de cores dos navios
STR_LIVERY_AIRCRAFT_TIP :{BLACK}Exibir esquema de cores da aeronave
@@ -2598,7 +2633,12 @@
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Ir sem parar para o depósito de {TOWN}
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Manutenção no depósito de {TOWN} sem parar
+STR_TIMETABLE_GO_TO :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viagem (sem programação)
+STR_TIMETABLE_TRAVEL_FOR :Viajar durante {STRING}
+STR_TIMETABLE_STAY_FOR :e ficar durante {STRING}
STR_TIMETABLE_DAYS :{COMMA} dia{P "" s}
+STR_TIMETABLE_TICKS :{COMMA} tic{P "" s}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Dirige-se ao depósito de {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Dirige-se ao depósito de {TOWN}, {VELOCITY}
@@ -2641,6 +2681,8 @@
STR_REFIT :{BLACK}Converter
STR_REFIT_TIP :{BLACK}Seleccionar o tipo de carga a converter nesta ordem. Pressionar Ctrl e botão-esquerdo do rato para remover instrução de conversão
STR_REFIT_ORDER :(Converter para {STRING})
+STR_TIMETABLE_VIEW :{BLACK}Horário
+STR_TIMETABLE_VIEW_TOOLTIP :{BLACK}Mudar para a vista de horário
STR_8829_ORDERS :{WHITE}{VEHICLE} (Ordens)
STR_882A_END_OF_ORDERS :{SETX 10}- - Fim de Ordens - -
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
@@ -2657,6 +2699,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Não é possível inserir nova ordem...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Não é possível eliminar esta ordem...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Não é possível modificar esta ordem...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Impossível mover esta ordem...
+STR_CAN_T_SKIP_ORDER :{WHITE}Impossível saltar esta ordem...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossível saltar ordem seleccionada...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Não é possível mover veículo...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}A locomotiva traseira seguirá sempre a sua parceira frontal
STR_8838_N_A :N/D{SKIP}
@@ -2688,11 +2733,16 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostrar capacidades de cada veículo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostrar capacidade total do comboio, dividir por tipo de carga
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de ordens - clique numa ordem para a seleccionar
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta a ordem actual, e inicia a próxima. CTRL + clique salta para a ordem seleccionada
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Eliminar a ordem seleccionada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem seleccionada fará com que o veículo não para noutras estações pelo caminho
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Inserir nova ordem antes da ordem seleccionada, ou adicionar ao fim da lista
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem seleccionada fará com que o veículo espere carregar completamente
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem seleccionada forçará o veículo a descarregar
+STR_TIMETABLE_TOOLTIP :{BLACK}Horário - clique numa ordem para a seleccionar.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muda o espaço de tempo que a ordem seleccionada deve durar
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Apagar o tempo que dura a ordem seleccionada
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Limpar o contador de atraso, para que o veículo passe a estar a horas
STR_SERVICE_HINT :{BLACK}Saltar esta ordem a menos que seja necessário manutenção
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY} Peso: {WEIGHT_S}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de circulação: {CURRENCY}/ano{}Capacidade: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Avariado
@@ -2714,6 +2764,8 @@
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Não é possível renomear tipo de veículo ferroviário...
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem seleccionada forçará o veículo a largar a carga
STR_886F_TRANSFER :{BLACK}Transferir
+STR_CLEAR_TIME :{BLACK}Apagar Tempo
+STR_RESET_LATENESS :{BLACK}Apagar Contad. Atraso
STR_TRAIN_STOPPING :{RED}A Parar
STR_TRAIN_STOPPING_VEL :{RED}A Parar, {VELOCITY}
@@ -2725,6 +2777,17 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
+STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossível programar veículo...
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veículos apenas podem esperar em estações.
+STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este veículo não pára nesta estação.
+STR_TIMETABLE_CHANGE_TIME :{BLACK}Mudar Tempo
+STR_TIMETABLE_STATUS_ON_TIME :Este veículo está actualmente a andar a horas
+STR_TIMETABLE_STATUS_LATE :Este veículo está presentemente atrasado {STRING}
+STR_TIMETABLE_STATUS_EARLY :Este veículo está presentemente adiantado {STRING}
+STR_TIMETABLE_TOTAL_TIME :Este horário vai levar {STRING} a completar
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Este horário vai levar pelo menos {STRING} a completar (nem tudo está programado)
+STR_TIMETABLE_AUTOFILL :{BLACK}Auto pr.
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Preencher o horário automaticamente com os valores da primeira viagem
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Veículo de estrada no caminho
@@ -2775,6 +2838,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Renomear veículo de estrada
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro autocarro chega a {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro camião chega a {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro eléctrico de passageiros chega a {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro eléctrico de mercadorias chega a {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Acidente de Veículo de Estrada!{}Condutor morre na explosão após a colisão com um comboio
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Acidente de Veículo de Estrada!{}{COMMA} morrem na explosão após a colisão com um comboio
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Não é possível fazer o veículo dar a volta...
@@ -2935,6 +3000,7 @@
STR_GO_TO_AIRPORT_HANGAR :Ir para o hangar de {STATION}
SERVICE_AT_AIRPORT_HANGAR :Manutenção no hangar de {STATION}
+STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horário)
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Acidente de Zepelim em {STATION}!
@@ -3060,13 +3126,14 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Está prestes a vender todos os veículos no depósito. Tem a certeza?
+STR_DEPOT_WRONG_DEPOT_TYPE :Tipo de depósito errado
-STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Vender todos os combóios no depósito
+STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Vender todos os comboios no depósito
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Vender todos os veículos no depósito
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP :{BLACK}Vender todos os navios no depósito
STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP :{BLACK}Vender todos os aviões no hangar
-STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Obter uma lista de todos os combóios em cujas ordens conste este depósito
+STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Obter uma lista de todos os comboios em cujas ordens conste este depósito
STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}Obter uma lista de todos os veículos em cujas ordens conste este depósito
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Obter uma lista de todos os navios em cujas ordens conste este depósito
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Obter uma lista de todas as aeronaves em cujas ordens conste um hangar deste aeroporto
@@ -3105,12 +3172,12 @@
STR_ENGINES :Locomotivas
STR_WAGONS :Vagões
-STR_MASS_STOP_DEPOT_TRAIN_TIP :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os combóios no depósito
+STR_MASS_STOP_DEPOT_TRAIN_TIP :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os comboios no depósito
STR_MASS_STOP_DEPOT_ROADVEH_TIP :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os veículos no depósito
STR_MASS_STOP_DEPOT_SHIP_TIP :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os navios no depósito
STR_MASS_STOP_HANGAR_TIP :{BLACK}Pressione botão esquerdo do rato para imobilizar todas as aeronaves no hangar
-STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Pressione botão esquerdo do rato para iniciar todos os combóios no depósito
+STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Pressione botão esquerdo do rato para iniciar todos os comboios no depósito
STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Pressione botão esquerdo do rato para iniciar todos os veículos de estrada no depósito
STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Pressione botão esquerdo do rato para iniciar todos os navios no depósito
STR_MASS_START_HANGAR_TIP :{BLACK}Pressione botão esquerdo do rato para iniciar todas as aeronaves no hangar
@@ -3250,6 +3317,7 @@
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Comutar transparência para edificações como estações, depósitos, pontos-de-passagem e catenárias
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Comutar transparência para pontes
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Comutar transparência para estruturas como faróis-terrestres e antenas (talvez, no futuro, para embelezamentos)
+STR_TRANSPARENT_LOADING_DESC :{BLACK}Alterar transparência para indicadores de carga
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
@@ -3266,8 +3334,13 @@
STR_GROUP_ALL_SHIPS :Todos os barcos
STR_GROUP_ALL_AIRCRAFTS :Todas as aeronaves
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE :Adic. veíc. partilh.
STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Comboio{P "" s}
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Veículo{P "" s} de estrada
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Barco{P "" s}
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Avi{P "ão" "ões"}
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
STR_GROUP_REPLACE_CAPTION :{WHITE}Substituir Veículos de "{GROUP}"
@@ -3276,6 +3349,7 @@
STR_GROUP_CAN_T_RENAME :{WHITE}Impossível renomear o grupo...
STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Não é possível remover todos os veículos deste grupo...
STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossível adicionar o veículo a este grupo...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Impossível adicionar veículos com ordens partilhadas ao grupo...
STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupos - Clique num grupo para listar todos os seus veículos
STR_GROUP_CREATE_TIP :{BLACK}Clique para criar um grupo
@@ -3298,5 +3372,12 @@
STR_NAME_MUST_BE_UNIQUE :{WHITE}Nome deve ser único
#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Ir para o próximo sinal
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir para o sinal anterior
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Criar
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospectar
+STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolha a indústria apropriada desta lista
--- a/src/lang/romanian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/romanian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livreazã marfa doar in statiile unde aceasta este ceruta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permite constructia de poduri foarte lungi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Permite ordine de tipul "mergi la depou": {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Metoda manuala de constructie industrii primare: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :niciuna
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ca alte industrii
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :de prospectie
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Permite mai multe industrii similare in acelasi oras: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industrii identice pot fi construite aproape una de cealaltã: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Afiseazã intotdeauna data in format lung in bara de stare: {ORANGE}{STRING}
@@ -1114,6 +1118,7 @@
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Ultima disponibila
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Cea mai folosita
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Arata uneltele de constructie cand nu sunt disponibile vehiculele potrivite: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Nr. max. de trenuri per jucãtor: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Nr. max. de autovehicule pentru un jucãtor: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Nr. max. de aeronave pentru un jucãtor: {ORANGE}{STRING}
@@ -1236,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Esti sigur cã vrei sã creezi un peisaj aleator?
STR_MANY_RANDOM_TOWNS :{BLACK}Mai multe orase aleatoare
STR_RANDOM_TOWNS_TIP :{BLACK}Umple harta cu orase generate aleator
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Multe industrii aleatoare
+STR_MANY_RANDOM_INDUSTRIES :Multe industrii aleatoare
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Umple harta cu industrii generate aleator
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nu pot genera industrii...
@@ -1975,6 +1980,9 @@
STR_4829_REQUIRES :{BLACK}Are nevoie de: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Incarcatura in asteaptarea procesarii:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Producţia lunii trecute:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrează imaginea pe locaţia industriei
@@ -3359,4 +3367,8 @@
STR_NAME_MUST_BE_UNIQUE :{WHITE}Numele trebuie să fie unic
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Mergi la semnul urmator
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mergi la semnul anterior
+
########
--- a/src/lang/russian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/russian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1243,7 +1243,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Вы уверены, что хотите создать случайную землю?
STR_MANY_RANDOM_TOWNS :{BLACK}Много случайных городов
STR_RANDOM_TOWNS_TIP :{BLACK}Случайно разместить на карте города
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Много произвольных промышленностей
+STR_MANY_RANDOM_INDUSTRIES :Много произвольных промышленностей
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Случайно разместить предприятия на карте
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Невозможно создать промышленность...
@@ -1982,6 +1982,13 @@
STR_4829_REQUIRES :{BLACK}Требуется: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Груз, ожидающий переработки:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Произведено: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Произведено: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Произведено за прошлый месяц:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% перевезено)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Показать предприятие в основном окне
@@ -3382,3 +3389,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}К предыдущему знаку
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Профинансировать
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Разведать
+STR_BUILD_NEW_INDUSTRY :{BLACK}Построить
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Выберите тип производства из списка
--- a/src/lang/simplified_chinese.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/simplified_chinese.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1214,7 +1214,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}你确定要创建一个随机的景观吗?
STR_MANY_RANDOM_TOWNS :{BLACK}大量随机城镇
STR_RANDOM_TOWNS_TIP :{BLACK}在地图上创建大量随机的城镇
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}大量随机工业
+STR_MANY_RANDOM_INDUSTRIES :大量随机工业
STR_RANDOM_INDUSTRIES_TIP :{BLACK}在地图上创建大量随机的工业设施
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}不能生成工业设施……
--- a/src/lang/slovak.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/slovak.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1305,7 +1305,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Si si isty, ze chces vytvorit nahodny teren?
STR_MANY_RANDOM_TOWNS :{BLACK}Vela nahodnych miest
STR_RANDOM_TOWNS_TIP :{BLACK}Pokryt mapu nahodne umiestnenymi mestami
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Vela nahodneho priemyslu
+STR_MANY_RANDOM_INDUSTRIES :Vela nahodneho priemyslu
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryt mapu nahodne umiestnenym priemyslom
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemozno vygenerovat priemysel ...
@@ -2044,6 +2044,9 @@
STR_4829_REQUIRES :{BLACK}Potrebuje: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Náklad cakajúci na spracovanie:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produkcia za posledny mesiac:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% prepravenych)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Vycentrovanie pohladu na poziciu tovarne
--- a/src/lang/slovenian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/slovenian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1076,6 +1076,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Dostavi tovor postaji le ob povpraševanju: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Dovoli gradnjo zelo dolgih mostov: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Dovoli ukaz 'pojdi v garažo': {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Glavni ročni način gradnje industrij: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :brez
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kot ostale industrije
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :obetaven
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Dovoli več enakih industrij na mesto: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industrije enakega tipa lahko stojijo skupaj: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Vedno pokaži dolg datum v vrstici stanja: {ORANGE}{STRING}
@@ -1279,7 +1283,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Zagotovo želiš ustvariti naključno zemljišče?
STR_MANY_RANDOM_TOWNS :{BLACK}Več naključnih mest
STR_RANDOM_TOWNS_TIP :{BLACK}Postavi na ozemlje naključna mesta
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Več naključnih industrij
+STR_MANY_RANDOM_INDUSTRIES :Več naključnih industrij
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Postavi na ozemlje naključno industrijo
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ni mogoče zgraditi industrij ...
@@ -2056,6 +2060,9 @@
STR_4829_REQUIRES :{BLACK}Potrebuje: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Tovor na čakanju obdelave:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Proizvodnja prejšnjega meseca:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% prepeljano)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Pogled na industrijo
--- a/src/lang/spanish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/spanish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1242,7 +1242,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}¿Está seguro de generar un paisaje al azar?
STR_MANY_RANDOM_TOWNS :{BLACK}Varias poblaciones al azar
STR_RANDOM_TOWNS_TIP :{BLACK}Cubre el mapa con poblaciones colocadas al azar
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Varias industrias al azar
+STR_MANY_RANDOM_INDUSTRIES :Varias industrias al azar
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cubre el mapa con industrias colocadas al azar
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}No se pueden crear industrias...
@@ -1981,6 +1981,13 @@
STR_4829_REQUIRES :{BLACK}Requiere: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}La carga está esperando a ser procesada:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produce: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produce: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Producción mes anterior:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrar la vista sobre la industria
@@ -3370,3 +3377,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir a la señal anterior
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Fundar
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Perspectiva
+STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Seleccione la industria apropiada de la lista
--- a/src/lang/swedish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/swedish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Leverera gods till en station enbart om någon frågar efter det: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillåt väldigt långa broar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Tillåt order att gå till depå/bussgarage: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Manuell prioritering för industrins konstruktionsmetod: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Inget
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andra industrier
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterande
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Tillåt flera industrier av samma typ per stad: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industrier av samma typ kan byggas nära varandra: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Visa alltid långt datum i statusfältet: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Är du säker på att du vill generera ett slumpmässigt landskap?
STR_MANY_RANDOM_TOWNS :{BLACK}Många slumpmässiga städer
STR_RANDOM_TOWNS_TIP :{BLACK}Täck kartan med slumpmässigt placerade städer
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Många slumpmässiga industrier
+STR_MANY_RANDOM_INDUSTRIES :Många slumpmässiga industrier
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Täck kartan med slumpmässigt placerade industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan inte generera industrier...
@@ -1976,6 +1980,13 @@
STR_4829_REQUIRES :{BLACK}Kräver: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Last som väntar på att bli behandlad:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Producerar: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Producerar: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produktion förra månaden:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporterat)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centrera vyn ovanför industrin
@@ -3361,5 +3372,12 @@
STR_NAME_MUST_BE_UNIQUE :{WHITE}Namnet måste vara unikt
#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Åk till nästa skylt
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Åk till föregående skylt
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Grunda
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektera
+STR_BUILD_NEW_INDUSTRY :{BLACK}Bygga
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Välj lämplig industri från denna lista
--- a/src/lang/traditional_chinese.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/traditional_chinese.txt Fri Jul 13 09:18:50 2007 +0000
@@ -355,7 +355,7 @@
STR_0158_COMPANY_VALUE_GRAPH :公司市值圖表
STR_0159_CARGO_PAYMENT_RATES :貨物收費圖表
STR_015A_COMPANY_LEAGUE_TABLE :公司排行榜
-STR_PERFORMANCE_DETAIL_MENU :詳細營運數據
+STR_PERFORMANCE_DETAIL_MENU :詳細營運評比
############ range for menu ends
STR_015B_OPENTTD :{WHITE}關於OpenTTD
@@ -1206,7 +1206,7 @@
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇剷泥車 (可以移除工業等平時拆不掉的東西):{ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}隧道可以互相穿過:{ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}於暫停模式建設:{ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH :{LTBLUE}噴射客機不會經常於小型機場墜毁:{ORANGE} {STRING}
+STR_CHEAT_NO_JETCRASH :{LTBLUE}噴射客機不會經常於小型機場失事:{ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}改變氣候:{ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}改變日期:{ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}可改變產量:{ORANGE}{STRING}
@@ -1241,7 +1241,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}你要建立一個隨機地形嗎?
STR_MANY_RANDOM_TOWNS :{BLACK}隨機產生多個市鎮
STR_RANDOM_TOWNS_TIP :{BLACK}以隨機放置的市鎮佈滿版圖
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}隨機產生多個工業
+STR_MANY_RANDOM_INDUSTRIES :隨機產生多個工業
STR_RANDOM_INDUSTRIES_TIP :{BLACK}以隨機放置的工業佈滿版圖
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}隨機產生工業失敗...
@@ -1318,7 +1318,7 @@
STR_CONFIG_GAME_PRODUCTION :{WHITE}修改產量
TEMP_AI_IN_PROGRESS :{WHITE}歡迎使用正在開發的新 AI。如果有任何問題,歡迎擷取畫面放上討論區通知開發團隊。
-TEMP_AI_ACTIVATED :{WHITE}警告: 這個新 AI 還在開發階段,目前僅於汽車上實作!
+TEMP_AI_ACTIVATED :{WHITE}警告: 這個新 AI 還在開發階段,目前僅於公路上實作!
TEMP_AI_MULTIPLAYER :{WHITE}警告: 新 AI 實作仍在開發階段。如有任何問題,請 E-Mail 至 truelight@openttd.org。
############ network gui strings
@@ -1603,10 +1603,10 @@
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}鋪設單軌
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}鋪設磁浮軌
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}選擇鐵道橋樑
-STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}不能在這邊建築鐵道機廠...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}不能在這邊建築鐵道車站...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}不能在這邊建築號誌...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在這邊建築鐵道...
+STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}不能在這邊設置鐵道機廠...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}不能在這邊設置鐵道車站...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}不能在這邊設置號誌...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在這邊鋪設鐵道...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}不能從這邊移除鐵道...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}不能從這邊移除號誌...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}鐵道機廠方向
@@ -1615,11 +1615,11 @@
STR_1016_MONORAIL_CONSTRUCTION :鋪設單軌
STR_1017_MAGLEV_CONSTRUCTION :鋪設磁浮軌
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}鋪設鐵軌
-STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}建築鐵路機廠 (用來建造、維修列車)
-STR_101A_BUILD_RAILROAD_STATION :{BLACK}建築鐵道車站
-STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}建築鐵道號誌
+STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}設置鐵路機廠 (用來購置、維修列車)
+STR_101A_BUILD_RAILROAD_STATION :{BLACK}設置鐵道車站
+STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}設置鐵道號誌
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}建築鐵道橋樑
-STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}建築鐵道隧道
+STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}挖掘鐵道隧道
STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切換建築/移除鐵軌與號誌
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}選擇橋樑 - 點選想用的橋樑即可建造
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}選擇鐵道機廠方向
@@ -1653,27 +1653,27 @@
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}不可以移除這裏的電車軌...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}車庫方向
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}電車
-STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}不能在此建築車庫...
+STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}不能在此設置車庫...
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}不可以在這裏興建電車維修廠...
-STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}無法建築公車站...
-STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}無法建築貨運站...
+STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}無法設置公車站...
+STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}無法設置貨運站...
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}不可以興建電車站...
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}不可興建載貨電車站...
STR_180A_ROAD_CONSTRUCTION :鋪設道路
STR_180A_TRAMWAY_CONSTRUCTION :鋪設電車軌
STR_180B_BUILD_ROAD_SECTION :{BLACK}鋪設一段公路
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}興建電車站
-STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}建築車庫 (用來製造與維護公路車輛)
+STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}設置車庫 (用來購置與維護公路車輛)
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}興建電車維修廠 (供製造及維修用)
-STR_180D_BUILD_BUS_STATION :{BLACK}建築公車站
-STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}建築貨運站
+STR_180D_BUILD_BUS_STATION :{BLACK}設置公車站
+STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}設置貨運站
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}興建載客電車站
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}興建載貨電車站
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}建築公路橋樑
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}架設電車橋
-STR_1810_BUILD_ROAD_TUNNEL :{BLACK}建築公路隧道
+STR_1810_BUILD_ROAD_TUNNEL :{BLACK}挖掘公路隧道
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}開鐅電車隧道
-STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切換建築/移除公路
+STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切換鋪設/移除公路
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}鋪設電車軌開關
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}選擇車庫方向
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}選擇電車維修廠方向
@@ -1694,7 +1694,7 @@
STR_TOWN_LABEL_TINY_BLACK :{TINYFONT}{BLACK}{TOWN}
STR_TOWN_LABEL_TINY_WHITE :{TINYFONT}{WHITE}{TOWN}
STR_2002 :{TINYFONT}{BLACK}{SIGN}
-STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必須先摧毀建築
+STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必須先摧毀建物
STR_2005 :{WHITE}{TOWN}
STR_2006_POPULATION :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA}
STR_2007_RENAME_TOWN :修改城鎮名稱
@@ -1833,7 +1833,7 @@
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}本地對運輸服務的評價:
############ range for rating starts
-STR_3035_APPALLING :駭人聽聞
+STR_3035_APPALLING :慘不忍睹
STR_3036_VERY_POOR :非常糟糕
STR_3037_POOR :糟糕
STR_3038_MEDIOCRE :普通
@@ -1883,8 +1883,8 @@
STR_3061_TRUCK_LOADING_AREA :貨運場
STR_3062_BUS_STATION :公車站
STR_3063_SHIP_DOCK :船塢
-STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}顯示建築地點的運輸涵蓋範圍
-STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}不顯示建築地點的運輸涵蓋範圍
+STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}顯示設置地點的運輸涵蓋範圍
+STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}不顯示設置地點的運輸涵蓋範圍
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}顯示運輸涵蓋範圍
STR_3068_DOCK :{WHITE}碼頭
STR_3069_BUOY :浮標
@@ -1980,6 +1980,9 @@
STR_4829_REQUIRES :{BLACK}需要:{YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}囤積的貨物:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}上月產量:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} (運送了 {COMMA}%)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}將主視野帶到工業上方
@@ -2003,7 +2006,7 @@
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}隧道內有列車
-STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}隧道內有汽車
+STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}隧道內有車輛
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}被另一條隧道擋住
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}無法挖掘隧道出口
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}必須先摧毀隧道
@@ -2022,7 +2025,7 @@
STR_5014_TUBULAR_STEEL :管橋,鋼製
STR_BRIDGE_TUBULAR_SILICON :管橋,玻璃纖維製
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}無法在此建造橋樑...
-STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}無法在此建築隧道...
+STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}無法在此挖掘隧道...
STR_5017_RAILROAD_TUNNEL :鐵道隧道
STR_5018_ROAD_TUNNEL :公路隧道
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :鐵道鋼吊橋
@@ -2057,7 +2060,7 @@
STR_SV_EMPTY :
STR_SV_UNNAMED :未命名
STR_SV_TRAIN_NAME :列車 {COMMA}
-STR_SV_ROADVEH_NAME :汽車 {COMMA}
+STR_SV_ROADVEH_NAME :車輛 {COMMA}
STR_SV_SHIP_NAME :船舶 {COMMA}
STR_SV_AIRCRAFT_NAME :飛機 {COMMA}
@@ -2233,7 +2236,7 @@
STR_7038_INAUGURATED :{GOLD}成立於:{WHITE}{NUM}
STR_7039_VEHICLES :{GOLD}運具:
STR_TRAINS :{WHITE}列車 {COMMA} 列
-STR_ROAD_VEHICLES :{WHITE}汽車 {COMMA} 輛
+STR_ROAD_VEHICLES :{WHITE}車輛 {COMMA} 部
STR_AIRCRAFT :{WHITE}飛機 {COMMA} 架
STR_SHIPS :{WHITE}船舶 {COMMA} 艘
STR_7042_NONE :{WHITE}無
@@ -2306,7 +2309,7 @@
STR_7080_PROTECTED :{WHITE}這間公司才剛成立,還不能交易股票...
STR_LIVERY_DEFAULT :標準配色
-STR_LIVERY_STEAM :蒸汽車頭
+STR_LIVERY_STEAM :蒸汽機車
STR_LIVERY_DIESEL :柴油車頭
STR_LIVERY_ELECTRIC :電力車頭
STR_LIVERY_MONORAIL :單軌車頭
@@ -2329,7 +2332,7 @@
STR_LIVERY_GENERAL_TIP :{BLACK}顯示通用配色
STR_LIVERY_TRAIN_TIP :{BLACK}顯示鐵道配色
-STR_LIVERY_ROADVEH_TIP :{BLACK}顯示汽車配色
+STR_LIVERY_ROADVEH_TIP :{BLACK}顯示車輛配色
STR_LIVERY_SHIP_TIP :{BLACK}顯示船舶配色
STR_LIVERY_AIRCRAFT_TIP :{BLACK}顯示飛機配色
STR_LIVERY_PRIMARY_TIP :{BLACK}選擇選定配色的主色調
@@ -2596,7 +2599,7 @@
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}運具製造商的訊息
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}我們剛設計了一種新{STRING} - 您有興趣獨家使用它一年,讓我們在正式發佈之前觀察它的表現嗎?
STR_8102_RAILROAD_LOCOMOTIVE :鐵道機車頭
-STR_8103_ROAD_VEHICLE :汽車
+STR_8103_ROAD_VEHICLE :車輛
STR_8104_AIRCRAFT :飛機
STR_8105_SHIP :船舶
STR_8106_MONORAIL_LOCOMOTIVE :單軌機車頭
@@ -2658,9 +2661,9 @@
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}鐵道車輛
STR_881F_BUILD_VEHICLE :{BLACK}購買車輛
-STR_CLONE_ROAD_VEHICLE :{BLACK}複製汽車
-STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}這將購買一輛一樣的汽車。按住 CTRL 點選還可共享指令
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}這將購買一輛一樣的汽車。按下按鈕之後再點選車庫内外的汽車。按住 CTRL 點選還可共享指令
+STR_CLONE_ROAD_VEHICLE :{BLACK}複製車輛
+STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}此舉將購買一部相同的車輛。按住 CTRL 點選還可共享指令
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}此舉將購買一部相同的車輛。按下按鈕之後再點選於車庫内或外的車輛。按住 CTRL 點選還可共享指令
STR_CLONE_TRAIN :{BLACK}複製列車
STR_CLONE_TRAIN_INFO :{BLACK}這將購買一列一樣的列車,包含所有車廂。按住 CTRL 點選還可共享指令
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}這將購買一列一樣的列車,包含所有車廂。按下按鈕之後再點選機廠内外的其他列車。按住 CTRL 點選還可共享指令
@@ -2784,13 +2787,13 @@
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}前方有汽車
-STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - 汽車 {COMMA} 輛
+STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - 車輛 {COMMA} 部
STR_9002 :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}{TOWN} 汽車車庫
+STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}{TOWN} 車庫
STR_9004_NEW_VEHICLES :{BLACK}購買新車輛
-STR_9006_NEW_ROAD_VEHICLES :{WHITE}購買新汽車
+STR_9006_NEW_ROAD_VEHICLES :{WHITE}購置新車輛
STR_9007_BUILD_VEHICLE :{BLACK}購買車輛
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}無法購買汽車
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}無法購置車輛
STR_900C_DETAILS :{WHITE}{VEHICLE} (詳細資料)
STR_900D_AGE_RUNNING_COST_YR :{BLACK}使用年數:{LTBLUE}{STRING}{BLACK} 營運支出:{LTBLUE}{CURRENCY}/年
STR_900E_MAX_SPEED :{BLACK}極速:{LTBLUE}{VELOCITY}
@@ -2798,57 +2801,57 @@
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}可靠度:{LTBLUE}{COMMA}% {BLACK}上次維護後故障次數:{LTBLUE}{COMMA}
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} 購買於:{LTBLUE}{NUM}{BLACK} 價值:{LTBLUE}{CURRENCY}
STR_9012_CAPACITY :{BLACK}容量:{LTBLUE}{CARGO}
-STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...必須停在汽車庫内
-STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}無法出售汽車...
-STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}無法停止/起動汽車...
-STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}汽車 {COMMA} 已在車庫内待命
+STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...必須停在車庫内
+STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}無法出售車輛...
+STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}無法停止/起動車輛...
+STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}車輛 {COMMA} 已在車庫内待命
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}正前往 {TOWN} 車庫
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}正前往 {TOWN} 車庫, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}在 {TOWN} 車庫維護中
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}在 {TOWN} 車庫維護中, {VELOCITY}
-STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}無法將汽車送到車庫...
+STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}無法將車輛送至車庫...
STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}找不到附近的車庫
-STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}汽車 - 點選車輛檢視詳細資料
-STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}購買新汽車 (需要汽車庫)
+STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}車輛 - 點選車輛檢視詳細資料
+STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}購置新車輛 (需要車庫)
STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}目前車輛動作 - 按此可停止/起動車輛
STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}顯示車輛指令
STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}將主視野移到車輛位置
STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}將車輛送到車庫。按住 CTRL 點選則只做維護
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}強制車輛掉頭
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}顯示車輛詳細資訊
-STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}車輛 - 點選車輛顯示詳細資訊
-STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}購買新汽車
+STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}車輛 - 點選車輛顯示詳細資料
+STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}購置新車輛
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}將氣車拉至此即可出售
STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}將主視野移到車庫位置
-STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}汽車清單 - 點選汽車可看到詳細資訊
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}購買選定的汽車
+STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}車輛清單 - 點選車輛可看到詳細資料
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}購置選定的車輛
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}價格:{CURRENCY}{}速度:{VELOCITY}{}營運費用:{CURRENCY}/年{}容量:{CARGO}
STR_ARTICULATED_RV_CAPACITY :{BLACK}容量:{LTBLUE}
STR_BARE_CARGO :{CARGO}
-STR_902C_NAME_ROAD_VEHICLE :{WHITE}命名汽車
-STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}無法命名汽車...
-STR_902E_NAME_ROAD_VEHICLE :{BLACK}命名汽車
+STR_902C_NAME_ROAD_VEHICLE :{WHITE}為車輛命名
+STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}無法為車輛命名...
+STR_902E_NAME_ROAD_VEHICLE :{BLACK}為車輛命名
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛公車抵達 {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛貨車抵達 {STATION}!
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛客運輕軌抵達 {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛貨運輕軌抵達 {STATION}!
-STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}汽車撞毀!{}駕駛在與列車相撞後死於火球下
-STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}汽車撞毀!{}與列車相撞後 {COMMA} 人死於火球下
-STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}無法使汽車掉頭...
+STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}車禍!{}駕駛在與列車對撞後罹難
+STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}車禍!{}車輛在與列車對撞後, 造成 {COMMA} 人罹難
+STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}無法使車輛掉頭...
STR_ONLY_TURN_SINGLE_UNIT :{WHITE}無法迴轉由許多單位構成的車輛
STR_9034_RENAME :{BLACK}更名
-STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}為汽車類型更名
-STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}為汽車類型更名
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}無法為汽車類型更名...
-STR_9038_GO_TO_ROADVEH_DEPOT :前往 {TOWN} 汽車庫
+STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}為車輛類型更名
+STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}為車輛類型更名
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}無法為車輛類型更名...
+STR_9038_GO_TO_ROADVEH_DEPOT :前往 {TOWN} 車庫
STR_SERVICE_AT_ROADVEH_DEPOT :在 {TOWN} 車庫維護
-STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}改裝汽車以運送不同的酬載
-STR_REFIT_ROAD_VEHICLE :{BLACK}改裝汽車
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED :{BLACK}改裝汽車以運送指定的酬載
-STR_REFIT_ROAD_VEHICLE_CAN_T :{WHITE}無法改裝汽車...
-STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}選擇汽車要運送的酬載種類
+STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}改裝車輛以運送不同的酬載
+STR_REFIT_ROAD_VEHICLE :{BLACK}改裝車輛
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED :{BLACK}改裝車輛以運送指定的酬載
+STR_REFIT_ROAD_VEHICLE_CAN_T :{WHITE}無法改裝車輛...
+STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}選擇車輛要運送的酬載種類
##id 0x9800
STR_9800_DOCK_CONSTRUCTION :建造碼頭
@@ -2884,7 +2887,7 @@
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}船舶 {COMMA} 已在船塢待命
STR_981D_BUILD_SHIP_DOCK :{BLACK}建造碼頭
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}建造船塢 (用以購買/維護船舶)
-STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}船舶 - 點選船舶可看到詳細資訊
+STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}船舶 - 點選船舶可看到詳細資料
STR_9820_BUILD_NEW_SHIP :{BLACK}購買新船舶
STR_9821_DRAG_SHIP_TO_HERE_TO_SELL :{BLACK}將船舶拉至此即可出售
STR_9822_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}將主視野移到船塢上方
@@ -2975,8 +2978,8 @@
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}無法命名飛機
STR_A032_NAME_AIRCRAFT :{BLACK}命名飛機
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}市民慶賀 . . .{}首架飛機抵達 {STATION}!
-STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}墜機!{}{COMMA} 名乘客與機組員死於 {STATION} 的火球下
-STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}飛機墜毀!{}飛機用光燃油, {COMMA} 死在火球裡!
+STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}空難!{}{COMMA} 名乘客與機組員不幸罹難於 {STATION}
+STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}空難!{}飛機燃油耗盡, {COMMA} 名乘客與機組員不幸罹難
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}更名
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}重新命名飛機種類
@@ -2997,7 +3000,7 @@
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}{STATION} 發生飛船災難!
-STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}汽車被 UFO 摧毀!
+STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}車輛被 UFO 擊毀!
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}{TOWN} 附近的煉油廠爆炸!
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}{TOWN} 附近的工廠發生事故被毀!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}UFO 在 {TOWN} 附近著陸!
@@ -3008,7 +3011,7 @@
STR_BRIBE_FAILED_2 :{WHITE}已經被調查員發現
STR_BUILD_DATE :{BLACK}建於:{LTBLUE}{DATE_LONG}
-STR_PERFORMANCE_DETAIL :{WHITE}詳細效率評比
+STR_PERFORMANCE_DETAIL :{WHITE}詳細營運評比
STR_PERFORMANCE_DETAIL_KEY :{BLACK}詳細資料
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
@@ -3026,7 +3029,7 @@
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}貸款:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}總計:
############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}運具數量;這包含汽車、鐵道、船舶與飛機
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}運具數量;這包含鐵公路車輛、船舶與飛機
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}車站部分的數量。每部份車站 (火車站,公車站,機場) 都算在内,就算連在一起亦然
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}使用超過兩年的運具之中,最低收入車輛的損益
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}之前三年的單月最低收入
@@ -3105,12 +3108,12 @@
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - 列車 {COMMA} 列
-STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - 汽車 {COMMA} 輛
+STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - 車輛 {COMMA} 部
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - 飛機 {COMMA} 架
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - 船舶 {COMMA} 艘
STR_SCHEDULED_TRAINS_TIP :{BLACK}顯示所有指令內包含這個站場的列車
-STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}顯示所有指令内包含這個站場的汽車
+STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}顯示所有指令内包含這個車站的車輛
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}顯示所有指令内包含這座站場的飛機
STR_SCHEDULED_SHIPS_TIP :{BLACK}顯示所有指令内包含這個站場的船舶
@@ -3122,22 +3125,22 @@
STR_DEPOT_WRONG_DEPOT_TYPE :錯誤的機廠類型
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}出售機廠内所有列車
-STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}出售車庫内所有汽車
+STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}出售車庫内所有車輛
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP :{BLACK}出售船塢内所有船舶
STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP :{BLACK}出售機棚内所有飛機
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}取得所有命令内有這個機廠的列車
-STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}取得所有命令内有這個車庫的汽車
+STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}取得所有命令内有這個車庫的車輛
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}取得所有命令内有這個船塢的船舶
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}取得所有命令内有這個機場的機棚的飛機
STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}自動替換所有機廠内列車
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}自動替換所有車庫内汽車
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}自動替換所有車庫内車輛
STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}自動替換所有船塢内船舶
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}自動替換所有機棚内飛機
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - 列車 {COMMA} 列
-STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - 汽車 {COMMA} 輛
+STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - 車輛 {COMMA} 部
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - 船舶 {COMMA} 艘
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - 飛機 {COMMA} 架
@@ -3171,7 +3174,7 @@
STR_MASS_STOP_HANGAR_TIP :{BLACK}按下可停止機棚内所有飛機
STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}按下可起動機廠内所有列車
-STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}按下可起動車庫内所有汽車
+STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}按下可起動車庫内所有車輛
STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}按下可起動船塢内所有船舶
STR_MASS_START_HANGAR_TIP :{BLACK}按下可起動機棚内所有飛機
--- a/src/lang/turkish.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/turkish.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1232,7 +1232,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Arazinin rasgele düzenlenmesini istediğinizden emin misiniz?
STR_MANY_RANDOM_TOWNS :{BLACK}Birçok rastgele şehir
STR_RANDOM_TOWNS_TIP :{BLACK}Haritayı rastgele şehirlerle doldur
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Birçok rastgele fabrika
+STR_MANY_RANDOM_INDUSTRIES :Birçok rastgele fabrika
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Haritayı rastgele fabrikalarla doldur
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Fabrika yapılamıyor...
@@ -1964,6 +1964,7 @@
STR_4829_REQUIRES :{BLACK}İstenenler: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Geçen ayki üretim:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} (%{COMMA} tasindi)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Fabrikaya git
@@ -2717,6 +2718,7 @@
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Seçili talimatı yaparken tren dolana kadar beklesin
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Seçili talimatı yaparken tren mutlaka yükünü boşaltsın
STR_TIMETABLE_TOOLTIP :{BLACK}Zaman çizelgesi - işaretlemek için bir talimata tıklayın.
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Geç kalma sayacını sıfırla, böylece araç zamanında gitmiş sayılacak
STR_SERVICE_HINT :{BLACK}Bakım gerekmiyorsa bunu atla
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Fiyat: {CURRENCY} Ağırlık: {WEIGHT_S}{}Hız: {VELOCITY} Güç: {POWER}{}Bakım: {CURRENCY}/sene{}Kapasite: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Bozuldu
@@ -2758,7 +2760,10 @@
STR_TIMETABLE_STATUS_ON_TIME :Bu araç zamanında çalışıyor
STR_TIMETABLE_STATUS_LATE :Bu araç {STRING} geç çalışıyor
STR_TIMETABLE_STATUS_EARLY :Bu araç {STRING} erken çalışıyor
+STR_TIMETABLE_TOTAL_TIME :Bu zaman çizelgesinin bitmesi {STRING} sürecek
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Bu zaman çizelgesinin bitmesi en az {STRING} sürecek (tamamı hesaplanmadı)
STR_TIMETABLE_AUTOFILL :{BLACK}Otomatik doldur
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Zaman tablosunu ilk seferde elde edilen değerleri kullanarak doldur
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Yolda araba var
@@ -3337,7 +3342,10 @@
STR_SIGN_NAME :{SIGN}
STR_VEHICLE_NAME :{VEHICLE}
+STR_NAME_MUST_BE_UNIQUE :{WHITE}İsim daha önce kullanılmamış olmalı
#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Sonraki tabelaya git
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Önceki tabelaya git
########
--- a/src/lang/ukrainian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/ukrainian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1367,7 +1367,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ви дійсно бажаєте створити ландшафт випадково?
STR_MANY_RANDOM_TOWNS :{BLACK}Багато різних міст
STR_RANDOM_TOWNS_TIP :{BLACK}Випадково розташувати міста по карті
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Багато різної промисловості
+STR_MANY_RANDOM_INDUSTRIES :Багато різної промисловості
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Випадково розташувати промисловість по карті
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Неможливо створити промисловість...
@@ -2143,6 +2143,13 @@
STR_4829_REQUIRES :{BLACK}Потребує: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Вантаж чекає на обробку:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Продукція: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Продукція: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Вироблено за місяць:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% перевезено)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Показати в центрі екрану
@@ -3532,3 +3539,8 @@
STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Попереднє позначення
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Фінансувати
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Огляд
+STR_BUILD_NEW_INDUSTRY :{BLACK}Будувати
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Виберіть необхідне виробництво
--- a/src/lang/unfinished/afrikaans.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1124,7 +1124,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Is jy seker jy wil 'n lukraake landeryke skep?
STR_MANY_RANDOM_TOWNS :{BLACK}Baie lukraak stede
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Baie luraak nyweheide
+STR_MANY_RANDOM_INDUSTRIES :Baie luraak nyweheide
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerheide ontwikkel nie...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Oppe die landargitekteur werktuigbaan om land te verhoog/verlaag, boome beplant, ens.
--- a/src/lang/unfinished/greek.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/greek.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1198,7 +1198,7 @@
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Είστε σίγουρος ότι θέλετε να δημιουργήσετε ένα τυχαίο τοπίο;
STR_MANY_RANDOM_TOWNS :{BLACK}Πολλές τυχαίες πόλεις
STR_RANDOM_TOWNS_TIP :{BLACK}Κάλυψη του χάρτη με τυχαία τοποθετημένες πόλεις
-STR_MANY_RANDOM_INDUSTRIES :{BLACK}Πολλές τυχαίες βιομηχανίες
+STR_MANY_RANDOM_INDUSTRIES :Πολλές τυχαίες βιομηχανίες
@@ -2017,3 +2017,4 @@
########
+
--- a/src/lang/unfinished/latvian.txt Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/latvian.txt Fri Jul 13 09:18:50 2007 +0000
@@ -1,28 +1,32 @@
##name Latvian
-##ownname Latviešu valoda
+##ownname Latviešu
##isocode lv_LV
##plural 3
+##case a
+##gender m n f
+
+#
##id 0x0000
STR_NULL :
-STR_0001_OFF_EDGE_OF_MAP :{WHITE}A'rpus kartes robez'as
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pa'ra'k tuvu kartes malai
-STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nepietiek naudas - vajag {CURRENCY}
+STR_0001_OFF_EDGE_OF_MAP :{WHITE}Ārpus kartes robežām
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pārāk tuvu kartes malai
+STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nepietiek naudas - nepieciešami {CURRENCY}
STR_0004 :{WHITE}{CURRENCY}
STR_0005 :{RED}{CURRENCY}
STR_EMPTY :
-STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei ja'bu't plakanai
-STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
+STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei jābūt plakanai
+STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING.a}
STR_0009 :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (cel'a' no
+STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (ceļā no
STR_000B :{YELLOW}{STATION})
-STR_000C_ACCEPTS :{BLACK}Pien'em: {WHITE}
-STR_000D_ACCEPTS :{BLACK}Pien'em: {GOLD}
+STR_000C_ACCEPTS :{BLACK}Pieņem: {WHITE}
+STR_000D_ACCEPTS :{BLACK}Pieņem: {GOLD}
STR_000E :
-STR_000F_PASSENGERS :Pasaz'ierus
+STR_000F_PASSENGERS :Pasažieri
STR_0010_COAL :Ogles
-STR_0011_MAIL :Pastu
-STR_0012_OIL :Naftu
+STR_0011_MAIL :Pasts
+STR_0012_OIL :Nafta
STR_0013_LIVESTOCK :Liellopus
STR_0014_GOODS :Preces
STR_0015_GRAIN :Graudus
@@ -146,12 +150,15 @@
STR_ABBREV_BATTERIES :{TINYFONT}BT
STR_ABBREV_PLASTIC :{TINYFONT}PL
STR_ABBREV_FIZZY_DRINKS :{TINYFONT}BU
+STR_ABBREV_NONE :{TINYFONT}NAV
+STR_ABBREV_ALL :{TINYFONT}VISI
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Karte - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Spe'les parametri
STR_00B2_MESSAGE :{YELLOW}Zin'ojums
STR_00B3_MESSAGE_FROM :{YELLOW}Zin'ojums no {STRING}
+STR_POPUP_CAUTION_CAPTION :{WHITE}Uzmanību!
STR_00B4_CAN_T_DO_THIS :{WHITE}Ta' nevar dari't....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}S'o laukumu nevar noli'dzina't....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Org'ìina'la's autortiesi'bas {COPYRIGHT} 1995 Chris Sawyer, Visas tiesi'bas rezerve'tas
@@ -277,6 +284,7 @@
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
+STR_OSNAME_SUNOS :SunOS
STR_013B_OWNED_BY :{WHITE}...pieder {STRING}
STR_013C_CARGO :{BLACK}Krava
@@ -284,12 +292,15 @@
STR_013E_CAPACITIES :{BLACK}Ietilpi'ba
STR_013E_TOTAL_CARGO :{BLACK}Krava kopa'
STR_013F_CAPACITY :{BLACK}Ietilpi'ba: {LTBLUE}{CARGO}
+STR_CAPACITY_MULT :{BLACK}Ietilpība: {LTBLUE}{CARGO} (x{NUM})
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Kope'ja' vilciena kravas ietilpi'ba:
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
STR_0140_NEW_GAME :{BLACK}Jauna spe'le
STR_0141_LOAD_GAME :{BLACK}Iela'de't spe'li
STR_SINGLE_PLAYER :{BLACK}Viens spe'le'ta'js
STR_MULTIPLAYER :{BLACK}Daudz-spe'le'ta'ju
+STR_SCENARIO_EDITOR :{BLACK}Scenāriju redaktors
STR_64 :64
STR_128 :128
@@ -306,6 +317,34 @@
STR_0152_TOWN_DIRECTORY :Pilse'tu saraksts
STR_0153_SUBSIDIES :Subsi'dijas
+STR_UNITS_IMPERIAL :Britu
+STR_UNITS_METRIC :Metriska
+STR_UNITS_SI :SI
+
+STR_UNITS_VELOCITY_IMPERIAL :{COMMA} jūdzes/h
+STR_UNITS_VELOCITY_METRIC :{COMMA} km/h
+STR_UNITS_VELOCITY_SI :{COMMA} m/s
+
+STR_UNITS_POWER_IMPERIAL :{COMMA} zs
+STR_UNITS_POWER_METRIC :{COMMA} zs
+STR_UNITS_POWER_SI :{COMMA} kW
+
+STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t
+STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t
+STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg
+
+STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
+
+STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}galoni
+STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l
+STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³
+
+STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
+
+STR_UNITS_FORCE_IMPERIAL :{COMMA}x10³ mārciņasf
+STR_UNITS_FORCE_METRIC :{COMMA} tonnu spēks
+STR_UNITS_FORCE_SI :{COMMA} kN
+
############ range for menu starts
STR_0154_OPERATING_PROFIT_GRAPH :Pana'kumu grafiks
STR_0155_INCOME_GRAPH :Iena'kumu grafiks
@@ -322,7 +361,7 @@
STR_015D_LOAD_GAME :Iela'de't spe'li
STR_015E_QUIT_GAME :Pamest spe'li
STR_015F_QUIT :Iziet a'ra'
-STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai tu patiesi gribi pamest s'o spe'li?
+STR_ABANDON_GAME_QUERY :{YELLOW}Vai jūs tiešām vēlaties pārtraukt šo spēli?
STR_0161_QUIT_GAME :{WHITE}Pamest spe'li
STR_SORT_ORDER_TIP :{BLACK}Izve'le'ties saka'rtojumu (dilstos's/augos's)
STR_SORT_CRITERIA_TIP :{BLACK}Izve'le'ties sorte's'anas krite'riju
@@ -342,6 +381,34 @@
STR_SORT_BY_RELIABILITY :Dros'i'ba
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kope'ja' ietilpi'ba pe'c kravas tipa
STR_SORT_BY_MAX_SPEED :maksima'lais a'trums
+STR_SORT_BY_MODEL :Modelis
+STR_SORT_BY_VALUE :Vērtība
+STR_SORT_BY_FACILITY :Stacijas veids
+STR_SORT_BY_WAITING :Gaidošās kravas vērtība
+STR_SORT_BY_RATING_MAX :Kravas reitings
+STR_ENGINE_SORT_ENGINE_ID :DzinējaID (klasiskais veids)
+STR_ENGINE_SORT_COST :Izmaksas
+STR_ENGINE_SORT_POWER :Jauda
+STR_ENGINE_SORT_INTRO_DATE :Ieviešanas datums
+STR_ENGINE_SORT_RUNNING_COST :Lietošanas izmaksas
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Jauda/lietošanas izmaksas
+STR_ENGINE_SORT_CARGO_CAPACITY :Kravnesība
+STR_NO_WAITING_CARGO :{BLACK}Neviena veida krava negaida
+STR_SELECT_ALL_FACILITIES :{BLACK}Izvēlēties visu aprīkojumu
+STR_SELECT_ALL_TYPES :{BLACK}Izvēlēties visus kravas veidus (ieskaitot, kas negaida)
+STR_AVAILABLE_TRAINS :{BLACK}Pieejamie vilcieni
+STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Pieejamie transportlīdzekļi
+STR_AVAILABLE_SHIPS :{BLACK}Pieejamie kuģi
+STR_AVAILABLE_AIRCRAFT :{BLACK}Pieejamās lidmašīnas
+STR_AVAILABLE_ENGINES_TIP :{BLACK}Apskatīties visus vilcējus, kas pieejami šim transportlīdzekļu veidam.
+STR_MANAGE_LIST :{BLACK}Labot sarakstu
+STR_MANAGE_LIST_TIP :{BLACK}Dot norādījumus visiem transportlīdzekļiem, kas ir šajā sarakstā
+STR_REPLACE_VEHICLES :Nomainīt transportlīdzekļus
+STR_SEND_TRAIN_TO_DEPOT :Sūtīt uz depo
+STR_SEND_ROAD_VEHICLE_TO_DEPOT :Sūtīt uz depo
+STR_SEND_SHIP_TO_DEPOT :Sūtīt uz depo
+STR_SEND_AIRCRAFT_TO_HANGAR :Sūtīt uz angāru
+STR_SEND_FOR_SERVICING :Sūtīt uz apkalpošanu
############ range for months starts
STR_0162_JAN :Jan
@@ -407,8 +474,8 @@
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}S'i' gada iena'kums: {CURRENCY} (paga'jus'aja' gada': {CURRENCY})
############ range for service numbers starts
-STR_AGE :{COMMA} gad{P s i} ({COMMA})
-STR_AGE_RED :{RED}{COMMA} gad{P s i} ({COMMA})
+STR_AGE :{COMMA} gad{P s i u} ({COMMA})
+STR_AGE_RED :{RED}{COMMA} gad{P s i u} ({COMMA})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Cel'u transporta li'dzeklis
@@ -508,6 +575,7 @@
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Dze'st tekos'o programmu (tikai 1.Specia'lo vai 2.Specia'lo)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Saglaba't muzikas rez'i'mus
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Uzkliks'k'ini uz muzikas treku lai to pievienotu tekos'ajai programmai (1.Specia'lai vai 2.Specia'lai)
+STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Uzklikšķiniet uz dziemas, lai to izdzēstu no šībrīža programmas (tikai Pielāgotā1 un Pielāgotā2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Pa'rsle'gt muzikas saraksta sajauks'anu
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Para'di't muzikas saraksta atzi'me's'anas logu
STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Uzkliks'k'ini uz servisa lai iecentre'tu skatu uz industriju vai pilse'tu
@@ -523,6 +591,7 @@
STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Sa'ncens'a stacija' ierodas pirmais transporta li'dzeklis
STR_0208_ACCIDENTS_DISASTERS :{YELLOW}Negadijumi / ava'rijas
STR_0209_COMPANY_INFORMATION :{YELLOW}Kompa'nijas informa'cija
+STR_NEWS_OPEN_CLOSE :{YELLOW}Atvērt / aizvērt industrijas
STR_020A_ECONOMY_CHANGES :{YELLOW}Ekonomijas izmain'as
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Padoms / informa'cija par spe'le'ta'ja transporta li'dzekl'iem
STR_020C_NEW_VEHICLES :{YELLOW}Jaunie transporta li'dzekl'i
@@ -547,20 +616,18 @@
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{COMPANY} sasniegus'i '{STRING}' statusu!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{PLAYERNAME} no {COMPANY} sasniegusi '{STRING}' statusu!
STR_021F :{BLUE}{COMMA}
-STR_0220_CREATE_SCENARIO :{BLACK}Radi't scena'riju
STR_0221_OPENTTD :{YELLOW}OpenTTD
STR_0222_SCENARIO_EDITOR :{YELLOW}Scena'riju redaktors
STR_0223_LAND_GENERATION :{WHITE}Zemes g'enere's'ana
STR_0224 :{BLACK}{UPARROW}
STR_0225 :{BLACK}{DOWNARROW}
-STR_0226_RANDOM_LAND :{BLACK}Nejaus'i g'enere'ta zeme
-STR_0227_RESET_LAND :{BLACK}Atjaunot zemi
STR_0228_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Palielina't zemes apgabalu pazemina's'anai/pazels'anai
STR_0229_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Samazina't zemes apgabalu pazemina's'anai/pazels'anai
STR_022A_GENERATE_RANDOM_LAND :{BLACK}G'enere't nejaus'u zemi
STR_022B_RESET_LANDSCAPE :{BLACK}Atjaunot zemes virsu
STR_022C_RESET_LANDSCAPE :{WHITE}Atjaunot zemes virsu
-STR_022D_ARE_YOU_SURE_YOU_WANT_TO :{WHITE}Vai tu paties'a'm gribi atjaunot zemes virsu?
+STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Novākt visus spēlētājam piederošos īpašumus no kartes
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Vai esat drošs, ka vēlaties novākt visus spēlētājam piederošos īpašumus?
STR_022E_LANDSCAPE_GENERATION :{BLACK}Zemes virsas g'enere's'ana
STR_022F_TOWN_GENERATION :{BLACK}Pilse'tu g'enere's'ana
STR_0230_INDUSTRY_GENERATION :{BLACK}Industrijas g'enere's'ana
@@ -671,7 +738,7 @@
STR_0298_LOAD_SCENARIO :{WHITE}Iela'de't scena'riju
STR_0299_SAVE_SCENARIO :{WHITE}Saglaba't scena'riju
STR_029A_PLAY_SCENARIO :{BLACK}Spe'le't scena'riju
-STR_029B_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai ju's ties'a'm ve'laties izbeigt s'o scena'riju?
+STR_QUIT_SCENARIO_QUERY :{YELLOW}Vai esat pārliecināts, ka vēlaties pamest šo scenāriju?
STR_029C_QUIT_EDITOR :{WHITE}Beigt redaktoru
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...atl'auts bu've't tikai pilse'ta's ar iedzi'vota'ju skaitu vismaz 1200
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Pa'rvietot starta datumu 1 gadu uz atpakal'u
@@ -698,6 +765,7 @@
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Transporta li'dzekl'u dizaina nosaukumu izve'le
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Saglaba't specia'los transporta li'dzekl'a dizaina nosaukumus
+STR_CHECKMARK :{CHECKMARK}
############ range for menu starts
STR_02C3_GAME_OPTIONS :Spe'les rez'i'mi
STR_02C5_DIFFICULTY_SETTINGS :Gru'ti'bas paka'pes
@@ -741,7 +809,9 @@
STR_02E0_CURRENCY_UNITS :{BLACK}Naudas vieni'bas
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Naudas vieni'bu izve'le
+STR_MEASURING_UNITS :{BLACK}Mērvienības
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
+STR_MEASURING_UNITS_SELECTION :{BLACK}Mērvienību izvēle
STR_02E6_ROAD_VEHICLES :{BLACK}Cel'a satiksmes li'dzekl'i
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Braucama's cel'a puses izve'le
@@ -819,6 +889,8 @@
STR_TOWNNAME_CZECH :C'ehijas
STR_TOWNNAME_SWISS :S'veices
STR_TOWNNAME_DANISH :Da'n'u
+STR_TOWNNAME_TURKISH :Turku
+STR_TOWNNAME_ITALIAN :Itāļu
############ end of townname region
STR_CURR_GBP :Ma'rcin'as (£)
@@ -844,6 +916,8 @@
STR_CURR_ROL :Ruma'nijas lejas (ROL)
STR_CURR_RUR :Krievijas rubl'i (RUR)
STR_CURR_SEK :Zviedru kronas (SEK)
+STR_CURR_YTL :Turcijas lira (YTL)
+STR_CURR_SKK :Slovākijas krona (SKK)
STR_CURR_CUSTOM :Specia'la...
@@ -892,6 +966,8 @@
STR_RES_OTHER :cits
STR_NOTHING :
+STR_SMALL_RIGHT_ARROW :{TINYFONT}{RIGHTARROW}
+
STR_CANT_SHARE_ORDER_LIST :{WHITE}Nevar dali'ties ar uzdevumu sarakstu...
STR_CANT_COPY_ORDER_LIST :{WHITE}Nevar kope't uzdevumu sarakstu...
STR_END_OF_SHARED_ORDERS :{SETX 10}- - Dali'to uzdevumu beigas - -
@@ -960,6 +1036,7 @@
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Vienme'r atl'aut mazas lidostas: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Brīdināt, ja vilciens apmaldās: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Pa'rskati't transporta uzdevumus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :Ne'
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :Ja', izn'emot transporta li'dzekl'us kas apsta'dina'ti
@@ -972,91 +1049,313 @@
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Kl'u'das zin'ojuma ilgums: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Râdît pilsçtas iedzîvotâju skaitu pie pilsçtas nosaukuma: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Neredzami koki (ar caurspi'di'ga'm celtne'm): {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Parasts
+STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sniega li'nijas augstums: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Reljefa raupjums (tikai TerraGenesis): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ļoti līdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Līdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Nelīdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Ļoti nelīdzena
+STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Koku izvietošanas algoritms: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER_NONE :Nav
+STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Parasts
+STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Uzlabots
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Pret pulksteņa radītaja virzienu
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :Pa pulksteņa radītaja virzienu
+
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maksima'lais staciju izkaisijums: {ORANGE}{STRING} {RED}Uzmani'bu: augsts li'menis pale'lina spe'li
+STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Apkalpots helikopterus heliportos automātiski: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Sasaitē ainavas rīkjoslu ar dzelzceļa/ceļa/ūdens/lidostu rīkjoslu: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Pretējš pārtīšana virziens: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Rādīt mērījumu rīkjoslu, kas tiek izmantoti dažādi celniecības rīki: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Parādīt kompānijas ģildes: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES_NONE :Nav
+STR_CONFIG_PATCHES_LIVERIES_OWN :Paša uzņēmums
+STR_CONFIG_PATCHES_LIVERIES_ALL :Visi uzņēmumi
+STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Iespējot jauno mākslīgo intelektu (alpha): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Atļaut mākslīgo intelektu daudzlietotāju režīmā (eksperimentāls): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Noklusētais vilcienu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Noklusētais vilcienu apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Noklusētais autotransporta apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Noklusētais autotransporta apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Noklusētais lidaparātu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Noklusētais lidaparātu apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Noklusētais kuģu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Noklusētais kuģu apkalpošanas periods: {ORANGE}atspējots
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Aizliedz servisu kad saboja's'ana's izsle'gta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Ieslēgt vagonu ātruma ierobežojumus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Izslēgt eletrificēto dzelzceļu: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Krāsainās savīs parādās: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Sākuma gads: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Nobeidz spe'li: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ieslēgt lēzenas izmaiņas ekonomikā
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Atïauj akciju pirkðanu no citâm kompânijâm
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Kads velk, izvietot semaforus katras: {ORANGE}{STRING} šūnas
+
+
+STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Galvenās rīkjoslas izvietojums: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Pa kreisi
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centrâ
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Pa labi
+STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Logu pielipšanas rādiuss: {ORANGE}{STRING} px
+STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Logu pielipšanas rādiuss: {ORANGE}atspējots
+STR_CONFIG_PATCHES_GUI :{BLACK}Saskarne
+STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Būvniecība
+STR_CONFIG_PATCHES_VEHICLES :{BLACK}Transportlīdzekļi
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stacijas
+STR_CONFIG_PATCHES_ECONOMY :{BLACK}Ekonomika
+STR_CONFIG_PATCHES_AI :{BLACK}Pretiniekis
+STR_CONFIG_PATCHES_DISABLED :atspējots
STR_CONFIG_PATCHES_INT32 :{NUM}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
+STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Mainīt iestatījuma vērtību
+STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Daži vai visi apkalpošanas intervāli ir nesavietojami ar izvēlētajiem iestatījumiem! Der 5-90% un 30-800 dienas
+STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Izmantot YAPF kuģiem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Izmantot YAPF autotransportam: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Izmantot YAPF vilcieniem: {ORANGE}{STRING}
+STR_TEMPERATE_LANDSCAPE :Mērenais klimats
+STR_SUB_ARCTIC_LANDSCAPE :Subarktiskais klimats
+STR_SUB_TROPICAL_LANDSCAPE :Subtropiskais klimats
+STR_TOYLAND_LANDSCAPE :Rotaļlietu zeme
+STR_CHEATS :{WHITE}Blēdības
+STR_CHEATS_TIP :{BLACK}Izvēlas rūtiņas norāda uz to, vai esat jau izmantojis šo blēdību
+STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneļi drīkst krutoties: {ORANGE}{STRING}
+STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Būvniecības pauzes režīmā: {ORANGE}{STRING}
+STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktīvās lidmašīnas neavarēs (bieži) mazajās lidostās: {ORANGE} {STRING}
+STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Klimata maiņa: {ORANGE} {STRING}
+STR_CHEAT_CHANGE_DATE :{LTBLUE}Datuma maiņa: {ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}L'auj izmaini't produktu ve'rti'bas: {ORANGE}{STRING}
+STR_HEADING_FOR_WAYPOINT :{LTBLUE}Ceļā uz {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ceļā uz {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Caur {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT :Brauc caur {WAYPOINT} bez apstāšanās
+STR_WAYPOINTNAME_CITY :Kontrolpunkts {TOWN}
+STR_WAYPOINTNAME_CITY_SERIAL :Kontrolpunkts {TOWN} #{COMMA}
+STR_LANDINFO_WAYPOINT :Kontrolpunkts
+STR_WAYPOINT :{WHITE}Kontrolpunkts
+STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Izvēlaties kontrolpunkta veidu
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
-
+STR_EDIT_WAYPOINT_NAME :{WHITE}Labot kontrolpunkta nosaukumu
+STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nevar pārsaukt kontrolpunktu...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Pārvērst sliedes par kontrolpunktu
+STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nevar šeit uzbūvēt vilcienu kontrolpunktu...
+STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nevar šeit noņemt vilcienu kontrolpunktu...
+STR_BUILD_AUTORAIL_TIP :{BLACK}Būvē dzelzceļu izmantojot Autosliežu režīmu
+STR_NO_TOWN_IN_SCENARIO :{WHITE}...šajā scenārijā nav pilsētu
+STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Vai jūs esat pārliecināts, ka vēlaties izveidot nejauši izvēlētu ainavu?
+STR_MANY_RANDOM_TOWNS :Daudz nejauši izveidotu pilsētu
+STR_RANDOM_TOWNS_TIP :{BLACK}Pāklāt karti ar nejauši izvietotām pilsētām
+STR_MANY_RANDOM_INDUSTRIES :{BLACK}Daudz nejauši izveidotu rūpniecību
+STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pāklāt karti ar nejauši izvietotām rūpniecībām
+STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nevar izveidot rūpniecības...
+
+STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Atvērt aiznavas rīkjoslu, lai mainīt zemes līmeni, stādīt kokus utt.
+STR_LANDSCAPING_TOOLBAR :{WHITE}Ainava
STR_LEVEL_LAND_TOOLTIP :{BLACK}Izlidzinât zemi
+STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki
+STR_TREES_RANDOM_TYPE_TIP :{BLACK}Nejauši izveitot kokus
+STR_CANT_BUILD_CANALS :{WHITE}Nedrīkst šeit būvēt kanālus...
+STR_BUILD_CANALS_TIP :{BLACK}Būvēt kanālus. Nospiediet CTRL, lai izvietotu jūras šūnas (tikai jūras līmenī)
STR_LANDINFO_CANAL :Kanals
+STR_CANT_BUILD_LOCKS :{WHITE}Nevar šeit būvet slūžas
+STR_BUILD_LOCKS_TIP :{BLACK}Būvēt slūžas
+STR_LANDINFO_LOCK :Slūžas
STR_BUOY_IS_IN_USE :{WHITE}...boja jau tiek lietota!
-
+STR_LANDINFO_COORDS :{BLACK}Koordinātes: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nevar novākt daļu stacijas
+STR_CANT_CONVERT_RAIL :{WHITE}Nevar pārveidot sliežu veidu šeit...
+STR_CONVERT_RAIL_TIP :{BLACK}Pārveidot/uzlabot sliežu veidu
+STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Pārvēlciet šeit vilciena lokomotīvi, lai pārdotu visu vilcienu
+STR_DRAG_DROP :{BLACK}Vilkt un nomest
+STR_STATION_DRAG_DROP :{BLACK}Būvēt staciju izmantojot "vilkt un nomest"
+STR_SELECT_STATION_CLASS_TIP :{BLACK}Izvēlaties, kādu stacijas klasi rādīt
+STR_SELECT_STATION_TYPE_TIP :{BLACK}Izvēlaties, kādu stacijas veidu būvēt
+STR_FAST_FORWARD :{BLACK}Paātrināta spēle
+STR_MESSAGE_HISTORY :{WHITE}Ziņojumu vēsture
+STR_MESSAGE_HISTORY_TIP :{BLACK}Neseno ziņu saraksts
+STR_MESSAGES_DISABLE_ALL :{BLACK}Atspējot visu
+STR_MESSAGES_ENABLE_ALL :{BLACK}Iespējot visu
+
+STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Būvēt ogļu raktuvi
+STR_CONSTRUCT_FOREST_TIP :{BLACK}Stādīt kokaudzētavu
+STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Būvēt naftas atradni
+STR_CONSTRUCT_FARM_TIP :{BLACK}Būvēt fermu
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Būvēt vara rūdas raktuvi
+STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Veikt naftas urbumu
+STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Būvēt zelta raktuvi
+STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Būvēt dimantu raktuvi
+STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Būvēt dzelzs rūdas raktuvi
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Finansēt augļu koku plantāciju
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Finansēt gumijkoku plantāciju
+STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Finansēt ūdens ieguvi
+STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Stādīt konfekšpūku mežu
+STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Finansēt bateriju fermu
+STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Veikt kolas urbumus
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Finansēt plastmasas strūklakas
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Būvēt burbuļu ģenerātoru
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Finansēt Toffee raktuves
+STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Būvēt cukura raktuves
STR_INDUSTRYDIR_CAPTION :{WHITE}Industrîjas
+STR_INDUSTRYDIR_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% pārvadāti)
+STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}/{CARGO}){YELLOW} ({COMMA}%/{COMMA}% pārvadāti)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{INDUSTRY}
+STR_INDUSTRY_TOO_CLOSE :{WHITE}...pārāk tuvu citai industrijai
+STR_RAIL_REFIT_VEHICLE_TO_CARRY :{BLACK}Pielāgot vilcienu citas kravas pārvadāšanai
+STR_RAIL_REFIT_VEHICLE :{BLACK}Pārbūvēt vilcienu
+STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Izvēlaties kravas veidu, ko pārvadāt ar vilcienu
+STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Pārbūvēt vilcienu izceltā kravas veida pārvadāšanai
+STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nevar pārbūvēt vilcienu...
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Apkalpošanas intervāls procentos: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Maini't produkciju
+TEMP_AI_IN_PROGRESS :{WHITE}Laipni lūgti jaunā MI izstrādē. Ja jums rodas kādas problēmas, tad sataisiet ekrānuzņēmumu un publicējiet to forumā.
+TEMP_AI_ACTIVATED :{WHITE}Brīdinājums: jaunais MI ir joprojām alfa stadijā! Šobrīd darbojas tikai autotransports!
+TEMP_AI_MULTIPLAYER :{WHITE}Brīdinājums: realizācija joprojām ir eksperimentāla (izmantojot jauno MI). Lūdzu, ziņojiet par problēmām uz truelight@openttd.org.
############ network gui strings
+STR_NETWORK_MULTIPLAYER :{WHITE}Vairāk spēlētāju režīms
STR_NETWORK_PLAYER_NAME :{BLACK}Spelçtâja vârds:
+STR_NETWORK_ENTER_NAME_TIP :{BLACK}Šis vārds, pēc kura jūs pazīs citi spēlētāji
+STR_NETWORK_CONNECTION :{BLACK}Savienojums:
+STR_NETWORK_CONNECTION_TIP :{BLACK}Izvēlaties starp spēli caur internetu vai spēli lokālajā tīklā
+STR_NETWORK_START_SERVER :{BLACK}Palaist serveri
+STR_NETWORK_START_SERVER_TIP :{BLACK}Palaist jūsu personīgo serveri
STR_NETWORK_GAME_NAME :{BLACK}Vârds
+STR_NETWORK_GAME_NAME_TIP :{BLACK}Spēles nosaukums
+STR_NETWORK_INFO_ICONS_TIP :{BLACK}Valoda, servera versija utt.
+STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Noklikšķiniet uz spēles sarakstā, lai to izvēlētos
+
+STR_NETWORK_FIND_SERVER :{BLACK}Atrast serveri
+STR_NETWORK_FIND_SERVER_TIP :{BLACK}Meklēt serveri tīklā
+STR_NETWORK_ADD_SERVER :{BLACK}Pievienot serveri
+STR_NETWORK_ADD_SERVER_TIP :{BLACK}Pievieno serveri sarakstam, kurš vienmēr tiks pārbaudīts, vai tajā nav palaistas spēles.
+STR_NETWORK_ENTER_IP :{BLACK}Ievadiet servera adresi
+
+STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
+STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienti
+STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienti tiešsaitē / Maksimālais klientu skaits{}Uzņēmumi tiešsaistē / Maksimālais uzņēmumu skaits
+STR_NETWORK_GAME_INFO :{SILVER}SPĒLES INFORMĀCIJA
+STR_ORANGE :{ORANGE}{STRING}
+STR_NETWORK_CLIENTS :{SILVER}Klienti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
+STR_NETWORK_LANGUAGE :{SILVER}Valoda: {WHITE}{STRING}
+STR_NETWORK_MAP_SIZE :{SILVER}Kartes izmērs: {WHITE}{COMMA}x{COMMA}
+STR_NETWORK_SERVER_VERSION :{SILVER}Servera izmērs: {WHITE}{STRING}
+STR_NETWORK_SERVER_ADDRESS :{SILVER}Servera adrese: {WHITE}{STRING} : {NUM}
+STR_NETWORK_START_DATE :{SILVER}Sākuma datums: {WHITE}{DATE_SHORT}
+STR_NETWORK_CURRENT_DATE :{SILVER}Šībrīža datums: {WHITE}{DATE_SHORT}
+STR_NETWORK_PASSWORD :{SILVER}Aizsargāts ar paroli!
+STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVERIS NAV TIEŠSAISTĒ
+STR_NETWORK_SERVER_FULL :{SILVER}SERVERIS IR PILNS
+STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSIJU NESAKRITĪBA
+STR_NETWORK_GRF_MISMATCH :{SILVER}NEWGRF NESAKRITĪBA
+
+STR_NETWORK_JOIN_GAME :{BLACK}Pievienoties spēlei
-STR_ORANGE :{ORANGE}{STRING}
-STR_NETWORK_LANGUAGE :{SILVER}Valoda: {WHITE}{STRING}
-STR_NETWORK_SERVER_ADDRESS :{SILVER}Servera adrese: {WHITE}{STRING} : {NUM}
+STR_NETWORK_START_GAME_WINDOW :{WHITE}Sākt jaunu vairākspēlētāju spēli
-
-
-
+STR_NETWORK_NEW_GAME_NAME :{BLACK}Spēles nosaukums:
+STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Spēles nosaukums, kas tiks attēlots citiem spēlētajiem vairākspēlētāju spēļu izvēlnē
+STR_NETWORK_SET_PASSWORD :{BLACK}Uzstādīt paroli
+STR_NETWORK_PASSWORD_TIP :{BLACK}Aizsargā jūsu spēli ar paroli, ja jūs nevēlaties, lai tā būtu publiski pieejama
+STR_NETWORK_SELECT_MAP :{BLACK}Izvēlaties karti:
+STR_NETWORK_SELECT_MAP_TIP :{BLACK}Kuru karti jūs vēlaties spēlēt?
+STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maks. klientu sk.:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Izvēlaties maksimālo klientu skaitu. Ne visiem slotiem ir jābūt aizpildītiem
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internets
STR_NETWORK_LAN_INTERNET :LAN / Internets
+STR_NETWORK_INTERNET_ADVERTISE :Internets (reklamēt)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_0_PLAYERS :0 spēlētāju
+STR_NETWORK_1_PLAYERS :1 spēlētājs
STR_NETWORK_2_PLAYERS :2 clienti
+STR_NETWORK_3_PLAYERS :3 spēlētāji
+STR_NETWORK_4_PLAYERS :4 spēlētāji
+STR_NETWORK_5_PLAYERS :5 spēlētāji
+STR_NETWORK_6_PLAYERS :6 spēlētāji
+STR_NETWORK_7_PLAYERS :7 spēlētāji
+STR_NETWORK_8_PLAYERS :8 spēlētāji
+STR_NETWORK_9_PLAYERS :9 spēlētāji
+STR_NETWORK_10_PLAYERS :10 spēlētāji
+STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Maks. uzņēmumu sk.:
+STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Ierobežo serveri noteiktam uzņēmumu daudzumam
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Maks. novērotāju sk.:
+STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Ierobēžo serveri noteiktam novērotāju skaitam
+STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Valodu, kurā runā:
+STR_NETWORK_LANGUAGE_TIP :{BLACK}Citi lietotāji zinās, kurā valodā tiek runāts uz servera
+STR_NETWORK_COMBO5 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Sakt spçli
+STR_NETWORK_START_GAME_TIP :{BLACK}Sāk jaunu tīkla spēli ar nejaušu karti vai scenāriju
+STR_NETWORK_LOAD_GAME :{BLACK}Ielādēt spēli
+STR_NETWORK_LOAD_GAME_TIP :{BLACK}Atsākt iepriekš saglabātu vairākspēlētāju spēli (esi pārliecināts, ka atsākat kā pareizs spēlētājs)
############ Leave those lines in this order!!
+STR_NETWORK_LANG_ANY :Jebkurā
STR_NETWORK_LANG_ENGLISH :Angïu
+STR_NETWORK_LANG_GERMAN :Vācu
+STR_NETWORK_LANG_FRENCH :Franču
+STR_NETWORK_LANG_BRAZILIAN :Brazīļu
+STR_NETWORK_LANG_BULGARIAN :Bulgāru
+STR_NETWORK_LANG_CHINESE :Ķīniešu
+STR_NETWORK_LANG_CZECH :Čehu
+STR_NETWORK_LANG_DANISH :Dāņu
+STR_NETWORK_LANG_DUTCH :Holandiešu
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Somu
+STR_NETWORK_LANG_HUNGARIAN :Ungāru
+STR_NETWORK_LANG_ICELANDIC :Islandiešu
+STR_NETWORK_LANG_ITALIAN :Itāliešu
+STR_NETWORK_LANG_JAPANESE :Japāņu
+STR_NETWORK_LANG_KOREAN :Korejēšu
+STR_NETWORK_LANG_LITHUANIAN :Lietuviešu
+STR_NETWORK_LANG_NORWEGIAN :Norvēģu
+STR_NETWORK_LANG_POLISH :Poļu
+STR_NETWORK_LANG_PORTUGUESE :Portugāļu
+STR_NETWORK_LANG_ROMANIAN :Rumāņu
############ End of leave-in-this-order
@@ -1090,6 +1389,11 @@
STR_CONFIG_PATCHES_MAP_X :{LTBLUE}kartes X-izme'ri: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAP_Y :{LTBLUE}kartes Y-izme'ri: {ORANGE}{STRING}
+
+##### PNG-MAP-Loader
+
+
+
##id 0x0800
STR_FEEDER_TINY :{TINYFONT}{YELLOW}Pa'rved: {CURRENCY}
STR_FEEDER :{YELLOW}Pa'rved: {CURRENCY}
@@ -1153,27 +1457,77 @@
STR_2806 :{WHITE}{SIGN}
STR_280A_SIGN :Zîme
STR_280E_TREES :Koki
+STR_280F_RAINFOREST :Lietus meži
+STR_2810_CACTUS_PLANTS :Kaktusu plantācijas
##id 0x3000
+STR_3000_RAIL_STATION_SELECTION :{WHITE}Dzelzceļa stacijas izvēle
+STR_3001_AIRPORT_SELECTION :{WHITE}Lidostas izvēle
+STR_3002_ORIENTATION :{BLACK}Virziens
+STR_3003_NUMBER_OF_TRACKS :{BLACK}Mašīnu skaits
+STR_3004_PLATFORM_LENGTH :{BLACK}Platformas garums
+STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Pārāk tuvu citai dzelzceļa stacijai
+STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Pārāk daudz staciju/iekrašanas zonu šajā pilsētā
+STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Pārāk daudz stacijas/iekraušanas zonas
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Pa'ra'k daudz autobusa pieturu
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}pa'ra'k daudz kravas auto staciju
+STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Pārāk tuvu citai stacijai/iekraušanas zonai
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
+STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Jānojauc dzelzsceļa stacija vispirms
+STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Pārāk tuvu citai lidostai
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Vispirms jānosauc lidosta
+STR_3030_RENAME_STATION_LOADING :Pārsaukt staciju/iekraušanas zonu
+STR_3031_CAN_T_RENAME_STATION :{WHITE}Nevar pārsaukt staciju...
STR_3032_RATINGS :{BLACK}Reitingi
+STR_3033_ACCEPTS :{BLACK}Pieņem
+STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Vietējais transporta pakalpojumu reitings:
############ range for rating starts
+STR_3035_APPALLING :Drausmīgs
+STR_3036_VERY_POOR :Ļoti vājš
+STR_3037_POOR :Vājš
+STR_3038_MEDIOCRE :Viduvējs
+STR_3039_GOOD :Labs
+STR_303A_VERY_GOOD :Ļoti labs
+STR_303B_EXCELLENT :Lielisks
+STR_303C_OUTSTANDING :Perfekts
############ range for rating ends
STR_303D :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
+STR_303E_NO_LONGER_ACCEPTS :{WHITE}{STATION} vairs nepieņem {STRING}
+STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} vairs nepieņem {STRING} vai {STRING}
+STR_3040_NOW_ACCEPTS :{WHITE}{STATION} pieņem {STRING}
+STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} pieņem {STRING} un {STRING}
+STR_3042_BUS_STATION_ORIENTATION :{WHITE}Autoostas virziens
+STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Virpirms jānojauc autoosta
+STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Stacij{P a s u}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
+STR_304A_NONE :{YELLOW}- Nav -
+STR_304B_SITE_UNSUITABLE :{WHITE}...vieta nav piemērota
+STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Pārāk tuvu citam dokam
+STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Vispirms jānojauc doks
+STR_304E_SELECT_RAILROAD_STATION :{BLACK}Izvēlaties dzelzsceļa stacijas virzienu
+STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Izvēlaties platformu skaitu dzelzsceļa stacijai
+STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Izvēlaties autoostas virzienu
+STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Centrēt galveno skatījumu uz stacijas atrašanās vietu
+STR_3054_SHOW_STATION_RATINGS :{BLACK}Parādīt stacijas reitingu
+STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Mainīt stacijas nosaukumu
+STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO :{BLACK}Rādīt pieņemamās kravas sarakstu
+STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Staciju nosaukumi - uzklišķiniet uz nosaukuma, lai centrētu galveno skatījumu uz staciju
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Izvēlaties lidostas izmēru/veidu
STR_305C_0 :{STATION} {STATIONFEATURES}
-STR_STATION_SIGN_TINY :{TINYFONT}{STATION} {STATIONFEATURES}
+STR_STATION_SIGN_TINY :{TINYFONT}{STATION}
+STR_305E_RAILROAD_STATION :Dzelzsceļa stacija
+STR_305F_AIRCRAFT_HANGAR :Lidaparātu angārs
STR_3060_AIRPORT :Lidosta
STR_3062_BUS_STATION :Autoosta
STR_3063_SHIP_DOCK :Osta
STR_3068_DOCK :{WHITE}Osta
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...neregula'ras stacijas nav atl'autas
+STR_UNDEFINED :(nedefinēta rinda)
+
##id 0x3800
STR_3804_WATER :Ûdens
@@ -1185,12 +1539,41 @@
STR_4804_SAWMILL :Gateris
STR_4805_FOREST :Mežs
STR_480B_FARM :Ferma
+STR_480D_OIL_WELLS :Naftas urbumi
+STR_480E_BANK :Banka
+STR_480F_FOOD_PROCESSING_PLANT :Ēdiena apstrādes fabrika
+STR_4810_PAPER_MILL :Papirfabrika
+STR_4811_GOLD_MINE :Zelta raktuves
STR_4812_BANK :Banka
+STR_4813_DIAMOND_MINE :Dimantu raktuves
+STR_4814_IRON_ORE_MINE :Dzelzs rūdas raktuves
+STR_4815_FRUIT_PLANTATION :Augļu plantācija
+STR_4816_RUBBER_PLANTATION :Gumijkoka plantācija
+STR_4817_WATER_SUPPLY :Ūdens ieguve
+STR_4818_WATER_TOWER :Ūdens tornis
STR_4819_FACTORY :Rûpnîca
+STR_481A_FARM :Ferma
+STR_481B_LUMBER_MILL :Kokzāģētava
+STR_481D_CANDY_FACTORY :Saldumu fabrika
+STR_481F_COLA_WELLS :Kolas urbumi
+STR_4820_TOY_SHOP :Rotaļlietu veikals
+STR_4821_TOY_FACTORY :Rotaļlietu fabrika
+STR_4822_PLASTIC_FOUNTAINS :Plastmasas strūklakas
+STR_4824_BUBBLE_GENERATOR :Burbuļu ģenerātors
+STR_4826_SUGAR_MINE :Cukura raktuve
############ range for requires starts
+STR_4827_REQUIRES :{BLACK}Nepieciešams: {YELLOW}{STRING}
+STR_4828_REQUIRES :{BLACK}Nepieciešams: {YELLOW}{STRING}, {STRING}
+STR_4829_REQUIRES :{BLACK}Nepieciešams: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Krava, kas jāapstrādā:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+############ range for produces ends
+
+STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produkcija iepriekšēja mēnesī:
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Vilciens tunelî
@@ -1208,18 +1591,45 @@
STR_SV_TRAIN_NAME :Vilciens {COMMA}
STR_SV_STNAME :{STRING}
+STR_SV_STNAME_AIRPORT :{STRING} Lidosta
+STR_SV_STNAME_MINES :{STRING} Raktuves
+STR_SV_STNAME_DOCKS :{STRING} Doki
+STR_SV_STNAME_BUOY_1 :{STRING} Boja 1
+STR_SV_STNAME_BUOY_2 :{STRING} Boja 2
+STR_SV_STNAME_BUOY_3 :{STRING} Boja 3
+STR_SV_STNAME_BUOY_4 :{STRING} Boja 4
+STR_SV_STNAME_BUOY_5 :{STRING} Boja 5
+STR_SV_STNAME_BUOY_6 :{STRING} Boja 6
+STR_SV_STNAME_BUOY_7 :{STRING} Boja 7
+STR_SV_STNAME_BUOY_8 :{STRING} Boja 8
+STR_SV_STNAME_BUOY_9 :{STRING} Boja 9
STR_SV_STNAME_FOREST :{STRING} Mežs
+STR_SV_STNAME_FALLBACK :{STRING} Stacija #{NUM}
############ end of savegame specific region!
##id 0x6800
+STR_6800_DIFFICULTY_LEVEL :{WHITE}Grūtības līmenis
STR_OPTIONS_SAVE_CHANGES :{BLACK}Saglabât
############ range for difficulty levels starts
STR_6801_EASY :{BLACK}Viegls
+STR_6802_MEDIUM :{BLACK}Vidējs
+STR_6803_HARD :{BLACK}Grūts
+STR_6804_CUSTOM :{BLACK}Pielāgots
############ range for difficulty levels ends
############ range for difficulty settings starts
+STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimāls pretinieku daudzums: {ORANGE}{COMMA}
+STR_6806_COMPETITOR_START_TIME :{LTBLUE}Pretinieku sākuma laiks: {ORANGE}{STRING}
+STR_6807_NO_OF_TOWNS :{LTBLUE}Pilsētu skaits: {ORANGE}{STRING}
+STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Industriju skaits: {ORANGE}{STRING}
+STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Maksimāls sākotnējais kredīts: {ORANGE}{CURRENCY}
+STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Sākotnējā kredīta likme: {ORANGE}{COMMA}%
+STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Transportlīdzekļu lietošanas izdevumi: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Pretinieku būvniecības ātrums: {ORANGE}{STRING}
+STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Pretinieku inteliģence: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Transportlīdzekļu lūšana: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_6819 :{BLACK}{SMALLLEFTARROW}
@@ -1239,9 +1649,19 @@
STR_7006_COLOR_SCHEME :{GOLD}Krasas shçma:
STR_7007_NEW_COLOR_SCHEME :{WHITE}Jaunâ Krasas shçma
STR_7010 :{WHITE}{NUM}
+STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Ceļa transp. lietošanas izmaksas
+STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Lidaparātu lietošanas izmaksas
+STR_7016_SHIP_RUNNING_COSTS :{GOLD}Kuģu lietošanas izmaksas
+STR_7017_PROPERTY_MAINTENANCE :{GOLD}Īpašumu apkalpošana
+STR_7018_TRAIN_INCOME :{GOLD}Vilcienu ienākumi
+STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Ceļu transportlīdzekļu ienākumi
+STR_701A_AIRCRAFT_INCOME :{GOLD}Lidaparātu ienākumi
+STR_701B_SHIP_INCOME :{GOLD}Kuģu ienākumi
+STR_701C_LOAN_INTEREST :{GOLD}Kredīta likme
STR_701D_OTHER :{GOLD}Citi
STR_701E :{BLACK}-{CURRENCY}
STR_701F :{BLACK}+{CURRENCY}
+STR_7020_TOTAL :{WHITE}Kopā:
STR_7021 :{COMPANY}{COMPANYNUM}
STR_CURRCOMPACT :{CURRCOMPACT}
STR_7024 :{COMMA}
@@ -1259,6 +1679,8 @@
STR_COMPANY_PASSWORD :{BLACK}Parole
STR_7080_PROTECTED :{WHITE}S'i' kompa'nija ir pa'ra'k jauna lai tirgotu akcijas...
+
+
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Tvaika)
STR_8001_MJS_250_DIESEL :MJS 250 (Dizelis)
@@ -1357,8 +1779,8 @@
STR_8104_AIRCRAFT :lidmaðîna
##id 0x8800
-STR_8804 :{SETX 10}{COMMA}: {STRING}
-STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}
+STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
STR_8807_GO_TO_TRANSFER :Uz {STATION} (Pa'rvest un pan'emt kravu)
STR_8808_GO_TO_UNLOAD :Uz {STATION} (Nokraut)
STR_8809_GO_TO_TRANSFER_UNLOAD :Uz {STATION} (Pa'rvest un atsta't tuks'u)
@@ -1374,8 +1796,11 @@
+
STR_8812_EMPTY :{LTBLUE}Tukšs
STR_8816 :{BLACK}-
+
+
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
STR_SERVICE :{BLACK}Serviss
STR_882E :{WHITE}{VEHICLE}
@@ -1388,6 +1813,8 @@
STR_886F_TRANSFER :{BLACK}Tranzi'ts
+
+
##id 0x9000
STR_9002 :{WHITE}{VEHICLE}
STR_9012_CAPACITY :{BLACK}Capacitâte: {LTBLUE}{CARGO}
@@ -1395,12 +1822,14 @@
STR_9034_RENAME :{BLACK}Pârsaukt
+
##id 0x9800
STR_9805_SHIPS :{WHITE}{COMPANY} - {COMMA} Kuìi
STR_980F :{WHITE}{VEHICLE}
STR_9820_BUILD_NEW_SHIP :{BLACK}Uzbûvet jauno kuìi
STR_9836_RENAME :{BLACK}Pârsaukt
+SERVICE_AT_SHIP_DEPOT :Apkalpošana {TOWN} kuģubūvētavā
##id 0xA000
STR_A00A :{WHITE}{VEHICLE}
@@ -1409,7 +1838,8 @@
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Pârsaukt
STR_GO_TO_AIRPORT_HANGAR :Uz {STATION} Angâru
-SERVICE_AT_AIRPORT_HANGAR :Serviss {STATION} Angarâ
+SERVICE_AT_AIRPORT_HANGAR :Apkalpošana {STATION} angārā
+
##id 0xB000
@@ -1427,6 +1857,11 @@
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
+
+
+
+
+
STR_CURRENCY_SUFFIX :{LTBLUE}Suffikss:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Pariet uz Eiro: {ORANGE}{NUM}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Pariet uz Eiro: {ORANGE}nekad
@@ -1439,10 +1874,16 @@
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA} Kuìi
-STR_REPLACE_VEHICLES :{BLACK}Nomaini transporta lîdzekïus
-STR_REPLACE_VEHICLES_WHITE :{WHITE}Nomaini transporta lîdzekïus
-STR_REPLACE_VEHICLES_START :{BLACK}Sâc nomainît transporta lîdzekïus
-STR_REPLACE_VEHICLES_STOP :{BLACK}Pârtrauc nomainît transporta lîdzekïus
+
+### depot strings
+
+
+
+
+
+STR_REPLACE_VEHICLES_WHITE :{WHITE}Nomainīt {STRING}
+STR_REPLACE_VEHICLES_START :{BLACK}Sākt transportlīdzkļu nomaiņu
+STR_REPLACE_VEHICLES_STOP :{BLACK}Pārtraukt transportlīdzekļu nomaiņu
STR_NOT_REPLACING :{BLACK}Netiks nomainîts
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Neviens transporta lîdzeklis nebija izvçlçts
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izvçlies lokomatîves tipu kuru tu gribi nomainît
@@ -1453,9 +1894,14 @@
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Parâda kura lokomatîve no pa kreisi atzîmçtajâm tiek nomainîta, ja vien kâda ir
STR_REPLACE_HELP :{BLACK}ðis atïauj nomainît vienu lokomatîves tipu pret citu kad vilcieni ienâk depo
+
+
+
+
STR_SHORT_DATE :{WHITE}{DATE_TINY}
STR_SIGN_LIST_CAPTION :{WHITE}Zi'mju saraksts- {COMMA} Zi'mes
+
############ Lists rail types
STR_RAIL_VEHICLES :Slieþu transporta lîdzekïi
@@ -1477,3 +1923,33 @@
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} A'trums: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Ietilpi'ba: {GOLD}{COMMA} pasaz'ieru, {COMMA} pasta somas
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Motor-vagoni: {GOLD}+{POWER}zs{BLACK} Sva'rs: {GOLD}+{WEIGHT_S}t
+
+########### String for New Landscape Generator
+
+
+
+########### String for new airports
+
+
+############ Tooltip measurment
+
+
+############ Date formatting
+
+########
+
+
+
+
+##### Mass Order
+
+
+
+
+
+
+
+#### Improved sign GUI
+
+########
+
--- a/src/main_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/main_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -31,6 +31,7 @@
#include "variables.h"
#include "train.h"
#include "roadveh.h"
+#include "bridge_map.h"
#include "unmovable_map.h"
#include "string.h"
#include "screenshot.h"
@@ -1137,7 +1138,7 @@
static void PlaceProc_LightHouse(TileIndex tile)
{
- if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+ if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
return;
}
@@ -1148,7 +1149,7 @@
static void PlaceProc_Transmitter(TileIndex tile)
{
- if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+ if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
return;
}
@@ -1539,247 +1540,11 @@
AllocateWindowDescFront(&_scen_edit_town_gen_desc, 0);
}
-
-static const Widget _scenedit_industry_normal_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0245_OIL_RIG, STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0249_IRON_ORE_MINE, STR_026B_CONSTRUCT_IRON_ORE_MINE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_024B_BANK, STR_026D_CONSTRUCT_BANK_CAN_ONLY},
-{ WIDGETS_END},
-};
-
-
-static const Widget _scenedit_industry_hilly_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_024F_GOLD_MINE, STR_0271_CONSTRUCT_GOLD_MINE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
-{ WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_desert_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0251_FRUIT_PLANTATION, STR_0274_PLANT_FRUIT_PLANTATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0252_RUBBER_PLANTATION, STR_0275_PLANT_RUBBER_PLANTATION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0253_WATER_SUPPLY, STR_0276_CONSTRUCT_WATER_SUPPLY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_0255_DIAMOND_MINE, STR_0278_CONSTRUCT_DIAMOND_MINE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 198, 209, STR_0256_COPPER_ORE_MINE, STR_0279_CONSTRUCT_COPPER_ORE_MINE},
-{ WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_candy_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
-
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0257_COTTON_CANDY_FOREST, STR_027A_PLANT_COTTON_CANDY_FOREST},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0259_BATTERY_FARM, STR_027C_CONSTRUCT_BATTERY_FARM},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_025A_COLA_WELLS, STR_027D_CONSTRUCT_COLA_WELLS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_025D_PLASTIC_FOUNTAINS, STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_025F_BUBBLE_GENERATOR, STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0260_TOFFEE_QUARRY, STR_0283_CONSTRUCT_TOFFEE_QUARRY},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_0261_SUGAR_MINE, STR_0284_CONSTRUCT_SUGAR_MINE},
-{ WIDGETS_END},
-};
-
-
-static bool AnyTownExists()
-{
- const Town *t;
-
- FOR_ALL_TOWNS(t) return true;
-
- return false;
-}
-
-extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
-
-/**
- * Search callback function for TryBuildIndustry
- * @param tile to test
- * @param data that is passed by the caller. In this case, the type of industry been tested
- * @return the success (or not) of the operation
- */
-static bool SearchTileForIndustry(TileIndex tile, uint32 data)
-{
- return CreateNewIndustry(tile, data) != NULL;
-}
-
-/**
- * Perform a 9*9 tiles circular search around a tile
- * in order to find a suitable zone to create the desired industry
- * @param tile to start search for
- * @param type of the desired industry
- * @return the success (or not) of the operation
- */
-static bool TryBuildIndustry(TileIndex tile, int type)
-{
- return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
-}
-
-
-static const byte _industry_type_list[4][16] = {
- { 0, 1, 2, 3, 4, 5, 6, 8, 9, 18, 11, 12},
- { 0, 1, 14, 3, 4, 13, 7, 15, 9, 16, 11, 12},
- {25, 19, 20, 4, 13, 23, 21, 24, 22, 11, 16, 17, 10},
- {26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36},
-};
-
-static int _industry_type_to_place;
-bool _ignore_restrictions;
-
-static void ScenEditIndustryWndProc(Window *w, WindowEvent *e)
-{
- int button;
-
- switch (e->event) {
- case WE_PAINT:
- DrawWindowWidgets(w);
- break;
-
- case WE_CLICK:
- if (e->we.click.widget == 3) {
- HandleButtonClick(w, 3);
-
- if (!AnyTownExists()) {
- ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
- return;
- }
-
- _generating_world = true;
- GenerateIndustries();
- _generating_world = false;
- }
-
- if ((button=e->we.click.widget) >= 4) {
- if (HandlePlacePushButton(w, button, SPR_CURSOR_INDUSTRY, 1, NULL))
- _industry_type_to_place = _industry_type_list[_opt.landscape][button - 4];
- }
- break;
- case WE_PLACE_OBJ: {
- int type;
-
- /* Show error if no town exists at all */
- type = _industry_type_to_place;
- if (!AnyTownExists()) {
- SetDParam(0, GetIndustrySpec(type)->name);
- ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
- return;
- }
-
- _current_player = OWNER_NONE;
- _generating_world = true;
- _ignore_restrictions = true;
- if (!TryBuildIndustry(e->we.place.tile,type)) {
- SetDParam(0, GetIndustrySpec(type)->name);
- ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
- }
- _ignore_restrictions = false;
- _generating_world = false;
- break;
- }
- case WE_ABORT_PLACE_OBJ:
- RaiseWindowButtons(w);
- SetWindowDirty(w);
- break;
- case WE_TIMEOUT:
- RaiseWindowWidget(w, 3);
- InvalidateWidget(w, 3);
- break;
- }
-}
-
-static const WindowDesc _scenedit_industry_normal_desc = {
- WDP_AUTO, WDP_AUTO, 170, 225,
- WC_SCEN_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _scenedit_industry_normal_widgets,
- ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_hilly_desc = {
- WDP_AUTO, WDP_AUTO, 170, 225,
- WC_SCEN_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _scenedit_industry_hilly_widgets,
- ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_desert_desc = {
- WDP_AUTO, WDP_AUTO, 170, 225,
- WC_SCEN_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _scenedit_industry_desert_widgets,
- ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_candy_desc = {
- WDP_AUTO, WDP_AUTO, 170, 225,
- WC_SCEN_INDUSTRY, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
- _scenedit_industry_candy_widgets,
- ScenEditIndustryWndProc,
-};
-
-static const WindowDesc * const _scenedit_industry_descs[] = {
- &_scenedit_industry_normal_desc,
- &_scenedit_industry_hilly_desc,
- &_scenedit_industry_desert_desc,
- &_scenedit_industry_candy_desc,
-};
-
-
static void ToolbarScenGenIndustry(Window *w)
{
HandleButtonClick(w, 13);
SndPlayFx(SND_15_BEEP);
- AllocateWindowDescFront(_scenedit_industry_descs[_opt.landscape],0);
+ ShowBuildIndustryWindow();
}
static void ToolbarScenBuildRoad(Window *w)
--- a/src/misc_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/misc_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -751,16 +751,22 @@
static void DrawStationCoverageText(const AcceptedCargo accepts,
- int str_x, int str_y, uint mask)
+ int str_x, int str_y, StationCoverageType sct)
{
char *b = _userstring;
bool first = true;
b = InlineString(b, STR_000D_ACCEPTS);
- for (CargoID i = 0; i < NUM_CARGO; i++, mask >>= 1) {
+ for (CargoID i = 0; i < NUM_CARGO; i++) {
if (b >= lastof(_userstring) - 5) break;
- if (accepts[i] >= 8 && mask & 1) {
+ switch (sct) {
+ case SCT_PASSENGERS_ONLY: if (!IsCargoInClass(i, CC_PASSENGERS)) continue; break;
+ case SCT_NON_PASSENGERS_ONLY: if (IsCargoInClass(i, CC_PASSENGERS)) continue; break;
+ case SCT_ALL: break;
+ default: NOT_REACHED();
+ }
+ if (accepts[i] >= 8) {
if (first) {
first = false;
} else {
@@ -779,12 +785,12 @@
DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
}
-void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
+void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad) {
TileIndex tile = TileVirtXY(_thd.pos.x, _thd.pos.y);
AcceptedCargo accepts;
if (tile < MapSize()) {
GetAcceptanceAroundTiles(accepts, tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE , rad);
- DrawStationCoverageText(accepts, sx, sy, mask);
+ DrawStationCoverageText(accepts, sx, sy, sct);
}
}
--- a/src/music/bemidi.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/bemidi.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_BeMidi: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_BeMidi: public MusicDriverFactory<FMusicDriver_BeMidi> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "bemidi"; }
/* virtual */ const char *GetDescription() { return "BeOS MIDI Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_BeMidi(); }
--- a/src/music/dmusic.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/dmusic.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_DMusic: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_DMusic: public MusicDriverFactory<FMusicDriver_DMusic> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "dmusic"; }
/* virtual */ const char *GetDescription() { return "DirectMusic MIDI Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_DMusic(); }
--- a/src/music/extmidi.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/extmidi.h Fri Jul 13 09:18:50 2007 +0000
@@ -14,8 +14,6 @@
void DoStop();
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -31,6 +29,7 @@
class FMusicDriver_ExtMidi: public MusicDriverFactory<FMusicDriver_ExtMidi> {
public:
+ static const int priority = 1;
/* virtual */ const char *GetName() { return "extmidi"; }
/* virtual */ const char *GetDescription() { return "External MIDI Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_ExtMidi(); }
--- a/src/music/libtimidity.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/libtimidity.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_LibTimidity: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_LibTimidity: public MusicDriverFactory<FMusicDriver_LibTimidity> {
public:
+ static const int priority = 5;
/* virtual */ const char *GetName() { return "libtimidity"; }
/* virtual */ const char *GetDescription() { return "LibTimidity MIDI Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_LibTimidity(); }
--- a/src/music/music_driver.hpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/music_driver.hpp Fri Jul 13 09:18:50 2007 +0000
@@ -22,7 +22,7 @@
template <class T>
class MusicDriverFactory: public MusicDriverFactoryBase {
public:
- MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC); }
+ MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC, ((T *)this)->priority); }
/**
* Get the long, human readable, name for the Driver-class.
--- a/src/music/null_m.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/null_m.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_Null: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return false; }
-
/* virtual */ const char *Start(const char * const *param) { return NULL; }
/* virtual */ void Stop() { }
@@ -24,6 +22,7 @@
class FMusicDriver_Null: public MusicDriverFactory<FMusicDriver_Null> {
public:
+ static const int priority = 0;
/* virtual */ const char *GetName() { return "null"; }
/* virtual */ const char *GetDescription() { return "Null Music Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_Null(); }
--- a/src/music/os2_m.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/os2_m.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_OS2: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_OS2: public MusicDriverFactory<FMusicDriver_OS2> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "os2"; }
/* virtual */ const char *GetDescription() { return "OS/2 Music Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_OS2(); }
--- a/src/music/qtmidi.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/qtmidi.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_QtMidi: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_QtMidi: public MusicDriverFactory<FMusicDriver_QtMidi> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "qt"; }
/* virtual */ const char *GetDescription() { return "QuickTime MIDI Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_QtMidi(); }
--- a/src/music/win32_m.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/win32_m.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class MusicDriver_Win32: public MusicDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FMusicDriver_Win32: public MusicDriverFactory<FMusicDriver_Win32> {
public:
+ static const int priority = 5;
/* virtual */ const char *GetName() { return "win32"; }
/* virtual */ const char *GetDescription() { return "Win32 Music Driver"; }
/* virtual */ Driver *CreateInstance() { return new MusicDriver_Win32(); }
--- a/src/network/core/tcp.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/core/tcp.h Fri Jul 13 09:18:50 2007 +0000
@@ -68,6 +68,7 @@
char text[80]; ///< possible text sent for name changes etc
uint32 frame; ///< the frame in which this packet is executed
byte callback; ///< any callback function executed upon successful completion of the command
+ bool my_cmd; ///< did the command originate from "me"
};
/** Status of a client */
--- a/src/network/network.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -37,6 +37,7 @@
#include "../console.h" /* IConsoleCmdExec */
#include <stdarg.h> /* va_list */
#include "../md5.h"
+#include "../fileio.h"
/* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
@@ -195,6 +196,9 @@
break;
}
+#ifdef DEBUG_DUMP_COMMANDS
+ debug_dump_commands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message);
+#endif /* DUMP_COMMANDS */
IConsolePrintF(color, "%s", message);
AddTextMessage(color, duration, "%s", message);
}
@@ -1235,6 +1239,9 @@
if (_sync_seed_1 != _random_seeds[0][0]) {
#endif
NetworkError(STR_NETWORK_ERR_DESYNC);
+#ifdef DEBUG_DUMP_COMMANDS
+ debug_dump_commands("ddc:serr:%d;%d\n", _date, _date_fract);
+#endif /* DUMP_COMMANDS */
DEBUG(net, 0, "Sync error detected!");
NetworkClientError(NETWORK_RECV_STATUS_DESYNC, DEREF_CLIENT(0));
return false;
@@ -1280,6 +1287,37 @@
if (!NetworkReceive()) return;
if (_network_server) {
+#ifdef DEBUG_DUMP_COMMANDS
+ static FILE *f = FioFOpenFile("commands.log", "rb", SAVE_DIR);
+ static Date next_date = 0;
+ static uint32 next_date_fract;
+ static CommandPacket *cp = NULL;
+ if (f == NULL && next_date == 0) {
+ printf("Cannot open commands.log\n");
+ next_date = 1;
+ }
+
+ while (f != NULL && !feof(f)) {
+ if (cp != NULL && _date == next_date && _date_fract == next_date_fract) {
+ _current_player = cp->player;
+ _cmd_text = cp->text;
+ DoCommandP(cp->tile, cp->p1, cp->p2, NULL, cp->cmd);
+ free(cp);
+ cp = NULL;
+ }
+
+ if (cp != NULL) break;
+
+ char buff[4096];
+ if (fgets(buff, lengthof(buff), f) == NULL) break;
+ if (strncmp(buff, "ddc:cmd:", 8) != 0) continue;
+ cp = MallocT<CommandPacket>(1);
+ int player;
+ sscanf(&buff[8], "%d;%d;%d;%d;%d;%d;%d;%s", &next_date, &next_date_fract, &player, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text);
+ cp->player = (Owner)player;
+ }
+#endif /* DUMP_COMMANDS */
+
bool send_frame = false;
// We first increase the _frame_counter
@@ -1432,8 +1470,21 @@
bool IsNetworkCompatibleVersion(const char *other)
{
extern const char _openttd_revision[];
- return strncmp(NOREV_STRING, other, NETWORK_REVISION_LENGTH - 1) == 0 ||
- strncmp(_openttd_revision, other, NETWORK_REVISION_LENGTH - 1) == 0;
+ return strncmp(_openttd_revision, other, NETWORK_REVISION_LENGTH - 1) == 0;
}
+#ifdef DEBUG_DUMP_COMMANDS
+void CDECL debug_dump_commands(const char *s, ...)
+{
+ static FILE *f = FioFOpenFile("commands-out.log", "wb", SAVE_DIR);
+ if (f == NULL) return;
+
+ va_list va;
+ va_start(va, s);
+ vfprintf(f, s, va);
+ va_end(va);
+
+ fflush(f);
+}
+#endif /* DEBUG_DUMP_COMMANDS */
#endif /* ENABLE_NETWORK */
--- a/src/network/network.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network.h Fri Jul 13 09:18:50 2007 +0000
@@ -20,6 +20,17 @@
// nothing will happen.
//#define ENABLE_NETWORK_SYNC_EVERY_FRAME
+/*
+ * Dumps all commands that are sent/received to stderr and saves every month.
+ * This log can become quite large over time; say in the order of two to three
+ * times the bandwidth used for network games.
+ */
+//#define DEBUG_DUMP_COMMANDS
+
+#ifdef DEBUG_DUMP_COMMANDS
+void CDECL debug_dump_commands(const char *s, ...);
+#endif /* DEBUG_DUMP_COMMANDS */
+
// In theory sending 1 of the 2 seeds is enough to check for desyncs
// so in theory, this next define can be left off.
//#define NETWORK_SEND_DOUBLE_SEED
--- a/src/network/network_client.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_client.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -627,6 +627,7 @@
p->Recv_string(cp->text, sizeof(cp->text));
cp->callback = p->Recv_uint8();
cp->frame = p->Recv_uint32();
+ cp->my_cmd = p->Recv_bool();
cp->next = NULL;
// The server did send us this command..
--- a/src/network/network_data.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_data.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -62,6 +62,7 @@
CommandPacket *new_cp = MallocT<CommandPacket>(1);
*new_cp = c;
+ new_cp->my_cmd = true;
if (_local_command_queue == NULL) {
_local_command_queue = new_cp;
} else {
@@ -97,7 +98,12 @@
DEBUG(net, 0, "Received out-of-bounds callback (%d)", cp->callback);
cp->callback = 0;
}
- DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND);
+
+#ifdef DEBUG_DUMP_COMMANDS
+ debug_dump_commands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->player, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text);
+#endif /* DUMP_COMMANDS */
+
+ DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND, cp->my_cmd);
}
#endif /* ENABLE_NETWORK */
--- a/src/network/network_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -745,7 +745,6 @@
if (HandleEditBoxKey(w, &WP(w, network_ql_d).q, 3, e) == 1) break; // enter pressed
ttd_strlcpy(_network_server_name, WP(w, network_ql_d).q.text.buf, sizeof(_network_server_name));
- UpdateTextBufferSize(&WP(w, network_ql_d).q.text);
}
break;
--- a/src/network/network_server.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_server.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -491,6 +491,7 @@
p->Send_string(cp->text);
p->Send_uint8 (cp->callback);
p->Send_uint32(cp->frame);
+ p->Send_bool (cp->my_cmd);
cs->Send_Packet(p);
}
@@ -915,11 +916,13 @@
// Callbacks are only send back to the client who sent them in the
// first place. This filters that out.
cp->callback = (new_cs != cs) ? 0 : callback;
+ cp->my_cmd = (new_cs == cs);
NetworkAddCommandQueue(new_cs, cp);
}
}
cp->callback = 0;
+ cp->my_cmd = false;
// Queue the command on the server
if (_local_command_queue == NULL) {
_local_command_queue = cp;
--- a/src/newgrf.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -41,8 +41,10 @@
#include "cargotype.h"
#include "industry.h"
#include "newgrf_canal.h"
+#include "table/build_industry.h"
#include "newgrf_commons.h"
#include "newgrf_townname.h"
+#include "newgrf_industries.h"
/* TTDPatch extended GRF format codec
* (c) Petr Baudis 2004 (GPL'd)
@@ -1677,6 +1679,367 @@
return ret;
}
+static bool IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, byte **bufp, int len)
+{
+ if (!HASBIT(_ttdpatch_flags[3], 0x07)) return true;
+
+ byte *buf = *bufp;
+ bool ret = false;
+
+ if (indtid + numinfo > NUM_INDUSTRYTILES) {
+ grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES);
+ return false;
+ }
+
+ /* Allocate industry tile specs if they haven't been allocated already. */
+ if (_cur_grffile->indtspec == NULL) {
+ _cur_grffile->indtspec = CallocT<IndustryTileSpec*>(NUM_INDUSTRYTILES);
+
+ /* Reset any overrides that have been set. */
+ _industile_mngr.ResetOverride();
+ }
+
+ for (int i = 0; i < numinfo; i++) {
+ IndustryTileSpec *tsp = _cur_grffile->indtspec[indtid + i];
+
+ if (prop != 0x08 && tsp == NULL) {
+ grfmsg(2, "IndustryTilesChangeInfo: Attempt to modify undefined industry tile %u. Ignoring.", indtid + i);
+ continue;
+ }
+
+ switch (prop) {
+ case 0x08: { // Substitute industry tile type
+ IndustryTileSpec **tilespec = &_cur_grffile->indtspec[indtid + i];
+ byte subs_id = grf_load_byte(&buf);
+
+ if (subs_id == 0xFF) {
+ /* Instead of defining a new industry, a substitute industry id
+ * of 0xFF disables the old industry with the current id. */
+ tsp->enabled = false;
+ continue;
+ } else if (subs_id >= NEW_INDUSTRYTILEOFFSET) {
+ /* The substitute id must be one of the original industry tile. */
+ grfmsg(2, "IndustryTilesChangeInfo: Attempt to use new industry tile %u as substitute industry tile for %u. Ignoring.", subs_id, indtid + i);
+ return false;
+ }
+
+ /* Allocate space for this industry. */
+ if (*tilespec == NULL) {
+ int tempid;
+ *tilespec = CallocT<IndustryTileSpec>(1);
+ tsp = *tilespec;
+
+ memcpy(tsp, &_industry_tile_specs[subs_id], sizeof(_industry_tile_specs[subs_id]));
+ tsp->enabled = true;
+ tsp->grf_prop.local_id = indtid + i;
+ tsp->grf_prop.subst_id = subs_id;
+ tsp->grf_prop.grffile = _cur_grffile;
+ tempid = _industile_mngr.AddEntityID(indtid + i, _cur_grffile->grfid, subs_id); // pre-reserve the tile slot
+ }
+ } break;
+
+ case 0x09: { // Industry tile override
+ byte ovrid = grf_load_byte(&buf);
+
+ /* The industry being overridden must be an original industry. */
+ if (ovrid >= NEW_INDUSTRYTILEOFFSET) {
+ grfmsg(2, "IndustryTilesChangeInfo: Attempt to override new industry tile %u with industry tile id %u. Ignoring.", ovrid, indtid + i);
+ return false;
+ }
+
+ tsp->grf_prop.override = ovrid;
+ _industile_mngr.Add(indtid + i, ovrid);
+ } break;
+
+ case 0x0A: // Tile acceptance
+ case 0x0B:
+ case 0x0C: {
+ uint16 acctp = grf_load_word(&buf);
+ tsp->accepts_cargo[prop - 0x0A] = GetCargoTranslation(GB(acctp, 0, 8), _cur_grffile);
+ tsp->acceptance[prop - 0x0A] = GetCargoTranslation(GB(acctp, 8, 8), _cur_grffile);
+ } break;
+
+ case 0x0D: // Land shape flags
+ tsp->slopes_refused = (Slope)grf_load_byte(&buf);
+ break;
+
+ case 0x0E: // Callback flags
+ tsp->callback_flags = grf_load_byte(&buf);
+ break;
+
+ case 0x0F: // Animation information
+ tsp->animation_info = grf_load_word(&buf);
+ break;
+
+ case 0x10: // Animation speed
+ tsp->animation_speed = grf_load_byte(&buf);
+ break;
+
+ case 0x11: // Triggers for callback 25
+ tsp->animation_triggers = grf_load_byte(&buf);
+ break;
+
+ case 0x12: // Special flags
+ tsp->animation_special_flags = grf_load_byte(&buf);
+ break;
+
+ default:
+ ret = true;
+ break;
+ }
+ }
+
+ *bufp = buf;
+ return ret;
+}
+
+static bool IndustriesChangeInfo(uint indid, int numinfo, int prop, byte **bufp, int len)
+{
+ if (!HASBIT(_ttdpatch_flags[3], 0x07)) return true;
+
+ byte *buf = *bufp;
+ bool ret = false;
+
+ if (indid + numinfo > NUM_INDUSTRYTYPES) {
+ grfmsg(1, "IndustriesChangeInfo: Too many industries loaded (%u), max (%u). Ignoring.", indid + numinfo, NUM_INDUSTRYTYPES);
+ return false;
+ }
+
+ grfmsg(1, "IndustriesChangeInfo: newid %u", indid);
+
+ /* Allocate industry specs if they haven't been allocated already. */
+ if (_cur_grffile->industryspec == NULL) {
+ _cur_grffile->industryspec = CallocT<IndustrySpec*>(NUM_INDUSTRYTYPES);
+
+ /* Reset any overrides that have been set. */
+ _industry_mngr.ResetOverride();
+ }
+
+ for (int i = 0; i < numinfo; i++) {
+ IndustrySpec *indsp = _cur_grffile->industryspec[indid + i];
+
+ if (prop != 0x08 && indsp == NULL) {
+ grfmsg(2, "IndustriesChangeInfo: Attempt to modify undefined industry %u. Ignoring.", indid + i);
+ continue;
+ }
+
+ switch (prop) {
+ case 0x08: { // Substitute industry type
+ IndustrySpec **indspec = &_cur_grffile->industryspec[indid + i];
+ byte subs_id = grf_load_byte(&buf);
+
+ if (subs_id == 0xFF) {
+ /* Instead of defining a new industry, a substitute industry id
+ * of 0xFF disables the old industry with the current id. */
+ _industry_specs[indid + i].enabled = false;
+ continue;
+ } else if (subs_id >= NEW_INDUSTRYOFFSET) {
+ /* The substitute id must be one of the original industry. */
+ grfmsg(2, "_industry_specs: Attempt to use new industry %u as substitute industry for %u. Ignoring.", subs_id, indid + i);
+ return false;
+ }
+
+ /* Allocate space for this industry.
+ * Only need to do it once. If ever it is called again, it should not
+ * do anything */
+ if (*indspec == NULL) {
+ *indspec = CallocT<IndustrySpec>(1);
+ indsp = *indspec;
+
+ memcpy(indsp, &_origin_industry_specs[subs_id], sizeof(_industry_specs[subs_id]));
+ indsp->enabled = true;
+ indsp->grf_prop.local_id = indid + i;
+ indsp->grf_prop.subst_id = subs_id;
+ indsp->grf_prop.grffile = _cur_grffile;
+ }
+ } break;
+
+ case 0x09: { // Industry type override
+ byte ovrid = grf_load_byte(&buf);
+
+ /* The industry being overridden must be an original industry. */
+ if (ovrid >= NEW_INDUSTRYOFFSET) {
+ grfmsg(2, "IndustriesChangeInfo: Attempt to override new industry %u with industry id %u. Ignoring.", ovrid, indid + i);
+ return false;
+ }
+ indsp->grf_prop.override = ovrid;
+ _industry_mngr.Add(indid + i, ovrid);
+ } break;
+
+ case 0x0A: { // Set industry layout(s)
+ indsp->num_table = grf_load_byte(&buf); // Number of layaouts
+ uint32 defsize = grf_load_dword(&buf); // Total size of the definition
+ IndustryTileTable **tile_table = CallocT<IndustryTileTable*>(indsp->num_table); // Table with tiles to compose an industry
+ IndustryTileTable *itt = CallocT<IndustryTileTable>(defsize); // Temporary array to read the tile layouts from the GRF
+ int size;
+ IndustryTileTable *copy_from;
+
+ for (byte j = 0; j < indsp->num_table; j++) {
+ for (int k = 0;; k++) {
+ itt[k].ti.x = grf_load_byte(&buf); // Offsets from northermost tile
+
+ if (itt[k].ti.x == 0xFE && k == 0) {
+ /* This means we have to borrow the layout from an old industry */
+ IndustryType type = grf_load_byte(&buf); //industry holding required layout
+ byte laynbr = grf_load_byte(&buf); //layout number to borrow
+
+ copy_from = (IndustryTileTable*)_origin_industry_specs[type].table[laynbr];
+ for (size = 1;; size++) {
+ if (_origin_industry_specs[type].table[laynbr + (size - 1)]->ti.x == -0x80 &&
+ _origin_industry_specs[type].table[laynbr + (size - 1)]->ti.y == 0) break;
+ }
+ break;
+ }
+
+ itt[k].ti.y = grf_load_byte(&buf); // Or table definition finalisation
+
+ if (itt[k].ti.x == 0 && itt[k].ti.y == 0x80) {
+ /* Not the same terminator. The one we are using is rather
+ x= -80, y = x . So, adjust it. */
+ itt[k].ti.x = -0x80;
+ itt[k].ti.y = 0;
+ itt[k].gfx = 0;
+
+ size = k + 1;
+ copy_from = itt;
+ break;
+ }
+
+ itt[k].gfx = grf_load_byte(&buf);
+
+ if (itt[k].gfx == 0xFE) {
+ /* Use a new tile from this GRF */
+ int local_tile_id = grf_load_word(&buf);
+
+ /* Read the ID from the _industile_mngr. */
+ int tempid = _industile_mngr.GetID(local_tile_id, _cur_grffile->grfid);
+
+ if (tempid == INVALID_INDUSTRYTILE) {
+ grfmsg(2, "IndustriesChangeInfo: Attempt to use industry tile %u with industry id %u, not yet defined. Ignoring.", local_tile_id, indid);
+ } else {
+ /* Declared as been valid, can be used */
+ itt[k].gfx = tempid;
+ size = k + 1;
+ copy_from = itt;
+ }
+ }
+ }
+ tile_table[j] = CallocT<IndustryTileTable>(size);
+ memcpy(tile_table[j], copy_from, sizeof(*copy_from) * size);
+ }
+ /* Install final layout construction in the industry spec */
+ indsp->table = tile_table;
+ SETBIT(indsp->cleanup_flag, 1);
+ free(itt);
+ } break;
+
+ case 0x0B: // Industry production flags
+ indsp->life_type = (IndustryLifeType)grf_load_byte(&buf);
+ break;
+
+ case 0x0C: // Industry closure message
+ indsp->closure_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+ break;
+
+ case 0x0D: // Production increase message
+ indsp->production_up_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+ break;
+
+ case 0x0E: // Production decrease message
+ indsp->production_down_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+ break;
+
+ case 0x0F: // Fund cost multiplier
+ indsp->cost_multiplier = grf_load_byte(&buf);
+ break;
+
+ case 0x10: // Production cargo types
+ for (byte j = 0; j < 2; j++) {
+ indsp->produced_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile);
+ }
+ break;
+
+ case 0x11: // Acceptance cargo types
+ for (byte j = 0; j < 3; j++) {
+ indsp->accepts_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile);
+ }
+ grf_load_byte(&buf); // Unnused, eat it up
+ break;
+
+ case 0x12: // Production multipliers
+ case 0x13:
+ indsp->production_rate[prop - 0x12] = grf_load_byte(&buf);
+ break;
+
+ case 0x14: // Minimal amount of cargo distributed
+ indsp->minimal_cargo = grf_load_byte(&buf);
+ break;
+
+ case 0x15: { // Random sound effects
+ indsp->number_of_sounds = grf_load_byte(&buf);
+ uint8 *sounds = MallocT<uint8>(indsp->number_of_sounds);
+
+ for (uint8 j = 0; j < indsp->number_of_sounds; j++) sounds[j] = grf_load_byte(&buf);
+ indsp->random_sounds = sounds;
+ SETBIT(indsp->cleanup_flag, 0);
+ } break;
+
+ case 0x16: // Conflicting industry types
+ for (byte j = 0; j < 3; j++) indsp->conflicting[j] = grf_load_byte(&buf);
+ break;
+
+ case 0x17: // Probability in random game
+ indsp->appear_ingame[_opt.landscape] = grf_load_byte(&buf);
+ break;
+
+ case 0x18: // Probability during gameplay
+ indsp->appear_creation[_opt.landscape] = grf_load_byte(&buf);
+ break;
+
+ case 0x19: // Map color
+ indsp->map_colour = MapDOSColour(grf_load_byte(&buf));
+ break;
+
+ case 0x1A: // Special industry flags to define special behavior
+ indsp->behaviour = (IndustyBehaviour)grf_load_dword(&buf);
+ break;
+
+ case 0x1B: // New industry text ID
+ indsp->new_industry_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+ break;
+
+ case 0x1C: // Input cargo multipliers for the three input cargo types
+ case 0x1D:
+ case 0x1E: {
+ uint32 multiples = grf_load_dword(&buf);
+ indsp->input_cargo_multiplier[prop - 0x1C][0] = GB(multiples, 0,15);
+ indsp->input_cargo_multiplier[prop - 0x1C][1] = GB(multiples, 15,15);
+ } break;
+
+ case 0x1F: // Industry name
+ indsp->name = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+ break;
+
+ case 0x20: // Prospecting success chance
+ indsp->prospecting_chance = grf_load_dword(&buf);
+ break;
+
+ case 0x21: // Callback flags
+ case 0x22: { // Callback additional flags
+ byte aflag = grf_load_byte(&buf);
+ SB(indsp->callback_flags, (prop - 0x21) * 8, 8, aflag);
+ } break;
+
+ default:
+ ret = true;
+ break;
+ }
+ }
+
+ *bufp = buf;
+ return ret;
+}
+
/* Action 0x00 */
static void FeatureChangeInfo(byte *buf, int len)
{
@@ -1705,8 +2068,8 @@
/* GSF_BRIDGE */ BridgeChangeInfo,
/* GSF_TOWNHOUSE */ TownHouseChangeInfo,
/* GSF_GLOBALVAR */ GlobalVarChangeInfo,
- /* GSF_INDUSTRYTILES */NULL,
- /* GSF_INDUSTRIES */ NULL,
+ /* GSF_INDUSTRYTILES */IndustrytilesChangeInfo,
+ /* GSF_INDUSTRIES */ IndustriesChangeInfo,
/* GSF_CARGOS */ NULL, /* Cargo is handled during reservation */
/* GSF_SOUNDFX */ SoundEffectChangeInfo,
};
@@ -2562,6 +2925,57 @@
}
}
+static void IndustryMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
+{
+ if (!HASBIT(_ttdpatch_flags[3], 0x07)) return;
+
+ byte *bp = &buf[4 + idcount + cidcount * 3];
+ uint16 groupid = grf_load_word(&bp);
+
+ if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
+ grfmsg(1, "IndustryMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping.",
+ groupid, _cur_grffile->spritegroups_count);
+ return;
+ }
+
+ for (uint i = 0; i < idcount; i++) {
+ uint8 id = buf[3 + i];
+ IndustrySpec *indsp = _cur_grffile->industryspec[id];
+
+ if (indsp == NULL) {
+ grfmsg(1, "IndustryMapSpriteGroup: Too many industries defined, skipping");
+ return;
+ }
+
+ indsp->grf_prop.spritegroup = _cur_grffile->spritegroups[groupid];
+ }
+}
+
+static void IndustrytileMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
+{
+ if (!HASBIT(_ttdpatch_flags[3], 0x07)) return;
+
+ byte *bp = &buf[4 + idcount + cidcount * 3];
+ uint16 groupid = grf_load_word(&bp);
+
+ if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
+ grfmsg(1, "IndustrytileMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping.",
+ groupid, _cur_grffile->spritegroups_count);
+ return;
+ }
+
+ for (uint i = 0; i < idcount; i++) {
+ uint8 id = buf[3 + i];
+ IndustryTileSpec *indtsp = _cur_grffile->indtspec[id];
+
+ if (indtsp == NULL) {
+ grfmsg(1, "IndustrytileMapSpriteGroup: Too many industry tiles defined, skipping");
+ return;
+ }
+
+ indtsp->grf_prop.spritegroup = _cur_grffile->spritegroups[groupid];
+ }
+}
static void CargoMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
{
@@ -2651,6 +3065,14 @@
TownHouseMapSpriteGroup(buf, idcount, cidcount);
return;
+ case GSF_INDUSTRIES:
+ IndustryMapSpriteGroup(buf, idcount, cidcount);
+ return;
+
+ case GSF_INDUSTRYTILES:
+ IndustrytileMapSpriteGroup(buf, idcount, cidcount);
+ return;
+
case GSF_CARGOS:
CargoMapSpriteGroup(buf, idcount, cidcount);
return;
@@ -4780,7 +5202,26 @@
for (int i = 0; i < NUM_INDUSTRYTYPES; i++) {
IndustrySpec *indsp = file->industryspec[i];
- if (indsp != NULL && indsp->enabled) {
+ if (indsp != NULL && indsp->enabled) {
+ StringID strid;
+ /* process the conversion of text at the end, so to be sure everything will be fine
+ * and available. Check if it does not return undefind marker, which is a very good sign of a
+ * substitute industry who has not changed the string been examined, thus using it as such */
+ strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->name);
+ if (strid != STR_UNDEFINED) indsp->name = strid;
+
+ strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->closure_text);
+ if (strid != STR_UNDEFINED) indsp->closure_text = strid;
+
+ strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_up_text);
+ if (strid != STR_UNDEFINED) indsp->production_up_text = strid;
+
+ strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_down_text);
+ if (strid != STR_UNDEFINED) indsp->production_down_text = strid;
+
+ strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text);
+ if (strid != STR_UNDEFINED) indsp->new_industry_text = strid;
+
_industry_mngr.SetEntitySpec(indsp);
_loaded_newgrf_features.has_newindustries = true;
}
@@ -4796,6 +5237,15 @@
}
}
}
+
+ for (uint j = 0; j < NUM_INDUSTRYTYPES; j++) {
+ IndustrySpec *indsp = &_industry_specs[j];
+ if (indsp->enabled && indsp->grf_prop.grffile != NULL) {
+ for (uint i = 0; i < 3; i++) {
+ indsp->conflicting[i] = MapNewGRFIndustryType(indsp->conflicting[i], indsp->grf_prop.grffile->grfid);
+ }
+ }
+ }
}
/** Each cargo string needs to be mapped from TTDPatch to OpenTTD string IDs.
--- a/src/newgrf_callbacks.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_callbacks.h Fri Jul 13 09:18:50 2007 +0000
@@ -9,164 +9,173 @@
/**
* List of implemented NewGRF callbacks.
+ * Most of these callbacks are only triggered when the corresponding
+ * bit is set in the callback flags/trigger for a vehicle, house,
+ * industry, etc.
* Names are formatted as CBID_<CLASS>_<CALLBACK>
*/
enum CallbackID {
- /* Set when calling a randomizing trigger (almost undocumented) */
- CBID_RANDOM_TRIGGER = 0x01,
-
- /* Powered wagons, if the result is lower as 0x40 then the wagon is powered
- * @todo : interpret the rest of the result, aka "visual effects" */
- CBID_TRAIN_WAGON_POWER = 0x10,
-
- /* Vehicle length, returns the amount of 1/8's the vehicle is shorter
- * only for train vehicles */
- CBID_TRAIN_VEHICLE_LENGTH = 0x11,
-
- /* Called (if appropriate bit in callback mask is set) to determine the
- * amount of cargo to load per unit of time when using gradual loading. */
- CBID_VEHICLE_LOAD_AMOUNT = 0x12,
-
- /* Called (if appropriate bit in callback mask is set) to determine if a
- * newstation should be made available to build */
- CBID_STATION_AVAILABILITY = 0x13,
-
- /* Called (if appropriate bit in callback mask is set) when drawing a tile
- * to choose a sprite layout to draw, instead of the standard 0-7 range */
- CBID_STATION_SPRITE_LAYOUT = 0x14,
-
- /* Refit capacity, the passed vehicle needs to have its ->cargo_type set to
- * the cargo we are refitting to, returns the new cargo capacity */
- CBID_VEHICLE_REFIT_CAPACITY = 0x15,
-
- CBID_TRAIN_ARTIC_ENGINE = 0x16,
-
- /* Called (if appropriate bit in callback mask is set) to determine whether
- * the house can be built on the specified tile. */
- CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17,
-
- CBID_VEHICLE_CARGO_SUFFIX = 0x19,
-
- /* Called (if appropriate bit in callback mask is set) to determine
- * the next animation frame. */
- CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A,
-
- /* Called (if appropriate bit in callback mask is set) for periodically
- * starting or stopping the animation. */
- CBID_HOUSE_ANIMATION_START_STOP = 0x1B,
-
- /* Called (if appropriate bit in callback mask is set) whenever the
- * construction state of a house changes. */
- CBID_CONSTRUCTION_STATE_CHANGE = 0x1C,
-
- CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D,
-
- /* Called (if appropriate bit in callback mask is set) to determine the
- * colour of a town building. */
- CBID_BUILDING_COLOUR = 0x1E,
-
- /* Called (if appropriate bit in callback mask is set) to decide how much
- * cargo a town building can accept. */
- CBID_HOUSE_CARGO_ACCEPTANCE = 0x1F, // not yet implemented
-
- /* Called (if appropriate bit in callback mask is set) to indicate
- * how long the current animation frame should last. */
- CBID_HOUSE_ANIMATION_SPEED = 0x20,
-
- /* Called (if appropriate bit in callback mask is set) periodically to
- * determine if a house should be destroyed. */
- CBID_HOUSE_DESTRUCTION = 0x21,
-
- /* Called to determine if the given industry type is available */
- CBID_INDUSTRY_AVAILABLE = 0x22, // not yet implemented
-
- /* This callback is called from vehicle purchase lists. It returns a value to be
- * used as a custom string ID in the 0xD000 range. */
- CBID_VEHICLE_ADDITIONAL_TEXT = 0x23,
-
- /* Called when building a station to customize the tile layout */
- CBID_STATION_TILE_LAYOUT = 0x24,
+ /** Set when calling a randomizing trigger (almost undocumented). */
+ CBID_RANDOM_TRIGGER = 0x01,
- /* Called for periodically starting or stopping the animation. */
- CBID_INDTILE_ANIM_START_STOP = 0x25, // not yet implemented
-
- /* Called to determine industry tile next animation frame. */
- CBID_INDTILE_ANIM_NEXT_FRAME = 0x26, // not yet implemented
-
- /* Called to indicate how long the current animation frame should last. */
- CBID_INDTILE_ANIMATION_SPEED = 0x27, // not yet implemented
-
- /* Called to determine if the given industry can be built on specific area */
- CBID_INDUSTRY_LOCATION = 0x28, // not yet implemented
-
- /* Called on production changes, so it can be adjusted */
- CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // not yet implemented
-
- /* Called (if appropriate bit in callback mask is set) to determine which
- * cargoes a town building should accept. */
- CBID_HOUSE_ACCEPT_CARGO = 0x2A, // not yet implemented
-
- /* Called to query the cargo acceptance of the industry tile */
- CBID_INDTILE_ACCEPT_CARGO = 0x2B, // not yet implemented
-
- /* Called to determine which cargoes an industry should accept. */
- CBID_INDUSTRY_ACCEPT_CARGO = 0x2C, // not yet implemented
-
- /* Called to determine if a specific colour map should be used for a vehicle
- * instead of the default livery */
- CBID_VEHICLE_COLOUR_MAPPING = 0x2D,
-
- /* Called (if appropriate bit in callback mask is set) to determine how much
- * cargo a town building produces. */
- CBID_HOUSE_PRODUCE_CARGO = 0x2E, // not yet implemented
-
- /* Called to determine if the given industry tile can be built on specific tile */
- CBID_INDTILE_SHAPE_CHECK = 0x2F, // not yet implemented
-
- /* Called to determine the type (if any) of foundation to draw for industry tile */
- CBID_INDUSTRY_DRAW_FOUNDATIONS = 0x30, // not yet implemented
+ /** Powered wagons, if the result is lower as 0x40 then the wagon is powered
+ * @todo : interpret the rest of the result, aka "visual effects". */
+ CBID_TRAIN_WAGON_POWER = 0x10,
- /* Called when the player (or AI) tries to start or stop a vehicle. Mainly
- * used for preventing a vehicle from leaving the depot. */
- CBID_VEHICLE_START_STOP_CHECK = 0x31,
-
- /* Called to play a special sound effect */
- CBID_VEHICLE_SOUND_EFFECT = 0x33,
-
- /* Called monthly on production changes, so it can be adjusted more frequently */
- CBID_INDUSTRY_MONTHLYPROD_CHANGE= 0x35, // not yet implemented
-
- /* Called to modify various vehicle properties. Callback parameter 1
- * specifies the property index, as used in Action 0, to change. */
- CBID_VEHICLE_MODIFY_PROPERTY = 0x36,
-
- /* Called to determine text to display after cargo name */
- CBID_INDUSTRY_CARGO_SUFFIX = 0x37, // not yet implemented
-
- /* Called to determine more text in the fund industry window */
- CBID_INDUSTRY_FUND_MORE_TEXT = 0x38, // not yet implemented
+ /** Vehicle length, returns the amount of 1/8's the vehicle is shorter for trains and RVs. */
+ CBID_VEHICLE_LENGTH = 0x11,
- /* Called to calculate the income of delivered cargo */
- CBID_CARGO_PROFIT_CALC = 0x39,
-
- /* Called to determine more text in the industry window */
- CBID_INDUSTRY_WINDOW_MORE_TEXT = 0x3A, // not yet implemented
-
- /* Called to determine industry special effects */
- CBID_INDUSTRY_SPECIAL_EFFECT = 0x3B, // not yet implemented
+ /** Determine the amount of cargo to load per unit of time when using gradual loading. */
+ CBID_VEHICLE_LOAD_AMOUNT = 0x12,
- /* Called to determine if industry can alter the ground below industry tile */
- CBID_INDUSTRY_AUTOSLOPE = 0x3C, // not yet implemented
-
- /* Called to determine if the industry can still accept or refuse more cargo arrival */
- CBID_INDUSTRY_REFUSE_CARGO = 0x3D, // not yet implemented
+ /** Determine whether a newstation should be made available to build. */
+ CBID_STATION_AVAILABILITY = 0x13,
- /* Called (if appropriate bit in callback mask set) to determine whether a
- * town building can be destroyed. */
- CBID_HOUSE_DENY_DESTRUCTION = 0x143,
+ /** Choose a sprite layout to draw, instead of the standard 0-7 range. */
+ CBID_STATION_SPRITE_LAYOUT = 0x14,
- /* Called to calculate part of a station rating */
- CBID_CARGO_STATION_RATING_CALC = 0x145,
+ /** Refit capacity, the passed vehicle needs to have its ->cargo_type set to
+ * the cargo we are refitting to, returns the new cargo capacity. */
+ CBID_VEHICLE_REFIT_CAPACITY = 0x15,
+
+ /** Builds articulated engines for trains and RVs. */
+ CBID_VEHICLE_ARTIC_ENGINE = 0x16,
+
+ /** Determine whether the house can be built on the specified tile. */
+ CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17,
+
+ /** AI construction/purchase selection */
+ CBID_GENERIC_AI_PURCHASE_SELECTION = 0x18, // not implemented
+
+ /** Determine the cargo "suffixes" for each refit possibility of a cargo. */
+ CBID_VEHICLE_CARGO_SUFFIX = 0x19,
+
+ /** Determine the next animation frame for a house. */
+ CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A,
+
+ /** Called for periodically starting or stopping the animation. */
+ CBID_HOUSE_ANIMATION_START_STOP = 0x1B,
+
+ /** Called whenever the construction state of a house changes. */
+ CBID_HOUSE_CONSTRUCTION_STATE_CHANGE = 0x1C,
+
+ /** Determine whether a wagon can be attached to an already existing train. */
+ CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D,
+
+ /** Called to determine the colour of a town building. */
+ CBID_BUILDING_COLOUR = 0x1E,
+
+ /** Called to decide how much cargo a town building can accept. */
+ CBID_HOUSE_CARGO_ACCEPTANCE = 0x1F,
+
+ /** Called to indicate how long the current animation frame should last. */
+ CBID_HOUSE_ANIMATION_SPEED = 0x20,
+
+ /** Called periodically to determine if a house should be destroyed. */
+ CBID_HOUSE_DESTRUCTION = 0x21,
+
+ /** Called to determine if the given industry type is available */
+ CBID_INDUSTRY_AVAILABLE = 0x22, // not implemented
+
+ /** This callback is called from vehicle purchase lists. It returns a value to be
+ * used as a custom string ID in the 0xD000 range. */
+ CBID_VEHICLE_ADDITIONAL_TEXT = 0x23,
+
+ /** Called when building a station to customize the tile layout */
+ CBID_STATION_TILE_LAYOUT = 0x24,
+
+ /** Called for periodically starting or stopping the animation. */
+ CBID_INDTILE_ANIM_START_STOP = 0x25,
+
+ /** Called to determine industry tile next animation frame. */
+ CBID_INDTILE_ANIM_NEXT_FRAME = 0x26,
+
+ /** Called to indicate how long the current animation frame should last. */
+ CBID_INDTILE_ANIMATION_SPEED = 0x27,
+
+ /** Called to determine if the given industry can be built on specific area. */
+ CBID_INDUSTRY_LOCATION = 0x28,
+
+ /** Called on production changes, so it can be adjusted. */
+ CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // not implemented
+
+ /** Called to determine which cargoes a town building should accept. */
+ CBID_HOUSE_ACCEPT_CARGO = 0x2A,
+
+ /** Called to query the cargo acceptance of the industry tile */
+ CBID_INDTILE_CARGO_ACCEPTANCE = 0x2B,
+
+ /** Called to determine which cargoes an industry should accept. */
+ CBID_INDTILE_ACCEPT_CARGO = 0x2C,
+
+ /** Called to determine if a specific colour map should be used for a vehicle
+ * instead of the default livery. */
+ CBID_VEHICLE_COLOUR_MAPPING = 0x2D,
+
+ /** Called to determine how much cargo a town building produces. */
+ CBID_HOUSE_PRODUCE_CARGO = 0x2E,
+
+ /** Called to determine if the given industry tile can be built on specific tile. */
+ CBID_INDTILE_SHAPE_CHECK = 0x2F,
+
+ /** Called to determine the type (if any) of foundation to draw for industry tile. */
+ CBID_INDUSTRY_DRAW_FOUNDATIONS = 0x30,
+
+ /** Called when the player (or AI) tries to start or stop a vehicle. Mainly
+ * used for preventing a vehicle from leaving the depot. */
+ CBID_VEHICLE_START_STOP_CHECK = 0x31,
+
+ /** Called for every vehicle every 32 days (not all on same date though). */
+ CBID_VEHICLE_32DAY_CALLBACK = 0x32, // not implemented
+
+ /** Called to play a special sound effect */
+ CBID_VEHICLE_SOUND_EFFECT = 0x33,
+
+ /** Return the vehicles this given vehicle can be "upgraded" to. */
+ CBID_VEHICLE_AUTOREPLACE_SELECTION = 0x34,
+
+ /** Called monthly on production changes, so it can be adjusted more frequently */
+ CBID_INDUSTRY_MONTHLYPROD_CHANGE = 0x35, // not implemented
+
+ /** Called to modify various vehicle properties. Callback parameter 1
+ * specifies the property index, as used in Action 0, to change. */
+ CBID_VEHICLE_MODIFY_PROPERTY = 0x36,
+
+ /** Called to determine text to display after cargo name */
+ CBID_INDUSTRY_CARGO_SUFFIX = 0x37, // not implemented
+
+ /** Called to determine more text in the fund industry window */
+ CBID_INDUSTRY_FUND_MORE_TEXT = 0x38,
+
+ /** Called to calculate the income of delivered cargo */
+ CBID_CARGO_PROFIT_CALC = 0x39,
+
+ /** Called to determine more text in the industry window */
+ CBID_INDUSTRY_WINDOW_MORE_TEXT = 0x3A,
+
+ /** Called to determine industry special effects */
+ CBID_INDUSTRY_SPECIAL_EFFECT = 0x3B,
+
+ /** Called to determine if industry can alter the ground below industry tile */
+ CBID_INDUSTRY_AUTOSLOPE = 0x3C, // not implemented
+
+ /** Called to determine if the industry can still accept or refuse more cargo arrival */
+ CBID_INDUSTRY_REFUSE_CARGO = 0x3D,
+
+ /** Called to determine whether a town building can be destroyed. */
+ CBID_HOUSE_DENY_DESTRUCTION = 0x143,
+
+ /** Select an ambient sound to play for a given type of tile. */
+ CBID_SOUNDS_AMBIENT_EFFECT = 0x144, // not implemented
+
+ /** Called to calculate part of a station rating. */
+ CBID_CARGO_STATION_RATING_CALC = 0x145,
+
+ /** Allow signal sprites to be replaced dynamically. */
+ CBID_NEW_SIGNALS_SPRITE_DRAW = 0x146, // not implemented
+
+ /** Add an offset to the default sprite numbers to show another sprite. */
+ CBID_CANALS_SPRITE_OFFSET = 0x147, // not implemented
};
/**
@@ -240,7 +249,7 @@
enum IndustryTileCallbackMask {
CBM_INDT_ANIM_NEXT_FRAME = 0, ///< decides next animation frame
CBM_INDT_ANIM_SPEED = 1, ///< decides animation speed
- CBM_INDT_ACCEPTANCE_CARGO = 2, ///< decides amount of cargo acceptance
+ CBM_INDT_CARGO_ACCEPTANCE = 2, ///< decides amount of cargo acceptance
CBM_INDT_ACCEPT_CARGO = 3, ///< decides accepted types
CBM_INDT_SHAPE_CHECK = 4, ///< decides slope suitability
CBM_INDT_DRAW_FOUNDATIONS = 5, ///< decides if default foundations need to be drawn
--- a/src/newgrf_canal.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_canal.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -7,6 +7,7 @@
#include "debug.h"
#include "newgrf.h"
#include "newgrf_callbacks.h"
+#include "newgrf_commons.h"
#include "newgrf_spritegroup.h"
#include "newgrf_canal.h"
@@ -44,8 +45,7 @@
return TileHeight(tile);
case 0x81:
- return ((_opt.landscape == LT_ARCTIC && GetTileZ(tile) > GetSnowLine()) ? 4 : 0) |
- (_opt.landscape == LT_TROPIC ? GetTropicZone(tile) : 0);
+ return GetTerrainType(tile);
}
DEBUG(grf, 1, "Unhandled canal property 0x%02X", variable);
--- a/src/newgrf_cargo.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_cargo.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -110,3 +110,20 @@
/* Else the cargo value is a 'climate independent' 'bitnum' */
return GetCargoIDByBitnum(cargo);
}
+
+uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile)
+{
+ /* Pre-version 7 uses the 'climate dependent' ID, i.e. cargo is the cargo ID */
+ if (grffile->grf_version < 7) return cargo;
+
+ const CargoSpec *cs = GetCargo(cargo);
+
+ /* If the GRF contains a translation table (and the cargo is in the table)
+ * then get the cargo ID for the label */
+ for (uint i = 0; i < grffile->cargo_max; i++) {
+ if (cs->label == grffile->cargo_list[i]) return i;
+ }
+
+ /* No matching label was found, so we return the 'climate independent' 'bitnum' */
+ return cs->bitnum;;
+}
--- a/src/newgrf_cargo.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_cargo.h Fri Jul 13 09:18:50 2007 +0000
@@ -28,5 +28,6 @@
SpriteID GetCustomCargoSprite(const CargoSpec *cs);
uint16 GetCargoCallback(uint16 callback, uint32 param1, uint32 param2, const CargoSpec *cs);
CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile);
+uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile);
#endif /* NEWGRF_CARGO_H */
--- a/src/newgrf_commons.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_commons.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -73,7 +73,7 @@
{
const EntityIDMapping *map;
- for (uint16 id = max_offset; id < max_new_entities; id++) {
+ for (uint16 id = 0; id < max_new_entities; id++) {
map = &mapping_ID[id];
if (map->entity_id == grf_local_id && map->grfid == grfid) {
return id;
@@ -265,5 +265,6 @@
if (x >= 8) x -= 16;
if (y >= 8) y -= 16;
- return tile + TileDiffXY(x, y);
+ /* Make sure we never roam outside of the map */
+ return TILE_MASK(tile + TileDiffXY(x, y));
}
--- a/src/newgrf_industries.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industries.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -7,6 +7,9 @@
#include "debug.h"
#include "functions.h"
#include "macros.h"
+#include "variables.h"
+#include "landscape.h"
+#include "table/strings.h"
#include "industry.h"
#include "industry_map.h"
#include "newgrf.h"
@@ -14,6 +17,8 @@
#include "newgrf_spritegroup.h"
#include "newgrf_industries.h"
#include "newgrf_commons.h"
+#include "newgrf_text.h"
+#include "newgrf_town.h"
#include "date.h"
/* Since the industry IDs defined by the GRF file don't necessarily correlate
@@ -22,6 +27,14 @@
IndustryOverrideManager _industry_mngr(NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE);
IndustryTileOverrideManager _industile_mngr(NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRYTILES, INVALID_INDUSTRYTILE);
+IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id)
+{
+ if (grf_type == IT_INVALID) return IT_INVALID;
+ if (!HASBIT(grf_type, 7)) return GB(grf_type, 0, 6);
+
+ return _industry_mngr.GetID(GB(grf_type, 0, 6), grf_id);
+}
+
/**
* Finds the distance for the closest tile with water/land given a tile
* @param tile the tile to find the distance too
@@ -31,20 +44,20 @@
static uint GetClosestWaterDistance(TileIndex tile, bool water)
{
TileIndex t;
- uint best_dist;
- for (t = 1; t < MapSize(); t++) {
+ int best_dist;
+ for (t = 0; t < MapSize(); t++) {
if (IsTileType(t, MP_WATER) == water) break;
}
best_dist = DistanceManhattan(tile, t);
for (; t < MapSize(); t++) {
- uint dist = DistanceManhattan(tile, t);
+ int dist = DistanceManhattan(tile, t);
if (dist < best_dist) {
if (IsTileType(t, MP_WATER) == water) best_dist = dist;
} else {
/* When the Y distance between the current row and the 'source' tile
* is larger than the best distance, we've found the best distance */
- if (TileY(t) - TileY(tile) > best_dist) return best_dist;
+ if ((int)TileY(t) - (int)TileY(tile) > best_dist) break;
if (TileX(tile) > TileX(t)) {
/* We can safely skip this many tiles; from here all tiles have a
* higher or equal distance than the best distance */
@@ -53,7 +66,7 @@
} else {
/* We can safely skip this many tiles; up to here all tiles have a
* higher or equal distance than the best distance */
- t += best_dist - dist;
+ t += max(best_dist - dist, 0);
continue;
}
}
@@ -107,6 +120,19 @@
return 0xFFFF; // tile is not an industry one or does not belong to the current industry
}
+static uint32 GetClosestIndustry(TileIndex tile, IndustryType type, const Industry *current)
+{
+ uint32 best_dist = MAX_UVALUE(uint32);
+ const Industry *i;
+ FOR_ALL_INDUSTRIES(i) {
+ if (i->type != type || i == current) continue;
+
+ best_dist = min(best_dist, DistanceManhattan(tile, i->xy));
+ }
+
+ return best_dist;
+}
+
/** This function implements the industries variables that newGRF defines.
* @param variable that is queried
* @param parameter unused
@@ -116,7 +142,7 @@
uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
{
const Industry *industry = object->u.industry.ind;
- TileIndex tile = object->u.industry.tile;
+ TileIndex tile = object->u.industry.tile;
const IndustrySpec *indspec = GetIndustrySpec(industry->type);
switch (variable) {
@@ -125,22 +151,34 @@
case 0x42: { // waiting cargo, but only if those two callback flags are set
uint16 callback = indspec->callback_flags;
if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(callback, CBM_IND_PRODUCTION_256_TICKS)) {
- return max(industry->incoming_cargo_waiting[variable - 0x40], (uint16)0xFFFF);
+ return min(industry->incoming_cargo_waiting[variable - 0x40], (uint16)0xFFFF);
} else {
return 0;
}
}
- /* TODO: somehow determine whether we're in water or not */
- case 0x43: return GetClosestWaterDistance(tile, true); // Manhattan distance of closes dry/water tile
+
+ /* Manhattan distance of closes dry/water tile */
+ case 0x43: return GetClosestWaterDistance(tile, (object->u.industry_location.spec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
/* Get industry ID at offset param */
case 0x60: return GetIndustryIDAtOffset(GetNearbyTile(parameter, industry->xy), tile, industry);
case 0x61: return 0; // Get random tile bits at offset param
- case 0x62: // Land info of nearby tiles
- case 0x63: // Animation stage of nerby tiles
- case 0x64: break; // Distance of nearest industry of given type
+ /* Land info of nearby tiles */
+ case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
+
+ /* Animation stage of nearby tiles */
+ case 0x63 : {
+ tile = GetNearbyTile(parameter, tile);
+ if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == industry) {
+ return GetIndustryAnimationState(tile);
+ }
+ return 0xFFFFFFFF;
+ }
+
+ /* Distance of nearest industry of given type */
+ case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, indspec->grf_prop.grffile->grfid), industry); // Distance of nearest industry of given type
/* Get town zone and Manhattan distance of closest town */
case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
/* Get square of Euclidian distance of closes town */
@@ -156,7 +194,7 @@
case 0x80: return industry->xy;
case 0x81: return GB(industry->xy, 8, 8);
/* Pointer to the town the industry is associated with */
- case 0x82:
+ case 0x82: return industry->town->index;
case 0x83:
case 0x84:
case 0x85: DEBUG(grf, 0, "NewGRFs shouldn't be doing pointer magic"); break; // not supported
@@ -260,6 +298,88 @@
return group->g.callback.result;
}
+uint32 IndustryLocationGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
+{
+ TileIndex tile = object->u.industry_location.tile;
+
+ if (object->scope == VSG_SCOPE_PARENT) {
+ return TownGetVariable(variable, parameter, available, ClosestTownFromTile(tile, (uint)-1));
+ }
+
+ switch (variable) {
+ /* Land info of nearby tiles */
+ case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
+
+ /* Distance of nearest industry of given type */
+ case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, object->u.industry_location.spec->grf_prop.grffile->grfid), NULL);
+
+ /* Location where to build the industry */
+ case 0x80: return tile;
+ case 0x81: return GB(tile, 8, 8);
+
+ /* Pointer to the town the industry is associated with */
+ case 0x82: return ClosestTownFromTile(tile, (uint)-1)->index;
+ case 0x83:
+ case 0x84:
+ case 0x85: DEBUG(grf, 0, "NewGRFs shouldn't be doing pointer magic"); break; // not supported
+
+ /* Number of the layout */
+ case 0x86: return object->u.industry_location.itspec_index;
+
+ /* Ground type */
+ case 0x87: return GetTerrainType(tile);
+
+ /* Town zone */
+ case 0x88: return GetTownRadiusGroup(ClosestTownFromTile(tile, (uint)-1), tile);
+
+ /* Manhattan distance of the closest town */
+ case 0x89: return min(DistanceManhattan(ClosestTownFromTile(tile, (uint)-1)->xy, tile), 255);
+
+ /* Lowest height of the tile */
+ case 0x8A: return GetTileZ(tile);
+
+ /* Distance to the nearest water/land tile */
+ case 0x8B: return GetClosestWaterDistance(tile, (object->u.industry_location.spec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
+
+ /* Square of Euclidian distance from town */
+ case 0x8D: return min(DistanceSquare(ClosestTownFromTile(tile, (uint)-1)->xy, tile), 65535);
+ }
+
+ DEBUG(grf, 1, "Unhandled location industry property 0x%X", variable);
+
+ *available = false;
+ return (uint32)-1;
+}
+
+bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index)
+{
+ const IndustrySpec *indspec = GetIndustrySpec(type);
+
+ ResolverObject object;
+ const SpriteGroup *group;
+
+ NewIndustryResolver(&object, tile, NULL);
+ object.GetVariable = IndustryLocationGetVariable;
+ object.callback = CBID_INDUSTRY_LOCATION;
+ object.u.industry_location.tile = tile;
+ object.u.industry_location.spec = indspec;
+ object.u.industry_location.itspec_index = itspec_index;
+
+ group = Resolve(GetIndustrySpec(type)->grf_prop.spritegroup, &object);
+
+ if (group == NULL || group->type != SGT_CALLBACK) return false;
+
+ switch (group->g.callback.result) {
+ case 0x400: return true;
+ case 0x401: _error_message = STR_0239_SITE_UNSUITABLE; break;
+ case 0x402: _error_message = STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST; break;
+ case 0x403: _error_message = STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT; break;
+ default: _error_message = GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + group->g.callback.result); break;
+ }
+
+ return false;
+}
+
static int32 DerefIndProd(uint field, bool use_register)
{
return use_register ? (int32)GetRegister(field) : field;
@@ -273,7 +393,7 @@
void IndustryProductionCallback(Industry *ind, int reason)
{
ResolverObject object;
- NewIndustryResolver(&object, INVALID_TILE, ind);
+ NewIndustryResolver(&object, ind->xy, ind);
object.callback_param2 = reason;
for (uint loop = 0;; loop++) {
@@ -295,4 +415,6 @@
SB(object.callback_param2, 24, 8, again);
}
+
+ InvalidateWindow(WC_INDUSTRY_VIEW, ind->index);
}
--- a/src/newgrf_industries.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industries.h Fri Jul 13 09:18:50 2007 +0000
@@ -13,10 +13,15 @@
uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile);
uint32 GetIndustryIDAtOffset(TileIndex new_tile, TileIndex old_tile, const Industry *i);
void IndustryProductionCallback(Industry *ind, int reason);
+bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index);
+
+IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id);
/* in newgrf_industrytiles.cpp*/
uint32 IndustryTileGetRandomBits(const ResolverObject *object);
uint32 IndustryTileGetTriggers(const ResolverObject *object);
void IndustryTileSetTriggers(const ResolverObject *object, int triggers);
+uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index);
+
#endif /* NEWGRF_INDUSTRIES_H */
--- a/src/newgrf_industrytiles.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industrytiles.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -15,9 +15,12 @@
#include "newgrf_spritegroup.h"
#include "newgrf_callbacks.h"
#include "newgrf_industries.h"
+#include "newgrf_industrytiles.h"
+#include "newgrf_text.h"
#include "industry_map.h"
#include "clear_map.h"
#include "table/sprites.h"
+#include "table/strings.h"
#include "sprite.h"
/**
@@ -27,7 +30,7 @@
* @param index of the industry been queried for
* @return a construction of bits obeying the newgrf format
*/
-static uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
+uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
{
byte tile_type;
bool is_same_industry;
@@ -82,9 +85,10 @@
case 0x44 : return (IsTileType(tile, MP_INDUSTRY)) ? GetIndustryAnimationState(tile) : 0;
/* Land info of nearby tiles */
- case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds->index);
+ case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds == NULL ? (IndustryID)INVALID_INDUSTRY : inds->index);
- case 0x61 : {/* Animation stage of nearby tiles */
+ /* Animation stage of nearby tiles */
+ case 0x61 : {
tile = GetNearbyTile(parameter, tile);
if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == inds) {
return GetIndustryAnimationState(tile);
@@ -96,7 +100,10 @@
case 0x62 : return GetIndustryIDAtOffset(GetNearbyTile(parameter, tile), tile, inds);
}
- return 0;
+ DEBUG(grf, 1, "Unhandled industry tile property 0x%X", variable);
+
+ *available = false;
+ return (uint32)-1;
}
static const SpriteGroup *IndustryTileResolveReal(const ResolverObject *object, const SpriteGroup *group)
@@ -207,7 +214,7 @@
if (HASBIT(inds->callback_flags, CBM_INDT_DRAW_FOUNDATIONS)) {
/* Called to determine the type (if any) of foundation to draw for industry tile */
uint32 callback_res = GetIndustryTileCallback(CBID_INDUSTRY_DRAW_FOUNDATIONS, 0, 0, gfx, i, ti->tile);
- draw_old_one = callback_res == 0 || callback_res == CALLBACK_FAILED;
+ draw_old_one = callback_res != 0;
}
if (draw_old_one) DrawFoundation(ti, ti->tileh);
@@ -226,3 +233,125 @@
return true;
}
}
+
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx)
+{
+ Industry ind;
+ ind.xy = 0;
+ ind.type = type;
+
+ uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, 0, gfx, &ind, tile);
+ if (its->grf_prop.grffile->grf_version < 7) {
+ return callback_res != 0;
+ }
+ if (callback_res == CALLBACK_FAILED) return false;
+
+ switch (callback_res) {
+ case 0x400: return true;
+ case 0x401: _error_message = STR_0239_SITE_UNSUITABLE; return false;
+ case 0x402: _error_message = STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST; return false;
+ case 0x403: _error_message = STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT; return false;
+ default: _error_message = GetGRFStringID(its->grf_prop.grffile->grfid, 0xD000 + callback_res); return false;
+ }
+}
+
+void AnimateNewIndustryTile(TileIndex tile)
+{
+ Industry *ind = GetIndustryByTile(tile);
+ IndustryGfx gfx = GetIndustryGfx(tile);
+ const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+ byte animation_speed = itspec->animation_speed;
+
+ if (HASBIT(itspec->callback_flags, CBM_INDT_ANIM_SPEED)) {
+ uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIMATION_SPEED, 0, 0, gfx, ind, tile);
+ if (callback_res != CALLBACK_FAILED) animation_speed = clamp(callback_res & 0xFF, 0, 16);
+ }
+
+ /* An animation speed of 2 means the animation frame changes 4 ticks, and
+ * increasing this value by one doubles the wait. 0 is the minimum value
+ * allowed for animation_speed, which corresponds to 30ms, and 16 is the
+ * maximum, corresponding to around 33 minutes. */
+ if ((_tick_counter % (1 << animation_speed)) != 0) return;
+
+ bool frame_set_by_callback = false;
+ byte frame = GetIndustryAnimationState(tile);
+ uint16 num_frames = GB(itspec->animation_info, 0, 8) + 1;
+
+ if (HASBIT(itspec->callback_flags, CBM_INDT_ANIM_NEXT_FRAME)) {
+ uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_NEXT_FRAME, HASBIT(itspec->animation_special_flags, 0) ? Random() : 0, 0, gfx, ind, tile);
+
+ if (callback_res != CALLBACK_FAILED) {
+ frame_set_by_callback = true;
+
+ switch (callback_res & 0xFF) {
+ case 0xFF:
+ DeleteAnimatedTile(tile);
+ break;
+ case 0xFE:
+ /* Carry on as normal. */
+ frame_set_by_callback = false;
+ break;
+ default:
+ frame = callback_res & 0xFF;
+ break;
+ }
+ }
+ }
+
+ if (!frame_set_by_callback) {
+ if (frame < num_frames) {
+ frame++;
+ } else if (frame == num_frames && GB(itspec->animation_info, 8, 8) == 1) {
+ /* This animation loops, so start again from the beginning */
+ frame = 0;
+ } else {
+ /* This animation doesn't loop, so stay here */
+ DeleteAnimatedTile(tile);
+ }
+ }
+
+ SetIndustryAnimationState(tile, frame);
+ MarkTileDirtyByTile(tile);
+}
+
+static void ChangeIndustryTileAnimationFrame(TileIndex tile, IndustryAnimationTrigger iat, uint32 random_bits, IndustryGfx gfx, Industry *ind)
+{
+ uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_START_STOP, random_bits, iat, gfx, ind, tile);
+ if (callback_res == CALLBACK_FAILED) return;
+
+ switch (callback_res & 0xFF) {
+ case 0xFD: /* Do nothing. */ break;
+ case 0xFE: AddAnimatedTile(tile); break;
+ case 0xFF: DeleteAnimatedTile(tile); break;
+ default:
+ SetIndustryAnimationState(tile, callback_res & 0xFF);
+ AddAnimatedTile(tile);
+ break;
+ }
+}
+
+bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random)
+{
+ IndustryGfx gfx = GetIndustryGfx(tile);
+ const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+
+ if (!HASBIT(itspec->animation_triggers, iat)) return false;
+
+ Industry *ind = GetIndustryByTile(tile);
+ ChangeIndustryTileAnimationFrame(tile, iat, random, gfx, ind);
+ return true;
+}
+
+bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat)
+{
+ bool ret = true;
+ uint32 random = Random();
+ BEGIN_TILE_LOOP(tile, ind->width, ind->height, ind->xy)
+ if (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == ind->index) {
+ ret &= StartStopIndustryTileAnimation(tile, iat, random);
+ SB(random, 0, 16, Random());
+ }
+ END_TILE_LOOP(tile, ind->width, ind->height, ind->xy)
+
+ return ret;
+}
--- a/src/newgrf_industrytiles.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industrytiles.h Fri Jul 13 09:18:50 2007 +0000
@@ -5,7 +5,20 @@
#ifndef NEWGRF_INDUSTRYTILES_H
#define NEWGRF_INDUSTRYTILES_H
+enum IndustryAnimationTrigger {
+ IAT_CONSTRUCTION_STATE_CHANGE,
+ IAT_TILELOOP,
+ IAT_INDUSTRY_TICK,
+ IAT_INDUSTRY_RECEIVED_CARGO,
+ IAT_INDUSTRY_DISTRIBUTES_CARGO,
+};
+
bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds);
uint16 GetIndustryTileCallback(uint16 callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile);
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx);
+
+void AnimateNewIndustryTile(TileIndex tile);
+bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random = Random());
+bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat);
#endif /* NEWGRF_INDUSTRYTILES_H */
--- a/src/newgrf_spritegroup.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_spritegroup.h Fri Jul 13 09:18:50 2007 +0000
@@ -225,6 +225,11 @@
IndustryGfx gfx;
} industry;
struct {
+ TileIndex tile;
+ const IndustrySpec *spec;
+ uint itspec_index;
+ } industry_location;
+ struct {
const struct CargoSpec *cs;
} cargo;
} u;
--- a/src/newgrf_station.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_station.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -345,6 +345,20 @@
st->waiting_triggers = triggers;
}
+/**
+ * Station variable cache
+ * This caches 'expensive' station variable lookups which iterate over
+ * several tiles that may be called multiple times per Resolve().
+ */
+static struct {
+ uint32 v40;
+ uint32 v41;
+ uint32 v45;
+ uint32 v46;
+ uint32 v47;
+ uint32 v49;
+ uint8 valid;
+} _svc;
static uint32 StationGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
{
@@ -378,7 +392,7 @@
case 0x42: return 0; // Rail type (XXX Get current type from GUI?)
case 0x43: return _current_player; // Station owner
case 0x44: return 2; // PBS status
- case 0xFA: return max(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0); // Build date
+ case 0xFA: return clamp(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Build date, clamped to a 16 bit value
}
*available = false;
@@ -387,14 +401,29 @@
switch (variable) {
/* Calculated station variables */
- case 0x40: return GetPlatformInfoHelper(tile, false, false, false);
- case 0x41: return GetPlatformInfoHelper(tile, true, false, false);
+ case 0x40:
+ if (!HASBIT(_svc.valid, 0)) { _svc.v40 = GetPlatformInfoHelper(tile, false, false, false); SETBIT(_svc.valid, 0); }
+ return _svc.v40;
+
+ case 0x41:
+ if (!HASBIT(_svc.valid, 1)) { _svc.v41 = GetPlatformInfoHelper(tile, true, false, false); SETBIT(_svc.valid, 1); }
+ return _svc.v41;
+
case 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8);
case 0x43: return st->owner; // Station owner
case 0x44: return 2; // PBS status
- case 0x45: return GetRailContinuationInfo(tile);
- case 0x46: return GetPlatformInfoHelper(tile, false, false, true);
- case 0x47: return GetPlatformInfoHelper(tile, true, false, true);
+ case 0x45:
+ if (!HASBIT(_svc.valid, 2)) { _svc.v45 = GetRailContinuationInfo(tile); SETBIT(_svc.valid, 2); }
+ return _svc.v45;
+
+ case 0x46:
+ if (!HASBIT(_svc.valid, 3)) { _svc.v46 = GetPlatformInfoHelper(tile, false, false, true); SETBIT(_svc.valid, 3); }
+ return _svc.v46;
+
+ case 0x47:
+ if (!HASBIT(_svc.valid, 4)) { _svc.v47 = GetPlatformInfoHelper(tile, true, false, true); SETBIT(_svc.valid, 4); }
+ return _svc.v47;
+
case 0x48: { // Accepted cargo types
CargoID cargo_type;
uint32 value = 0;
@@ -404,7 +433,9 @@
}
return value;
}
- case 0x49: return GetPlatformInfoHelper(tile, false, true, false);
+ case 0x49:
+ if (!HASBIT(_svc.valid, 5)) { _svc.v49 = GetPlatformInfoHelper(tile, false, true, false); SETBIT(_svc.valid, 5); }
+ return _svc.v49;
/* Variables which use the parameter */
/* Variables 0x60 to 0x65 are handled separately below */
@@ -420,7 +451,7 @@
case 0xF3: return st->bus_stops->status;
case 0xF6: return st->airport_flags;
case 0xF7: return GB(st->airport_flags, 8, 8);
- case 0xFA: return max(st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0);
+ case 0xFA: return clamp(st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535);
}
/* Handle cargo variables with parameter, 0x60 to 0x65 */
@@ -563,6 +594,9 @@
/* Remember the cargo type we've picked */
object->u.station.cargo_type = ctype;
+ /* Invalidate all cached vars */
+ _svc.valid = 0;
+
return Resolve(group, object);
}
--- a/src/rail_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/rail_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -778,7 +778,7 @@
DrawStringCentered(74, 101 + y_offset, STR_3004_PLATFORM_LENGTH, 0);
DrawStringCentered(74, 141 + y_offset, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
- DrawStationCoverageAreaText(2, 166 + y_offset, (uint)-1, rad);
+ DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad);
if (newstations) {
uint16 i;
--- a/src/road_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/road_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -112,7 +112,6 @@
/* cost for removing inner/edge -roads */
static const uint16 road_remove_cost[2] = {50, 18};
- Town *t;
/* true if the roadpiece was always removeable,
* false if it was a center piece. Affects town ratings drop */
bool edge_road;
@@ -122,33 +121,25 @@
RoadType rt = (RoadType)GB(p1, 4, 2);
if (!IsValidRoadType(rt)) return CMD_ERROR;
- Owner owner;
+ Town *t = NULL;
switch (GetTileType(tile)) {
case MP_STREET:
- owner = GetRoadOwner(tile, rt);
+ if (_game_mode != GM_EDITOR && GetRoadOwner(tile, rt) == OWNER_TOWN) t = GetTownByTile(tile);
break;
case MP_STATION:
if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
- owner = GetTileOwner(tile);
break;
case MP_TUNNELBRIDGE:
if ((IsTunnel(tile) && GetTunnelTransportType(tile) != TRANSPORT_ROAD) ||
(IsBridge(tile) && GetBridgeTransportType(tile) != TRANSPORT_ROAD)) return CMD_ERROR;
- owner = GetTileOwner(tile);
break;
default:
return CMD_ERROR;
}
- if (owner == OWNER_TOWN && _game_mode != GM_EDITOR) {
- t = GetTownByTile(tile);
- } else {
- t = NULL;
- }
-
RoadBits pieces = Extract<RoadBits, 0>(p1);
RoadTypes rts = GetRoadTypes(tile);
/* The tile doesn't have the given road type */
--- a/src/road_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/road_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -579,7 +579,7 @@
StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, _cur_roadtype, image + 1);
DrawStationCoverageAreaText(2, 146,
- ((w->window_class == WC_BUS_STATION) ? (1 << CT_PASSENGERS) : ~(1 << CT_PASSENGERS)),
+ (w->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY,
3);
} break;
--- a/src/roadveh_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/roadveh_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -126,7 +126,7 @@
{
byte length = 8;
- uint16 veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
+ uint16 veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
if (veh_len != CALLBACK_FAILED) {
length -= clamp(veh_len, 0, 7);
}
--- a/src/saveload.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/saveload.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -1677,6 +1677,9 @@
}
} else { /* LOAD game */
assert(mode == SL_LOAD);
+#ifdef DEBUG_DUMP_COMMANDS
+ debug_dump_commands("ddc:load:%s\n", filename);
+#endif /* DUMP_COMMANDS */
if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
--- a/src/ship_gui.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/ship_gui.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -55,7 +55,7 @@
/* Draw max speed */
{
- SetDParam(0, v->max_speed / 2);
+ SetDParam(0, v->max_speed * 10 / 32);
DrawString(2, 25, STR_9813_MAX_SPEED, 0);
}
--- a/src/sound/cocoa_s.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/cocoa_s.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class SoundDriver_Cocoa: public SoundDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -16,6 +14,7 @@
class FSoundDriver_Cocoa: public SoundDriverFactory<FSoundDriver_Cocoa> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "cocoa"; }
/* virtual */ const char *GetDescription() { return "Cocoa Sound Driver"; }
/* virtual */ Driver *CreateInstance() { return new SoundDriver_Cocoa(); }
--- a/src/sound/null_s.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/null_s.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class SoundDriver_Null: public SoundDriver {
public:
- /* virtual */ bool CanProbe() { return false; }
-
/* virtual */ const char *Start(const char * const *param) { return NULL; }
/* virtual */ void Stop() { }
@@ -16,6 +14,7 @@
class FSoundDriver_Null: public SoundDriverFactory<FSoundDriver_Null> {
public:
+ static const int priority = 0;
/* virtual */ const char *GetName() { return "null"; }
/* virtual */ const char *GetDescription() { return "Null Sound Driver"; }
/* virtual */ Driver *CreateInstance() { return new SoundDriver_Null(); }
--- a/src/sound/sdl_s.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/sdl_s.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class SoundDriver_SDL: public SoundDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -16,6 +14,7 @@
class FSoundDriver_SDL: public SoundDriverFactory<FSoundDriver_SDL> {
public:
+ static const int priority = 5;
/* virtual */ const char *GetName() { return "sdl"; }
/* virtual */ const char *GetDescription() { return "SDL Sound Driver"; }
/* virtual */ Driver *CreateInstance() { return new SoundDriver_SDL(); }
--- a/src/sound/sound_driver.hpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/sound_driver.hpp Fri Jul 13 09:18:50 2007 +0000
@@ -14,7 +14,7 @@
template <class T>
class SoundDriverFactory: public SoundDriverFactoryBase {
public:
- SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND); }
+ SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND, ((T *)this)->priority); }
/**
* Get the long, human readable, name for the Driver-class.
--- a/src/sound/win32_s.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/win32_s.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class SoundDriver_Win32: public SoundDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -16,6 +14,7 @@
class FSoundDriver_Win32: public SoundDriverFactory<FSoundDriver_Win32> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "win32"; }
/* virtual */ const char *GetDescription() { return "Win32 WaveOut Driver"; }
/* virtual */ Driver *CreateInstance() { return new SoundDriver_Win32(); }
--- a/src/table/build_industry.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/table/build_industry.h Fri Jul 13 09:18:50 2007 +0000
@@ -1532,7 +1532,7 @@
* @param a2 next frame of animation
* @param a3 chooses between animation or construction state
*/
-#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, true, {0, 0, NULL, NULL, 0}}
+#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, 0xFFFF, 2, 0, 0, true, {0, 0, NULL, NULL, 0}}
static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
/* Coal Mine */
MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
--- a/src/table/road_land.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/table/road_land.h Fri Jul 13 09:18:50 2007 +0000
@@ -72,7 +72,7 @@
};
static const SpriteID _road_frontwire_sprites_1[16] = {
- 0, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x43, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x37
+ 0, 0x54, 0x55, 0x5B, 0x54, 0x54, 0x5E, 0x5A, 0x55, 0x5C, 0x55, 0x58, 0x5D, 0x57, 0x59, 0x56
};
static const SpriteID _road_backpole_sprites_1[16] = {
--- a/src/town_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/town_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -345,7 +345,7 @@
/* Check and/or */
if (HASBIT(GetHouseSpecs(GetHouseType(tile))->callback_mask, CBM_CONSTRUCTION_STATE_CHANGE)) {
- uint16 callback_res = GetHouseCallback(CBID_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
+ uint16 callback_res = GetHouseCallback(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
if (callback_res != CALLBACK_FAILED) ChangeHouseAnimationFrame(tile, callback_res);
}
@@ -640,6 +640,7 @@
TrackBits b = GetAnyRoadTrackBits(tile, ROADTYPE_ROAD);
RoadBits r = ROAD_NONE;
+ if (b == TRACK_BIT_NONE) return r;
if (b & TRACK_BIT_X) r |= ROAD_X;
if (b & TRACK_BIT_Y) r |= ROAD_Y;
if (b & TRACK_BIT_UPPER) r |= ROAD_NE | ROAD_NW;
@@ -668,7 +669,7 @@
static bool IsRoadAllowedHere(TileIndex tile, int dir)
{
- if (TileX(tile) < 1 || TileY(tile) < 1 || MapMaxX() <= TileX(tile) || MapMaxY() <= TileY(tile)) return false;
+ if (TileX(tile) < 2 || TileY(tile) < 2 || MapMaxX() <= TileX(tile) || MapMaxY() <= TileY(tile)) return false;
Slope k;
Slope slope;
--- a/src/train_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/train_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -231,7 +231,7 @@
/* check the vehicle length (callback) */
uint16 veh_len = CALLBACK_FAILED;
if (HASBIT(EngInfo(u->engine_type)->callbackmask, CBM_VEHICLE_LENGTH)) {
- veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
+ veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
}
if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor;
veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
@@ -3029,8 +3029,6 @@
BeginVehicleMove(v);
EndVehicleMove(v);
- if (IsFrontEngine(v)) RemoveVehicleFromGroup(v);
-
DeleteVehicle(v);
if (v->u.rail.track != TRACK_BIT_DEPOT && v->u.rail.track != TRACK_BIT_WORMHOLE)
--- a/src/unmovable_cmd.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/unmovable_cmd.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -18,6 +18,7 @@
#include "economy.h"
#include "town.h"
#include "sprite.h"
+#include "bridge_map.h"
#include "unmovable_map.h"
#include "variables.h"
#include "table/unmovable_land.h"
@@ -358,7 +359,7 @@
do {
tile = RandomTile();
- if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4) {
+ if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4 && !IsBridgeAbove(tile)) {
if (IsRadioTowerNearby(tile)) continue;
MakeTransmitter(tile);
IncreaseGeneratingWorldProgress(GWP_UNMOVABLE);
@@ -401,7 +402,7 @@
do {
if (--j == 0) goto restart;
tile = TILE_MASK(tile + TileOffsByDiagDir(dir));
- } while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2));
+ } while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2 && !IsBridgeAbove(tile)));
assert(tile == TILE_MASK(tile));
--- a/src/vehicle.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/vehicle.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -471,8 +471,8 @@
if (remove) {
new_hash = NULL;
} else {
- int x = GB(TileX(v->tile), HASH_RES, HASH_BITS);
- int y = GB(TileY(v->tile), HASH_RES, HASH_BITS) << HASH_BITS;
+ int x = GB(v->x_pos / TILE_SIZE, HASH_RES, HASH_BITS);
+ int y = GB(v->y_pos / TILE_SIZE, HASH_RES, HASH_BITS) << HASH_BITS;
new_hash = &_new_vehicle_position_hash[(x + y) & TOTAL_HASH_MASK];
}
@@ -675,6 +675,9 @@
{
if (IsValidStationID(v->last_station_visited)) {
GetStation(v->last_station_visited)->loading_vehicles.remove(v);
+
+ HideFillingPercent(v->fill_percent_te_id);
+ v->fill_percent_te_id = INVALID_TE_ID;
}
if (IsEngineCountable(v)) {
--- a/src/video/cocoa_v.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/cocoa_v.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class VideoDriver_Cocoa: public VideoDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FVideoDriver_Cocoa: public VideoDriverFactory<FVideoDriver_Cocoa> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "cocoa"; }
/* virtual */ const char *GetDescription() { return "Cocoa Video Driver"; }
/* virtual */ Driver *CreateInstance() { return new VideoDriver_Cocoa(); }
--- a/src/video/dedicated_v.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/dedicated_v.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class VideoDriver_Dedicated: public VideoDriver {
public:
- /* virtual */ bool CanProbe() { return false; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FVideoDriver_Dedicated: public VideoDriverFactory<FVideoDriver_Dedicated> {
public:
+ static const int priority = 0;
/* virtual */ const char *GetName() { return "dedicated"; }
/* virtual */ const char *GetDescription() { return "Dedicated Video Driver"; }
/* virtual */ Driver *CreateInstance() { return new VideoDriver_Dedicated(); }
--- a/src/video/null_v.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/null_v.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class VideoDriver_Null: public VideoDriver {
public:
- /* virtual */ bool CanProbe() { return false; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FVideoDriver_Null: public VideoDriverFactory<FVideoDriver_Null> {
public:
+ static const int priority = 1;
/* virtual */ const char *GetName() { return "null"; }
/* virtual */ const char *GetDescription() { return "Null Video Driver"; }
/* virtual */ Driver *CreateInstance() { return new VideoDriver_Null(); }
--- a/src/video/sdl_v.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/sdl_v.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class VideoDriver_SDL: public VideoDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FVideoDriver_SDL: public VideoDriverFactory<FVideoDriver_SDL> {
public:
+ static const int priority = 5;
/* virtual */ const char *GetName() { return "sdl"; }
/* virtual */ const char *GetDescription() { return "SDL Video Driver"; }
/* virtual */ Driver *CreateInstance() { return new VideoDriver_SDL(); }
--- a/src/video/video_driver.hpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/video_driver.hpp Fri Jul 13 09:18:50 2007 +0000
@@ -22,7 +22,7 @@
template <class T>
class VideoDriverFactory: public VideoDriverFactoryBase {
public:
- VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO); }
+ VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO, ((T *)this)->priority); }
/**
* Get the long, human readable, name for the Driver-class.
--- a/src/video/win32_v.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/win32_v.h Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
class VideoDriver_Win32: public VideoDriver {
public:
- /* virtual */ bool CanProbe() { return true; }
-
/* virtual */ const char *Start(const char * const *param);
/* virtual */ void Stop();
@@ -24,6 +22,7 @@
class FVideoDriver_Win32: public VideoDriverFactory<FVideoDriver_Win32> {
public:
+ static const int priority = 10;
/* virtual */ const char *GetName() { return "win32"; }
/* virtual */ const char *GetDescription() { return "Win32 GDI Video Driver"; }
/* virtual */ Driver *CreateInstance() { return new VideoDriver_Win32(); }
--- a/src/window.cpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/window.cpp Fri Jul 13 09:18:50 2007 +0000
@@ -652,8 +652,8 @@
_last_z_window++;
}
+ CallWindowEventNP(w, WE_CREATE);
SetWindowDirty(w);
- CallWindowEventNP(w, WE_CREATE);
return w;
}
--- a/src/yapf/follow_track.hpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/follow_track.hpp Fri Jul 13 09:18:50 2007 +0000
@@ -31,6 +31,7 @@
m_exitdir = INVALID_DIAGDIR;
m_is_station = m_is_bridge = m_is_tunnel = false;
m_tiles_skipped = 0;
+ m_err = EC_NONE;
}
FORCEINLINE static TransportType TT() {return Ttr_type_;}
@@ -45,6 +46,7 @@
{
m_old_tile = old_tile;
m_old_td = old_td;
+ m_err = EC_NONE;
assert((GetTileTrackStatus(m_old_tile, TT(), m_veh->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(m_old_td)) != 0);
m_exitdir = TrackdirToExitdir(m_old_td);
if (EnteredDepot()) return true;
@@ -53,9 +55,18 @@
if (!QueryNewTileTrackStatus()) return TryReverse();
if (!CanEnterNewTile()) return false;
m_new_td_bits &= DiagdirReachesTrackdirs(m_exitdir);
- if (!Allow90degTurns())
+ if (m_new_td_bits == TRACKDIR_BIT_NONE) {
+ m_err = EC_NO_WAY;
+ return false;
+ }
+ if (!Allow90degTurns()) {
m_new_td_bits &= (TrackdirBits)~(int)TrackdirCrossesTrackdirs(m_old_td);
- return (m_new_td_bits != TRACKDIR_BIT_NONE);
+ if (m_new_td_bits == TRACKDIR_BIT_NONE) {
+ m_err = EC_90DEG;
+ return false;
+ }
+ }
+ return true;
}
protected:
@@ -126,15 +137,19 @@
// road stop can be left at one direction only unless it's a drive-through stop
if (IsRoadTT() && IsStandardRoadStopTile(m_old_tile)) {
DiagDirection exitdir = GetRoadStopDir(m_old_tile);
- if (exitdir != m_exitdir)
+ if (exitdir != m_exitdir) {
+ m_err = EC_NO_WAY;
return false;
+ }
}
// road depots can be also left in one direction only
if (IsRoadTT() && IsTileDepotType(m_old_tile, TT())) {
DiagDirection exitdir = GetRoadDepotDirection(m_old_tile);
- if (exitdir != m_exitdir)
+ if (exitdir != m_exitdir) {
+ m_err = EC_NO_WAY;
return false;
+ }
}
return true;
}
@@ -145,29 +160,37 @@
if (IsRoadTT() && IsStandardRoadStopTile(m_new_tile)) {
// road stop can be entered from one direction only unless it's a drive-through stop
DiagDirection exitdir = GetRoadStopDir(m_new_tile);
- if (ReverseDiagDir(exitdir) != m_exitdir)
+ if (ReverseDiagDir(exitdir) != m_exitdir) {
+ m_err = EC_NO_WAY;
return false;
+ }
}
// road and rail depots can also be entered from one direction only
if (IsRoadTT() && IsTileDepotType(m_new_tile, TT())) {
DiagDirection exitdir = GetRoadDepotDirection(m_new_tile);
- if (ReverseDiagDir(exitdir) != m_exitdir)
+ if (ReverseDiagDir(exitdir) != m_exitdir) {
+ m_err = EC_NO_WAY;
return false;
+ }
// don't try to enter other player's depots
if (GetTileOwner(m_new_tile) != m_veh->owner) {
+ m_err = EC_OWNER;
return false;
}
}
if (IsRailTT() && IsTileDepotType(m_new_tile, TT())) {
DiagDirection exitdir = GetRailDepotDirection(m_new_tile);
- if (ReverseDiagDir(exitdir) != m_exitdir)
+ if (ReverseDiagDir(exitdir) != m_exitdir) {
+ m_err = EC_NO_WAY;
return false;
+ }
}
// rail transport is possible only on tiles with the same owner as vehicle
if (IsRailTT() && GetTileOwner(m_new_tile) != m_veh->owner) {
// different owner
+ m_err = EC_NO_WAY;
return false;
}
@@ -176,6 +199,7 @@
RailType rail_type = GetTileRailType(m_new_tile);
if (!HASBIT(m_veh->u.rail.compatible_railtypes, rail_type)) {
// incompatible rail type
+ m_err = EC_RAIL_TYPE;
return false;
}
}
@@ -185,12 +209,18 @@
if (IsTunnel(m_new_tile)) {
if (!m_is_tunnel) {
DiagDirection tunnel_enterdir = GetTunnelDirection(m_new_tile);
- if (tunnel_enterdir != m_exitdir) return false;
+ if (tunnel_enterdir != m_exitdir) {
+ m_err = EC_NO_WAY;
+ return false;
+ }
}
} else if (IsBridge(m_new_tile)) {
if (!m_is_bridge) {
DiagDirection ramp_enderdir = GetBridgeRampDirection(m_new_tile);
- if (ramp_enderdir != m_exitdir) return false;
+ if (ramp_enderdir != m_exitdir) {
+ m_err = EC_NO_WAY;
+ return false;
+ }
}
}
}
@@ -247,6 +277,7 @@
return true;
}
}
+ m_err = EC_NO_WAY;
return false;
}
--- a/src/yapf/yapf.h Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/yapf.h Fri Jul 13 09:18:50 2007 +0000
@@ -89,6 +89,14 @@
/** Base struct for track followers. */
struct FollowTrack_t
{
+ enum ErrorCode {
+ EC_NONE,
+ EC_OWNER,
+ EC_RAIL_TYPE,
+ EC_90DEG,
+ EC_NO_WAY,
+ };
+
const Vehicle* m_veh; ///< moving vehicle
TileIndex m_old_tile; ///< the origin (vehicle moved from) before move
Trackdir m_old_td; ///< the trackdir (the vehicle was on) before move
@@ -99,6 +107,7 @@
bool m_is_bridge; ///< last turn passed bridge ramp
bool m_is_station; ///< last turn passed station
int m_tiles_skipped; ///< number of skipped tunnel or station tiles
+ ErrorCode m_err;
};
/** Initializes FollowTrack_t structure */
--- a/src/yapf/yapf_costrail.hpp Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/yapf_costrail.hpp Fri Jul 13 09:18:50 2007 +0000
@@ -376,8 +376,13 @@
tf_local.Init(v, &Yapf().m_perf_ts_cost);
if (!tf_local.Follow(cur.tile, cur.td)) {
+ assert(tf_local.m_err != TrackFollower::EC_NONE);
/* Can't move to the next tile (EOL?). */
- end_segment_reason |= ESRB_DEAD_END;
+ if (tf_local.m_err == TrackFollower::EC_RAIL_TYPE) {
+ end_segment_reason |= ESRB_RAIL_TYPE;
+ } else {
+ end_segment_reason |= ESRB_DEAD_END;
+ }
break;
}