Merge branch 'master' into save_ext
# Conflicts: # src/saveload/saveload.cpp # src/saveload/saveload.h
This commit is contained in:
@@ -159,6 +159,19 @@ $(SRC_OBJS_DIR)/$(DEPEND): $(SRC_DIR)/depend/depend.cpp
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) -o $@ $<
|
||||
endif
|
||||
|
||||
# Macro for invoking a command on groups of 100 words at a time
|
||||
# (analogous to xargs(1)). The macro invokes itself recursively
|
||||
# until the list of words is depleted.
|
||||
#
|
||||
# Usage: $(call xargs,COMMAND,LIST)
|
||||
#
|
||||
# COMMAND should be a shell command to which the words will be
|
||||
# appended as arguments in groups of 100.
|
||||
define xargs
|
||||
$(1) $(wordlist 1,100,$(2))
|
||||
$(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
|
||||
endef
|
||||
|
||||
# Make sure that only 'make depend' ALWAYS triggers a recheck
|
||||
ifeq ($(filter depend, $(MAKECMDGOALS)),)
|
||||
Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE) $(DEP)
|
||||
@@ -170,14 +183,7 @@ endif
|
||||
$(Q)touch Makefile.dep.tmp
|
||||
|
||||
# Calculate the deps via makedepend
|
||||
$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -- $(CFLAGS_MAKEDEP) -- $(SRCS:%=$(SRC_DIR)/%) 2>/dev/null
|
||||
|
||||
# Convert x:/... paths to /x/... for mingw
|
||||
ifeq ($(OS), MINGW)
|
||||
@cat Makefile.dep.tmp | sed 's@/\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw
|
||||
@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
|
||||
@rm -f Makefile.dep.tmp.mingw
|
||||
endif
|
||||
$(call xargs,$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -a -- $(CFLAGS_MAKEDEP) -- 2>/dev/null,$(SRCS:%=$(SRC_DIR)/%))
|
||||
|
||||
# Remove all comments and includes that don't start with $(SRC_DIR)
|
||||
# Remove $(SRC_DIR) from object-file-name
|
||||
|
@@ -1,7 +1,7 @@
|
||||
steps:
|
||||
- bash: |
|
||||
set -ex
|
||||
curl -L https://github.com/OpenTTD/OpenTTD-CF/releases/download/latest/windows-dependencies.zip > windows-dependencies.zip
|
||||
curl -L https://github.com/OpenTTD/CompileFarm/releases/download/latest/windows-dependencies.zip > windows-dependencies.zip
|
||||
unzip windows-dependencies.zip
|
||||
rm -f windows-dependencies.zip
|
||||
displayName: 'Download dependencies'
|
||||
|
@@ -376,6 +376,7 @@ detect_params() {
|
||||
|
||||
--with-fluidsynth) with_fluidsynth="2";;
|
||||
--without-fluidsynth) with_fluidsynth="0";;
|
||||
--with-fluidsynth=*) with_fluidsynth="$optarg";;
|
||||
|
||||
--with-freetype) with_freetype="2";;
|
||||
--without-freetype) with_freetype="0";;
|
||||
@@ -1524,7 +1525,7 @@ make_cflags_and_ldflags() {
|
||||
CXXFLAGS_ENV="$CXXFLAGS"
|
||||
CXXFLAGS=""
|
||||
# Libs to compile. In fact this is just LDFLAGS
|
||||
LIBS="-lstdc++"
|
||||
LIBS=""
|
||||
# LDFLAGS used for HOST
|
||||
LDFLAGS_ENV="$LDFLAGS"
|
||||
LDFLAGS=""
|
||||
@@ -1975,7 +1976,7 @@ make_cflags_and_ldflags() {
|
||||
cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
|
||||
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
|
||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g;s@[ ]*-[^D][^ ]*@@g'`"
|
||||
else
|
||||
makedepend=""
|
||||
fi
|
||||
|
@@ -31,7 +31,6 @@
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Running %27generate.vbs%27 ...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cscript "$(ProjectDir)generate.vbs"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)openttd_vs80.vcproj;$(SolutionDir)openttd_vs90.vcproj;$(SolutionDir)openttd_vs100.vcxproj;$(SolutionDir)openttd_vs100.vcxproj.filters;$(SolutionDir)langs_vs80.vcproj;$(SolutionDir)langs_vs90.vcproj;$(SolutionDir)langs_vs100.vcxproj;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
@@ -31,7 +31,6 @@
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Running %27generate.vbs%27 ...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cscript "$(ProjectDir)generate.vbs"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)openttd_vs80.vcproj;$(SolutionDir)openttd_vs90.vcproj;$(SolutionDir)openttd_vs100.vcxproj;$(SolutionDir)openttd_vs100.vcxproj.filters;$(SolutionDir)langs_vs80.vcproj;$(SolutionDir)langs_vs90.vcproj;$(SolutionDir)langs_vs100.vcxproj;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
@@ -4,10 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
VisualStudioVersion = 14.0.23107.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd_vs140.vcxproj", "{668328A0-B40E-4CDB-BD72-D0064424414A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0817F629-589E-4A3B-B81A-8647BC571E35} = {0817F629-589E-4A3B-B81A-8647BC571E35}
|
||||
{E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen_vs140.vcxproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
|
||||
EndProject
|
||||
@@ -18,9 +14,6 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate", "generate_vs140.vcxproj", "{2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settings", "settings_vs140.vcxproj", "{0817F629-589E-4A3B-B81A-8647BC571E35}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settingsgen", "settingsgen_vs140.vcxproj", "{E9548DE9-F089-49B7-93A6-30BE2CC311C7}"
|
||||
EndProject
|
||||
|
@@ -1351,6 +1351,14 @@
|
||||
<Project>{0f066b23-18df-4284-8265-f4a5e7e3b966}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settingsgen_vs140.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settings_vs140.vcxproj">
|
||||
<Project>{0817f629-589e-4a3b-b81a-8647bc571e35}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="strgen_vs140.vcxproj">
|
||||
<Project>{a133a442-bd0a-4ade-b117-ad7545e4bdd1}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
|
@@ -349,6 +349,14 @@
|
||||
<Project>{0f066b23-18df-4284-8265-f4a5e7e3b966}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settingsgen_vs140.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settings_vs140.vcxproj">
|
||||
<Project>{0817f629-589e-4a3b-b81a-8647bc571e35}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="strgen_vs140.vcxproj">
|
||||
<Project>{a133a442-bd0a-4ade-b117-ad7545e4bdd1}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
|
@@ -4,10 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
VisualStudioVersion = 14.0.23107.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd_vs141.vcxproj", "{668328A0-B40E-4CDB-BD72-D0064424414A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0817F629-589E-4A3B-B81A-8647BC571E35} = {0817F629-589E-4A3B-B81A-8647BC571E35}
|
||||
{E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen_vs141.vcxproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
|
||||
EndProject
|
||||
@@ -18,9 +14,6 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate", "generate_vs141.vcxproj", "{2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settings", "settings_vs141.vcxproj", "{0817F629-589E-4A3B-B81A-8647BC571E35}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settingsgen", "settingsgen_vs141.vcxproj", "{E9548DE9-F089-49B7-93A6-30BE2CC311C7}"
|
||||
EndProject
|
||||
|
@@ -1349,6 +1349,14 @@
|
||||
<Project>{0f066b23-18df-4284-8265-f4a5e7e3b966}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settingsgen_vs141.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settings_vs141.vcxproj">
|
||||
<Project>{0817f629-589e-4a3b-b81a-8647bc571e35}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="strgen_vs141.vcxproj">
|
||||
<Project>{a133a442-bd0a-4ade-b117-ad7545e4bdd1}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
|
@@ -349,6 +349,14 @@
|
||||
<Project>{0f066b23-18df-4284-8265-f4a5e7e3b966}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settingsgen_vs141.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="settings_vs141.vcxproj">
|
||||
<Project>{0817f629-589e-4a3b-b81a-8647bc571e35}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="strgen_vs141.vcxproj">
|
||||
<Project>{a133a442-bd0a-4ade-b117-ad7545e4bdd1}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
|
@@ -48,6 +48,12 @@
|
||||
<None Include="..\src\table\settings.h.postamble" />
|
||||
<None Include="..\src\table\settings.h.preamble" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="settingsgen_vs140.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@@ -42,6 +42,12 @@
|
||||
<None Include="..\src\table\settings.h.postamble" />
|
||||
<None Include="..\src\table\settings.h.preamble" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="settingsgen_vs140.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@@ -48,6 +48,12 @@
|
||||
<None Include="..\src\table\settings.h.postamble" />
|
||||
<None Include="..\src\table\settings.h.preamble" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="settingsgen_vs141.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@@ -42,6 +42,12 @@
|
||||
<None Include="..\src\table\settings.h.postamble" />
|
||||
<None Include="..\src\table\settings.h.preamble" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="settingsgen_vs141.vcxproj">
|
||||
<Project>{e9548de9-f089-49b7-93a6-30be2cc311c7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@@ -37,6 +37,7 @@
|
||||
#include "core/backup_type.hpp"
|
||||
#include "zoom_func.h"
|
||||
#include "disaster_vehicle.h"
|
||||
#include "newgrf_airporttiles.h"
|
||||
#include "framerate_type.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
@@ -1370,8 +1371,14 @@ static void AircraftEntersTerminal(Aircraft *v)
|
||||
*/
|
||||
static void AircraftLandAirplane(Aircraft *v)
|
||||
{
|
||||
Station *st = Station::Get(v->targetairport);
|
||||
|
||||
TileIndex vt = TileVirtXY(v->x_pos, v->y_pos);
|
||||
|
||||
v->UpdateDeltaXY();
|
||||
|
||||
AirportTileAnimationTrigger(st, vt, AAT_STATION_AIRPLANE_LAND);
|
||||
|
||||
if (!PlayVehicleSound(v, VSE_TOUCHDOWN)) {
|
||||
SndPlayVehicleFx(SND_17_SKID_PLANE, v);
|
||||
}
|
||||
|
@@ -370,6 +370,23 @@ static inline int RoundDivSU(int a, uint b)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes (a / b) rounded away from zero.
|
||||
* @param a Numerator
|
||||
* @param b Denominator
|
||||
* @return Quotient, rounded away from zero
|
||||
*/
|
||||
static inline int DivAwayFromZero(int a, uint b)
|
||||
{
|
||||
const int _b = static_cast<int>(b);
|
||||
if (a > 0) {
|
||||
return (a + _b - 1) / _b;
|
||||
} else {
|
||||
/* Note: Behaviour of negative numerator division is truncation toward zero. */
|
||||
return (a - _b + 1) / _b;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 IntSqrt(uint32 num);
|
||||
|
||||
#endif /* MATH_FUNC_HPP */
|
||||
|
@@ -1008,7 +1008,7 @@ int main(int argc, char *argv[])
|
||||
fclose(src);
|
||||
|
||||
/* Then append it to the real file. */
|
||||
src = fopen(backup, "rb");
|
||||
src = fopen(backup, "r");
|
||||
while (fgets(content, size, src) != NULL) {
|
||||
fputs(content, dst);
|
||||
if (!strncmp(content, delimiter, strlen(delimiter))) found_delimiter = true;
|
||||
|
@@ -546,7 +546,7 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key)
|
||||
return glyph->sprite;
|
||||
}
|
||||
}
|
||||
FT_Load_Glyph(this->face, key, FT_LOAD_DEFAULT);
|
||||
FT_Load_Glyph(this->face, key, aa ? FT_LOAD_TARGET_NORMAL : FT_LOAD_TARGET_MONO);
|
||||
FT_Render_Glyph(this->face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO);
|
||||
|
||||
/* Despite requesting a normal glyph, FreeType may have returned a bitmap */
|
||||
|
@@ -280,6 +280,8 @@ class BuildIndustryWindow : public Window {
|
||||
|
||||
/** The offset for the text in the matrix. */
|
||||
static const int MATRIX_TEXT_OFFSET = 17;
|
||||
/** The largest allowed minimum-width of the window, given in line heights */
|
||||
static const int MAX_MINWIDTH_LINEHEIGHTS = 20;
|
||||
|
||||
void SetupArrays()
|
||||
{
|
||||
@@ -337,6 +339,53 @@ class BuildIndustryWindow : public Window {
|
||||
this->SetWidgetDisabledState(WID_DPI_DISPLAY_WIDGET, this->selected_type == INVALID_INDUSTRYTYPE && this->enabled[this->selected_index]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a string of cargo names with suffixes attached.
|
||||
* This is distinct from the CARGO_LIST string formatting code in two ways:
|
||||
* - This cargo list uses the order defined by the industry, rather than alphabetic.
|
||||
* - NewGRF-supplied suffix strings can be attached to each cargo.
|
||||
*
|
||||
* @param cargolist Array of CargoID to display
|
||||
* @param cargo_suffix Array of suffixes to attach to each cargo
|
||||
* @param cargolistlen Length of arrays
|
||||
* @param prefixstr String to use for the first item
|
||||
* @return A formatted raw string
|
||||
*/
|
||||
std::string MakeCargoListString(const CargoID *cargolist, const CargoSuffix *cargo_suffix, int cargolistlen, StringID prefixstr) const
|
||||
{
|
||||
std::string cargostring;
|
||||
char buf[1024];
|
||||
int numcargo = 0;
|
||||
int firstcargo = -1;
|
||||
|
||||
for (byte j = 0; j < cargolistlen; j++) {
|
||||
if (cargolist[j] == CT_INVALID) continue;
|
||||
numcargo++;
|
||||
if (firstcargo < 0) {
|
||||
firstcargo = j;
|
||||
continue;
|
||||
}
|
||||
SetDParam(0, CargoSpec::Get(cargolist[j])->name);
|
||||
SetDParamStr(1, cargo_suffix[j].text);
|
||||
GetString(buf, STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION, lastof(buf));
|
||||
cargostring += buf;
|
||||
}
|
||||
|
||||
if (numcargo > 0) {
|
||||
SetDParam(0, CargoSpec::Get(cargolist[firstcargo])->name);
|
||||
SetDParamStr(1, cargo_suffix[firstcargo].text);
|
||||
GetString(buf, prefixstr, lastof(buf));
|
||||
cargostring = std::string(buf) + cargostring;
|
||||
} else {
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
GetString(buf, prefixstr, lastof(buf));
|
||||
cargostring = std::string(buf);
|
||||
}
|
||||
|
||||
return cargostring;
|
||||
}
|
||||
|
||||
public:
|
||||
BuildIndustryWindow() : Window(&_build_industry_desc)
|
||||
{
|
||||
@@ -378,42 +427,39 @@ public:
|
||||
case WID_DPI_INFOPANEL: {
|
||||
/* Extra line for cost outside of editor + extra lines for 'extra' information for NewGRFs. */
|
||||
int height = 2 + (_game_mode == GM_EDITOR ? 0 : 1) + (_loaded_newgrf_features.has_newindustries ? 4 : 0);
|
||||
uint extra_lines_req = 0;
|
||||
uint extra_lines_prd = 0;
|
||||
uint max_minwidth = FONT_HEIGHT_NORMAL * MAX_MINWIDTH_LINEHEIGHTS;
|
||||
Dimension d = {0, 0};
|
||||
for (byte i = 0; i < this->count; i++) {
|
||||
if (this->index[i] == INVALID_INDUSTRYTYPE) continue;
|
||||
|
||||
const IndustrySpec *indsp = GetIndustrySpec(this->index[i]);
|
||||
|
||||
CargoSuffix cargo_suffix[lengthof(indsp->accepts_cargo)];
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, NULL, this->index[i], indsp, indsp->accepts_cargo, cargo_suffix);
|
||||
StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO;
|
||||
byte p = 0;
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
for (byte j = 0; j < lengthof(indsp->accepts_cargo); j++) {
|
||||
if (indsp->accepts_cargo[j] == CT_INVALID) continue;
|
||||
if (p > 0) str++;
|
||||
SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name);
|
||||
SetDParamStr(p++, cargo_suffix[j].text);
|
||||
}
|
||||
d = maxdim(d, GetStringBoundingBox(str));
|
||||
|
||||
/* Draw the produced cargoes, if any. Otherwise, will print "Nothing". */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, NULL, this->index[i], indsp, indsp->produced_cargo, cargo_suffix);
|
||||
str = STR_INDUSTRY_VIEW_PRODUCES_CARGO;
|
||||
p = 0;
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
for (byte j = 0; j < lengthof(indsp->produced_cargo); j++) {
|
||||
if (indsp->produced_cargo[j] == CT_INVALID) continue;
|
||||
if (p > 0) str++;
|
||||
SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name);
|
||||
SetDParamStr(p++, cargo_suffix[j].text);
|
||||
/* Measure the accepted cargoes, if any. */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, NULL, this->index[i], indsp, indsp->accepts_cargo, cargo_suffix);
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
Dimension strdim = GetStringBoundingBox(cargostring.c_str());
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_req = max(extra_lines_req, strdim.width / max_minwidth + 1);
|
||||
strdim.width = max_minwidth;
|
||||
}
|
||||
d = maxdim(d, GetStringBoundingBox(str));
|
||||
d = maxdim(d, strdim);
|
||||
|
||||
/* Measure the produced cargoes, if any. */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, NULL, this->index[i], indsp, indsp->produced_cargo, cargo_suffix);
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
strdim = GetStringBoundingBox(cargostring.c_str());
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_prd = max(extra_lines_prd, strdim.width / max_minwidth + 1);
|
||||
strdim.width = max_minwidth;
|
||||
}
|
||||
d = maxdim(d, strdim);
|
||||
}
|
||||
|
||||
/* Set it to something more sane :) */
|
||||
height += extra_lines_prd + extra_lines_req;
|
||||
size->height = height * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
size->width = d.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
|
||||
break;
|
||||
@@ -502,36 +548,17 @@ public:
|
||||
y += FONT_HEIGHT_NORMAL;
|
||||
}
|
||||
|
||||
/* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */
|
||||
CargoSuffix cargo_suffix[lengthof(indsp->accepts_cargo)];
|
||||
|
||||
/* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, NULL, this->selected_type, indsp, indsp->accepts_cargo, cargo_suffix);
|
||||
StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO;
|
||||
byte p = 0;
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
for (byte j = 0; j < lengthof(indsp->accepts_cargo); j++) {
|
||||
if (indsp->accepts_cargo[j] == CT_INVALID) continue;
|
||||
if (p > 0) str++;
|
||||
SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name);
|
||||
SetDParamStr(p++, cargo_suffix[j].text);
|
||||
}
|
||||
DrawString(left, right, y, str);
|
||||
y += FONT_HEIGHT_NORMAL;
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
y = DrawStringMultiLine(left, right, y, bottom, cargostring.c_str());
|
||||
|
||||
/* Draw the produced cargoes, if any. Otherwise, will print "Nothing". */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, NULL, this->selected_type, indsp, indsp->produced_cargo, cargo_suffix);
|
||||
str = STR_INDUSTRY_VIEW_PRODUCES_CARGO;
|
||||
p = 0;
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
for (byte j = 0; j < lengthof(indsp->produced_cargo); j++) {
|
||||
if (indsp->produced_cargo[j] == CT_INVALID) continue;
|
||||
if (p > 0) str++;
|
||||
SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name);
|
||||
SetDParamStr(p++, cargo_suffix[j].text);
|
||||
}
|
||||
DrawString(left, right, y, str);
|
||||
y += FONT_HEIGHT_NORMAL;
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
y = DrawStringMultiLine(left, right, y, bottom, cargostring.c_str());
|
||||
|
||||
/* Get the additional purchase info text, if it has not already been queried. */
|
||||
if (HasBit(indsp->callback_mask, CBM_IND_FUND_MORE_TEXT)) {
|
||||
@@ -540,7 +567,7 @@ public:
|
||||
if (callback_res > 0x400) {
|
||||
ErrorUnknownCallbackResult(indsp->grf_prop.grffile->grfid, CBID_INDUSTRY_FUND_MORE_TEXT, callback_res);
|
||||
} else {
|
||||
str = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res); // No. here's the new string
|
||||
StringID str = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res); // No. here's the new string
|
||||
if (str != STR_UNDEFINED) {
|
||||
StartTextRefStackUsage(indsp->grf_prop.grffile, 6);
|
||||
DrawStringMultiLine(left, right, y, bottom, str, TC_YELLOW);
|
||||
|
@@ -3286,18 +3286,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Skuif sk
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksie vlak: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Die nywerheid het aangekondig dat dit binnekort gaan sluit!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Verander produksie (veelvoude van 8, tot en met 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Verander produksie vlakke (persentasie, tot 800%)
|
||||
|
||||
|
@@ -2813,18 +2813,8 @@ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_
|
||||
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}وسط الشاشة على المصنع
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}نسبة الانتاج: {YELLOW}{COMMA}%
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}يحتاج: {YELLOW}{STRING} {STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}، {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}, {STRING}{STRING} , {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}, {STRING} {STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}تغيير الانتاج مضاعف من 8 الى 2040
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}غير مستوى الانتاج{}نسبة مئوية حتى 800%.
|
||||
|
||||
|
@@ -3174,18 +3174,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Ikuspegi
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ekoizpen kopurua: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industriak berehalako itxiera iragarri du!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ekoizpena aldatu (8 eta 2040 arteko multiploa)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ekoizpen ehunekoa aldatu (ehunekoa, %800 arte)
|
||||
|
||||
|
@@ -3635,21 +3635,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Пака
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Прадукцыйнасьць: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Прадпрыемства хутка закрываецца!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Патрабуецца:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} чакае{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Зьмяніць прадукцыйнасьць (кратна 8, да 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Зьмяніць прадукцыйнасьць (у адсотках, да 800%)
|
||||
|
||||
|
@@ -3345,21 +3345,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nível de produção: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A indústria anunciou fechamento iminente!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} aguardando{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Modificar produção (múltiplo de 8, até 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mudar nível de produção (porcentagem, até 800%)
|
||||
|
||||
|
@@ -3215,19 +3215,9 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Фоку
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ниво на производство: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Индустрията обяви незабавна ликвидация!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} чакащ{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Промени производството
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Промени нивото на производство(процент, до 800%)
|
||||
|
||||
|
@@ -3347,21 +3347,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra l
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indústria ha anunciat la seva clausura imminent!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperant{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Canvia la producció (múltiple de 8, fins a 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Canvia el nivell de producció (en percentatge, fins a 800%)
|
||||
|
||||
|
@@ -3451,21 +3451,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrira
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Razina proizvodnje: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrija je najavila uskoro zatvaranje!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} čeka{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Promijeni proizvodnju (višekratnik broja 8, do 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Promijeni razinu proizvodnje (postotak, do najviše 800%)
|
||||
|
||||
|
@@ -3405,21 +3405,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vystřed
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkce: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Průmysl oznámila blížící se uzavření!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ček{P á ají á}{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Změnit produkci (násobky 8, až do 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Změna velikosti produkce (procentuelně, do 800%)
|
||||
|
||||
|
@@ -3295,21 +3295,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrer
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktions niveauet: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrien har rapporteret øjeblikkelig nedlukning!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kræver:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Skift produktion (multipla af 8, op til 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ændre produktions niveauet (Op til 800%)
|
||||
|
||||
|
@@ -3347,21 +3347,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centreer
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Productieniveau: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}De industrie heeft een dreigende sluiting aangekondigd!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vereist:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wachtend{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Verander productie (veelvoud van 8, maximaal 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Verander productieniveau (percentage, maximaal 800%)
|
||||
|
||||
|
@@ -3355,21 +3355,14 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centre t
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}, {STRING}{RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}, {STRING}{RAW_STRING}, {STRING}{RAW_STRING}
|
||||
############ range for requires ends
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produces: {YELLOW}{STRING}{RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{RAW_STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{RAW_STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{RAW_STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produces: {YELLOW}{STRING}{RAW_STRING}, {STRING}{RAW_STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production (multiple of 8, up to 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Change production level (percentage, up to 800%)
|
||||
|
||||
|
@@ -3252,18 +3252,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centre t
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production (multiple of 8, up to 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Change production level (percentage, up to 800%)
|
||||
|
||||
|
@@ -3302,21 +3302,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Center t
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production (multiple of 8, up to 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Change production level (percentage, up to 800%)
|
||||
|
||||
|
@@ -2726,18 +2726,8 @@ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_
|
||||
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la industrio. Stir+Klak por malfermi novan vidujon ĉe la industrioloko.
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkta nivelo: {YELLOW}{COMMA}%
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING}, {STRING.n}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING}, {STRING.n}{STRING}, {STRING.n}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produktas: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produktas: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ŝanĝu produktadon (multoble de 8, ĝis 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ŝanĝu produktan nivelon (procento, limigo je 800%)
|
||||
|
||||
|
@@ -3343,18 +3343,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vaate ke
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tootlikkuse tase: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Tööstus teatab kohesest sulgemisest!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vajab: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vajab: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vajab: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toodab: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Toodab: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Tootlikuse muutmine (kaheksaga jaguv, kuni 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Muuda tootlikkuse taset (protsent, kuni 800%)
|
||||
|
||||
|
@@ -2916,18 +2916,8 @@ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_
|
||||
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á ídnaðin. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á ídnaðin
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðslu støði: {YELLOW}{COMMA}%
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Broyt framleiðslu (fald av 8, upp til 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Broyt framleiðslu støði (prosent, upp til 800%)
|
||||
|
||||
|
@@ -189,6 +189,7 @@ STR_COLOUR_ORANGE :Oranssi
|
||||
STR_COLOUR_BROWN :Ruskea
|
||||
STR_COLOUR_GREY :Harmaa
|
||||
STR_COLOUR_WHITE :Valkoinen
|
||||
STR_COLOUR_RANDOM :Satunnainen
|
||||
|
||||
# Units used in OpenTTD
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
|
||||
@@ -927,6 +928,7 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oma...
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Uusi Venäjän rupla (RUB)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Meksikon peso (MXN)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kulkuneuvot
|
||||
@@ -3326,21 +3328,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Keskitä
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tuotantotaso: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Teollisuuslaitos ilmoittaa pikaisesta sulkeutumisestaan!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Tarvitsee:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} odottamassa{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Tuottaa: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Tuottaa: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Muokkaa tuotantoa (8:n kerroin, 2040 asti)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Muuta tuotantotasoa (prosentteina, 800{NBSP}% asti)
|
||||
|
||||
|
@@ -931,6 +931,7 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personnalisée.
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Lari Géorgien (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranien (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Nouveau rouble russe (RUB)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Peso méxicain (MXN)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Véhicules routiers
|
||||
@@ -2381,9 +2382,9 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Signal c
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Signal de chemin (électrique){}Un signal de chemin autorise plus d'un train à entrer dans un bloc de signaux en même temps, si le train peut réserver un chemin jusqu'à un point d'attente sûr. Les signaux de chemin peuvent être passés par l'arrière.
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Signal de chemin à sens unique (électrique){}Un signal de chemin autorise plus d'un train à entrer dans un bloc de signaux en même temps, si le train peut réserver un chemin jusqu'à un point d'attente sûr. Les signaux de chemin à sens unique ne peuvent pas être passés par l'arrière.
|
||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversion de signal.{}Si sélectionné, cliquer sur un signal existant le convertit vers le type et la variante choisis.{}Ctrl-clic pour alterner entre les variantes existantes.{}Shift pour afficher seulement le coût estimé.
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densité de signaux
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Réduire l'intervalle entre les signaux (augmenter la densité)
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augmenter l'intervalle entre les signaux (réduire la densité)
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Intervalle entre les signaux
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Réduire l'intervalle entre les signaux
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augmenter l'intervalle entre les signaux
|
||||
|
||||
# Bridge selection window
|
||||
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Choisir un pont ferroviaire
|
||||
@@ -3355,21 +3356,14 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrer
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Niveau de production{NBSP}: {YELLOW}{COMMA}{NBSP}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}L'industrie a annoncé sa fermeture imminente{NBSP}!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produit{NBSP}: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Nécessite{NBSP}:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}{NBSP}: {CARGO_SHORT} en attente{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produit{NBSP}: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produit{NBSP}: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Changer la production (multiple de 8, max. 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Changer le niveau de production (pourcentage, max. 800{NBSP}%)
|
||||
|
||||
|
@@ -3530,21 +3530,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Meadhana
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ìre an dèanadais: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Tha an gnìomhachas gu bhith a dhùnadh a dh'aithghearr!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Feum air:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a' feitheamh{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Atharraich an saothrachaidh (iomadach aig 8, suas gu 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Atharraich ìre an saothrachaidh (ceudad, suas gu 800%)
|
||||
|
||||
|
@@ -3290,21 +3290,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivel de produción: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A industria anunció un peche inminente
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Require:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} agardando{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar produción (múltiplo de 8, ata 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Cambiar o nivel de produción (porcentaxe, ata 800%)
|
||||
|
||||
|
@@ -3290,21 +3290,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Hauptans
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktionsrate: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Diese Industrie wird in Kürze schließen!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}benötigt:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wartend{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Produktion ändern (Vielfache von 8, maximal 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Produktionsrate ändern (prozentual, bis zu 800%)
|
||||
|
||||
|
@@ -3433,21 +3433,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Κεντ
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Επίπεδο παραγωγής: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Η βιομηχανία έχει ανακοινώσει άμεσο κλείσιμο!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} σε αναμονή{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Αλλαγή παραγωγής (πολλαπλάσιο του 8, μέχρι το 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Αλλαγή του επιπέδου παραγωγής (ποσοστιαία, μέχρι το 800%)
|
||||
|
||||
|
@@ -3343,21 +3343,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}מקד
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}רמת הפקה: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}התעשייה הכריזה על סגירה מתקרבת!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} : דורש
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{YELLOW}{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{YELLOW}{5:STRING}{4:STRING},{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}דורש:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ממתין{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} :מייצר
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{YELLOW}{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :מייצר
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}שנה תפוקה (כפולות של 8, עד 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}שינוי ברמת ההפקה (עד 800% אחוז)
|
||||
|
||||
|
@@ -941,9 +941,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
|
||||
|
||||
# Extra view window
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}{COMMA}. látkép
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Látkép aktualizálása
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Látkép átállítása
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}A látképre a fő nézet pozícióját másolja
|
||||
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Látkép visszatöltése
|
||||
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Fő nézet ideállítása
|
||||
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A látkép pozícióját a fő nézetre másolja
|
||||
|
||||
# Game options window
|
||||
@@ -2427,9 +2427,9 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombiná
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Egyirányú irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az egyirányú jelzők mellett nem lehet hátulról elhaladni
|
||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Jelző átalakítás{}Amikor ki van jelölve, egy meglévő jelzőre való kattintással átkonvertálja a kiválasztott jelzőtípusra és -variációra, CTRL+kattintás a variációt fogja változtatni. Shift+kattintással megmutatja a becsült átalakítási költséget
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Automata jelzőtelepítés sűrűsége
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés-sűrűség csökkentése
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Automata jelzőltelepítés-sűrűség növelése
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolsága
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolságának csökkentése
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolságának növelése
|
||||
|
||||
# Bridge selection window
|
||||
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Válassz egy vasúti hidat
|
||||
@@ -3353,21 +3353,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}A fő n
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Termelési szint: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A gyár bejelentette a közelgő bezárását!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Elfogad:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} várakozik{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Termelés megváltoztatása (8 többszörösei 2040-ig)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Termelési szint megváltoztatása (százalékosan, 800%-ig)
|
||||
|
||||
|
@@ -3076,18 +3076,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Miðja a
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðsla: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Iðnaðurinn hefur tilkynnt yfirvofandi lokun.
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Framleiðir: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framleiðir: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Breyta framleiðslu (margfeldi af 8, allt að 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Breyta framleiðslumagni (prósentu hámark er 800%)
|
||||
|
||||
|
@@ -3319,20 +3319,10 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Arahkan
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tingkat produksi: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industri akan segera ditutup!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Membutuhkan: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Membutuhkan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Membutuhkan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Membutuhkan:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} menunggu{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Menghasilkan: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Menghasilkan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Perubahan produksi (kelipatan 8, hingga 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ubah tingkat produksi (dalam persen, hingga 800%)
|
||||
|
||||
|
@@ -3285,18 +3285,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Láraigh
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Leibhéal táirgeachta: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'fhógair an tionscal go ndúnfaidh sé gan mhoill!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Táirgtear: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Táirgtear: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Athraigh táirgeacht (iolra de 8, suas go 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Athraigh an ráta táirgeachta (céatadán, suas go 800%)
|
||||
|
||||
|
@@ -3381,21 +3381,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra l
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Livello di produzione: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}L'industria ha annunciato che a breve chiuderà!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Richiede:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} in attesa{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambia produzione (multiplo di 8, fino a 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Cambia livello di produzione (percentuale, fino a 800%)
|
||||
|
||||
|
@@ -3286,19 +3286,9 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}メイ
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生産量: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}この産業拠点は間もなく閉鎖されます!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}と{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}、{STRING}{STRING}、{STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES : {BLACK}必要物資:
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING}、{STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}生産量を変更 (8の倍数、最大2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}生産量を変更 (%表記、最大800%)
|
||||
|
||||
|
@@ -3352,21 +3352,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}이 산
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}생산 수준: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}산업시설이 곧 폐쇄됩니다!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}필요함: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}필요함: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}필요함: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}받는 화물:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 대기중{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}생산량 변경 (8의 배수, 최대 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}생산 등급 변경 (퍼센트, 800%까지)
|
||||
|
||||
|
@@ -3503,21 +3503,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Movere c
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Quantitas productionis: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Haec industria mox claudetur!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Postulat:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING.acc}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} manet{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Mutare productionem (per octo multiplicatur, ad 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mutare productionem (centesima, ad 800%)
|
||||
|
||||
|
@@ -3229,18 +3229,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrēt
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ražošanas līmenis: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Nozare ir paziņojusi par nenovēršamu slēgšanu!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Ražo: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Ražo: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Mainīt ražošanu (dalāmais ar 8, līdz pat 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mainīt ražošanas līmeni (procentos, līdz 800%)
|
||||
|
||||
|
@@ -3504,18 +3504,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruot
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Gamybos sparta: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Pramonės įmonė paskelbė apie jos neišvengiamą uždarymą!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Reikalauja: {YELLOW}{STRING.ko}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Reikalauja: {YELLOW}{STRING.ko}{STRING}, {STRING.ko}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Reikalauja: {YELLOW}{STRING.ko}{STRING}, {STRING.ko}{STRING}, {STRING.ko}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Gamina: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Gamina: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Keisti gamybos apimtį (8 daugiklis, iki 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Pakeisti gamybos spartą (procentais, iki 800%)
|
||||
|
||||
|
@@ -3289,21 +3289,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Zentréi
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktiounslevel: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'Industrie annoncéiert dass se zougemaach gëtt
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} um waarden{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}D'Produktioun änneren (Multipel vun 8, bis op 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Änner de Produktiounslevel (Prozenter, bis zu 800%)
|
||||
|
||||
|
@@ -2984,19 +2984,9 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Pusatkan
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tahap produksi: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW} Industri mengumumkan penutupan serta merta!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Memerlukan: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Memerlukan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Memerlukan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Diperlukan:
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Mengeluarkan: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Mengeluarkan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ubah pengeluaran (gandaan 8, sehingga 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ubah tahap produksi (peratus, hingga 800%)
|
||||
|
||||
|
@@ -3293,21 +3293,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Gå til
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Næringen har annonsert snarlig nedleggelse!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon (multiplum av 8, opptil 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Endre produksjonsnivå (prosentsats, opptil 800{NBSP}%)
|
||||
|
||||
|
@@ -3204,18 +3204,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Midtstil
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Verksemda legg snarleg ned drifta!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Lagar: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Lagar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Byt produksjon (8-gongen, opptil 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Endre produksjonsnivå (prosent, opp til 800%)
|
||||
|
||||
|
@@ -3682,21 +3682,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruj
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Poziom produkcji: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Przedsiębiorstwo ogłosiło likwidację!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} oczekuje{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmiana produkcji (wielokrotność 8, do 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Zmiana poziomu produkcji (procentowo, do 800%)
|
||||
|
||||
|
@@ -3290,21 +3290,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nível de produção: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A indústria anunciou encerramento iminente!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requer:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a aguardar{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Modificar produção (múltiplo de 8, até 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mudar o nível de produção (percentagem, até 800%)
|
||||
|
||||
|
@@ -3243,18 +3243,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centreaz
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivelul producţiei: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industria a anunţat închiderea iminentă!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Schimba productia (multiplu de 8, până la 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Modifică nivelul producţiei (procent, până la 800%)
|
||||
|
||||
|
@@ -315,6 +315,7 @@ STR_COLOUR_ORANGE :Оранжев
|
||||
STR_COLOUR_BROWN :Коричневый
|
||||
STR_COLOUR_GREY :Серый
|
||||
STR_COLOUR_WHITE :Белый
|
||||
STR_COLOUR_RANDOM :Случайный
|
||||
|
||||
# Units used in OpenTTD
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}мил{P я и ь}/ч
|
||||
@@ -1074,6 +1075,7 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Своя...
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Грузинский лари (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Иранский риал (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Российский новый рубль (RUR)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканский песо (MXN)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Движение автомобилей
|
||||
@@ -1410,6 +1412,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Изме
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Обслуживание инфраструктуры: {STRING}
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Включает затраты на содержание инфраструктуры. Стоимость непропорционально увеличивается с ростом транспортной сети, оказывая, таким образом, большее влияние на крупные компании, чем на малые.
|
||||
|
||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Фирменный цвет компании: {STRING}
|
||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Выберите начальный фирменный цвет компании
|
||||
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропорты не устаревают: {STRING}
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включении все типы аэропортов доступны для строительства в любое время после их первоначального появления
|
||||
@@ -2925,6 +2929,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Инфо
|
||||
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Нет информации.
|
||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Фильтр:
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Введите название сохраняемой игры
|
||||
|
||||
@@ -3123,6 +3128,7 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Чтение з
|
||||
STR_NEWGRF_ERROR_GRM_FAILED :Запрошенные ресурсы GRF недоступны (спрайт {3:NUM})
|
||||
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} был отключён из-за {2:STRING}
|
||||
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недопустимый/неизвестный формат расположения спрайтов (спрайт {3:NUM})
|
||||
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Слишком много элементов в списке значений (спрайт {3:NUM}, свойство {4:HEX})
|
||||
|
||||
# NewGRF related 'general' warnings
|
||||
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Осторожно!
|
||||
@@ -3500,21 +3506,14 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Пока
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Производительность: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Предприятие скоро закрывается!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Требует: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Требуется:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ожидает{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Изменить производительность (кратно 8, до 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Изменить производительность (в процентах, до 800%)
|
||||
|
||||
@@ -4019,6 +4018,7 @@ STR_ORDER_CONDITIONAL_AGE :Возраст
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Требуется обслуживание
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Всегда
|
||||
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Оставшийся срок службы (лет)
|
||||
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Максимальная надёжность
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Условие перехода
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :равно
|
||||
|
@@ -3496,21 +3496,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Prebacuj
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivo proizvodnje: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Fabrika je objavila da može svakog trenutka da se zatvori!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potražuje: {YELLOW}{STRING.aku}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Potražuje: {YELLOW}{STRING.aku}{STRING}, {STRING.aku}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Potražuje: {YELLOW}{STRING.aku}{STRING}, {STRING.aku}{STRING}, {STRING.aku}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK} Zahteva:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} čekaje {STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Promena proizvodnje
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Promena nivoa proizvodnje (u procentima, do 800%)
|
||||
|
||||
|
@@ -3310,20 +3310,10 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}将屏
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生产程度: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}此工业已经宣布即刻停业倒闭!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 等待中{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}改变产量
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}修改产量 (百分比, 最高 800%)
|
||||
|
||||
|
@@ -3353,18 +3353,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vycentro
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Úroveň produkcie: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Priemysel oznámil blížiace sa uzatvorenie!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmeniť produkciu (násobky 8, až do 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Zmeniť úroveň produkcie (percentuálne, až do 800%)
|
||||
|
||||
|
@@ -3439,18 +3439,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Osredoto
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivo proizvodnje: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrija je napovedala zaprtje!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvaja: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvaja: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Spremeni proizvodnjo (večkratnik 8, do 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Spremeni nivo proizvodnje (odstotki, do 800%)
|
||||
|
||||
|
@@ -1529,7 +1529,7 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Cuando se activ
|
||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentaje del beneficio total a pagar en transferencias: {STRING}
|
||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentaje de los beneficios dados a los transportes intermedios en sistemas de transferencias, dando un mayor control sobre el beneficio de cada vehículo
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Al arrastrar, colocar señales cada: {STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Fija la distancia de separación entre señales al construir señales hasta el próximo obstáculo al arrastrar el ratón
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Fija la distancia a la que se construirán las señales hasta el próximo obstáculo (señal, cruce), si estas son arrastradas
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} casilla{P 0 "" s}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Al arrastrar, mantener distancia fija entre señales: {STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Fija el comportamiento de la construcción de señales cuando se usa Ctrl+Arrastrar. Si se deshabilita, se colocan señales cerca de túneles y puentes para evitar largos trozos de vía sin señales. Si se activa, se colocan señales cada N casillas, haciendo que el alineamiento de vías paralelas sea más sencillo
|
||||
@@ -2373,9 +2373,9 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Señal c
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Señal de ruta (eléctrica){}Una señal de ruta permite a más de un tren entrar a un bloque de señales a la vez, si el tren puede reservar una ruta hasta un lugar seguro. Pueden ser traspasadas desde atrás
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Señal de ruta de un sentido (eléctrica){}Una señal de ruta permite a más de un tren entrar a un bloque de señales a la vez, si el tren puede reservar una ruta hasta un lugar seguro. No pueden ser traspasadas desde atrás
|
||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Convertir señal{}Cuando es seleccionado, pulsar sobre una señal existente la convierte en el tipo y variante indicados. Pulsar Ctrl+Click permite cambiar de variante. Shift+Click muestra una estimación del precio de conversión
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidad de arrastre de señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Reducir arrastre de intensidad de señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Incrementar arrastre de intensidad de señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Distancia del arrastre de señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Reducir distancia del arrastre de señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Incrementar distancia del arrastre de señales
|
||||
|
||||
# Bridge selection window
|
||||
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Seleccione Puente de Ferrocarril
|
||||
@@ -2717,8 +2717,11 @@ STR_FRAMERATE_GL_ROADVEHS :{BLACK} Ticks
|
||||
STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks de barcos:
|
||||
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks de aeronaves:
|
||||
STR_FRAMERATE_DRAWING :{BLACK}Renderizado gráfico:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Salida de vídeo:
|
||||
STR_FRAMERATE_SOUND :{BLACK}Mezcla de sonido:
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GL_TRAINS :Ticks de trenes
|
||||
STR_FRAMETIME_CAPTION_DRAWING :Renderizado gráfico
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Salida de vídeo
|
||||
STR_FRAMETIME_CAPTION_SOUND :Mezcla de sonido
|
||||
@@ -3324,21 +3327,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivel de producción: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La industria ha anunciado su cierre inminente!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necesita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción (múltiplo de 8, máximo 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Cambiar nivel de producción (porcentaje, hasta un máximo de 800%)
|
||||
|
||||
|
@@ -931,6 +931,7 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizada..
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraní (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo rublo ruso (RUR)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano (MXN)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehículos de carretera
|
||||
@@ -2381,9 +2382,9 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Señal c
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Señal de ruta (eléctrica){}Una señal de ruta permite a más de un tren entrar al mismo tiempo en un tramo de vía con señales, en tanto que el tren pueda reservar una ruta hasta un lugar seguro. Puede ser pasada por detrás
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Señal de ruta de un sentido (eléctrica){}Igual que una señal de ruta pero no puede ser pasada por detrás
|
||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversión de señal{}Activar para pulsar sobre una señal existente y convertirla en el tipo y variante elegidos. Ctrl+Clic permite cambiar entre variantes de señales. Mayús+Clic muestra una estimación del precio de conversión
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Cantidad de señales instaladas al arrastrar
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Más
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Menos
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Distancia entre señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Reducir distancia entre señales
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar distancia entre señales
|
||||
|
||||
# Bridge selection window
|
||||
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selección de puente de ferrocarril
|
||||
@@ -3355,21 +3356,14 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivel de producción: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}¡La industria ha anunciado su cierre inminente!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requiere:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción (múltiplo de 8, máximo 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Cambiar nivel de producción (porcentaje, máximo 800%)
|
||||
|
||||
|
@@ -3289,21 +3289,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrera
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktionsnivå: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrin har annonserat att den snart kommer att stänga!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kräver:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} väntar{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerar: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Producerar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ändra produktion (produkt av 8, upp till 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ändra produktionsnivå (procent, upp till 800%)
|
||||
|
||||
|
@@ -2908,18 +2908,8 @@ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}தயாரிப்பு அளவு: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}தொழிற்சாலை உடனடியாக மூடப்படும் என்று அறிவிக்கப்பட்டுள்ளது!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}தயாரிப்பு: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}தயாரிக்கிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}தயாரிப்பினை மாற்றவும் (8 இன் பெருக்கங்கள், 2040 வரை)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}தயாரிப்பு அளவினை மாற்றவும் (சதவிகிதம், 800% வரை)
|
||||
|
||||
|
@@ -3217,18 +3217,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}กด
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}ระดับการผลิต: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}อุตสาหกรรมนี้ได้มีการประกาศปิดตัวลงอย่างเป็นทางการ!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}ปรับเปลี่ยนปริมาณผลผลิต (ระหว่าง 8 ถึง 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}เปลี่ยนระดับการผลิต (เปอร์เซ็นต์เพิ่มมากสุดถึง 800%)
|
||||
|
||||
|
@@ -3285,18 +3285,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}將工
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}產出等級:{YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}該工業已宣佈關閉!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING},{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING},{STRING}{STRING},{STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}產出:{YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}產出:{YELLOW}{STRING}{STRING},{STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}修改產量 (以 8 為倍數增減,最大為 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}變更產出等級 (百分比,最高可到800%)
|
||||
|
||||
|
@@ -3290,21 +3290,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Görünt
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Üretim seviyesi: %{YELLOW}{COMMA}
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Fabrika çok yakında kapanacağını duyurdu!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}İstenen: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}İstenenler: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}İstenenler: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} bekliyor{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Üretimi değiştir (8'in katı, 2040'a kadar)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Üretim seviyesini değiştir (yüzde olarak, %800'e kadar)
|
||||
|
||||
|
@@ -3416,18 +3416,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Пока
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Обсяг виробництва: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Підприємство оголосило про близьке закриття!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z}, {STRING.z}{STRING.z}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Продукція: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Продукція: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Змінити виробництво (кратне 8, до 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Змінити обсяг виробництва (до 800%)
|
||||
|
||||
|
@@ -1116,13 +1116,8 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу
|
||||
|
||||
# Industry view
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
|
||||
|
@@ -3036,18 +3036,8 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Sintrear
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksje nivo: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Yndustry kundicht drigend sluten oan!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produseart: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produseart: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Feroaring produksje nivo (percentage, up to 800%)
|
||||
|
||||
# Vehicle lists
|
||||
|
@@ -925,13 +925,8 @@ STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehili:
|
||||
|
||||
# Industry view
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P o i}
|
||||
|
@@ -1414,13 +1414,8 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
|
||||
# Industry view
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Производство ниво: {YELLOW}{COMMA}%
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Промена на производство на ниво (процент, до 800%)
|
||||
|
||||
# Vehicle lists
|
||||
|
@@ -822,13 +822,8 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
|
||||
|
||||
# Industry view
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
|
||||
|
@@ -1278,18 +1278,8 @@ STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUST
|
||||
# Industry view
|
||||
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}बनव्त: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}बनव्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} विमान
|
||||
|
@@ -2903,18 +2903,8 @@ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_
|
||||
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}مرکز تصویر را روی کارخانه قرار بده.Ctrl+Click کنید تا پنجره نمایی از کارخانه نمایش داده شود
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}این کارخانه اعلام کرده است که به زودی بسته خواهد شد!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}محصولات: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}محصولات: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} قطار
|
||||
|
@@ -2323,13 +2323,8 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
|
||||
# Industry view
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}گزشتہ ماہ کی پیداوار:
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
############ range for produces starts
|
||||
############ range for produces ends
|
||||
|
||||
|
||||
# Vehicle lists
|
||||
|
||||
|
@@ -3348,21 +3348,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Xem vị
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Mức sản lượng: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Nhà máy này đã thông báo sắp đóng cửa!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Cần cung cấp:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} đang chờ{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Sản xuất: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Sản xuất: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Thay đổi sản lượng (bội số của 8, max 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Thay đổi mức sản lượng (theo phần trăm, cao nhất 800%)
|
||||
|
||||
|
@@ -3289,21 +3289,11 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Canoli'r
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Lefel cynhyrchu: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Mae'r diwydiant wedi datgan ei fod ar fin cau!
|
||||
|
||||
############ range for requires starts
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Angen: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Angen: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Angen: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Angen:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} yn disgwyl{STRING}
|
||||
|
||||
############ range for produces starts
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Cynhyrchu: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Cynhyrchu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
|
||||
############ range for produces ends
|
||||
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Newid cynnyrch (lluosrif o 8, hyd at 2040)
|
||||
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Newid y lefel cynhyrchu (canran, hyd at 800%)
|
||||
|
||||
|
@@ -38,93 +38,7 @@ typedef unsigned long in_addr_t;
|
||||
typedef SSIZE_T ssize_t;
|
||||
typedef int socklen_t;
|
||||
# define IPPROTO_IPV6 41
|
||||
#else
|
||||
#include "../../os/windows/win32.h"
|
||||
#include "../../core/alloc_func.hpp"
|
||||
|
||||
#define AI_ADDRCONFIG 0x00000400 /* Resolution only if global address configured */
|
||||
#define IPV6_V6ONLY 27
|
||||
|
||||
static inline int OTTDgetnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, DWORD hostlen, char *serv, DWORD servlen, int flags)
|
||||
{
|
||||
static int (WINAPI *getnameinfo)(const struct sockaddr *, socklen_t, char *, DWORD, char *, DWORD, int) = NULL;
|
||||
static bool first_time = true;
|
||||
|
||||
if (first_time) {
|
||||
LoadLibraryList((Function*)&getnameinfo, "ws2_32.dll\0getnameinfo\0\0");
|
||||
first_time = false;
|
||||
}
|
||||
|
||||
if (getnameinfo != NULL) return getnameinfo(sa, salen, host, hostlen, serv, servlen, flags);
|
||||
|
||||
strncpy(host, inet_ntoa(((const struct sockaddr_in *)sa)->sin_addr), hostlen);
|
||||
return 0;
|
||||
}
|
||||
#define getnameinfo OTTDgetnameinfo
|
||||
|
||||
static inline int OTTDgetaddrinfo(const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res)
|
||||
{
|
||||
static int (WINAPI *getaddrinfo)(const char *, const char *, const struct addrinfo *, struct addrinfo **) = NULL;
|
||||
static bool first_time = true;
|
||||
|
||||
if (first_time) {
|
||||
LoadLibraryList((Function*)&getaddrinfo, "ws2_32.dll\0getaddrinfo\0\0");
|
||||
first_time = false;
|
||||
}
|
||||
|
||||
if (getaddrinfo != NULL) return getaddrinfo(nodename, servname, hints, res);
|
||||
|
||||
*res = NULL;
|
||||
|
||||
in_addr_t ip = inet_addr(nodename);
|
||||
if (ip == INADDR_NONE) {
|
||||
struct hostent *he = gethostbyname(nodename);
|
||||
if (he == NULL) return EAI_NONAME;
|
||||
ip = (*(struct in_addr *)he->h_addr).s_addr;
|
||||
}
|
||||
|
||||
struct sockaddr_in *sin = CallocT<struct sockaddr_in>(1);
|
||||
sin->sin_family = AF_INET;
|
||||
sin->sin_port = htons(strtoul(servname, NULL, 10));
|
||||
sin->sin_addr.s_addr = ip;
|
||||
|
||||
struct addrinfo *ai = CallocT<struct addrinfo>(1);
|
||||
ai->ai_family = PF_INET;
|
||||
ai->ai_addr = (struct sockaddr*)sin;
|
||||
ai->ai_addrlen = sizeof(*sin);
|
||||
ai->ai_socktype = hints->ai_socktype;
|
||||
|
||||
*res = ai;
|
||||
return 0;
|
||||
}
|
||||
#define getaddrinfo OTTDgetaddrinfo
|
||||
|
||||
static inline void OTTDfreeaddrinfo(struct addrinfo *ai)
|
||||
{
|
||||
static int (WINAPI *freeaddrinfo)(struct addrinfo *) = NULL;
|
||||
static bool first_time = true;
|
||||
|
||||
if (ai == NULL) return;
|
||||
|
||||
if (first_time) {
|
||||
LoadLibraryList((Function*)&freeaddrinfo, "ws2_32.dll\0freeaddrinfo\0\0");
|
||||
first_time = false;
|
||||
}
|
||||
|
||||
if (freeaddrinfo != NULL) {
|
||||
freeaddrinfo(ai);
|
||||
return;
|
||||
}
|
||||
|
||||
do {
|
||||
struct addrinfo *next = ai->ai_next;
|
||||
free(ai->ai_addr);
|
||||
free(ai);
|
||||
ai = next;
|
||||
} while (ai != NULL);
|
||||
}
|
||||
#define freeaddrinfo OTTDfreeaddrinfo
|
||||
#endif /* __MINGW32__ && __CYGWIN__ */
|
||||
#endif /* !(__MINGW32__ && __CYGWIN__) */
|
||||
#endif /* _WIN32 */
|
||||
|
||||
/* UNIX stuff */
|
||||
|
@@ -51,6 +51,7 @@ enum AirpAnimationTrigger {
|
||||
AAT_STATION_NEW_CARGO, ///< Triggered when new cargo arrives at the station (for all tiles at the same time).
|
||||
AAT_STATION_CARGO_TAKEN, ///< Triggered when a cargo type is completely removed from the station (for all tiles at the same time).
|
||||
AAT_STATION_250_TICKS, ///< Triggered every 250 ticks (for all tiles at the same time).
|
||||
AAT_STATION_AIRPLANE_LAND, ///< Triggered when an airplane (not a helicopter) touches down at the airport (for all tiles at the same time).
|
||||
};
|
||||
|
||||
/** Animation triggers for objects. */
|
||||
|
@@ -310,7 +310,7 @@ static void ParseResolution(Dimension *res, const char *s)
|
||||
|
||||
|
||||
/**
|
||||
* Unitializes drivers, frees allocated memory, cleans pools, ...
|
||||
* Uninitializes drivers, frees allocated memory, cleans pools, ...
|
||||
* Generally, prepares the game for shutting down
|
||||
*/
|
||||
static void ShutdownGame()
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include "core/random_func.hpp"
|
||||
#include "aircraft.h"
|
||||
#include "roadveh.h"
|
||||
#include "ship.h"
|
||||
#include "station_base.h"
|
||||
#include "waypoint_base.h"
|
||||
#include "company_base.h"
|
||||
@@ -929,7 +930,7 @@ CommandCost CmdInsertOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
dist = GetOrderDistance(prev, &new_order, v);
|
||||
}
|
||||
|
||||
if (dist >= 130) {
|
||||
if (dist >= SHIP_MAX_ORDER_DISTANCE) {
|
||||
return_cmd_error(STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION);
|
||||
}
|
||||
}
|
||||
@@ -2040,13 +2041,13 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool
|
||||
{
|
||||
if (conditional_depth > v->GetNumOrders()) {
|
||||
v->current_order.Free();
|
||||
v->dest_tile = 0;
|
||||
v->SetDestTile(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (order->GetType()) {
|
||||
case OT_GOTO_STATION:
|
||||
v->dest_tile = v->GetOrderStationLocation(order->GetDestination());
|
||||
v->SetDestTile(v->GetOrderStationLocation(order->GetDestination()));
|
||||
return true;
|
||||
|
||||
case OT_GOTO_DEPOT:
|
||||
@@ -2067,7 +2068,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool
|
||||
/* PBS reservations cannot reverse */
|
||||
if (pbs_look_ahead && reverse) return false;
|
||||
|
||||
v->dest_tile = location;
|
||||
v->SetDestTile(location);
|
||||
v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), v->current_order.GetNonStopType(), (OrderDepotActionFlags)(v->current_order.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT), v->current_order.GetRefitCargo());
|
||||
|
||||
/* If there is no depot in front, reverse automatically (trains only) */
|
||||
@@ -2091,14 +2092,14 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool
|
||||
v->IncrementRealOrderIndex();
|
||||
} else {
|
||||
if (v->type != VEH_AIRCRAFT) {
|
||||
v->dest_tile = Depot::Get(order->GetDestination())->xy;
|
||||
v->SetDestTile(Depot::Get(order->GetDestination())->xy);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case OT_GOTO_WAYPOINT:
|
||||
v->dest_tile = Waypoint::Get(order->GetDestination())->xy;
|
||||
v->SetDestTile(Waypoint::Get(order->GetDestination())->xy);
|
||||
return true;
|
||||
|
||||
case OT_CONDITIONAL: {
|
||||
@@ -2126,7 +2127,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool
|
||||
}
|
||||
|
||||
default:
|
||||
v->dest_tile = 0;
|
||||
v->SetDestTile(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2142,7 +2143,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool
|
||||
|
||||
if (order == NULL) {
|
||||
v->current_order.Free();
|
||||
v->dest_tile = 0;
|
||||
v->SetDestTile(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2218,7 +2219,7 @@ bool ProcessOrders(Vehicle *v)
|
||||
}
|
||||
|
||||
v->current_order.Free();
|
||||
v->dest_tile = 0;
|
||||
v->SetDestTile(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <windows.h>
|
||||
#include <fcntl.h>
|
||||
#include <regstr.h>
|
||||
#define NO_SHOBJIDL_SORTDIRECTION // Avoid multiple definition of SORT_ASCENDING
|
||||
#include <shlobj.h> /* SHGetFolderPath */
|
||||
#include <shellapi.h>
|
||||
#include "win32.h"
|
||||
@@ -30,10 +31,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include "../../language.h"
|
||||
|
||||
/* Due to TCHAR, strncat and strncpy have to remain (for a while). */
|
||||
#include "../../safeguards.h"
|
||||
#undef strncat
|
||||
#undef strncpy
|
||||
|
||||
static bool _has_console;
|
||||
static bool _cursor_disable = true;
|
||||
|
@@ -40,6 +40,9 @@ static const int YAPF_TILE_CORNER_LENGTH = 71;
|
||||
*/
|
||||
static const int YAPF_INFINITE_PENALTY = 1000 * YAPF_TILE_LENGTH;
|
||||
|
||||
/** Maximum length of ship path cache */
|
||||
static const int YAPF_SHIP_PATH_CACHE_LENGTH = 32;
|
||||
|
||||
/**
|
||||
* Helper container to find a depot
|
||||
*/
|
||||
|
@@ -15,6 +15,7 @@
|
||||
#include "../../direction_type.h"
|
||||
#include "../../track_type.h"
|
||||
#include "../../vehicle_type.h"
|
||||
#include "../../ship.h"
|
||||
#include "../pathfinder_type.h"
|
||||
|
||||
/**
|
||||
@@ -26,7 +27,7 @@
|
||||
* @param path_found [out] Whether a path has been found (true) or has been guessed (false)
|
||||
* @return the best trackdir for next turn or INVALID_TRACK if the path could not be found
|
||||
*/
|
||||
Track YapfShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found);
|
||||
Track YapfShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found, ShipPathCache &path_cache);
|
||||
|
||||
/**
|
||||
* Returns true if it is better to reverse the ship before leaving depot using YAPF.
|
||||
|
@@ -54,7 +54,7 @@ public:
|
||||
return 'w';
|
||||
}
|
||||
|
||||
static Trackdir ChooseShipTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found)
|
||||
static Trackdir ChooseShipTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found, ShipPathCache &path_cache)
|
||||
{
|
||||
/* handle special case - when next tile is destination tile */
|
||||
if (tile == v->dest_tile) {
|
||||
@@ -90,9 +90,17 @@ public:
|
||||
|
||||
Node *pNode = pf.GetBestNode();
|
||||
if (pNode != NULL) {
|
||||
uint steps = 0;
|
||||
for (Node *n = pNode; n->m_parent != NULL; n = n->m_parent) steps++;
|
||||
|
||||
/* walk through the path back to the origin */
|
||||
Node *pPrevNode = NULL;
|
||||
while (pNode->m_parent != NULL) {
|
||||
if (steps > 1 && --steps < YAPF_SHIP_PATH_CACHE_LENGTH) {
|
||||
TrackdirByte td;
|
||||
td = pNode->GetTrackdir();
|
||||
path_cache.push_front(td);
|
||||
}
|
||||
pPrevNode = pNode;
|
||||
pNode = pNode->m_parent;
|
||||
}
|
||||
@@ -100,6 +108,8 @@ public:
|
||||
Node &best_next_node = *pPrevNode;
|
||||
assert(best_next_node.GetTile() == tile);
|
||||
next_trackdir = best_next_node.GetTrackdir();
|
||||
/* remove last element for the special case when tile == dest_tile */
|
||||
if (path_found && !path_cache.empty()) path_cache.pop_back();
|
||||
}
|
||||
return next_trackdir;
|
||||
}
|
||||
@@ -222,10 +232,10 @@ struct CYapfShip2 : CYapfT<CYapfShip_TypesT<CYapfShip2, CFollowTrackWater , C
|
||||
struct CYapfShip3 : CYapfT<CYapfShip_TypesT<CYapfShip3, CFollowTrackWaterNo90, CShipNodeListTrackDir> > {};
|
||||
|
||||
/** Ship controller helper - path finder invoker */
|
||||
Track YapfShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found)
|
||||
Track YapfShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found, ShipPathCache &path_cache)
|
||||
{
|
||||
/* default is YAPF type 2 */
|
||||
typedef Trackdir (*PfnChooseShipTrack)(const Ship*, TileIndex, DiagDirection, TrackBits, bool &path_found);
|
||||
typedef Trackdir (*PfnChooseShipTrack)(const Ship*, TileIndex, DiagDirection, TrackBits, bool &path_found, ShipPathCache &path_cache);
|
||||
PfnChooseShipTrack pfnChooseShipTrack = CYapfShip2::ChooseShipTrack; // default: ExitDir, allow 90-deg
|
||||
|
||||
/* check if non-default YAPF type needed */
|
||||
@@ -235,7 +245,7 @@ Track YapfShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir,
|
||||
pfnChooseShipTrack = &CYapfShip1::ChooseShipTrack; // Trackdir, allow 90-deg
|
||||
}
|
||||
|
||||
Trackdir td_ret = pfnChooseShipTrack(v, tile, enterdir, tracks, path_found);
|
||||
Trackdir td_ret = pfnChooseShipTrack(v, tile, enterdir, tracks, path_found, path_cache);
|
||||
return (td_ret != INVALID_TRACKDIR) ? TrackdirToTrack(td_ret) : INVALID_TRACK;
|
||||
}
|
||||
|
||||
|
@@ -1639,7 +1639,7 @@ static void CheckIfRoadVehNeedsService(RoadVehicle *v)
|
||||
|
||||
SetBit(v->gv_flags, GVF_SUPPRESS_IMPLICIT_ORDERS);
|
||||
v->current_order.MakeGoToDepot(depot, ODTFB_SERVICE);
|
||||
v->dest_tile = rfdd.tile;
|
||||
v->SetDestTile(rfdd.tile);
|
||||
SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, WID_VV_START_STOP);
|
||||
}
|
||||
|
||||
|
@@ -21,6 +21,8 @@
|
||||
* <li>repeat this until everything is done, and flush any remaining output to file
|
||||
* </ol>
|
||||
*/
|
||||
#include <deque>
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include "../debug.h"
|
||||
#include "../station_base.h"
|
||||
@@ -276,8 +278,9 @@
|
||||
* 200 #6805 Extend railtypes to 64, adding uint16 to map array.
|
||||
* 201 #6885 Extend NewGRF persistant storages.
|
||||
* 202 #6867 Increase industry cargo slots to 16 in, 16 out
|
||||
* 203 #7072 Add path cache for ships
|
||||
*/
|
||||
extern const uint16 SAVEGAME_VERSION = 202; ///< Current savegame version of OpenTTD.
|
||||
extern const uint16 SAVEGAME_VERSION = 203; ///< Current savegame version of OpenTTD.
|
||||
const uint16 SAVEGAME_VERSION_EXT = 0x8000; ///< Savegame extension indicator mask
|
||||
|
||||
SavegameType _savegame_type; ///< type of savegame we are loading
|
||||
@@ -1605,6 +1608,129 @@ static void SlVarList(void *list, VarType conv)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Template class to help with std::deque.
|
||||
*/
|
||||
template <typename T>
|
||||
class SlDequeHelper {
|
||||
typedef std::deque<T> SlDequeT;
|
||||
public:
|
||||
/**
|
||||
* Internal templated helper to return the size in bytes of a std::deque.
|
||||
* @param deque The std::deque to find the size of
|
||||
* @param conv VarType type of variable that is used for calculating the size
|
||||
*/
|
||||
static size_t SlCalcDequeLen(const void *deque, VarType conv)
|
||||
{
|
||||
const SlDequeT *l = (const SlDequeT *)deque;
|
||||
|
||||
int type_size = 4;
|
||||
/* Each entry is saved as type_size bytes, plus type_size bytes are used for the length
|
||||
* of the list */
|
||||
return l->size() * SlCalcConvFileLen(conv) + type_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal templated helper to save/load a std::deque.
|
||||
* @param deque The std::deque being manipulated
|
||||
* @param conv VarType type of variable that is used for calculating the size
|
||||
*/
|
||||
static void SlDeque(void *deque, VarType conv)
|
||||
{
|
||||
SlDequeT *l = (SlDequeT *)deque;
|
||||
|
||||
switch (_sl.action) {
|
||||
case SLA_SAVE: {
|
||||
SlWriteUint32((uint32)l->size());
|
||||
|
||||
typename SlDequeT::iterator iter;
|
||||
for (iter = l->begin(); iter != l->end(); ++iter) {
|
||||
SlSaveLoadConv(&(*iter), conv);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SLA_LOAD_CHECK:
|
||||
case SLA_LOAD: {
|
||||
size_t length = SlReadUint32();
|
||||
|
||||
/* Load each value and push to the end of the deque */
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
T data;
|
||||
SlSaveLoadConv(&data, conv);
|
||||
l->push_back(data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SLA_PTRS:
|
||||
break;
|
||||
case SLA_NULL:
|
||||
l->clear();
|
||||
break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Return the size in bytes of a std::deque.
|
||||
* @param deque The std::deque to find the size of
|
||||
* @param conv VarType type of variable that is used for calculating the size
|
||||
*/
|
||||
static inline size_t SlCalcDequeLen(const void *deque, VarType conv)
|
||||
{
|
||||
switch (GetVarMemType(conv)) {
|
||||
case SLE_VAR_BL:
|
||||
return SlDequeHelper<bool>::SlCalcDequeLen(deque, conv);
|
||||
case SLE_VAR_I8:
|
||||
case SLE_VAR_U8:
|
||||
return SlDequeHelper<uint8>::SlCalcDequeLen(deque, conv);
|
||||
case SLE_VAR_I16:
|
||||
case SLE_VAR_U16:
|
||||
return SlDequeHelper<uint16>::SlCalcDequeLen(deque, conv);
|
||||
case SLE_VAR_I32:
|
||||
case SLE_VAR_U32:
|
||||
return SlDequeHelper<uint32>::SlCalcDequeLen(deque, conv);
|
||||
case SLE_VAR_I64:
|
||||
case SLE_VAR_U64:
|
||||
return SlDequeHelper<uint64>::SlCalcDequeLen(deque, conv);
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save/load a std::deque.
|
||||
* @param deque The std::deque being manipulated
|
||||
* @param conv VarType type of variable that is used for calculating the size
|
||||
*/
|
||||
static void SlDeque(void *deque, VarType conv)
|
||||
{
|
||||
switch (GetVarMemType(conv)) {
|
||||
case SLE_VAR_BL:
|
||||
SlDequeHelper<bool>::SlDeque(deque, conv);
|
||||
break;
|
||||
case SLE_VAR_I8:
|
||||
case SLE_VAR_U8:
|
||||
SlDequeHelper<uint8>::SlDeque(deque, conv);
|
||||
break;
|
||||
case SLE_VAR_I16:
|
||||
case SLE_VAR_U16:
|
||||
SlDequeHelper<uint16>::SlDeque(deque, conv);
|
||||
break;
|
||||
case SLE_VAR_I32:
|
||||
case SLE_VAR_U32:
|
||||
SlDequeHelper<uint32>::SlDeque(deque, conv);
|
||||
break;
|
||||
case SLE_VAR_I64:
|
||||
case SLE_VAR_U64:
|
||||
SlDequeHelper<uint64>::SlDeque(deque, conv);
|
||||
break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Are we going to save this object or not? */
|
||||
static inline bool SlIsObjectValidInSavegame(const SaveLoad *sld)
|
||||
{
|
||||
@@ -1656,8 +1782,8 @@ size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld)
|
||||
case SL_ARR:
|
||||
case SL_STR:
|
||||
case SL_LST:
|
||||
case SL_DEQ:
|
||||
case SL_VEC:
|
||||
case SL_DEQUE:
|
||||
case SL_STDSTR:
|
||||
case SL_VARVEC:
|
||||
/* CONDITIONAL saveload types depend on the savegame version */
|
||||
@@ -1669,8 +1795,9 @@ size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld)
|
||||
case SL_ARR: return SlCalcArrayLen(sld->length, sld->conv);
|
||||
case SL_STR: return SlCalcStringLen(GetVariableAddress(object, sld), sld->length, sld->conv);
|
||||
case SL_LST: return SlCalcListLen<std::list<void *>>(GetVariableAddress(object, sld));
|
||||
case SL_DEQ: return SlCalcListLen<std::deque<void *>>(GetVariableAddress(object, sld));
|
||||
case SL_PTRDEQ: return SlCalcListLen<std::deque<void *>>(GetVariableAddress(object, sld));
|
||||
case SL_VEC: return SlCalcListLen<std::vector<void *>>(GetVariableAddress(object, sld));
|
||||
case SL_DEQUE: return SlCalcDequeLen(GetVariableAddress(object, sld), sld->conv);
|
||||
case SL_VARVEC: {
|
||||
const size_t size_len = SlCalcConvMemLen(sld->conv);
|
||||
switch (size_len) {
|
||||
@@ -1753,8 +1880,9 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld)
|
||||
case SL_ARR:
|
||||
case SL_STR:
|
||||
case SL_LST:
|
||||
case SL_DEQ:
|
||||
case SL_PTRDEQ:
|
||||
case SL_VEC:
|
||||
case SL_DEQUE:
|
||||
case SL_STDSTR:
|
||||
case SL_VARVEC:
|
||||
/* CONDITIONAL saveload types depend on the savegame version */
|
||||
@@ -1784,8 +1912,9 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld)
|
||||
case SL_ARR: SlArray(ptr, sld->length, conv); break;
|
||||
case SL_STR: SlString(ptr, sld->length, sld->conv); break;
|
||||
case SL_LST: SlList<std::list<void *>>(ptr, (SLRefType)conv); break;
|
||||
case SL_DEQ: SlList<std::deque<void *>>(ptr, (SLRefType)conv); break;
|
||||
case SL_PTRDEQ: SlList<std::deque<void *>>(ptr, (SLRefType)conv); break;
|
||||
case SL_VEC: SlList<std::vector<void *>>(ptr, (SLRefType)conv); break;
|
||||
case SL_DEQUE: SlDeque(ptr, conv); break;
|
||||
case SL_VARVEC: {
|
||||
const size_t size_len = SlCalcConvMemLen(sld->conv);
|
||||
switch (size_len) {
|
||||
|
@@ -204,15 +204,17 @@ enum SaveLoadTypes {
|
||||
SL_ARR = 2, ///< Save/load an array.
|
||||
SL_STR = 3, ///< Save/load a string.
|
||||
SL_LST = 4, ///< Save/load a list.
|
||||
SL_DEQ = 5, ///< Save/load a deque.
|
||||
SL_DEQUE = 5, ///< Save/load a primitive type deque.
|
||||
SL_VEC = 6, ///< Save/load a vector.
|
||||
SL_STDSTR = 7, ///< Save/load a std::string.
|
||||
|
||||
/* non-normal save-load types */
|
||||
SL_WRITEBYTE = 8,
|
||||
SL_VEH_INCLUDE = 9,
|
||||
SL_ST_INCLUDE = 10,
|
||||
/* primitive type vector */
|
||||
SL_VARVEC = 14,
|
||||
|
||||
SL_PTRDEQ = 13, ///< Save/load a pointer type deque.
|
||||
SL_VARVEC = 14, ///< Save/load a primitive type vector.
|
||||
SL_END = 15
|
||||
};
|
||||
|
||||
@@ -335,8 +337,8 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
* @param to Last savegame version that has the list.
|
||||
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
||||
*/
|
||||
#define SLE_CONDDEQ_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_DEQ, base, variable, type, 0, from, to, extver)
|
||||
#define SLE_CONDDEQ(base, variable, type, from, to) SLE_CONDDEQ_X(base, variable, type, from, to, SlXvFeatureTest())
|
||||
#define SLE_CONDPTRDEQ_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_PTRDEQ, base, variable, type, 0, from, to, extver)
|
||||
#define SLE_CONDPTRDEQ(base, variable, type, from, to) SLE_CONDPTRDEQ_X(base, variable, type, from, to, SlXvFeatureTest())
|
||||
|
||||
/**
|
||||
* Storage of a vector in some savegame versions.
|
||||
@@ -362,6 +364,18 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
#define SLE_CONDVARVEC_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_VARVEC, base, variable, type, 0, from, to, extver)
|
||||
#define SLE_CONDVARVEC(base, variable, type, from, to) SLE_CONDVARVEC_X(base, variable, type, from, to, SlXvFeatureTest())
|
||||
|
||||
/**
|
||||
* Storage of a deque in some savegame versions.
|
||||
* @param base Name of the class or struct containing the list.
|
||||
* @param variable Name of the variable in the class or struct referenced by \a base.
|
||||
* @param type Storage of the data in memory and in the savegame.
|
||||
* @param from First savegame version that has the list.
|
||||
* @param to Last savegame version that has the list.
|
||||
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
||||
*/
|
||||
#define SLE_CONDDEQUE_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_DEQUE, base, variable, type, 0, from, to, extver)
|
||||
#define SLE_CONDDEQUE(base, variable, type, from, to) SLE_CONDDEQUE_X(base, variable, type, from, to, SlXvFeatureTest())
|
||||
|
||||
/**
|
||||
* Storage of a variable in every version of a savegame.
|
||||
* @param base Name of the class or struct containing the variable.
|
||||
@@ -418,7 +432,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
* @param variable Name of the variable in the class or struct referenced by \a base.
|
||||
* @param type Storage of the data in memory and in the savegame.
|
||||
*/
|
||||
#define SLE_DEQ(base, variable, type) SLE_CONDDEQ(base, variable, type, 0, SL_MAX_VERSION)
|
||||
#define SLE_PTRDEQ(base, variable, type) SLE_CONDPTRDEQ(base, variable, type, 0, SL_MAX_VERSION)
|
||||
|
||||
/**
|
||||
* Storage of a vector in every savegame version.
|
||||
@@ -531,8 +545,8 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
* @param to Last savegame version that has the list.
|
||||
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
||||
*/
|
||||
#define SLEG_CONDDEQ_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_DEQ, variable, type, 0, from, to, extver)
|
||||
#define SLEG_CONDDEQ(variable, type, from, to) SLEG_CONDDEQ_X(variable, type, from, to, SlXvFeatureTest())
|
||||
#define SLEG_CONDPTRDEQ_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_PTRDEQ, variable, type, 0, from, to, extver)
|
||||
#define SLEG_CONDPTRDEQ(variable, type, from, to) SLEG_CONDPTRDEQ_X(variable, type, from, to, SlXvFeatureTest())
|
||||
|
||||
/**
|
||||
* Storage of a global vector in some savegame versions.
|
||||
@@ -585,7 +599,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
||||
* @param variable Name of the global variable.
|
||||
* @param type Storage of the data in memory and in the savegame.
|
||||
*/
|
||||
#define SLEG_DEQ(variable, type) SLEG_CONDDEQ(variable, type, 0, SL_MAX_VERSION)
|
||||
#define SLEG_PTRDEQ(variable, type) SLEG_CONDPTRDEQ(variable, type, 0, SL_MAX_VERSION)
|
||||
|
||||
/**
|
||||
* Storage of a global vector in every savegame version.
|
||||
|
@@ -754,6 +754,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
SLE_WRITEBYTE(Vehicle, type, VEH_SHIP),
|
||||
SLE_VEH_INCLUDE(),
|
||||
SLE_VAR(Ship, state, SLE_UINT8),
|
||||
SLE_CONDDEQUE(Ship, path, SLE_UINT8, 203, SL_MAX_VERSION),
|
||||
|
||||
SLE_CONDNULL(16, 2, 143), // old reserved space
|
||||
|
||||
|
@@ -29,46 +29,46 @@ function dump_class_templates(name)
|
||||
realname = name
|
||||
gsub("^Script", "", realname)
|
||||
|
||||
print " template <> inline " name " *GetParam(ForceType<" name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }"
|
||||
print " template <> inline " name " &GetParam(ForceType<" name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }"
|
||||
print " template <> inline const " name " *GetParam(ForceType<const " name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }"
|
||||
print " template <> inline const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }"
|
||||
print " template <> inline " name " *GetParam(ForceType<" name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" CR
|
||||
print " template <> inline " name " &GetParam(ForceType<" name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" CR
|
||||
print " template <> inline const " name " *GetParam(ForceType<const " name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" CR
|
||||
print " template <> inline const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" CR
|
||||
if (name == "ScriptEvent") {
|
||||
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }"
|
||||
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }" CR
|
||||
} else if (name == "ScriptText") {
|
||||
print ""
|
||||
print " template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {"
|
||||
print " if (sq_gettype(vm, index) == OT_INSTANCE) {"
|
||||
print " return GetParam(ForceType<ScriptText *>(), vm, index, ptr);"
|
||||
print " }"
|
||||
print " if (sq_gettype(vm, index) == OT_STRING) {"
|
||||
print " return new RawText(GetParam(ForceType<const char *>(), vm, index, ptr));"
|
||||
print " }"
|
||||
print " return NULL;"
|
||||
print " }"
|
||||
print "" CR
|
||||
print " template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {" CR
|
||||
print " if (sq_gettype(vm, index) == OT_INSTANCE) {" CR
|
||||
print " return GetParam(ForceType<ScriptText *>(), vm, index, ptr);" CR
|
||||
print " }" CR
|
||||
print " if (sq_gettype(vm, index) == OT_STRING) {" CR
|
||||
print " return new RawText(GetParam(ForceType<const char *>(), vm, index, ptr));" CR
|
||||
print " }" CR
|
||||
print " return NULL;" CR
|
||||
print " }" CR
|
||||
} else {
|
||||
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }"
|
||||
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }" CR
|
||||
}
|
||||
}
|
||||
|
||||
function dump_fileheader()
|
||||
{
|
||||
# Break the Id tag, so SVN doesn't replace it
|
||||
print "/* $I" "d$ */"
|
||||
print ""
|
||||
print "/*"
|
||||
print " * This file is part of OpenTTD."
|
||||
print " * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2."
|
||||
print " * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
print " * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>."
|
||||
print " */"
|
||||
print ""
|
||||
print "/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */"
|
||||
print ""
|
||||
print "#include \"../" filename "\""
|
||||
print "/* $I" "d$ */" CR
|
||||
print "" CR
|
||||
print "/*" CR
|
||||
print " * This file is part of OpenTTD." CR
|
||||
print " * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2." CR
|
||||
print " * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." CR
|
||||
print " * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>." CR
|
||||
print " */" CR
|
||||
print "" CR
|
||||
print "/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */" CR
|
||||
print "" CR
|
||||
print "#include \"../" filename "\"" CR
|
||||
if (api != "Template") {
|
||||
gsub("script_", "template_", filename)
|
||||
print "#include \"../template/" filename ".sq\""
|
||||
print "#include \"../template/" filename ".sq\"" CR
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,11 +103,12 @@ BEGIN {
|
||||
start_squirrel_define_on_next_line = "false"
|
||||
has_fileheader = "false"
|
||||
cls_level = 0
|
||||
RS = "\r|\n"
|
||||
apis = tolower(api)
|
||||
if (apis == "gs") apis = "game"
|
||||
}
|
||||
|
||||
{ CR = (match($0, "\\r$") > 0 ? "\r" : "") }
|
||||
|
||||
/@file/ {
|
||||
filename = $3
|
||||
gsub("^" apis "_", "script_", filename)
|
||||
@@ -136,13 +137,13 @@ BEGIN {
|
||||
|
||||
if (api == "Template") {
|
||||
api_selected = "true"
|
||||
if ($0 == "none" || $0 == "-all") api_selected = "false"
|
||||
if ($0 == "none" CR || $0 == "-all" CR) api_selected = "false"
|
||||
next
|
||||
}
|
||||
|
||||
if ($0 == "none") {
|
||||
if ($0 == "none" CR) {
|
||||
api_selected = "false"
|
||||
} else if ($0 == "-all") {
|
||||
} else if ($0 == "-all" CR) {
|
||||
api_selected = "false"
|
||||
} else if (match($0, "-" apis)) {
|
||||
api_selected = "false"
|
||||
@@ -259,7 +260,7 @@ BEGIN {
|
||||
}
|
||||
|
||||
# Empty/white lines. When we may do the Squirrel export, do that export.
|
||||
/^([ ]*)$/ {
|
||||
/^([ ]*)\r*$/ {
|
||||
if (start_squirrel_define_on_next_line == "false") next
|
||||
|
||||
if (cls_in_api != "true") {
|
||||
@@ -280,19 +281,19 @@ BEGIN {
|
||||
api_super_cls = super_cls
|
||||
gsub("^Script", api, api_super_cls)
|
||||
|
||||
print ""
|
||||
print "" CR
|
||||
|
||||
if (api == "Template") {
|
||||
# First check whether we have enums to print
|
||||
if (enum_size != 0) {
|
||||
if (namespace_opened == "false") {
|
||||
print "namespace SQConvert {"
|
||||
print "namespace SQConvert {" CR
|
||||
namespace_opened = "true"
|
||||
}
|
||||
print " /* Allow enums to be used as Squirrel parameters */"
|
||||
print " /* Allow enums to be used as Squirrel parameters */" CR
|
||||
for (i = 1; i <= enum_size; i++) {
|
||||
print " template <> inline " enums[i] " GetParam(ForceType<" enums[i] ">, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (" enums[i] ")tmp; }"
|
||||
print " template <> inline int Return<" enums[i] ">(HSQUIRRELVM vm, " enums[i] " res) { sq_pushinteger(vm, (int32)res); return 1; }"
|
||||
print " template <> inline " enums[i] " GetParam(ForceType<" enums[i] ">, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (" enums[i] ")tmp; }" CR
|
||||
print " template <> inline int Return<" enums[i] ">(HSQUIRRELVM vm, " enums[i] " res) { sq_pushinteger(vm, (int32)res); return 1; }" CR
|
||||
delete enums[i]
|
||||
}
|
||||
}
|
||||
@@ -300,10 +301,10 @@ BEGIN {
|
||||
# Then check whether we have structs/classes to print
|
||||
if (struct_size != 0) {
|
||||
if (namespace_opened == "false") {
|
||||
print "namespace SQConvert {"
|
||||
print "namespace SQConvert {" CR
|
||||
namespace_opened = "true"
|
||||
}
|
||||
print " /* Allow inner classes/structs to be used as Squirrel parameters */"
|
||||
print " /* Allow inner classes/structs to be used as Squirrel parameters */" CR
|
||||
for (i = 1; i <= struct_size; i++) {
|
||||
dump_class_templates(structs[i])
|
||||
delete structs[i]
|
||||
@@ -311,41 +312,41 @@ BEGIN {
|
||||
}
|
||||
|
||||
if (namespace_opened == "false") {
|
||||
print "namespace SQConvert {"
|
||||
print "namespace SQConvert {" CR
|
||||
namespace_opened = "true"
|
||||
} else {
|
||||
print ""
|
||||
print "" CR
|
||||
}
|
||||
print " /* Allow " cls " to be used as Squirrel parameter */"
|
||||
print " /* Allow " cls " to be used as Squirrel parameter */" CR
|
||||
dump_class_templates(cls)
|
||||
|
||||
print "} // namespace SQConvert"
|
||||
print "} // namespace SQConvert" CR
|
||||
|
||||
reset_reader()
|
||||
next
|
||||
}
|
||||
|
||||
print "";
|
||||
print "template <> const char *GetClassName<" cls ", ST_" toupper(api) ">() { return \"" api_cls "\"; }"
|
||||
print "";
|
||||
print "" CR
|
||||
print "template <> const char *GetClassName<" cls ", ST_" toupper(api) ">() { return \"" api_cls "\"; }" CR
|
||||
print "" CR
|
||||
|
||||
# Then do the registration functions of the class. */
|
||||
print "void SQ" api_cls "_Register(Squirrel *engine)"
|
||||
print "{"
|
||||
print " DefSQClass<" cls ", ST_" toupper(api) "> SQ" api_cls "(\"" api_cls "\");"
|
||||
print "void SQ" api_cls "_Register(Squirrel *engine)" CR
|
||||
print "{" CR
|
||||
print " DefSQClass<" cls ", ST_" toupper(api) "> SQ" api_cls "(\"" api_cls "\");" CR
|
||||
if (super_cls == "Text" || super_cls == "ScriptObject" || super_cls == "AIAbstractList::Valuator") {
|
||||
print " SQ" api_cls ".PreRegister(engine);"
|
||||
print " SQ" api_cls ".PreRegister(engine);" CR
|
||||
} else {
|
||||
print " SQ" api_cls ".PreRegister(engine, \"" api_super_cls "\");"
|
||||
print " SQ" api_cls ".PreRegister(engine, \"" api_super_cls "\");" CR
|
||||
}
|
||||
if (super_cls != "ScriptEvent") {
|
||||
if (cls_param[2] == "v") {
|
||||
print " SQ" api_cls ".AddSQAdvancedConstructor(engine);"
|
||||
print " SQ" api_cls ".AddSQAdvancedConstructor(engine);" CR
|
||||
} else {
|
||||
print " SQ" api_cls ".AddConstructor<void (" cls "::*)(" cls_param[0] "), " cls_param[1]">(engine, \"" cls_param[2] "\");"
|
||||
print " SQ" api_cls ".AddConstructor<void (" cls "::*)(" cls_param[0] "), " cls_param[1]">(engine, \"" cls_param[2] "\");" CR
|
||||
}
|
||||
}
|
||||
print ""
|
||||
print "" CR
|
||||
|
||||
# Enum values
|
||||
mlen = 0
|
||||
@@ -353,10 +354,10 @@ BEGIN {
|
||||
if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
|
||||
}
|
||||
for (i = 1; i <= enum_value_size; i++) {
|
||||
print " SQ" api_cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\"" enum_value[i] "\");"
|
||||
print " SQ" api_cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\"" enum_value[i] "\");" CR
|
||||
delete enum_value[i]
|
||||
}
|
||||
if (enum_value_size != 0) print ""
|
||||
if (enum_value_size != 0) print "" CR
|
||||
|
||||
# Const values
|
||||
mlen = 0
|
||||
@@ -364,10 +365,10 @@ BEGIN {
|
||||
if (mlen <= length(const_value[i])) mlen = length(const_value[i])
|
||||
}
|
||||
for (i = 1; i <= const_size; i++) {
|
||||
print " SQ" api_cls ".DefSQConst(engine, " cls "::" const_value[i] ", " substr(spaces, 1, mlen - length(const_value[i])) "\"" const_value[i] "\");"
|
||||
print " SQ" api_cls ".DefSQConst(engine, " cls "::" const_value[i] ", " substr(spaces, 1, mlen - length(const_value[i])) "\"" const_value[i] "\");" CR
|
||||
delete const_value[i]
|
||||
}
|
||||
if (const_size != 0) print ""
|
||||
if (const_size != 0) print "" CR
|
||||
|
||||
# Mapping of OTTD strings to errors
|
||||
mlen = 0
|
||||
@@ -375,11 +376,11 @@ BEGIN {
|
||||
if (mlen <= length(enum_string_to_error_mapping_string[i])) mlen = length(enum_string_to_error_mapping_string[i])
|
||||
}
|
||||
for (i = 1; i <= enum_string_to_error_size; i++) {
|
||||
print " ScriptError::RegisterErrorMap(" enum_string_to_error_mapping_string[i] ", " substr(spaces, 1, mlen - length(enum_string_to_error_mapping_string[i])) cls "::" enum_string_to_error_mapping_error[i] ");"
|
||||
print " ScriptError::RegisterErrorMap(" enum_string_to_error_mapping_string[i] ", " substr(spaces, 1, mlen - length(enum_string_to_error_mapping_string[i])) cls "::" enum_string_to_error_mapping_error[i] ");" CR
|
||||
|
||||
delete enum_string_to_error_mapping_string[i]
|
||||
}
|
||||
if (enum_string_to_error_size != 0) print ""
|
||||
if (enum_string_to_error_size != 0) print "" CR
|
||||
|
||||
# Mapping of errors to human 'readable' strings.
|
||||
mlen = 0
|
||||
@@ -387,10 +388,10 @@ BEGIN {
|
||||
if (mlen <= length(enum_error_to_string_mapping[i])) mlen = length(enum_error_to_string_mapping[i])
|
||||
}
|
||||
for (i = 1; i <= enum_error_to_string_size; i++) {
|
||||
print " ScriptError::RegisterErrorMapString(" cls "::" enum_error_to_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_to_string_mapping[i])) "\"" enum_error_to_string_mapping[i] "\");"
|
||||
print " ScriptError::RegisterErrorMapString(" cls "::" enum_error_to_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_to_string_mapping[i])) "\"" enum_error_to_string_mapping[i] "\");" CR
|
||||
delete enum_error_to_string_mapping[i]
|
||||
}
|
||||
if (enum_error_to_string_size != 0) print ""
|
||||
if (enum_error_to_string_size != 0) print "" CR
|
||||
|
||||
# Static methods
|
||||
mlen = 0
|
||||
@@ -399,13 +400,13 @@ BEGIN {
|
||||
}
|
||||
for (i = 1; i <= static_method_size; i++) {
|
||||
if (static_methods[i, 2] == "v") {
|
||||
print " SQ" api_cls ".DefSQAdvancedStaticMethod(engine, &" cls "::" static_methods[i, 0] ", " substr(spaces, 1, mlen - length(static_methods[i, 0]) - 8) "\"" static_methods[i, 0] "\");"
|
||||
print " SQ" api_cls ".DefSQAdvancedStaticMethod(engine, &" cls "::" static_methods[i, 0] ", " substr(spaces, 1, mlen - length(static_methods[i, 0]) - 8) "\"" static_methods[i, 0] "\");" CR
|
||||
} else {
|
||||
print " SQ" api_cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i, 0] ", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "\"" static_methods[i, 0] "\", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "" static_methods[i, 1] ", \"" static_methods[i, 2] "\");"
|
||||
print " SQ" api_cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i, 0] ", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "\"" static_methods[i, 0] "\", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "" static_methods[i, 1] ", \"" static_methods[i, 2] "\");" CR
|
||||
}
|
||||
delete static_methods[i]
|
||||
}
|
||||
if (static_method_size != 0) print ""
|
||||
if (static_method_size != 0) print "" CR
|
||||
|
||||
# Non-static methods
|
||||
mlen = 0
|
||||
@@ -414,16 +415,16 @@ BEGIN {
|
||||
}
|
||||
for (i = 1; i <= method_size; i++) {
|
||||
if (methods[i, 2] == "v") {
|
||||
print " SQ" api_cls ".DefSQAdvancedMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0]) - 8) "\"" methods[i, 0] "\");"
|
||||
print " SQ" api_cls ".DefSQAdvancedMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0]) - 8) "\"" methods[i, 0] "\");" CR
|
||||
} else {
|
||||
print " SQ" api_cls ".DefSQMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0])) "\"" methods[i, 0] "\", " substr(spaces, 1, mlen - length(methods[i, 0])) "" methods[i, 1] ", \"" methods[i, 2] "\");"
|
||||
print " SQ" api_cls ".DefSQMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0])) "\"" methods[i, 0] "\", " substr(spaces, 1, mlen - length(methods[i, 0])) "" methods[i, 1] ", \"" methods[i, 2] "\");" CR
|
||||
}
|
||||
delete methods[i]
|
||||
}
|
||||
if (method_size != 0) print ""
|
||||
if (method_size != 0) print "" CR
|
||||
|
||||
print " SQ" api_cls ".PostRegister(engine);"
|
||||
print "}"
|
||||
print " SQ" api_cls ".PostRegister(engine);" CR
|
||||
print "}" CR
|
||||
|
||||
reset_reader()
|
||||
|
||||
@@ -438,6 +439,7 @@ BEGIN {
|
||||
if (in_enum == "true") {
|
||||
enum_value_size++
|
||||
sub(",", "", $1)
|
||||
sub("\r", "", $1)
|
||||
enum_value[enum_value_size] = $1
|
||||
|
||||
# Check if this a special error enum
|
||||
@@ -475,7 +477,7 @@ BEGIN {
|
||||
}
|
||||
|
||||
# Add a method to the list
|
||||
/^.*\(.*\).*$/ {
|
||||
/^.*\(.*\).*\r*$/ {
|
||||
if (cls_level != 1) next
|
||||
if (match($0, "~")) {
|
||||
if (api_selected != "") {
|
||||
|
@@ -26,7 +26,7 @@ apilc=`pwd | sed "s@/api@@;s@.*/@@"`
|
||||
|
||||
# Check if we are in the root directory of the API, as then we generate all APIs
|
||||
if [ "$apilc" = "script" ]; then
|
||||
for api in `find -type d | cut -b3- | grep -v '\.svn\|/'`; do
|
||||
for api in `find . -type d | cut -b3-`; do
|
||||
if [ -z "$api" ]; then continue; fi
|
||||
echo "Generating for API '$api' ..."
|
||||
cd $api
|
||||
@@ -43,57 +43,34 @@ case $apilc in
|
||||
*) echo "Unknown API type."; exit 1 ;;
|
||||
esac
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
for f in `ls ../*.hpp`; do
|
||||
for f in `ls ../*.hpp`; do
|
||||
bf=`basename ${f} | sed s@script_@${apilc}_@`
|
||||
|
||||
# ScriptController has custom code, and should not be generated
|
||||
if [ "`basename ${f}`" = "script_controller.hpp" ]; then continue; fi
|
||||
if [ "`basename ${f}`" = "script_object.hpp" ]; then continue; fi
|
||||
|
||||
${AWK} -v api=${apiuc} -f ${scriptdir}/squirrel_export.awk ${f} > ${bf}.tmp
|
||||
|
||||
if [ "`wc -l ${bf}.tmp | cut -d\ -f1`" = "0" ]; then
|
||||
if [ -f "${bf}.sq" ]; then
|
||||
echo "Deleted: ${bf}.sq"
|
||||
svn del --force ${bf}.sq > /dev/null 2>&1
|
||||
rm -f ${bf}.sq
|
||||
fi
|
||||
rm -f ${bf}.tmp
|
||||
elif ! [ -f "${bf}.sq" ] || [ -n "`diff -I '$Id' ${bf}.tmp ${bf}.sq 2> /dev/null || echo boo`" ]; then
|
||||
mv ${bf}.tmp ${bf}.sq
|
||||
echo "Updated: ${bf}.sq"
|
||||
svn add ${bf}.sq > /dev/null 2>&1
|
||||
svn propset svn:eol-style native ${bf}.sq > /dev/null 2>&1
|
||||
svn propset svn:keywords Id ${bf}.sq > /dev/null 2>&1
|
||||
else
|
||||
rm -f ${bf}.tmp
|
||||
fi
|
||||
done
|
||||
else
|
||||
${AWK} -v api=${apiuc} -f ${scriptdir}/squirrel_export.awk $1 > $1.tmp
|
||||
if [ `wc -l $1.tmp | cut -d\ -f1` -eq "0" ]; then
|
||||
if [ -f "$1.sq" ]; then
|
||||
echo "Deleted: $1.sq"
|
||||
svn del --force $1.sq > /dev/null 2>&1
|
||||
fi
|
||||
rm -f $1.tmp
|
||||
elif ! [ -f "${f}.sq" ] || [ -n "`diff -I '$Id' $1.sq $1.tmp 2> /dev/null || echo boo`" ]; then
|
||||
mv $1.tmp $1.sq
|
||||
echo "Updated: $1.sq"
|
||||
svn add $1.sq > /dev/null 2>&1
|
||||
svn propset svn:eol-style native $1.sq > /dev/null 2>&1
|
||||
svn propset svn:keywords Id $1.sq > /dev/null 2>&1
|
||||
else
|
||||
rm -f $1.tmp
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Remove .hpp.sq if .hpp doesn't exist anymore
|
||||
for f in `ls *.hpp.sq`; do
|
||||
f=`echo ${f} | sed "s/.hpp.sq$/.hpp/;s@${apilc}_@script_@"`
|
||||
if [ ! -f ../${f} ];then
|
||||
echo "Deleted: ${f}.sq"
|
||||
svn del --force ${f}.sq > /dev/null 2>&1
|
||||
rm -f ${f}.sq
|
||||
fi
|
||||
done
|
||||
|
||||
|
946
src/script/api/squirrel_export.vbs
Normal file
946
src/script/api/squirrel_export.vbs
Normal file
@@ -0,0 +1,946 @@
|
||||
Option Explicit
|
||||
|
||||
' $Id$
|
||||
'
|
||||
' This file is part of OpenTTD.
|
||||
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Dim FSO
|
||||
Dim enum_size, enums, enum_value_size, enum_value
|
||||
Dim enum_string_to_error_size, enum_string_to_error_mapping_string, enum_string_to_error_mapping_error
|
||||
Dim enum_error_to_string_size, enum_error_to_string_mapping, const_size, const_value
|
||||
Dim struct_size, structs, method_size, methods, static_method_size, static_methods
|
||||
Dim super_cls, cls, api_selected, cls_in_api, start_squirrel_define_on_next_line, has_fileheader, cls_level
|
||||
Dim apis, filename, doxygen_skip, squirrel_stuff, is_public, cls_param(2), comment, in_enum
|
||||
|
||||
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
Function CompareFiles(filename1, filename2)
|
||||
Dim file, lines1, lines2
|
||||
|
||||
If Not FSO.FileExists(filename1) Then
|
||||
CompareFiles = False
|
||||
Exit Function
|
||||
End If
|
||||
Set file = FSO.OpenTextFile(filename1, 1)
|
||||
If Not file.AtEndOfStream Then
|
||||
lines1 = file.ReadAll
|
||||
End IF
|
||||
file.Close
|
||||
|
||||
If Not FSO.FileExists(filename2) Then
|
||||
CompareFiles = False
|
||||
Exit Function
|
||||
End If
|
||||
Set file = FSO.OpenTextFile(filename2, 1)
|
||||
If Not file.AtEndOfStream Then
|
||||
lines2 = file.ReadAll
|
||||
End IF
|
||||
file.Close
|
||||
|
||||
CompareFiles = (lines1 = lines2)
|
||||
End Function
|
||||
|
||||
Function IsEmptyFile(filename)
|
||||
Dim file
|
||||
Set file = FSO.OpenTextFile(filename, 1)
|
||||
IsEmptyFile = file.AtEndOfStream
|
||||
file.Close
|
||||
End Function
|
||||
|
||||
Function DumpClassTemplates(name, file)
|
||||
Dim re, realname
|
||||
Set re = New RegExp
|
||||
|
||||
re.Pattern = "^Script"
|
||||
realname = re.Replace(name, "")
|
||||
|
||||
file.WriteLine " template <> inline " & name & " *GetParam(ForceType<" & name & " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" & name & " *)instance; }"
|
||||
file.WriteLine " template <> inline " & name & " &GetParam(ForceType<" & name & " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" & name & " *)instance; }"
|
||||
file.WriteLine " template <> inline const " & name & " *GetParam(ForceType<const " & name & " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" & name & " *)instance; }"
|
||||
file.WriteLine " template <> inline const " & name & " &GetParam(ForceType<const " & name & " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" & name & " *)instance; }"
|
||||
If name = "ScriptEvent" Then
|
||||
file.WriteLine " template <> inline int Return<" & name & " *>(HSQUIRRELVM vm, " & name & " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, " & Chr(34) & realname & Chr(34) & ", res, NULL, DefSQDestructorCallback<" & name & ">, true); return 1; }"
|
||||
ElseIf name = "ScriptText" Then
|
||||
file.WriteLine ""
|
||||
file.WriteLine " template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {"
|
||||
file.WriteLine " if (sq_gettype(vm, index) == OT_INSTANCE) {"
|
||||
file.WriteLine " return GetParam(ForceType<ScriptText *>(), vm, index, ptr);"
|
||||
file.WriteLine " }"
|
||||
file.WriteLine " if (sq_gettype(vm, index) == OT_STRING) {"
|
||||
file.WriteLine " return new RawText(GetParam(ForceType<const char *>(), vm, index, ptr));"
|
||||
file.WriteLine " }"
|
||||
file.WriteLine " return NULL;"
|
||||
file.WriteLine " }"
|
||||
Else
|
||||
file.WriteLine " template <> inline int Return<" & name & " *>(HSQUIRRELVM vm, " & name & " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, " & Chr(34) & realname & Chr(34) & ", res, NULL, DefSQDestructorCallback<" & name & ">, true); return 1; }"
|
||||
End If
|
||||
End Function
|
||||
|
||||
Function DumpFileheader(api, file)
|
||||
Dim re
|
||||
Set re = New RegExp
|
||||
' Break the Id tag, so SVN doesn't replace it
|
||||
file.WriteLine "/* $I" & "d$ */"
|
||||
file.WriteLine ""
|
||||
file.WriteLine "/*"
|
||||
file.WriteLine " * This file is part of OpenTTD."
|
||||
file.WriteLine " * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2."
|
||||
file.WriteLine " * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
file.WriteLine " * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>."
|
||||
file.WriteLine " */"
|
||||
file.WriteLine ""
|
||||
file.WriteLine "/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */"
|
||||
file.WriteLine ""
|
||||
file.WriteLine "#include " & Chr(34) & "../" & filename & Chr(34)
|
||||
If api <> "Template" Then
|
||||
re.Pattern = "script_"
|
||||
filename = re.Replace(filename, "template_")
|
||||
file.WriteLine "#include " & Chr(34) & "../template/" & filename & ".sq" & Chr(34)
|
||||
End If
|
||||
End Function
|
||||
|
||||
Function ResetReader()
|
||||
enum_size = 0
|
||||
enums.RemoveAll
|
||||
enum_value_size = 0
|
||||
enum_value.RemoveAll
|
||||
enum_string_to_error_size = 0
|
||||
enum_string_to_error_mapping_string.RemoveAll
|
||||
enum_string_to_error_mapping_error.RemoveAll
|
||||
enum_error_to_string_size = 0
|
||||
enum_error_to_string_mapping.RemoveAll
|
||||
const_size = 0
|
||||
const_value.RemoveAll
|
||||
struct_size = 0
|
||||
structs.RemoveAll
|
||||
method_size = 0
|
||||
methods.RemoveAll
|
||||
static_method_size = 0
|
||||
static_methods.RemoveAll
|
||||
cls = ""
|
||||
start_squirrel_define_on_next_line = False
|
||||
cls_level = 0
|
||||
cls_in_api = ""
|
||||
End Function
|
||||
|
||||
Sub SquirrelExportParse(api, line, file)
|
||||
Dim re
|
||||
Set re = New RegExp
|
||||
|
||||
re.Pattern = "@file"
|
||||
If re.Test(line) Then
|
||||
filename = Split(line)(2)
|
||||
re.Pattern = "^" & apis & "_"
|
||||
filename = re.Replace(filename, "script_")
|
||||
End If
|
||||
|
||||
' Ignore special doxygen blocks
|
||||
re.Pattern = "^#ifndef DOXYGEN_API"
|
||||
If re.Test(line) Then
|
||||
doxygen_skip = "next"
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^#ifdef DOXYGEN_API"
|
||||
If re.Test(line) Then
|
||||
doxygen_skip = "true"
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^#endif /\* DOXYGEN_API \*/"
|
||||
If re.Test(line) Then
|
||||
doxygen_skip = "false"
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^#else"
|
||||
If re.Test(line) Then
|
||||
If doxygen_skip = "next" Then
|
||||
doxygen_skip = "true"
|
||||
Else
|
||||
doxygen_skip = "false"
|
||||
End If
|
||||
Exit Sub
|
||||
End If
|
||||
If doxygen_skip = "true" Then Exit Sub
|
||||
|
||||
re.Pattern = "^([ ]*)\* @api"
|
||||
If re.Test(line) Then
|
||||
' By default, classes are not selected
|
||||
If cls_level = 0 Then api_selected = "false"
|
||||
|
||||
re.Pattern = "^([ ]*)"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "\* @api "
|
||||
line = re.Replace(line, "")
|
||||
|
||||
If api = "Template" Then
|
||||
api_selected = "true"
|
||||
If line = "none" Or line = "-all" Then api_selected = "false"
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If line = "none" Then
|
||||
api_selected = "false"
|
||||
ElseIf line = "-all" Then
|
||||
api_selected = "false"
|
||||
Else
|
||||
re.Pattern = "-" & apis
|
||||
If re.Test(line) Then
|
||||
api_selected = "false"
|
||||
Else
|
||||
re.Pattern = apis
|
||||
If re.Test(line) Then
|
||||
api_selected = "true"
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Remove the old squirrel stuff
|
||||
re.Pattern = "#ifdef DEFINE_SQUIRREL_CLASS"
|
||||
If re.Test(line) Then
|
||||
squirrel_stuff = True
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^#endif /\* DEFINE_SQUIRREL_CLASS \*/"
|
||||
If re.Test(line) Then
|
||||
If squirrel_stuff Then squirrel_stuff = False
|
||||
Exit Sub
|
||||
End If
|
||||
If squirrel_stuff Then Exit Sub
|
||||
|
||||
' Ignore forward declarations of classes
|
||||
re.Pattern = "^( *)class(.*);"
|
||||
If re.Test(line) Then Exit Sub
|
||||
' We only want to have public functions exported for now
|
||||
re.Pattern = "^( *)class"
|
||||
If re.Test(line) Then
|
||||
line = Split(line)
|
||||
If cls_level = 0 Then
|
||||
If api_selected = "" Then
|
||||
WScript.Echo "Class '" & line(1) & "' has no @api. It won't be published to any API."
|
||||
api_selected = "false"
|
||||
End If
|
||||
is_public = False
|
||||
cls_param(0) = ""
|
||||
cls_param(1) = 1
|
||||
cls_param(2) = "x"
|
||||
cls_in_api = api_selected
|
||||
api_selected = ""
|
||||
cls = line(1)
|
||||
re.Pattern = "public|protected|private"
|
||||
If UBound(line) > 2 Then
|
||||
If re.Test(line(3)) Then
|
||||
super_cls = line(4)
|
||||
Else
|
||||
super_cls = line(3)
|
||||
End If
|
||||
End If
|
||||
ElseIf cls_level = 1 Then
|
||||
If api_selected = "" Then api_selected = cls_in_api
|
||||
|
||||
If api_selected = "true" Then
|
||||
struct_size = struct_size + 1
|
||||
structs.Item(struct_size) = cls & "::" & line(1)
|
||||
End If
|
||||
api_selected = ""
|
||||
End If
|
||||
cls_level = cls_level + 1
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^( *)public"
|
||||
If re.Test(line) Then
|
||||
If cls_level = 1 Then is_public = True
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^( *)protected"
|
||||
If re.Test(line) Then
|
||||
If cls_level = 1 Then is_public = False
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "^( *)private"
|
||||
If re.Test(line) Then
|
||||
If cls_level = 1 Then is_public = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Ignore the comments
|
||||
re.Pattern = "^#"
|
||||
If re.Test(line) Then Exit Sub
|
||||
re.Pattern = "/\*.*\*/"
|
||||
If re.Test(line) Then
|
||||
comment = False
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "/\*"
|
||||
If re.Test(line) Then
|
||||
comment = True
|
||||
Exit Sub
|
||||
End If
|
||||
re.Pattern = "\*/"
|
||||
If re.Test(line) Then
|
||||
comment = False
|
||||
Exit Sub
|
||||
End If
|
||||
If comment Then Exit Sub
|
||||
|
||||
' We need to make specialized conversions for structs
|
||||
re.Pattern = "^( *)struct"
|
||||
If re.Test(line) Then
|
||||
cls_level = cls_level + 1
|
||||
|
||||
' Check if we want to publish this struct
|
||||
If api_selected = "" Then api_selected = cls_in_api
|
||||
If api_selected = "false" Then
|
||||
api_selected = ""
|
||||
Exit Sub
|
||||
End If
|
||||
api_selected = ""
|
||||
|
||||
If Not is_public Then Exit Sub
|
||||
If cls_level <> 1 Then Exit Sub
|
||||
|
||||
struct_size = struct_size + 1
|
||||
structs.Item(struct_size) = cls & "::" & Split(line)(1)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' We need to make specialized conversions for enums
|
||||
re.Pattern = "^( *)enum"
|
||||
If re.Test(line) Then
|
||||
cls_level = cls_level + 1
|
||||
|
||||
' Check if we want to publish this enum
|
||||
If api_selected = "" Then api_selected = cls_in_api
|
||||
If api_selected = "false" Then
|
||||
api_selected = ""
|
||||
Exit Sub
|
||||
End If
|
||||
api_selected = ""
|
||||
|
||||
If Not is_public Then Exit Sub
|
||||
|
||||
in_enum = True
|
||||
enum_size = enum_size + 1
|
||||
enums.Item(enum_size) = cls & "::" & Split(line)(1)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Maybe the end of the class, if so we can start with the Squirrel export pretty soon
|
||||
re.Pattern = "};"
|
||||
If re.Test(line) Then
|
||||
cls_level = cls_level - 1
|
||||
If cls_level <> 0 Then
|
||||
in_enum = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If cls = "" Then Exit Sub
|
||||
start_squirrel_define_on_next_line = True
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Empty/white lines. When we may do the Squirrel export, do that export.
|
||||
re.Pattern = "^([ ]*)$"
|
||||
If re.Test(line) Then
|
||||
Dim namespace_opened, api_cls, api_super_cls, i, mlen, spaces
|
||||
|
||||
If Not start_squirrel_define_on_next_line Then Exit Sub
|
||||
|
||||
If cls_in_api <> "true" Then
|
||||
ResetReader
|
||||
Exit Sub
|
||||
End If
|
||||
If Not has_fileheader Then
|
||||
DumpFileHeader api, file
|
||||
has_fileheader = True
|
||||
End If
|
||||
|
||||
is_public = False
|
||||
namespace_opened = False
|
||||
|
||||
re.Pattern = "^Script"
|
||||
api_cls = re.Replace(cls, api)
|
||||
api_super_cls = re.Replace(super_cls, api)
|
||||
|
||||
file.WriteLine ""
|
||||
|
||||
If api = "Template" Then
|
||||
' First check whether we have enums to print
|
||||
If enum_size <> 0 Then
|
||||
If Not namespace_opened Then
|
||||
file.WriteLine "namespace SQConvert {"
|
||||
namespace_opened = True
|
||||
End If
|
||||
file.WriteLine " /* Allow enums to be used as Squirrel parameters */"
|
||||
For i = 1 To enum_size
|
||||
file.WriteLine " template <> inline " & enums.Item(i) & " GetParam(ForceType<" & enums.Item(i) & ">, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (" & enums.Item(i) & ")tmp; }"
|
||||
file.WriteLine " template <> inline int Return<" & enums.Item(i) & ">(HSQUIRRELVM vm, " & enums.Item(i) & " res) { sq_pushinteger(vm, (int32)res); return 1; }"
|
||||
Next
|
||||
End If
|
||||
|
||||
' Then check whether we have structs/classes to print
|
||||
If struct_size <> 0 Then
|
||||
If Not namespace_opened Then
|
||||
file.WriteLine "namespace SQConvert {"
|
||||
namespace_opened = True
|
||||
End If
|
||||
file.WriteLine " /* Allow inner classes/structs to be used as Squirrel parameters */"
|
||||
For i = 1 To struct_size
|
||||
DumpClassTemplates structs.Item(i), file
|
||||
Next
|
||||
End If
|
||||
|
||||
If Not namespace_opened Then
|
||||
file.WriteLine "namespace SQConvert {"
|
||||
namespace_opened = True
|
||||
Else
|
||||
file.WriteLine ""
|
||||
End If
|
||||
file.WriteLine " /* Allow " & cls & " to be used as Squirrel parameter */"
|
||||
DumpClassTemplates cls, file
|
||||
|
||||
file.WriteLine "} // namespace SQConvert"
|
||||
|
||||
ResetReader
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
file.WriteLine ""
|
||||
file.WriteLine "template <> const char *GetClassName<" & cls & ", ST_" & UCase(api) & ">() { return " & Chr(34) & api_cls & Chr(34) & "; }"
|
||||
file.WriteLine ""
|
||||
|
||||
' Then do the registration functions of the class.
|
||||
file.WriteLine "void SQ" & api_cls & "_Register(Squirrel *engine)"
|
||||
file.WriteLine "{"
|
||||
file.WriteLine " DefSQClass<" & cls & ", ST_" & UCase(api) & "> SQ" & api_cls & "(" & Chr(34) & api_cls & Chr(34) & ");"
|
||||
If super_cls = "Text" Or super_cls = "ScriptObject" Or super_cls = "AIAbstractiveList::Valuator" Then
|
||||
file.WriteLine " SQ" & api_cls & ".PreRegister(engine);"
|
||||
Else
|
||||
file.WriteLine " SQ" & api_cls & ".PreRegister(engine, " & Chr(34) & api_super_cls & Chr(34) & ");"
|
||||
End If
|
||||
If super_cls <> "ScriptEvent" Then
|
||||
If cls_param(2) = "v" Then
|
||||
file.WriteLine " SQ" & api_cls & ".AddSQAdvancedConstructor(engine);"
|
||||
Else
|
||||
file.WriteLine " SQ" & api_cls & ".AddConstructor<void (" & cls & "::*)(" & cls_param(0) & "), " & cls_param(1) & ">(engine, " & Chr(34) & cls_param(2) & Chr(34) & ");"
|
||||
End If
|
||||
End If
|
||||
file.WriteLine ""
|
||||
|
||||
' Enum values
|
||||
mlen = 0
|
||||
For i = 1 To enum_value_size
|
||||
If mlen <= Len(enum_value.Item(i)) Then mlen = Len(enum_value.Item(i))
|
||||
Next
|
||||
For i = 1 To enum_value_size
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQConst(engine, " & cls & "::" & enum_value.Item(i) & ", " & Space(mlen - Len(enum_value.Item(i))) & Chr(34) & enum_value.Item(i) & Chr(34) & ");"
|
||||
Next
|
||||
If enum_value_size <> 0 Then file.WriteLine ""
|
||||
|
||||
' Const values
|
||||
mlen = 0
|
||||
For i = 1 To const_size
|
||||
If mlen <= Len(const_value.Item(i)) Then mlen = Len(const_value.Item(i))
|
||||
Next
|
||||
For i = 1 To const_size
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQConst(engine, " & cls & "::" & const_value.Item(i) & ", " & Space(mlen - Len(const_value.Item(i))) & Chr(34) & const_value.Item(i) & Chr(34) & ");"
|
||||
Next
|
||||
If const_size <> 0 Then file.WriteLine ""
|
||||
|
||||
' Mapping of OTTD strings to errors
|
||||
mlen = 0
|
||||
For i = 1 To enum_string_to_error_size
|
||||
If mlen <= Len(enum_string_to_error_mapping_string.Item(i)) Then mlen = Len(enum_string_to_error_mapping_string.Item(i))
|
||||
Next
|
||||
For i = 1 To enum_string_to_error_size
|
||||
file.WriteLine " ScriptError::RegisterErrorMap(" & enum_string_to_error_mapping_string.Item(i) & ", " & Space(mlen - Len(enum_string_to_error_mapping_string.Item(i))) & cls & "::" & enum_string_to_error_mapping_error.Item(i) & ");"
|
||||
Next
|
||||
If enum_string_to_error_size <> 0 Then file.WriteLine ""
|
||||
|
||||
' Mapping of errors to human 'readable' strings.
|
||||
mlen = 0
|
||||
For i = 1 To enum_error_to_string_size
|
||||
If mlen <= Len(enum_error_to_string_mapping.Item(i)) Then mlen = Len(enum_error_to_string_mapping.Item(i))
|
||||
Next
|
||||
For i = 1 To enum_error_to_string_size
|
||||
file.WriteLine " ScriptError::RegisterErrorMapString(" & cls & "::" & enum_error_to_string_mapping.Item(i) & ", " & Space(mlen - Len(enum_error_to_string_mapping.Item(i))) & Chr(34) & enum_error_to_string_mapping.Item(i) & Chr(34) & ");"
|
||||
Next
|
||||
If enum_error_to_string_size <> 0 Then file.WriteLine ""
|
||||
|
||||
' Static methods
|
||||
mlen = 0
|
||||
For i = 1 To static_method_size
|
||||
If mlen <= Len(static_methods.Item(i)(0)) Then mlen = Len(static_methods.Item(i)(0))
|
||||
Next
|
||||
For i = 1 To static_method_size
|
||||
If static_methods.Item(i)(2) = "v" Then
|
||||
spaces = mlen - Len(static_methods.Item(i)(0)) - 8
|
||||
If spaces < 0 Then spaces = 0
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQAdvancedStaticMethod(engine, &" & cls & "::" & static_methods.Item(i)(0) & ", " & Space(spaces) & Chr(34) & static_methods.Item(i)(0) & Chr(34) & ");"
|
||||
Else
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQStaticMethod(engine, &" & cls & "::" & static_methods.Item(i)(0) & ", " & Space(mlen - Len(static_methods.Item(i)(0))) & Chr(34) & static_methods.Item(i)(0) & Chr(34) & ", " & Space(mlen - Len(static_methods.Item(i)(0))) & static_methods.Item(i)(1) & ", " & Chr(34) & static_methods.Item(i)(2) & Chr(34) & ");"
|
||||
End If
|
||||
Next
|
||||
If static_method_size <> 0 Then file.WriteLine ""
|
||||
|
||||
' Non-static methods
|
||||
mlen = 0
|
||||
For i = 1 To method_size
|
||||
If mlen <= Len(methods.Item(i)(0)) Then mlen = Len(methods.Item(i)(0))
|
||||
Next
|
||||
For i = 1 To method_size
|
||||
If methods.Item(i)(2) = "v" Then
|
||||
spaces = mlen - Len(methods.Item(i)(0)) - 8
|
||||
If spaces < 0 Then spaces = 0
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQAdvancedMethod(engine, &" & cls & "::" & methods.Item(i)(0) & ", " & Space(spaces) & Chr(34) & methods.Item(i)(0) & Chr(34) & ");"
|
||||
Else
|
||||
file.WriteLine " SQ" & api_cls & ".DefSQMethod(engine, &" & cls & "::" & methods.Item(i)(0) & ", " & Space(mlen - Len(methods.Item(i)(0))) & Chr(34) & methods.Item(i)(0) & Chr(34) & ", " & Space(mlen - Len(methods.Item(i)(0))) & methods.Item(i)(1) & ", " & Chr(34) & methods.Item(i)(2) & Chr(34) & ");"
|
||||
End If
|
||||
Next
|
||||
If method_size <> 0 Then file.WriteLine ""
|
||||
|
||||
file.WriteLine " SQ" & api_cls & ".PostRegister(engine);"
|
||||
file.WriteLine "}"
|
||||
|
||||
ResetReader
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Skip non-public functions
|
||||
If Not is_public Then Exit Sub
|
||||
|
||||
' Add enums
|
||||
If in_enum Then
|
||||
enum_value_size = enum_value_size + 1
|
||||
re.Pattern = "[, ]"
|
||||
re.Global = True
|
||||
enum_value.Item(enum_value_size) = re.Replace(split(line)(0), "")
|
||||
|
||||
' Check if this a special error enum
|
||||
re.Pattern = ".*::ErrorMessages"
|
||||
If re.Test(enums.Item(enum_size)) Then
|
||||
' syntax:
|
||||
' enum ErrorMessages {
|
||||
' ERR_SOME_ERROR, // [STR_ITEM1, STR_ITEM2, ...]
|
||||
' }
|
||||
|
||||
' Set the mappings
|
||||
re.Pattern = "\[.*\]"
|
||||
If re.Test(line) Then
|
||||
Dim mappings
|
||||
mappings = re.Execute(line)(0).Value
|
||||
re.Pattern = "[\[ \]]"
|
||||
mappings = re.Replace(mappings, "")
|
||||
|
||||
mappings = Split(mappings, ",")
|
||||
For i = LBound(mappings) To UBound(mappings)
|
||||
enum_string_to_error_size = enum_string_to_error_size + 1
|
||||
enum_string_to_error_mapping_string.Item(enum_string_to_error_size) = mappings(i)
|
||||
enum_string_to_error_mapping_error.Item(enum_string_to_error_size) = enum_value.Item(enum_value_size)
|
||||
Next
|
||||
|
||||
enum_error_to_string_size = enum_error_to_string_size + 1
|
||||
enum_error_to_string_mapping.Item(enum_error_to_string_size) = enum_value.Item(enum_value_size)
|
||||
End If
|
||||
End If
|
||||
re.Global = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Add a const (non-enum) value
|
||||
re.Pattern = "^[ ]*static const \w+ \w+ = -?\(?\w*\)?\w+;"
|
||||
If re.Test(line) Then
|
||||
const_size = const_size + 1
|
||||
const_value.Item(const_size) = Split(line)(3)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Add a method to the list
|
||||
re.Pattern = "^.*\(.*\).*$"
|
||||
If re.Test(line) Then
|
||||
Dim is_static, param_s, func, funcname, params, types
|
||||
If cls_level <> 1 Then Exit Sub
|
||||
re.Pattern = "~"
|
||||
If re.Test(line) Then
|
||||
If api_selected <> "" Then
|
||||
WScript.Echo "Destructor for '" & cls & "' has @api. Tag ignored."
|
||||
api_selected = ""
|
||||
End If
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
re.Pattern = "static"
|
||||
is_static = re.Test(line)
|
||||
re.Pattern = "\bvirtual\b"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "\bstatic\b"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "\bconst\b"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "{.*"
|
||||
line = re.Replace(line, "")
|
||||
param_s = line
|
||||
re.Pattern = "\*"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "\(.*"
|
||||
line = re.Replace(line, "")
|
||||
re.Pattern = "^[ ]*"
|
||||
line = re.Replace(line, "")
|
||||
|
||||
re.Pattern = ".*\("
|
||||
param_s = re.Replace(param_s, "")
|
||||
re.Pattern = "\).*"
|
||||
param_s = re.Replace(param_s, "")
|
||||
|
||||
func = Split(line)
|
||||
If UBound(func) > 0 Then
|
||||
funcname = func(1)
|
||||
Else
|
||||
funcname = ""
|
||||
End If
|
||||
If func(0) = cls And funcname = "" Then
|
||||
If api_selected <> "" Then
|
||||
WScript.Echo "Constructor for '" & cls & "' has @api. Tag ignored."
|
||||
api_selected = ""
|
||||
End If
|
||||
cls_param(0) = param_s
|
||||
If param_s = "" Then Exit Sub
|
||||
ElseIf funcname = "" Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
params = Split(param_s, ",")
|
||||
If is_static Then
|
||||
types = "."
|
||||
Else
|
||||
types = "x"
|
||||
End If
|
||||
For i = LBound(params) To UBound(params)
|
||||
Do ' null loop for logic short-circuit
|
||||
re.Pattern = "^[ ]*"
|
||||
params(i) = re.Replace(params(i), "")
|
||||
re.Pattern = "\*|&"
|
||||
If re.Test(params(i)) Then
|
||||
re.Pattern = "^char"
|
||||
If re.test(params(i)) Then
|
||||
' Many types can be converted to string, so use '.', not 's'. (handled by our glue code)
|
||||
types = types & "."
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^void"
|
||||
If re.test(params(i)) Then
|
||||
types = types & "p"
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^Array"
|
||||
If re.test(params(i)) Then
|
||||
types = types & "a"
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^struct Array"
|
||||
If re.test(params(i)) Then
|
||||
types = types & "a"
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^Text"
|
||||
If re.test(params(i)) Then
|
||||
types = types & "."
|
||||
Exit Do
|
||||
End If
|
||||
types = types & "x"
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^bool"
|
||||
If re.Test(params(i)) Then
|
||||
types = types & "b"
|
||||
Exit Do
|
||||
End If
|
||||
re.Pattern = "^HSQUIRRELVM"
|
||||
If re.Test(params(i)) Then
|
||||
types = "v"
|
||||
Exit Do
|
||||
End If
|
||||
types = types & "i"
|
||||
Loop While False ' end of null loop
|
||||
Next
|
||||
i = i + 1
|
||||
|
||||
' Check if we want to publish this function
|
||||
If api_selected = "" Then api_selected = cls_in_api
|
||||
If api_selected = "false" Then
|
||||
api_selected = ""
|
||||
Exit Sub
|
||||
End If
|
||||
api_selected = ""
|
||||
|
||||
If func(0) = cls And funcname = "" Then
|
||||
cls_param(1) = i
|
||||
cls_param(2) = types
|
||||
Exit Sub
|
||||
End If
|
||||
If Left(funcname, 1) = "_" And types <> "v" Then Exit Sub
|
||||
If is_static Then
|
||||
static_method_size = static_method_size + 1
|
||||
static_methods.Item(static_method_size) = Array(funcname, i, types)
|
||||
Exit Sub
|
||||
End If
|
||||
method_size = method_size + 1
|
||||
methods.Item(method_size) = Array(funcname, i, types)
|
||||
Exit Sub
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub SquirrelExport(api, srcfilename, dstfilename)
|
||||
Dim src, dst, line
|
||||
Set src = FSO.OpenTextFile(srcfilename, 1)
|
||||
Set dst = FSO.OpenTextFile(dstfilename, 2, True)
|
||||
|
||||
enum_size = 0
|
||||
Set enums = CreateObject("Scripting.Dictionary")
|
||||
enum_value_size = 0
|
||||
Set enum_value = CreateObject("Scripting.Dictionary")
|
||||
enum_string_to_error_size = 0
|
||||
Set enum_string_to_error_mapping_string = CreateObject("Scripting.Dictionary")
|
||||
Set enum_string_to_error_mapping_error = CreateObject("Scripting.Dictionary")
|
||||
enum_error_to_string_size = 0
|
||||
Set enum_error_to_string_mapping = CreateObject("Scripting.Dictionary")
|
||||
const_size = 0
|
||||
Set const_value = CreateObject("Scripting.Dictionary")
|
||||
struct_size = 0
|
||||
Set structs = CreateObject("Scripting.Dictionary")
|
||||
method_size = 0
|
||||
Set methods = CreateObject("Scripting.Dictionary")
|
||||
static_method_size = 0
|
||||
Set static_methods = CreateObject("Scripting.Dictionary")
|
||||
super_cls = ""
|
||||
cls = ""
|
||||
api_selected = ""
|
||||
cls_in_api = ""
|
||||
start_squirrel_define_on_next_line = False
|
||||
has_fileheader = False
|
||||
cls_level = 0
|
||||
apis = LCase(api)
|
||||
If apis = "gs" Then apis = "game"
|
||||
|
||||
While Not src.AtEndOfStream
|
||||
line = src.ReadLine
|
||||
SquirrelExportParse api, line, dst
|
||||
Wend
|
||||
|
||||
src.Close
|
||||
dst.Close
|
||||
End Sub
|
||||
|
||||
Function SortDict(dict)
|
||||
Set SortDict = CreateObject("Scripting.Dictionary")
|
||||
While dict.Count <> 0
|
||||
Dim first, i
|
||||
first = ""
|
||||
For Each i in dict
|
||||
If first = "" Or StrComp(first, i) = 1 Then first = i
|
||||
Next
|
||||
SortDict.Add first, first
|
||||
dict.Remove(first)
|
||||
Wend
|
||||
End Function
|
||||
|
||||
Sub ExportInstanceParse(apiuc, apilc, line, file)
|
||||
Dim re, fname, f, files, r, regs
|
||||
Set re = New RegExp
|
||||
|
||||
re.Pattern = "\.hpp\.sq"
|
||||
If re.Test(line) Then
|
||||
re.Pattern = "template"
|
||||
If re.Test(line) Then
|
||||
file.WriteLine line
|
||||
End If
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
re.Pattern = "SQ" & apiuc & "Controller_Register"
|
||||
If re.Test(line) Then
|
||||
file.WriteLine line
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
re.Pattern = "SQ" & apiuc & ".*_Register"
|
||||
If re.Test(line) Then Exit Sub
|
||||
|
||||
re.Pattern = "Note: this line is a marker in squirrel_export.sh. Do not change!"
|
||||
If re.Test(line) Then
|
||||
file.WriteLine line
|
||||
Set files = CreateObject("Scripting.Dictionary")
|
||||
For Each fname In FSO.GetFolder(".").Files
|
||||
Do ' null loop for logic short-circuit
|
||||
re.Pattern = ".*_(.*)\.hpp\.sq"
|
||||
If Not re.Test(fname) Then Exit Do
|
||||
Set f = FSO.OpenTextFile(fname, 1)
|
||||
fname = fname.Name
|
||||
re.Pattern = "^void SQ" & apiuc & ".*Register\(Squirrel \*engine\)$"
|
||||
While Not f.AtEndOfStream
|
||||
If re.Test(f.ReadLine) And Not files.Exists(fname) Then
|
||||
files.Add fname, fname
|
||||
End If
|
||||
Wend
|
||||
f.Close
|
||||
Loop While False ' end of null loop
|
||||
Next
|
||||
Set files = SortDict(files)
|
||||
For Each f in files
|
||||
file.WriteLine "#include " & Chr(34) & "../script/api/" & apilc & "/" & f & Chr(34)
|
||||
Next
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
re.Pattern = "/\* Register all classes \*/"
|
||||
If re.Test(line) Then
|
||||
file.WriteLine line
|
||||
Set regs = CreateObject("Scripting.Dictionary")
|
||||
' List needs to be registered with squirrel before all List subclasses
|
||||
file.WriteLine " SQ" & apiuc & "List_Register(this->engine);"
|
||||
For Each fname In FSO.GetFolder(".").Files
|
||||
Do ' null loop for logic short-circuit
|
||||
re.Pattern = ".*_(.*)\.hpp\.sq"
|
||||
If Not re.Test(fname) Then Exit Do
|
||||
Set f = FSO.OpenTextFile(fname, 1)
|
||||
While Not f.AtEndOfStream
|
||||
Do ' null loop for logic short-circuit
|
||||
r = f.ReadLine
|
||||
re.Pattern = "^void SQ" & apiuc & ".*Register\(Squirrel \*engine\)$"
|
||||
If Not re.Test(r) Then Exit Do
|
||||
re.Pattern = "SQ" & apiuc & "List_Register"
|
||||
If re.Test(r) Then Exit Do
|
||||
re.Pattern = "^.*void "
|
||||
r = re.Replace(r, "")
|
||||
re.Pattern = "Squirrel \*"
|
||||
r = re.Replace(r, "this->")
|
||||
re.Pattern = "$"
|
||||
r = re.Replace(r, ";")
|
||||
re.Pattern = "_Register"
|
||||
r = re.Replace(r, "0000Register")
|
||||
If Not regs.Exists(r) Then regs.Add r, r
|
||||
Loop While False ' end of null loop
|
||||
Wend
|
||||
f.Close
|
||||
Loop While False ' end of null loop
|
||||
Next
|
||||
Set regs = SortDict(regs)
|
||||
re.Pattern = "0000Register"
|
||||
For Each r in regs.Items
|
||||
r = re.Replace(r, "_Register")
|
||||
If r <> "SQ" & apiuc & "Controller_Register(this->engine);" Then file.WriteLine " " & r
|
||||
Next
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
file.WriteLine line
|
||||
End Sub
|
||||
|
||||
Sub ExportInstance(apiuc, apilc, srcfilename, dstfilename)
|
||||
Dim src, dst, line
|
||||
Set src = FSO.OpenTextFile(srcfilename, 1)
|
||||
Set dst = FSO.OpenTextFile(dstfilename, 2, True)
|
||||
|
||||
While Not src.AtEndOfStream
|
||||
line = src.ReadLine
|
||||
ExportInstanceParse apiuc, apilc, line, dst
|
||||
Wend
|
||||
|
||||
src.Close
|
||||
dst.Close
|
||||
End Sub
|
||||
|
||||
' Recursive entry point
|
||||
Sub Main
|
||||
Dim WSH, scriptdir, apilc, re, api, apiuc, f, bf
|
||||
Set WSH = CreateObject("WScript.Shell")
|
||||
Set re = New RegExp
|
||||
|
||||
' This must be called from within a src/???/api directory.
|
||||
scriptdir = FSO.GetParentFolderName(WScript.ScriptFullName)
|
||||
apilc = WSH.CurrentDirectory
|
||||
re.Pattern = "\\api"
|
||||
apilc = re.Replace(apilc, "")
|
||||
re.Pattern = ".*\\"
|
||||
apilc = re.Replace(apilc, "")
|
||||
|
||||
' Check if we are in the root directory of the API, as then we generate all APIs
|
||||
If apilc = "script" Then
|
||||
For Each api In FSO.GetFolder(".").SubFolders
|
||||
WScript.Echo "Generating for API '" & api.Name & "' ..."
|
||||
WSH.CurrentDirectory = api
|
||||
Main
|
||||
Next
|
||||
WScript.Quit 0
|
||||
End If
|
||||
|
||||
Select Case apilc
|
||||
Case "template" apiuc = "Template"
|
||||
Case "ai" apiuc = "AI"
|
||||
Case "game" apiuc = "GS"
|
||||
Case Else
|
||||
WScript.Echo "Unknown API type."
|
||||
Exit Sub
|
||||
End Select
|
||||
|
||||
For Each f in FSO.GetFolder("..").Files
|
||||
Do ' null loop for logic short-circuit
|
||||
re.Pattern = ".*\.hpp"
|
||||
If Not re.Test(f) Then Exit Do
|
||||
' ScriptController has custom code, and should not be generated
|
||||
If f.Name = "script_controller.hpp" Then Exit Do
|
||||
re.Pattern = "script_"
|
||||
bf = re.Replace(f.name, apilc & "_")
|
||||
SquirrelExport apiuc, f, bf & ".tmp"
|
||||
If IsEmptyFile(bf & ".tmp") Then
|
||||
If FSO.FileExists(bf & ".sq") Then
|
||||
WScript.Echo "Deleted: " & bf & ".sq"
|
||||
FSO.DeleteFile bf & ".sq"
|
||||
End If
|
||||
FSO.DeleteFile bf & ".tmp"
|
||||
ElseIf Not FSO.FileExists(bf & ".sq") Or Not CompareFiles(bf & ".sq", bf & ".tmp") Then
|
||||
If FSO.FileExists(bf & ".sq") Then FSO.DeleteFile bf & ".sq"
|
||||
FSO.MoveFile bf & ".tmp", bf & ".sq"
|
||||
WScript.Echo "Updated: " & bf & ".sq"
|
||||
Else
|
||||
FSO.DeleteFile bf & ".tmp"
|
||||
End If
|
||||
Loop While False ' end of null loop
|
||||
Next
|
||||
|
||||
' Remove .hpp.sq if .hpp doesn't exist anymore
|
||||
For Each f in FSO.GetFolder(".").Files
|
||||
Do ' null loop for logic short-circuit
|
||||
re.Pattern = ".*\.hpp\.sq"
|
||||
If Not re.Test(f) Then Exit Do
|
||||
f = f.Name
|
||||
re.Pattern = "\.hpp\.sq$"
|
||||
f = re.Replace(f, ".hpp")
|
||||
re.Pattern = apilc & "_"
|
||||
f = re.Replace(f, "script_")
|
||||
If Not FSO.FileExists("..\" & f) Then
|
||||
WScript.Echo "Deleted: " & f & ".sq"
|
||||
'FSO.DeleteFile f & ".sq"
|
||||
End If
|
||||
Loop While False ' end of null loop
|
||||
Next
|
||||
|
||||
If apilc = "template" Then Exit Sub
|
||||
|
||||
' Add stuff to ${apilc}_instance.cpp
|
||||
f = "..\..\..\" & apilc & "\" & apilc & "_instance.cpp"
|
||||
ExportInstance apiuc, apilc, f, f & ".tmp"
|
||||
If Not FSO.FileExists(f) Or Not CompareFiles(f, f & ".tmp") Then
|
||||
If FSO.FileExists(f) Then FSO.DeleteFile f
|
||||
FSO.MoveFile f & ".tmp", f
|
||||
WScript.Echo "Updated: " & f
|
||||
Else
|
||||
FSO.DeleteFile f & ".tmp"
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Main
|
@@ -1317,6 +1317,15 @@ static bool MaxVehiclesChanged(int32 p1)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool InvalidateShipPathCache(int32 p1)
|
||||
{
|
||||
Ship *s;
|
||||
FOR_ALL_SHIPS(s) {
|
||||
s->path.clear();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user