Merge branch 'master' into jgrpp
# Conflicts: # cmake/CompileFlags.cmake # src/3rdparty/squirrel/squirrel/sqclosure.h # src/3rdparty/squirrel/squirrel/sqobject.h # src/3rdparty/squirrel/squirrel/sqvm.h # src/aircraft.h # src/airport_gui.cpp # src/blitter/32bpp_sse_func.hpp # src/blitter/null.hpp # src/bridge_gui.cpp # src/build_vehicle_gui.cpp # src/cargotype.h # src/cheat_gui.cpp # src/command.cpp # src/command_func.h # src/company_gui.cpp # src/console_gui.cpp # src/date_gui.cpp # src/depot_gui.cpp # src/dock_gui.cpp # src/economy.cpp # src/error_gui.cpp # src/fileio.cpp # src/fios.cpp # src/fios_gui.cpp # src/fontcache/spritefontcache.h # src/framerate_gui.cpp # src/game/game_text.cpp # src/gamelog.cpp # src/genworld_gui.cpp # src/gfx_layout_fallback.cpp # src/group_gui.cpp # src/highscore_gui.cpp # src/hotkeys.cpp # src/industry_cmd.cpp # src/industry_gui.cpp # src/landscape.cpp # src/main_gui.cpp # src/misc_cmd.cpp # src/misc_gui.cpp # src/network/core/tcp_game.cpp # src/network/core/udp.cpp # src/network/network_chat_gui.cpp # src/network/network_content_gui.cpp # src/network/network_gui.cpp # src/network/network_server.cpp # src/network/network_server.h # src/newgrf_airport.cpp # src/newgrf_airport.h # src/newgrf_airporttiles.cpp # src/newgrf_airporttiles.h # src/newgrf_animation_base.h # src/newgrf_canal.cpp # src/newgrf_commons.h # src/newgrf_config.cpp # src/newgrf_debug_gui.cpp # src/newgrf_engine.cpp # src/newgrf_engine.h # src/newgrf_generic.cpp # src/newgrf_gui.cpp # src/newgrf_house.cpp # src/newgrf_house.h # src/newgrf_industries.cpp # src/newgrf_industries.h # src/newgrf_industrytiles.cpp # src/newgrf_industrytiles.h # src/newgrf_object.cpp # src/newgrf_object.h # src/newgrf_railtype.cpp # src/newgrf_railtype.h # src/newgrf_roadstop.cpp # src/newgrf_roadstop.h # src/newgrf_roadtype.cpp # src/newgrf_roadtype.h # src/newgrf_spritegroup.cpp # src/newgrf_spritegroup.h # src/newgrf_station.cpp # src/newgrf_station.h # src/newgrf_town.cpp # src/newgrf_town.h # src/news_gui.cpp # src/object_gui.cpp # src/order_gui.cpp # src/os/macosx/crashlog_osx.cpp # src/os/unix/crashlog_unix.cpp # src/os/windows/crashlog_win.cpp # src/os/windows/win32.cpp # src/os/windows/win32_main.cpp # src/pathfinder/npf/npf.cpp # src/pathfinder/npf/queue.cpp # src/rail_cmd.cpp # src/rail_gui.cpp # src/road_gui.cpp # src/roadveh.h # src/saveload/saveload.cpp # src/screenshot.cpp # src/script/api/script_text.hpp # src/settings.cpp # src/settings_gui.cpp # src/settings_internal.h # src/settings_table.cpp # src/signs_cmd.cpp # src/signs_gui.cpp # src/smallmap_gui.cpp # src/smallmap_gui.h # src/spriteloader/grf.hpp # src/station_cmd.cpp # src/station_gui.cpp # src/station_map.h # src/statusbar_gui.cpp # src/stdafx.h # src/strgen/strgen.cpp # src/table/newgrf_debug_data.h # src/terraform_gui.cpp # src/timer/timer_game_calendar.cpp # src/timer/timer_window.cpp # src/town.h # src/town_cmd.cpp # src/town_gui.cpp # src/train_gui.cpp # src/transparency_gui.cpp # src/vehicle_gui.cpp # src/water_cmd.cpp # src/waypoint_cmd.cpp # src/widget.cpp # src/widget_type.h # src/widgets/dropdown.cpp # src/widgets/rail_widget.h # src/widgets/terraform_widget.h # src/window.cpp # src/window_gui.h
This commit is contained in:
7
.github/workflows/ci-build.yml
vendored
7
.github/workflows/ci-build.yml
vendored
@@ -86,10 +86,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: Clang
|
- name: Clang - Debug
|
||||||
compiler: clang
|
compiler: clang
|
||||||
cxxcompiler: clang++
|
cxxcompiler: clang++
|
||||||
libraries: libsdl2-dev
|
libraries: libsdl2-dev
|
||||||
|
- name: Clang - Release
|
||||||
|
compiler: clang
|
||||||
|
cxxcompiler: clang++
|
||||||
|
libraries: libsdl2-dev
|
||||||
|
extra-cmake-parameters: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF
|
||||||
- name: GCC - SDL2
|
- name: GCC - SDL2
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
cxxcompiler: g++
|
cxxcompiler: g++
|
||||||
|
1
.github/workflows/codeql.yml
vendored
1
.github/workflows/codeql.yml
vendored
@@ -54,7 +54,6 @@ jobs:
|
|||||||
liblzma-dev \
|
liblzma-dev \
|
||||||
liblzo2-dev \
|
liblzo2-dev \
|
||||||
libsdl2-dev \
|
libsdl2-dev \
|
||||||
nlohmann-json3-dev \
|
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
# EOF
|
# EOF
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
@@ -573,6 +573,12 @@ See the comments in the source files in `src/3rdparty/md5` for the complete lice
|
|||||||
The fmt implementation in `src/3rdparty/fmt` is licensed under the MIT license.
|
The fmt implementation in `src/3rdparty/fmt` is licensed under the MIT license.
|
||||||
See `src/3rdparty/fmt/LICENSE.rst` for the complete license text.
|
See `src/3rdparty/fmt/LICENSE.rst` for the complete license text.
|
||||||
|
|
||||||
|
The nlohmann json implementation in `src/3rdparty/nlohmann` is licensed under the MIT license.
|
||||||
|
See `src/3rdparty/nlohmann/LICENSE.MIT` for the complete license text.
|
||||||
|
|
||||||
|
The OpenGL API in `src/3rdparty/opengl` is licensed under the MIT license.
|
||||||
|
See `src/3rdparty/opengl/khrplatform.h` for the complete license text.
|
||||||
|
|
||||||
The catch2 implementation in `src/3rdparty/catch2` is licensed under the Boost Software License, Version 1.0.
|
The catch2 implementation in `src/3rdparty/catch2` is licensed under the Boost Software License, Version 1.0.
|
||||||
See `src/3rdparty/catch2/LICENSE.txt` for the complete license text.
|
See `src/3rdparty/catch2/LICENSE.txt` for the complete license text.
|
||||||
|
|
||||||
|
@@ -41,7 +41,11 @@ macro(compile_flags)
|
|||||||
#set(IS_STABLE_RELEASE "$<AND:$<NOT:$<CONFIG:Debug>>,$<NOT:$<BOOL:${OPTION_USE_ASSERTS}>>>")
|
#set(IS_STABLE_RELEASE "$<AND:$<NOT:$<CONFIG:Debug>>,$<NOT:$<BOOL:${OPTION_USE_ASSERTS}>>>")
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_compile_options(/W3)
|
add_compile_options(
|
||||||
|
/W3
|
||||||
|
#/w34100 # 'identifier' : unreferenced formal parameter
|
||||||
|
/w34189 # 'identifier' : local variable is initialized but not referenced
|
||||||
|
)
|
||||||
if(MSVC_VERSION GREATER 1929 AND MSVC_VERSION LESS 1937 AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
if(MSVC_VERSION GREATER 1929 AND MSVC_VERSION LESS 1937 AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
# Starting with version 19.30 (fixed in version 19.37), there is an optimisation bug, see #9966 for details
|
# Starting with version 19.30 (fixed in version 19.37), there is an optimisation bug, see #9966 for details
|
||||||
# This flag disables the broken optimisation to work around the bug
|
# This flag disables the broken optimisation to work around the bug
|
||||||
@@ -62,6 +66,7 @@ macro(compile_flags)
|
|||||||
-Wformat=2
|
-Wformat=2
|
||||||
-Winit-self
|
-Winit-self
|
||||||
"$<$<COMPILE_LANGUAGE:CXX>:-Wnon-virtual-dtor>"
|
"$<$<COMPILE_LANGUAGE:CXX>:-Wnon-virtual-dtor>"
|
||||||
|
"$<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override>"
|
||||||
|
|
||||||
# Often parameters are unused, which is fine.
|
# Often parameters are unused, which is fine.
|
||||||
-Wno-unused-parameter
|
-Wno-unused-parameter
|
||||||
@@ -89,22 +94,6 @@ macro(compile_flags)
|
|||||||
endif()
|
endif()
|
||||||
endif(NOT CMAKE_BUILD_TYPE)
|
endif(NOT CMAKE_BUILD_TYPE)
|
||||||
|
|
||||||
# When we are a stable release (Release build + USE_ASSERTS not set),
|
|
||||||
# assertations are off, which trigger a lot of warnings. We disable
|
|
||||||
# these warnings for these releases.
|
|
||||||
#if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
# add_compile_options(
|
|
||||||
# "$<${IS_STABLE_RELEASE}:-Wno-unused-variable>"
|
|
||||||
# "$<${IS_STABLE_RELEASE}:-Wno-unused-but-set-parameter>"
|
|
||||||
# "$<${IS_STABLE_RELEASE}:-Wno-unused-but-set-variable>"
|
|
||||||
# )
|
|
||||||
#else (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
# add_compile_options(
|
|
||||||
# "$<${IS_STABLE_RELEASE}:-Wno-unused-variable>"
|
|
||||||
# "$<${IS_STABLE_RELEASE}:-Wno-unused-parameter>"
|
|
||||||
# )
|
|
||||||
#endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
|
|
||||||
# Ninja processes the output so the output from the compiler
|
# Ninja processes the output so the output from the compiler
|
||||||
# isn't directly to a terminal; hence, the default is
|
# isn't directly to a terminal; hence, the default is
|
||||||
# non-coloured output. We can override this to get nicely
|
# non-coloured output. We can override this to get nicely
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
/* see copyright notice in squirrel.h */
|
/* see copyright notice in squirrel.h */
|
||||||
#include <squirrel.h>
|
#include <squirrel.h>
|
||||||
#include <sqstdstring.h>
|
#include <sqstdstring.h>
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
#define scstrchr strchr
|
#define scstrchr strchr
|
||||||
#define scatoi atoi
|
#define scatoi atoi
|
||||||
|
3
src/3rdparty/squirrel/squirrel/sqbaselib.cpp
vendored
3
src/3rdparty/squirrel/squirrel/sqbaselib.cpp
vendored
@@ -12,7 +12,6 @@
|
|||||||
#include "sqfuncproto.h"
|
#include "sqfuncproto.h"
|
||||||
#include "sqclosure.h"
|
#include "sqclosure.h"
|
||||||
#include "sqclass.h"
|
#include "sqclass.h"
|
||||||
#include <stdarg.h>
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "../../../safeguards.h"
|
#include "../../../safeguards.h"
|
||||||
@@ -559,7 +558,7 @@ bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteger bott
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _hsort(HSQUIRRELVM v,SQObjectPtr &arr, SQInteger l, SQInteger r,SQInteger func)
|
bool _hsort(HSQUIRRELVM v,SQObjectPtr &arr, SQInteger, SQInteger,SQInteger func)
|
||||||
{
|
{
|
||||||
SQArray *a = _array(arr);
|
SQArray *a = _array(arr);
|
||||||
SQInteger i;
|
SQInteger i;
|
||||||
|
2
src/3rdparty/squirrel/squirrel/sqclass.cpp
vendored
2
src/3rdparty/squirrel/squirrel/sqclass.cpp
vendored
@@ -185,7 +185,7 @@ SQInstance::~SQInstance()
|
|||||||
if(_class){ Finalize(); } //if _class is null it was already finalized by the GC
|
if(_class){ Finalize(); } //if _class is null it was already finalized by the GC
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SQInstance::GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res)
|
bool SQInstance::GetMetaMethod(SQVM *,SQMetaMethod mm,SQObjectPtr &res)
|
||||||
{
|
{
|
||||||
if(type(_class->_metamethods[mm]) != OT_NULL) {
|
if(type(_class->_metamethods[mm]) != OT_NULL) {
|
||||||
res = _class->_metamethods[mm];
|
res = _class->_metamethods[mm];
|
||||||
|
6
src/3rdparty/squirrel/squirrel/sqclass.h
vendored
6
src/3rdparty/squirrel/squirrel/sqclass.h
vendored
@@ -54,13 +54,13 @@ public:
|
|||||||
bool SetAttributes(const SQObjectPtr &key,const SQObjectPtr &val);
|
bool SetAttributes(const SQObjectPtr &key,const SQObjectPtr &val);
|
||||||
bool GetAttributes(const SQObjectPtr &key,SQObjectPtr &outval);
|
bool GetAttributes(const SQObjectPtr &key,SQObjectPtr &outval);
|
||||||
void Lock() { _locked = true; if(_base) _base->Lock(); }
|
void Lock() { _locked = true; if(_base) _base->Lock(); }
|
||||||
void Release() {
|
void Release() override {
|
||||||
if (_hook) { _hook(_typetag,0);}
|
if (_hook) { _hook(_typetag,0);}
|
||||||
sq_delete_refcounted(this, SQClass);
|
sq_delete_refcounted(this, SQClass);
|
||||||
}
|
}
|
||||||
void Finalize();
|
void Finalize() override;
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
#endif
|
#endif
|
||||||
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
|
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
|
||||||
SQInstance *CreateInstance();
|
SQInstance *CreateInstance();
|
||||||
|
18
src/3rdparty/squirrel/squirrel/sqclosure.h
vendored
18
src/3rdparty/squirrel/squirrel/sqclosure.h
vendored
@@ -13,7 +13,7 @@ public:
|
|||||||
SQClosure *nc = new (SQAllocationTag{}) SQClosure(ss,func);
|
SQClosure *nc = new (SQAllocationTag{}) SQClosure(ss,func);
|
||||||
return nc;
|
return nc;
|
||||||
}
|
}
|
||||||
void Release(){
|
void Release() override {
|
||||||
sq_delete_refcounted(this,SQClosure);
|
sq_delete_refcounted(this,SQClosure);
|
||||||
}
|
}
|
||||||
SQClosure *Clone()
|
SQClosure *Clone()
|
||||||
@@ -31,8 +31,8 @@ public:
|
|||||||
bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
|
bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
|
||||||
static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret);
|
static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret);
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
void Finalize(){_outervalues.resize(0); }
|
void Finalize() override {_outervalues.resize(0); }
|
||||||
#endif
|
#endif
|
||||||
SQObjectPtr _env;
|
SQObjectPtr _env;
|
||||||
SQObjectPtr _function;
|
SQObjectPtr _function;
|
||||||
@@ -58,14 +58,14 @@ public:
|
|||||||
_state=eDead;
|
_state=eDead;
|
||||||
_stack.resize(0);
|
_stack.resize(0);
|
||||||
_closure=_null_;}
|
_closure=_null_;}
|
||||||
void Release(){
|
void Release() override {
|
||||||
sq_delete_refcounted(this,SQGenerator);
|
sq_delete_refcounted(this,SQGenerator);
|
||||||
}
|
}
|
||||||
bool Yield(SQVM *v);
|
bool Yield(SQVM *v);
|
||||||
bool Resume(SQVM *v,SQInteger target);
|
bool Resume(SQVM *v,SQInteger target);
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
void Finalize(){_stack.resize(0);_closure=_null_;}
|
void Finalize() override {_stack.resize(0);_closure=_null_;}
|
||||||
#endif
|
#endif
|
||||||
SQObjectPtr _closure;
|
SQObjectPtr _closure;
|
||||||
SQObjectPtrVec _stack;
|
SQObjectPtrVec _stack;
|
||||||
@@ -99,12 +99,12 @@ public:
|
|||||||
{
|
{
|
||||||
REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
|
REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
|
||||||
}
|
}
|
||||||
void Release(){
|
void Release() override {
|
||||||
sq_delete_refcounted(this,SQNativeClosure);
|
sq_delete_refcounted(this,SQNativeClosure);
|
||||||
}
|
}
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
void Finalize(){_outervalues.resize(0);}
|
void Finalize() override {_outervalues.resize(0);}
|
||||||
#endif
|
#endif
|
||||||
SQInteger _nparamscheck;
|
SQInteger _nparamscheck;
|
||||||
SQIntVec _typecheck;
|
SQIntVec _typecheck;
|
||||||
|
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#include <squirrel.h>
|
#include <squirrel.h>
|
||||||
#include "sqpcheader.h"
|
#include "sqpcheader.h"
|
||||||
#include <stdarg.h>
|
|
||||||
#include "sqopcodes.h"
|
#include "sqopcodes.h"
|
||||||
#include "sqstring.h"
|
#include "sqstring.h"
|
||||||
#include "sqfuncproto.h"
|
#include "sqfuncproto.h"
|
||||||
|
2
src/3rdparty/squirrel/squirrel/sqfuncproto.h
vendored
2
src/3rdparty/squirrel/squirrel/sqfuncproto.h
vendored
@@ -102,7 +102,7 @@ public:
|
|||||||
SQFunctionProto *f = new (SQSizedAllocationTag(size)) SQFunctionProto(ninstructions, nliterals, nparameters, nfunctions, noutervalues, nlineinfos, nlocalvarinfos, ndefaultparams);
|
SQFunctionProto *f = new (SQSizedAllocationTag(size)) SQFunctionProto(ninstructions, nliterals, nparameters, nfunctions, noutervalues, nlineinfos, nlocalvarinfos, ndefaultparams);
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
void Release(){
|
void Release() override {
|
||||||
_DESTRUCT_VECTOR(SQObjectPtr,_nliterals,_literals);
|
_DESTRUCT_VECTOR(SQObjectPtr,_nliterals,_literals);
|
||||||
_DESTRUCT_VECTOR(SQObjectPtr,_nparameters,_parameters);
|
_DESTRUCT_VECTOR(SQObjectPtr,_nparameters,_parameters);
|
||||||
_DESTRUCT_VECTOR(SQObjectPtr,_nfunctions,_functions);
|
_DESTRUCT_VECTOR(SQObjectPtr,_nfunctions,_functions);
|
||||||
|
4
src/3rdparty/squirrel/squirrel/sqobject.h
vendored
4
src/3rdparty/squirrel/squirrel/sqobject.h
vendored
@@ -113,7 +113,7 @@ struct SQRefCounted
|
|||||||
|
|
||||||
struct SQWeakRef : SQRefCounted
|
struct SQWeakRef : SQRefCounted
|
||||||
{
|
{
|
||||||
void Release();
|
void Release() override;
|
||||||
SQObject _obj;
|
SQObject _obj;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -391,7 +391,7 @@ struct SQCollectable : public SQRefCounted {
|
|||||||
SQCollectable *_next;
|
SQCollectable *_next;
|
||||||
SQCollectable *_prev;
|
SQCollectable *_prev;
|
||||||
SQSharedState *_sharedstate;
|
SQSharedState *_sharedstate;
|
||||||
virtual void Release()=0;
|
void Release() override=0;
|
||||||
virtual void EnqueueMarkObjectForChildren(class SQGCMarkerQueue &queue)=0;
|
virtual void EnqueueMarkObjectForChildren(class SQGCMarkerQueue &queue)=0;
|
||||||
void UnMark();
|
void UnMark();
|
||||||
virtual void Finalize()=0;
|
virtual void Finalize()=0;
|
||||||
|
2
src/3rdparty/squirrel/squirrel/sqstate.cpp
vendored
2
src/3rdparty/squirrel/squirrel/sqstate.cpp
vendored
@@ -274,7 +274,7 @@ void SQSharedState::EnqueueMarkObject(SQObjectPtr &o,SQGCMarkerQueue &queue)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SQInteger SQSharedState::CollectGarbage(SQVM *vm)
|
SQInteger SQSharedState::CollectGarbage(SQVM *)
|
||||||
{
|
{
|
||||||
SQInteger n=0;
|
SQInteger n=0;
|
||||||
SQVM *vms = _thread(_root_vm);
|
SQVM *vms = _thread(_root_vm);
|
||||||
|
2
src/3rdparty/squirrel/squirrel/sqstring.h
vendored
2
src/3rdparty/squirrel/squirrel/sqstring.h
vendored
@@ -19,7 +19,7 @@ public:
|
|||||||
static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 );
|
static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 );
|
||||||
static SQString *Create(SQSharedState *ss, const std::string &str) { return Create(ss, str.data(), str.size()); }
|
static SQString *Create(SQSharedState *ss, const std::string &str) { return Create(ss, str.data(), str.size()); }
|
||||||
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
|
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
|
||||||
void Release();
|
void Release() override;
|
||||||
SQSharedState *_sharedstate;
|
SQSharedState *_sharedstate;
|
||||||
SQString *_next; //chain for the string table
|
SQString *_next; //chain for the string table
|
||||||
SQInteger _len;
|
SQInteger _len;
|
||||||
|
6
src/3rdparty/squirrel/squirrel/squserdata.h
vendored
6
src/3rdparty/squirrel/squirrel/squserdata.h
vendored
@@ -17,10 +17,10 @@ struct SQUserData : SQDelegable
|
|||||||
return ud;
|
return ud;
|
||||||
}
|
}
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
void Finalize(){SetDelegate(nullptr);}
|
void Finalize() override {SetDelegate(nullptr);}
|
||||||
#endif
|
#endif
|
||||||
void Release() {
|
void Release() override {
|
||||||
if (_hook) _hook(_val,_size);
|
if (_hook) _hook(_val,_size);
|
||||||
sq_delete_refcounted(this, SQUserData);
|
sq_delete_refcounted(this, SQUserData);
|
||||||
}
|
}
|
||||||
|
6
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
6
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
@@ -112,16 +112,16 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NO_GARBAGE_COLLECTOR
|
#ifndef NO_GARBAGE_COLLECTOR
|
||||||
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
|
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
|
||||||
#endif
|
#endif
|
||||||
void Finalize();
|
void Finalize() override;
|
||||||
void GrowCallStack() {
|
void GrowCallStack() {
|
||||||
SQInteger newsize = _alloccallsstacksize*2;
|
SQInteger newsize = _alloccallsstacksize*2;
|
||||||
_callstackdata.resize(newsize);
|
_callstackdata.resize(newsize);
|
||||||
_callsstack = &_callstackdata[0];
|
_callsstack = &_callstackdata[0];
|
||||||
_alloccallsstacksize = newsize;
|
_alloccallsstacksize = newsize;
|
||||||
}
|
}
|
||||||
void Release(){ sq_delete_refcounted(this,SQVM); } //does nothing
|
void Release() override { sq_delete_refcounted(this,SQVM); } //does nothing
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
//stack functions for the api
|
//stack functions for the api
|
||||||
void Remove(SQInteger n);
|
void Remove(SQInteger n);
|
||||||
|
@@ -118,7 +118,7 @@ struct AIConfigWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_AIC_DECREASE_NUMBER:
|
case WID_AIC_DECREASE_NUMBER:
|
||||||
@@ -180,7 +180,7 @@ struct AIConfigWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget >= WID_AIC_TEXTFILE && widget < WID_AIC_TEXTFILE + TFT_CONTENT_END) {
|
if (widget >= WID_AIC_TEXTFILE && widget < WID_AIC_TEXTFILE + TFT_CONTENT_END) {
|
||||||
if (this->selected_slot == INVALID_COMPANY || AIConfig::GetConfig(this->selected_slot) == nullptr) return;
|
if (this->selected_slot == INVALID_COMPANY || AIConfig::GetConfig(this->selected_slot) == nullptr) return;
|
||||||
@@ -266,7 +266,7 @@ struct AIConfigWindow : public Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!IsEditable(this->selected_slot)) {
|
if (!IsEditable(this->selected_slot)) {
|
||||||
this->selected_slot = INVALID_COMPANY;
|
this->selected_slot = INVALID_COMPANY;
|
||||||
|
@@ -91,30 +91,30 @@ struct Aircraft FINAL : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
|
|||||||
/** We want to 'destruct' the right class. */
|
/** We want to 'destruct' the right class. */
|
||||||
virtual ~Aircraft() { this->PreDestructor(); }
|
virtual ~Aircraft() { this->PreDestructor(); }
|
||||||
|
|
||||||
void MarkDirty();
|
void MarkDirty() override;
|
||||||
void UpdateDeltaXY();
|
void UpdateDeltaXY() override;
|
||||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_REVENUE : EXPENSES_AIRCRAFT_RUN; }
|
ExpensesType GetExpenseType(bool income) const override { return income ? EXPENSES_AIRCRAFT_REVENUE : EXPENSES_AIRCRAFT_RUN; }
|
||||||
bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); }
|
bool IsPrimaryVehicle() const override { return this->IsNormalAircraft(); }
|
||||||
void GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const;
|
void GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const override;
|
||||||
Direction GetMapImageDirection() const { return this->First()->direction; }
|
Direction GetMapImageDirection() const { return this->First()->direction; }
|
||||||
int GetDisplaySpeed() const { return this->cur_speed; }
|
int GetDisplaySpeed() const override { return this->cur_speed; }
|
||||||
int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; }
|
int GetDisplayMaxSpeed() const override { return this->vcache.cached_max_speed; }
|
||||||
int GetSpeedOldUnits() const { return this->vcache.cached_max_speed * 10 / 128; }
|
int GetSpeedOldUnits() const { return this->vcache.cached_max_speed * 10 / 128; }
|
||||||
int GetCurrentMaxSpeed() const { return this->GetSpeedOldUnits(); }
|
int GetCurrentMaxSpeed() const override { return this->GetSpeedOldUnits(); }
|
||||||
Money GetRunningCost() const;
|
Money GetRunningCost() const override;
|
||||||
|
|
||||||
bool IsInDepot() const
|
bool IsInDepot() const override
|
||||||
{
|
{
|
||||||
assert(this->IsPrimaryVehicle());
|
assert(this->IsPrimaryVehicle());
|
||||||
return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile);
|
return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tick();
|
bool Tick() override;
|
||||||
void OnNewDay();
|
void OnNewDay() override;
|
||||||
void OnPeriodic();
|
void OnPeriodic() override;
|
||||||
uint Crash(bool flooded = false);
|
uint Crash(bool flooded = false) override;
|
||||||
TileIndex GetOrderStationLocation(StationID station);
|
TileIndex GetOrderStationLocation(StationID station) override;
|
||||||
ClosestDepot FindClosestDepot();
|
ClosestDepot FindClosestDepot() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the aircraft type is a normal flying device; eg
|
* Check if the aircraft type is a normal flying device; eg
|
||||||
|
@@ -1379,7 +1379,7 @@ void HandleMissingAircraftOrders(Aircraft *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TileIndex Aircraft::GetOrderStationLocation(StationID station)
|
TileIndex Aircraft::GetOrderStationLocation(StationID)
|
||||||
{
|
{
|
||||||
/* Orders are changed in flight, ensure going to the right station. */
|
/* Orders are changed in flight, ensure going to the right station. */
|
||||||
if (this->state == FLYING) {
|
if (this->state == FLYING) {
|
||||||
@@ -1713,31 +1713,31 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass *
|
|||||||
AirportMove(v, apc);
|
AirportMove(v, apc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_General(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_General(Aircraft *, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
error("OK, you shouldn't be here, check your Airport Scheme!");
|
error("OK, you shouldn't be here, check your Airport Scheme!");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_TakeOff(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_TakeOff(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
PlayAircraftSound(v); // play takeoffsound for airplanes
|
PlayAircraftSound(v); // play takeoffsound for airplanes
|
||||||
v->state = STARTTAKEOFF;
|
v->state = STARTTAKEOFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_StartTakeOff(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_StartTakeOff(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
v->state = ENDTAKEOFF;
|
v->state = ENDTAKEOFF;
|
||||||
v->UpdateDeltaXY();
|
v->UpdateDeltaXY();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_EndTakeOff(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_EndTakeOff(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
v->state = FLYING;
|
v->state = FLYING;
|
||||||
/* get the next position to go to, differs per airport */
|
/* get the next position to go to, differs per airport */
|
||||||
AircraftNextAirportPos_and_Order(v);
|
AircraftNextAirportPos_and_Order(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_HeliTakeOff(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_HeliTakeOff(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
v->state = FLYING;
|
v->state = FLYING;
|
||||||
v->UpdateDeltaXY();
|
v->UpdateDeltaXY();
|
||||||
@@ -1791,7 +1791,7 @@ static void AircraftEventHandler_Flying(Aircraft *v, const AirportFTAClass *apc)
|
|||||||
v->pos = apc->layout[v->pos].next_position;
|
v->pos = apc->layout[v->pos].next_position;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_Landing(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_Landing(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
v->state = ENDLANDING;
|
v->state = ENDLANDING;
|
||||||
AircraftLandAirplane(v); // maybe crash airplane
|
AircraftLandAirplane(v); // maybe crash airplane
|
||||||
@@ -1804,7 +1804,7 @@ static void AircraftEventHandler_Landing(Aircraft *v, const AirportFTAClass *apc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AircraftEventHandler_HeliLanding(Aircraft *v, const AirportFTAClass *apc)
|
static void AircraftEventHandler_HeliLanding(Aircraft *v, const AirportFTAClass *)
|
||||||
{
|
{
|
||||||
v->state = HELIENDLANDING;
|
v->state = HELIENDLANDING;
|
||||||
v->UpdateDeltaXY();
|
v->UpdateDeltaXY();
|
||||||
|
@@ -75,7 +75,7 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
this->InitNested(window_number);
|
this->InitNested(window_number);
|
||||||
this->OnInvalidateData();
|
this->OnInvalidateData();
|
||||||
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
||||||
this->last_user_action = WIDGET_LIST_END;
|
this->last_user_action = INVALID_WID_AT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Close() override
|
void Close() override
|
||||||
@@ -90,14 +90,12 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
bool can_build = CanBuildVehicleInfrastructure(VEH_AIRCRAFT);
|
bool can_build = CanBuildVehicleInfrastructure(VEH_AIRCRAFT);
|
||||||
this->SetWidgetsDisabledState(!can_build,
|
this->SetWidgetDisabledState(WID_AT_AIRPORT, !can_build);
|
||||||
WID_AT_AIRPORT,
|
|
||||||
WIDGET_LIST_END);
|
|
||||||
if (!can_build) {
|
if (!can_build) {
|
||||||
CloseWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
|
CloseWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
|
||||||
|
|
||||||
@@ -108,7 +106,7 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_AT_AIRPORT:
|
case WID_AT_AIRPORT:
|
||||||
@@ -128,7 +126,7 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OnPlaceObject(Point pt, TileIndex tile) override
|
void OnPlaceObject([[maybe_unused]] Point pt, TileIndex tile) override
|
||||||
{
|
{
|
||||||
switch (this->last_user_action) {
|
switch (this->last_user_action) {
|
||||||
case WID_AT_AIRPORT:
|
case WID_AT_AIRPORT:
|
||||||
@@ -143,12 +141,12 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) override
|
void OnPlaceDrag(ViewportPlaceMethod select_method, [[maybe_unused]] ViewportDragDropSelectionProcess select_proc, [[maybe_unused]] Point pt) override
|
||||||
{
|
{
|
||||||
VpSelectTilesWithMethod(pt.x, pt.y, select_method);
|
VpSelectTilesWithMethod(pt.x, pt.y, select_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) override
|
void OnPlaceMouseUp([[maybe_unused]] ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, [[maybe_unused]] Point pt, TileIndex start_tile, TileIndex end_tile) override
|
||||||
{
|
{
|
||||||
if (pt.x != -1 && select_proc == DDSP_DEMOLISH_AREA) {
|
if (pt.x != -1 && select_proc == DDSP_DEMOLISH_AREA) {
|
||||||
GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
|
GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
|
||||||
@@ -310,7 +308,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_AP_CLASS_DROPDOWN: {
|
case WID_AP_CLASS_DROPDOWN: {
|
||||||
@@ -481,7 +479,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_AP_CLASS_DROPDOWN:
|
case WID_AP_CLASS_DROPDOWN:
|
||||||
@@ -538,13 +536,14 @@ public:
|
|||||||
}
|
}
|
||||||
if (change_class) {
|
if (change_class) {
|
||||||
/* If that fails, select the first available airport
|
/* If that fails, select the first available airport
|
||||||
* from a random class. */
|
* from the first class where airports are available. */
|
||||||
for (AirportClassID j = APC_BEGIN; j < APC_MAX; j++) {
|
for (AirportClassID j = APC_BEGIN; j < APC_MAX; j++) {
|
||||||
AirportClass *apclass = AirportClass::Get(j);
|
AirportClass *apclass = AirportClass::Get(j);
|
||||||
for (uint i = 0; i < apclass->GetSpecCount(); i++) {
|
for (uint i = 0; i < apclass->GetSpecCount(); i++) {
|
||||||
const AirportSpec *as = apclass->GetSpec(i);
|
const AirportSpec *as = apclass->GetSpec(i);
|
||||||
if (as->IsAvailable()) {
|
if (as->IsAvailable()) {
|
||||||
_selected_airport_class = j;
|
_selected_airport_class = j;
|
||||||
|
this->vscroll->SetCount(apclass->GetSpecCount());
|
||||||
this->SelectOtherAirport(i);
|
this->SelectOtherAirport(i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -557,13 +556,14 @@ public:
|
|||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
assert(widget == WID_AP_CLASS_DROPDOWN);
|
if (widget == WID_AP_CLASS_DROPDOWN) {
|
||||||
_selected_airport_class = (AirportClassID)index;
|
_selected_airport_class = (AirportClassID)index;
|
||||||
this->vscroll->SetCount(AirportClass::Get(_selected_airport_class)->GetSpecCount());
|
this->vscroll->SetCount(AirportClass::Get(_selected_airport_class)->GetSpecCount());
|
||||||
this->SelectFirstAvailableAirport(false);
|
this->SelectFirstAvailableAirport(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRealtimeTick(uint delta_ms) override
|
void OnRealtimeTick([[maybe_unused]] uint delta_ms) override
|
||||||
{
|
{
|
||||||
CheckRedrawStationCoverage(this);
|
CheckRedrawStationCoverage(this);
|
||||||
}
|
}
|
||||||
|
@@ -301,7 +301,7 @@ public:
|
|||||||
this->sel_group = id_g;
|
this->sel_group = id_g;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_RV_SORT_ASCENDING_DESCENDING: {
|
case WID_RV_SORT_ASCENDING_DESCENDING: {
|
||||||
@@ -540,7 +540,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_RV_SORT_ASCENDING_DESCENDING:
|
case WID_RV_SORT_ASCENDING_DESCENDING:
|
||||||
@@ -714,7 +714,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override
|
bool OnTooltip([[maybe_unused]] Point pt, int widget, TooltipCloseCondition close_cond) override
|
||||||
{
|
{
|
||||||
if (widget != WID_RV_TRAIN_WAGONREMOVE_TOGGLE) return false;
|
if (widget != WID_RV_TRAIN_WAGONREMOVE_TOGGLE) return false;
|
||||||
|
|
||||||
@@ -738,7 +738,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (data != 0) {
|
if (data != 0) {
|
||||||
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
||||||
|
@@ -152,7 +152,7 @@ bool BaseSet<T, Tnum_files, Tsearch_in_tars>::FillSetDetails(IniFile *ini, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class Tbase_set>
|
template <class Tbase_set>
|
||||||
bool BaseMedia<Tbase_set>::AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename)
|
bool BaseMedia<Tbase_set>::AddFile(const std::string &filename, size_t basepath_length, const std::string &)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
DEBUG(grf, 1, "Checking %s for base " SET_TYPE " set", filename.c_str());
|
DEBUG(grf, 1, "Checking %s for base " SET_TYPE " set", filename.c_str());
|
||||||
|
@@ -123,7 +123,7 @@ public:
|
|||||||
if (!this->bitmap->HasTile(TileIndex(this->tile))) ++(*this);
|
if (!this->bitmap->HasTile(TileIndex(this->tile))) ++(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline TileIterator& operator ++()
|
inline TileIterator& operator ++() override
|
||||||
{
|
{
|
||||||
(*this).OrthogonalTileIterator::operator++();
|
(*this).OrthogonalTileIterator::operator++();
|
||||||
while (this->tile != INVALID_TILE && !this->bitmap->HasTile(TileIndex(this->tile))) {
|
while (this->tile != INVALID_TILE && !this->bitmap->HasTile(TileIndex(this->tile))) {
|
||||||
@@ -132,7 +132,7 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::unique_ptr<TileIterator> Clone() const
|
std::unique_ptr<TileIterator> Clone() const override
|
||||||
{
|
{
|
||||||
return std::make_unique<BitmapTileIterator>(*this);
|
return std::make_unique<BitmapTileIterator>(*this);
|
||||||
}
|
}
|
||||||
|
@@ -180,7 +180,7 @@ size_t Blitter_32bppBase::BufferSize(uint width, uint height)
|
|||||||
return sizeof(uint32) * width * height;
|
return sizeof(uint32) * width * height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Blitter_32bppBase::PaletteAnimate(const Palette &palette)
|
void Blitter_32bppBase::PaletteAnimate(const Palette &)
|
||||||
{
|
{
|
||||||
/* By default, 32bpp doesn't have palette animation */
|
/* By default, 32bpp doesn't have palette animation */
|
||||||
}
|
}
|
||||||
|
@@ -169,7 +169,7 @@ size_t Blitter_8bppBase::BufferSize(uint width, uint height)
|
|||||||
return static_cast<size_t>(width) * height;
|
return static_cast<size_t>(width) * height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Blitter_8bppBase::PaletteAnimate(const Palette &palette)
|
void Blitter_8bppBase::PaletteAnimate(const Palette &)
|
||||||
{
|
{
|
||||||
/* Video backend takes care of the palette animation */
|
/* Video backend takes care of the palette animation */
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,7 @@ public:
|
|||||||
ResizeWindow(this, _screen.width, _screen.height);
|
ResizeWindow(this, _screen.width, _screen.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawWidget(const Rect &r, int widget) const override
|
void DrawWidget(const Rect &r, int) const override
|
||||||
{
|
{
|
||||||
GfxFillRect(r.left, r.top, r.right, r.bottom, 4, FILLRECT_OPAQUE);
|
GfxFillRect(r.left, r.top, r.right, r.bottom, 4, FILLRECT_OPAQUE);
|
||||||
GfxFillRect(r.left, r.top, r.right, r.bottom, 0, FILLRECT_CHECKER);
|
GfxFillRect(r.left, r.top, r.right, r.bottom, 0, FILLRECT_CHECKER);
|
||||||
@@ -97,7 +97,7 @@ public:
|
|||||||
this->Window::Close();
|
this->Window::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget == WID_BEM_MESSAGE) {
|
if (widget == WID_BEM_MESSAGE) {
|
||||||
*size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR);
|
*size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR);
|
||||||
@@ -113,7 +113,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget == WID_BEM_QUIT) {
|
if (widget == WID_BEM_QUIT) {
|
||||||
_exit_game = true;
|
_exit_game = true;
|
||||||
@@ -158,7 +158,7 @@ public:
|
|||||||
this->BaseNetworkContentDownloadStatusWindow::Close();
|
this->BaseNetworkContentDownloadStatusWindow::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDownloadComplete(ContentID cid) override
|
void OnDownloadComplete(ContentID) override
|
||||||
{
|
{
|
||||||
/* We have completed downloading. We can trigger finding the right set now. */
|
/* We have completed downloading. We can trigger finding the right set now. */
|
||||||
BaseGraphics::FindSets();
|
BaseGraphics::FindSets();
|
||||||
@@ -213,7 +213,7 @@ public:
|
|||||||
this->Window::Close();
|
this->Window::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
/* We cache the button size. This is safe as no reinit can happen here. */
|
/* We cache the button size. This is safe as no reinit can happen here. */
|
||||||
if (this->button_size.width == 0) {
|
if (this->button_size.width == 0) {
|
||||||
@@ -238,12 +238,12 @@ public:
|
|||||||
|
|
||||||
void DrawWidget(const Rect &r, int widget) const override
|
void DrawWidget(const Rect &r, int widget) const override
|
||||||
{
|
{
|
||||||
if (widget != 0) return;
|
if (widget != WID_BAFD_QUESTION) return;
|
||||||
|
|
||||||
DrawStringMultiLine(r.Shrink(WidgetDimensions::scaled.frametext), STR_MISSING_GRAPHICS_SET_MESSAGE, TC_FROMSTRING, SA_CENTER);
|
DrawStringMultiLine(r.Shrink(WidgetDimensions::scaled.frametext), STR_MISSING_GRAPHICS_SET_MESSAGE, TC_FROMSTRING, SA_CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BAFD_YES:
|
case WID_BAFD_YES:
|
||||||
@@ -333,7 +333,7 @@ public:
|
|||||||
EM_ASM({ if (window["openttd_bootstrap"]) openttd_bootstrap($0, $1); }, this->downloaded_bytes, this->total_bytes);
|
EM_ASM({ if (window["openttd_bootstrap"]) openttd_bootstrap($0, $1); }, this->downloaded_bytes, this->total_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDownloadProgress(const ContentInfo *ci, int bytes) override
|
void OnDownloadProgress(const ContentInfo *, int bytes) override
|
||||||
{
|
{
|
||||||
/* A negative value means we are resetting; for example, when retrying or using a fallback. */
|
/* A negative value means we are resetting; for example, when retrying or using a fallback. */
|
||||||
if (bytes < 0) {
|
if (bytes < 0) {
|
||||||
@@ -345,7 +345,7 @@ public:
|
|||||||
EM_ASM({ if (window["openttd_bootstrap"]) openttd_bootstrap($0, $1); }, this->downloaded_bytes, this->total_bytes);
|
EM_ASM({ if (window["openttd_bootstrap"]) openttd_bootstrap($0, $1); }, this->downloaded_bytes, this->total_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDownloadComplete(ContentID cid) override
|
void OnDownloadComplete(ContentID) override
|
||||||
{
|
{
|
||||||
/* _exit_game is used to break out of the outer video driver's MainLoop. */
|
/* _exit_game is used to break out of the outer video driver's MainLoop. */
|
||||||
_exit_game = true;
|
_exit_game = true;
|
||||||
|
@@ -189,7 +189,7 @@ public:
|
|||||||
this->Window::Close();
|
this->Window::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BBS_DROPDOWN_ORDER: {
|
case WID_BBS_DROPDOWN_ORDER: {
|
||||||
@@ -270,7 +270,7 @@ public:
|
|||||||
return ES_NOT_HANDLED;
|
return ES_NOT_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
default: break;
|
default: break;
|
||||||
|
@@ -1569,7 +1569,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
void SelectEngine(EngineID engine)
|
void SelectEngine(EngineID engine)
|
||||||
{
|
{
|
||||||
CargoID cargo = this->cargo_filter[this->cargo_filter_criteria];
|
CargoID cargo = this->cargo_filter[this->cargo_filter_criteria];
|
||||||
if (cargo == CF_ANY) cargo = CF_NONE;
|
if (cargo == CF_ANY || cargo == CF_ENGINES || cargo == CF_NONE) cargo = CT_INVALID;
|
||||||
|
|
||||||
this->sel_engine = engine;
|
this->sel_engine = engine;
|
||||||
this->SetBuyVehicleText();
|
this->SetBuyVehicleText();
|
||||||
@@ -1853,7 +1853,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
this->eng_list.RebuildDone();
|
this->eng_list.RebuildDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BV_SORT_ASCENDING_DESCENDING:
|
case WID_BV_SORT_ASCENDING_DESCENDING:
|
||||||
@@ -1930,7 +1930,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
cmd = GetCmdBuildVeh(this->vehicle_type);
|
cmd = GetCmdBuildVeh(this->vehicle_type);
|
||||||
}
|
}
|
||||||
CargoID cargo = this->cargo_filter[this->cargo_filter_criteria];
|
CargoID cargo = this->cargo_filter[this->cargo_filter_criteria];
|
||||||
if (cargo == CF_ANY || cargo == CF_ENGINES) cargo = CF_NONE;
|
if (cargo == CF_ANY || cargo == CF_ENGINES || cargo == CF_NONE) cargo = CT_INVALID;
|
||||||
DoCommandP(this->window_number, sel_eng | (cargo << 24), 0, cmd, callback);
|
DoCommandP(this->window_number, sel_eng | (cargo << 24), 0, cmd, callback);
|
||||||
|
|
||||||
/* Update last used variant and refresh if necessary. */
|
/* Update last used variant and refresh if necessary. */
|
||||||
@@ -1968,7 +1968,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
/* When switching to original acceleration model for road vehicles, clear the selected sort criteria if it is not available now. */
|
/* When switching to original acceleration model for road vehicles, clear the selected sort criteria if it is not available now. */
|
||||||
@@ -2016,7 +2016,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BV_LIST:
|
case WID_BV_LIST:
|
||||||
@@ -2080,7 +2080,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
|||||||
this->GenerateBuildList();
|
this->GenerateBuildList();
|
||||||
this->vscroll->SetCount(this->eng_list.size());
|
this->vscroll->SetCount(this->eng_list.size());
|
||||||
|
|
||||||
this->SetWidgetsDisabledState(this->sel_engine == INVALID_ENGINE, WID_BV_SHOW_HIDE, WID_BV_BUILD, WIDGET_LIST_END);
|
this->SetWidgetsDisabledState(this->sel_engine == INVALID_ENGINE, WID_BV_SHOW_HIDE, WID_BV_BUILD);
|
||||||
|
|
||||||
/* Disable renaming engines in network games if you are not the server. */
|
/* Disable renaming engines in network games if you are not the server. */
|
||||||
this->SetWidgetDisabledState(WID_BV_RENAME, this->sel_engine == INVALID_ENGINE || (_networking && !_network_server));
|
this->SetWidgetDisabledState(WID_BV_RENAME, this->sel_engine == INVALID_ENGINE || (_networking && !_network_server));
|
||||||
|
@@ -41,41 +41,33 @@ void SetupCargoForClimate(LandscapeID l)
|
|||||||
{
|
{
|
||||||
assert(l < lengthof(_default_climate_cargo));
|
assert(l < lengthof(_default_climate_cargo));
|
||||||
|
|
||||||
/* Reset and disable all cargo types */
|
|
||||||
for (CargoID i = 0; i < lengthof(CargoSpec::array); i++) {
|
|
||||||
*CargoSpec::Get(i) = {};
|
|
||||||
CargoSpec::Get(i)->bitnum = INVALID_CARGO;
|
|
||||||
|
|
||||||
/* Set defaults for newer properties, which old GRFs do not know */
|
|
||||||
CargoSpec::Get(i)->multiplier = 0x100;
|
|
||||||
}
|
|
||||||
|
|
||||||
_cargo_mask = 0;
|
_cargo_mask = 0;
|
||||||
|
|
||||||
for (CargoID i = 0; i < lengthof(_default_climate_cargo[l]); i++) {
|
/* Copy from default cargo by label or index. */
|
||||||
CargoLabel cl = _default_climate_cargo[l][i];
|
auto insert = std::begin(CargoSpec::array);
|
||||||
|
for (const CargoLabel &cl : _default_climate_cargo[l]) {
|
||||||
|
|
||||||
/* Bzzt: check if cl is just an index into the cargo table */
|
/* Check if value is an index into the cargo table */
|
||||||
if (cl < lengthof(_default_cargo)) {
|
if (cl < lengthof(_default_cargo)) {
|
||||||
/* Copy the indexed cargo */
|
/* Copy the default cargo by index. */
|
||||||
CargoSpec *cargo = CargoSpec::Get(i);
|
*insert = _default_cargo[cl];
|
||||||
*cargo = _default_cargo[cl];
|
} else {
|
||||||
if (cargo->bitnum != INVALID_CARGO) SetBit(_cargo_mask, i);
|
/* Search for label in default cargo types and copy if found. */
|
||||||
continue;
|
auto found = std::find_if(std::begin(_default_cargo), std::end(_default_cargo), [&cl](const CargoSpec &cs) { return cs.label == cl; });
|
||||||
}
|
if (found != std::end(_default_cargo)) {
|
||||||
|
*insert = *found;
|
||||||
/* Loop through each of the default cargo types to see if
|
} else {
|
||||||
* the label matches */
|
/* Index or label is invalid, this should not happen. */
|
||||||
for (uint j = 0; j < lengthof(_default_cargo); j++) {
|
NOT_REACHED();
|
||||||
if (_default_cargo[j].label == cl) {
|
|
||||||
*CargoSpec::Get(i) = _default_cargo[j];
|
|
||||||
|
|
||||||
/* Populate the available cargo mask */
|
|
||||||
SetBit(_cargo_mask, i);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (insert->IsValid()) SetBit(_cargo_mask, insert->Index());
|
||||||
|
++insert;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reset and disable remaining cargo types. */
|
||||||
|
std::fill(insert, std::end(CargoSpec::array), CargoSpec{});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,7 +115,7 @@ CargoID GetCargoIDByLabel(CargoLabel cl)
|
|||||||
*/
|
*/
|
||||||
CargoID GetCargoIDByBitnum(uint8 bitnum)
|
CargoID GetCargoIDByBitnum(uint8 bitnum)
|
||||||
{
|
{
|
||||||
if (bitnum == INVALID_CARGO) return CT_INVALID;
|
if (bitnum == INVALID_CARGO_BITNUM) return CT_INVALID;
|
||||||
|
|
||||||
for (const CargoSpec *cs : CargoSpec::Iterate()) {
|
for (const CargoSpec *cs : CargoSpec::Iterate()) {
|
||||||
if (cs->bitnum == bitnum) return cs->Index();
|
if (cs->bitnum == bitnum) return cs->Index();
|
||||||
@@ -150,6 +142,7 @@ SpriteID CargoSpec::GetCargoIcon() const
|
|||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::array<uint8_t, NUM_CARGO> _sorted_cargo_types; ///< Sort order of cargoes by cargo ID.
|
||||||
std::vector<const CargoSpec *> _sorted_cargo_specs; ///< Cargo specifications sorted alphabetically by name.
|
std::vector<const CargoSpec *> _sorted_cargo_specs; ///< Cargo specifications sorted alphabetically by name.
|
||||||
span<const CargoSpec *> _sorted_standard_cargo_specs; ///< Standard cargo specifications sorted alphabetically by name.
|
span<const CargoSpec *> _sorted_standard_cargo_specs; ///< Standard cargo specifications sorted alphabetically by name.
|
||||||
|
|
||||||
@@ -194,6 +187,11 @@ void InitializeSortedCargoSpecs()
|
|||||||
/* Sort cargo specifications by cargo class and name. */
|
/* Sort cargo specifications by cargo class and name. */
|
||||||
std::sort(_sorted_cargo_specs.begin(), _sorted_cargo_specs.end(), &CargoSpecClassSorter);
|
std::sort(_sorted_cargo_specs.begin(), _sorted_cargo_specs.end(), &CargoSpecClassSorter);
|
||||||
|
|
||||||
|
/* Populate */
|
||||||
|
for (auto it = std::begin(_sorted_cargo_specs); it != std::end(_sorted_cargo_specs); ++it) {
|
||||||
|
_sorted_cargo_types[(*it)->Index()] = static_cast<uint8_t>(it - std::begin(_sorted_cargo_specs));
|
||||||
|
}
|
||||||
|
|
||||||
/* Count the number of standard cargos and fill the mask. */
|
/* Count the number of standard cargos and fill the mask. */
|
||||||
_standard_cargo_mask = 0;
|
_standard_cargo_mask = 0;
|
||||||
uint8 nb_standard_cargo = 0;
|
uint8 nb_standard_cargo = 0;
|
||||||
|
@@ -51,16 +51,17 @@ enum CargoClass {
|
|||||||
CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes.
|
CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes.
|
||||||
};
|
};
|
||||||
|
|
||||||
static const byte INVALID_CARGO = 0xFF; ///< Constant representing invalid cargo
|
static const byte INVALID_CARGO_BITNUM = 0xFF; ///< Constant representing invalid cargo
|
||||||
|
|
||||||
/** Specification of a cargo type. */
|
/** Specification of a cargo type. */
|
||||||
struct CargoSpec {
|
struct CargoSpec {
|
||||||
uint8 bitnum; ///< Cargo bit number, is #INVALID_CARGO for a non-used spec.
|
|
||||||
CargoLabel label; ///< Unique label of the cargo type.
|
CargoLabel label; ///< Unique label of the cargo type.
|
||||||
|
uint8 bitnum{INVALID_CARGO_BITNUM}; ///< Cargo bit number, is #INVALID_CARGO_BITNUM for a non-used spec.
|
||||||
uint8 legend_colour;
|
uint8 legend_colour;
|
||||||
uint8 rating_colour;
|
uint8 rating_colour;
|
||||||
uint8 weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg).
|
uint8 weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg).
|
||||||
uint16 multiplier; ///< Capacity multiplier for vehicles. (8 fractional bits)
|
uint16 multiplier{0x100}; ///< Capacity multiplier for vehicles. (8 fractional bits)
|
||||||
|
uint16 classes; ///< Classes of this cargo type. @see CargoClass
|
||||||
int32 initial_payment; ///< Initial payment rate before inflation is applied.
|
int32 initial_payment; ///< Initial payment rate before inflation is applied.
|
||||||
uint8 transit_periods[2];
|
uint8 transit_periods[2];
|
||||||
|
|
||||||
@@ -76,7 +77,6 @@ struct CargoSpec {
|
|||||||
|
|
||||||
SpriteID sprite; ///< Icon to display this cargo type, may be \c 0xFFF (which means to resolve an action123 chain).
|
SpriteID sprite; ///< Icon to display this cargo type, may be \c 0xFFF (which means to resolve an action123 chain).
|
||||||
|
|
||||||
uint16 classes; ///< Classes of this cargo type. @see CargoClass
|
|
||||||
const struct GRFFile *grffile; ///< NewGRF where #group belongs to.
|
const struct GRFFile *grffile; ///< NewGRF where #group belongs to.
|
||||||
const struct SpriteGroup *group;
|
const struct SpriteGroup *group;
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ struct CargoSpec {
|
|||||||
*/
|
*/
|
||||||
inline bool IsValid() const
|
inline bool IsValid() const
|
||||||
{
|
{
|
||||||
return this->bitnum != INVALID_CARGO;
|
return this->bitnum != INVALID_CARGO_BITNUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -197,6 +197,7 @@ CargoID GetCargoIDByBitnum(uint8 bitnum);
|
|||||||
CargoID GetDefaultCargoID(LandscapeID l, CargoType ct);
|
CargoID GetDefaultCargoID(LandscapeID l, CargoType ct);
|
||||||
|
|
||||||
void InitializeSortedCargoSpecs();
|
void InitializeSortedCargoSpecs();
|
||||||
|
extern std::array<uint8_t, NUM_CARGO> _sorted_cargo_types;
|
||||||
extern std::vector<const CargoSpec *> _sorted_cargo_specs;
|
extern std::vector<const CargoSpec *> _sorted_cargo_specs;
|
||||||
extern span<const CargoSpec *> _sorted_standard_cargo_specs;
|
extern span<const CargoSpec *> _sorted_standard_cargo_specs;
|
||||||
|
|
||||||
|
@@ -327,7 +327,7 @@ struct CheatWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_C_PANEL) return;
|
if (widget != WID_C_PANEL) return;
|
||||||
|
|
||||||
@@ -380,8 +380,10 @@ struct CheatWindow : Window {
|
|||||||
size->height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lines;
|
size->height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
|
if (widget != WID_C_PANEL) return;
|
||||||
|
|
||||||
Rect r = this->GetWidget<NWidgetBase>(WID_C_PANEL)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect);
|
Rect r = this->GetWidget<NWidgetBase>(WID_C_PANEL)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect);
|
||||||
uint btn = (pt.y - r.top) / this->line_height;
|
uint btn = (pt.y - r.top) / this->line_height;
|
||||||
uint x = pt.x - r.left;
|
uint x = pt.x - r.left;
|
||||||
|
@@ -197,7 +197,7 @@ static void DrawTile_Clear(TileInfo *ti, DrawTileProcParams params)
|
|||||||
DrawBridgeMiddle(ti);
|
DrawBridgeMiddle(ti);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetSlopePixelZ_Clear(TileIndex tile, uint x, uint y, bool ground_vehicle)
|
static int GetSlopePixelZ_Clear(TileIndex tile, uint x, uint y, bool)
|
||||||
{
|
{
|
||||||
int z;
|
int z;
|
||||||
Slope tileh = GetTilePixelSlope(tile, &z);
|
Slope tileh = GetTilePixelSlope(tile, &z);
|
||||||
@@ -205,7 +205,7 @@ static int GetSlopePixelZ_Clear(TileIndex tile, uint x, uint y, bool ground_vehi
|
|||||||
return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh);
|
return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Foundation GetFoundation_Clear(TileIndex tile, Slope tileh)
|
static Foundation GetFoundation_Clear(TileIndex, Slope)
|
||||||
{
|
{
|
||||||
return FOUNDATION_NONE;
|
return FOUNDATION_NONE;
|
||||||
}
|
}
|
||||||
@@ -426,7 +426,7 @@ get_out:;
|
|||||||
} while (--i);
|
} while (--i);
|
||||||
}
|
}
|
||||||
|
|
||||||
static TrackStatus GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
static TrackStatus GetTileTrackStatus_Clear(TileIndex, TransportType, uint, DiagDirection)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -450,12 +450,12 @@ static void GetTileDesc_Clear(TileIndex tile, TileDesc *td)
|
|||||||
td->owner[0] = GetTileOwner(tile);
|
td->owner[0] = GetTileOwner(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ChangeTileOwner_Clear(TileIndex tile, Owner old_owner, Owner new_owner)
|
static void ChangeTileOwner_Clear(TileIndex, Owner, Owner)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CommandCost TerraformTile_Clear(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new)
|
static CommandCost TerraformTile_Clear(TileIndex tile, DoCommandFlag flags, int, Slope)
|
||||||
{
|
{
|
||||||
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
}
|
}
|
||||||
|
@@ -398,7 +398,7 @@ struct CompanyFinancesWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_CF_EXPS_CATEGORY:
|
case WID_CF_EXPS_CATEGORY:
|
||||||
@@ -494,7 +494,7 @@ struct CompanyFinancesWindow : Window {
|
|||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_CF_TOGGLE_SIZE: // toggle size
|
case WID_CF_TOGGLE_SIZE: // toggle size
|
||||||
@@ -643,7 +643,7 @@ public:
|
|||||||
return ScaleGUITrad(28) + WidgetDimensions::scaled.hsep_normal + GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal();
|
return ScaleGUITrad(28) + WidgetDimensions::scaled.hsep_normal + GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint Height(uint width) const override
|
uint Height(uint) const override
|
||||||
{
|
{
|
||||||
return std::max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + WidgetDimensions::scaled.vsep_normal);
|
return std::max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + WidgetDimensions::scaled.vsep_normal);
|
||||||
}
|
}
|
||||||
@@ -653,7 +653,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw(const Rect &r, bool sel, Colours bg_colour) const override
|
void Draw(const Rect &r, bool sel, Colours) const override
|
||||||
{
|
{
|
||||||
bool rtl = _current_text_dir == TD_RTL;
|
bool rtl = _current_text_dir == TD_RTL;
|
||||||
int icon_y = CenterBounds(r.top, r.bottom, 0);
|
int icon_y = CenterBounds(r.top, r.bottom, 0);
|
||||||
@@ -830,7 +830,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SCL_SPACER_DROPDOWN: {
|
case WID_SCL_SPACER_DROPDOWN: {
|
||||||
@@ -1001,7 +1001,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
/* Livery Class buttons */
|
/* Livery Class buttons */
|
||||||
@@ -1106,7 +1106,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
@@ -1127,7 +1127,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->SetWidgetsDisabledState(true, WID_SCL_CLASS_RAIL, WID_SCL_CLASS_ROAD, WID_SCL_CLASS_SHIP, WID_SCL_CLASS_AIRCRAFT, WIDGET_LIST_END);
|
this->SetWidgetsDisabledState(true, WID_SCL_CLASS_RAIL, WID_SCL_CLASS_ROAD, WID_SCL_CLASS_SHIP, WID_SCL_CLASS_AIRCRAFT);
|
||||||
|
|
||||||
bool current_class_valid = this->livery_class == LC_OTHER || this->livery_class >= LC_GROUP_RAIL;
|
bool current_class_valid = this->livery_class == LC_OTHER || this->livery_class >= LC_GROUP_RAIL;
|
||||||
if (_settings_client.gui.liveries == LIT_ALL || (_settings_client.gui.liveries == LIT_COMPANY && this->window_number == _local_company)) {
|
if (_settings_client.gui.liveries == LIT_ALL || (_settings_client.gui.liveries == LIT_COMPANY && this->window_number == _local_company)) {
|
||||||
@@ -1495,7 +1495,7 @@ public:
|
|||||||
this->number_dim = number_dim;
|
this->number_dim = number_dim;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT:
|
case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT:
|
||||||
@@ -1543,8 +1543,8 @@ public:
|
|||||||
void OnPaint() override
|
void OnPaint() override
|
||||||
{
|
{
|
||||||
/* lower the non-selected gender button */
|
/* lower the non-selected gender button */
|
||||||
this->SetWidgetsLoweredState(!this->is_female, WID_SCMF_MALE, WID_SCMF_MALE2, WIDGET_LIST_END);
|
this->SetWidgetsLoweredState(!this->is_female, WID_SCMF_MALE, WID_SCMF_MALE2);
|
||||||
this->SetWidgetsLoweredState( this->is_female, WID_SCMF_FEMALE, WID_SCMF_FEMALE2, WIDGET_LIST_END);
|
this->SetWidgetsLoweredState( this->is_female, WID_SCMF_FEMALE, WID_SCMF_FEMALE2);
|
||||||
|
|
||||||
/* advanced company manager face selection window */
|
/* advanced company manager face selection window */
|
||||||
|
|
||||||
@@ -1559,44 +1559,44 @@ public:
|
|||||||
|
|
||||||
/* Eye colour buttons */
|
/* Eye colour buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_EYE_COLOUR].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_EYE_COLOUR].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_EYECOLOUR, WID_SCMF_EYECOLOUR_L, WID_SCMF_EYECOLOUR_R, WIDGET_LIST_END);
|
WID_SCMF_EYECOLOUR, WID_SCMF_EYECOLOUR_L, WID_SCMF_EYECOLOUR_R);
|
||||||
|
|
||||||
/* Chin buttons */
|
/* Chin buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_CHIN].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_CHIN].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_CHIN, WID_SCMF_CHIN_L, WID_SCMF_CHIN_R, WIDGET_LIST_END);
|
WID_SCMF_CHIN, WID_SCMF_CHIN_L, WID_SCMF_CHIN_R);
|
||||||
|
|
||||||
/* Eyebrows buttons */
|
/* Eyebrows buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_EYEBROWS].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_EYEBROWS].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_EYEBROWS, WID_SCMF_EYEBROWS_L, WID_SCMF_EYEBROWS_R, WIDGET_LIST_END);
|
WID_SCMF_EYEBROWS, WID_SCMF_EYEBROWS_L, WID_SCMF_EYEBROWS_R);
|
||||||
|
|
||||||
/* Lips or (if it a male face with a moustache) moustache buttons */
|
/* Lips or (if it a male face with a moustache) moustache buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_LIPS_MOUSTACHE, WID_SCMF_LIPS_MOUSTACHE_L, WID_SCMF_LIPS_MOUSTACHE_R, WIDGET_LIST_END);
|
WID_SCMF_LIPS_MOUSTACHE, WID_SCMF_LIPS_MOUSTACHE_L, WID_SCMF_LIPS_MOUSTACHE_R);
|
||||||
|
|
||||||
/* Nose buttons | male faces with moustache haven't any nose options */
|
/* Nose buttons | male faces with moustache haven't any nose options */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_NOSE].valid_values[this->ge] < 2 || this->is_moust_male,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_NOSE].valid_values[this->ge] < 2 || this->is_moust_male,
|
||||||
WID_SCMF_NOSE, WID_SCMF_NOSE_L, WID_SCMF_NOSE_R, WIDGET_LIST_END);
|
WID_SCMF_NOSE, WID_SCMF_NOSE_L, WID_SCMF_NOSE_R);
|
||||||
|
|
||||||
/* Hair buttons */
|
/* Hair buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_HAIR].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_HAIR].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_HAIR, WID_SCMF_HAIR_L, WID_SCMF_HAIR_R, WIDGET_LIST_END);
|
WID_SCMF_HAIR, WID_SCMF_HAIR_L, WID_SCMF_HAIR_R);
|
||||||
|
|
||||||
/* Jacket buttons */
|
/* Jacket buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_JACKET].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_JACKET].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_JACKET, WID_SCMF_JACKET_L, WID_SCMF_JACKET_R, WIDGET_LIST_END);
|
WID_SCMF_JACKET, WID_SCMF_JACKET_L, WID_SCMF_JACKET_R);
|
||||||
|
|
||||||
/* Collar buttons */
|
/* Collar buttons */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_COLLAR].valid_values[this->ge] < 2,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_COLLAR].valid_values[this->ge] < 2,
|
||||||
WID_SCMF_COLLAR, WID_SCMF_COLLAR_L, WID_SCMF_COLLAR_R, WIDGET_LIST_END);
|
WID_SCMF_COLLAR, WID_SCMF_COLLAR_L, WID_SCMF_COLLAR_R);
|
||||||
|
|
||||||
/* Tie/earring buttons | female faces without earring haven't any earring options */
|
/* Tie/earring buttons | female faces without earring haven't any earring options */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_TIE_EARRING].valid_values[this->ge] < 2 ||
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_TIE_EARRING].valid_values[this->ge] < 2 ||
|
||||||
(this->is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge) == 0),
|
(this->is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge) == 0),
|
||||||
WID_SCMF_TIE_EARRING, WID_SCMF_TIE_EARRING_L, WID_SCMF_TIE_EARRING_R, WIDGET_LIST_END);
|
WID_SCMF_TIE_EARRING, WID_SCMF_TIE_EARRING_L, WID_SCMF_TIE_EARRING_R);
|
||||||
|
|
||||||
/* Glasses buttons | faces without glasses haven't any glasses options */
|
/* Glasses buttons | faces without glasses haven't any glasses options */
|
||||||
this->SetWidgetsDisabledState(_cmf_info[CMFV_GLASSES].valid_values[this->ge] < 2 || GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES, this->ge) == 0,
|
this->SetWidgetsDisabledState(_cmf_info[CMFV_GLASSES].valid_values[this->ge] < 2 || GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES, this->ge) == 0,
|
||||||
WID_SCMF_GLASSES, WID_SCMF_GLASSES_L, WID_SCMF_GLASSES_R, WIDGET_LIST_END);
|
WID_SCMF_GLASSES, WID_SCMF_GLASSES_L, WID_SCMF_GLASSES_R);
|
||||||
|
|
||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
@@ -1671,7 +1671,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
/* Toggle size, advanced/simple face selection */
|
/* Toggle size, advanced/simple face selection */
|
||||||
@@ -1926,7 +1926,7 @@ struct CompanyInfrastructureWindow : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||||
|
|
||||||
@@ -2192,7 +2192,7 @@ struct CompanyInfrastructureWindow : Window
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
@@ -2462,7 +2462,7 @@ struct CompanyWindow : Window
|
|||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_C_FACE: {
|
case WID_C_FACE: {
|
||||||
@@ -2675,7 +2675,7 @@ struct CompanyWindow : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_C_NEW_FACE: DoSelectCompanyManagerFace(this); break;
|
case WID_C_NEW_FACE: DoSelectCompanyManagerFace(this); break;
|
||||||
@@ -2780,7 +2780,7 @@ struct CompanyWindow : Window
|
|||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceObject(Point pt, TileIndex tile) override
|
void OnPlaceObject([[maybe_unused]] Point pt, TileIndex tile) override
|
||||||
{
|
{
|
||||||
if (DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS)) && !_shift_pressed) {
|
if (DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS)) && !_shift_pressed) {
|
||||||
ResetObjectToPlace();
|
ResetObjectToPlace();
|
||||||
@@ -2949,7 +2949,7 @@ struct BuyCompanyWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BC_NO:
|
case WID_BC_NO:
|
||||||
|
@@ -93,7 +93,7 @@ static_assert(lengthof(_cmf_info) == CMFV_END);
|
|||||||
* @pre _cmf_info[cmfv].valid_values[ge] != 0
|
* @pre _cmf_info[cmfv].valid_values[ge] != 0
|
||||||
* @return the requested bits
|
* @return the requested bits
|
||||||
*/
|
*/
|
||||||
static inline uint GetCompanyManagerFaceBits(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
|
static inline uint GetCompanyManagerFaceBits(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, [[maybe_unused]] GenderEthnicity ge)
|
||||||
{
|
{
|
||||||
assert(_cmf_info[cmfv].valid_values[ge] != 0);
|
assert(_cmf_info[cmfv].valid_values[ge] != 0);
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ static inline uint GetCompanyManagerFaceBits(CompanyManagerFace cmf, CompanyMana
|
|||||||
* @param val the new value
|
* @param val the new value
|
||||||
* @pre val < _cmf_info[cmfv].valid_values[ge]
|
* @pre val < _cmf_info[cmfv].valid_values[ge]
|
||||||
*/
|
*/
|
||||||
static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge, uint val)
|
static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyManagerFaceVariable cmfv, [[maybe_unused]] GenderEthnicity ge, uint val)
|
||||||
{
|
{
|
||||||
assert(val < _cmf_info[cmfv].valid_values[ge]);
|
assert(val < _cmf_info[cmfv].valid_values[ge]);
|
||||||
|
|
||||||
|
@@ -107,7 +107,7 @@ public:
|
|||||||
static ConsoleFileList _console_file_list; ///< File storage cache for the console.
|
static ConsoleFileList _console_file_list; ///< File storage cache for the console.
|
||||||
|
|
||||||
/* console command defines */
|
/* console command defines */
|
||||||
#define DEF_CONSOLE_CMD(function) static bool function(byte argc, char *argv[])
|
#define DEF_CONSOLE_CMD(function) static bool function([[maybe_unused]] byte argc, [[maybe_unused]] char *argv[])
|
||||||
#define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo)
|
#define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo)
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
@@ -2105,17 +2105,17 @@ static ContentType StringToContentType(const char *str)
|
|||||||
|
|
||||||
/** Asynchronous callback */
|
/** Asynchronous callback */
|
||||||
struct ConsoleContentCallback : public ContentCallback {
|
struct ConsoleContentCallback : public ContentCallback {
|
||||||
void OnConnect(bool success)
|
void OnConnect(bool success) override
|
||||||
{
|
{
|
||||||
IConsolePrintF(CC_DEFAULT, "Content server connection %s", success ? "established" : "failed");
|
IConsolePrintF(CC_DEFAULT, "Content server connection %s", success ? "established" : "failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDisconnect()
|
void OnDisconnect() override
|
||||||
{
|
{
|
||||||
IConsolePrintF(CC_DEFAULT, "Content server connection closed");
|
IConsolePrintF(CC_DEFAULT, "Content server connection closed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDownloadComplete(ContentID cid)
|
void OnDownloadComplete(ContentID cid) override
|
||||||
{
|
{
|
||||||
IConsolePrintF(CC_DEFAULT, "Completed download of %d", cid);
|
IConsolePrintF(CC_DEFAULT, "Completed download of %d", cid);
|
||||||
}
|
}
|
||||||
|
@@ -281,7 +281,7 @@ struct IConsoleWindow : Window
|
|||||||
return ES_HANDLED;
|
return ES_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) override
|
void InsertTextString(int, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) override
|
||||||
{
|
{
|
||||||
if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) {
|
if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) {
|
||||||
IConsoleWindow::scroll = 0;
|
IConsoleWindow::scroll = 0;
|
||||||
|
@@ -99,7 +99,7 @@ struct Pool : PoolBase {
|
|||||||
uint64 *free_bitmap; ///< Pointer to free bitmap
|
uint64 *free_bitmap; ///< Pointer to free bitmap
|
||||||
|
|
||||||
Pool(const char *name);
|
Pool(const char *name);
|
||||||
virtual void CleanPool();
|
void CleanPool() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns Titem with given index
|
* Returns Titem with given index
|
||||||
@@ -277,13 +277,12 @@ struct Pool : PoolBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates space for new Titem at given memory address
|
* Allocates space for new Titem at given memory address
|
||||||
* @param size size of Titem
|
|
||||||
* @param ptr where are we allocating the item?
|
* @param ptr where are we allocating the item?
|
||||||
* @return pointer to allocated memory (== ptr)
|
* @return pointer to allocated memory (== ptr)
|
||||||
* @note use of this is strongly discouraged
|
* @note use of this is strongly discouraged
|
||||||
* @pre the memory must not be allocated in the Pool!
|
* @pre the memory must not be allocated in the Pool!
|
||||||
*/
|
*/
|
||||||
inline void *operator new(size_t size, void *ptr)
|
inline void *operator new(size_t, void *ptr)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < Tpool->first_unused; i++) {
|
for (size_t i = 0; i < Tpool->first_unused; i++) {
|
||||||
/* Don't allow creating new objects over existing.
|
/* Don't allow creating new objects over existing.
|
||||||
@@ -377,7 +376,7 @@ struct Pool : PoolBase {
|
|||||||
* @note when this function is called, PoolItem::Get(index) == nullptr.
|
* @note when this function is called, PoolItem::Get(index) == nullptr.
|
||||||
* @note it's called only when !CleaningPool()
|
* @note it's called only when !CleaningPool()
|
||||||
*/
|
*/
|
||||||
static inline void PostDestructor(size_t index) { }
|
static inline void PostDestructor([[maybe_unused]] size_t index) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dummy function called before a pool is about to be cleaned.
|
* Dummy function called before a pool is about to be cleaned.
|
||||||
|
@@ -166,7 +166,7 @@ void ottd_cpuid(int info[4], int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void ottd_cpuid(int info[4], int type)
|
void ottd_cpuid(int info[4], int)
|
||||||
{
|
{
|
||||||
info[0] = info[1] = info[2] = info[3] = 0;
|
info[0] = info[1] = info[2] = info[3] = 0;
|
||||||
}
|
}
|
||||||
|
@@ -105,7 +105,7 @@ struct SetDateWindow : Window {
|
|||||||
ShowDropDownList(this, std::move(list), selected, widget);
|
ShowDropDownList(this, std::move(list), selected, widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
Dimension d = {0, 0};
|
Dimension d = {0, 0};
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -143,7 +143,7 @@ struct SetDateWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SD_DAY:
|
case WID_SD_DAY:
|
||||||
@@ -195,7 +195,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
* Helper function to construct the dropdown.
|
* Helper function to construct the dropdown.
|
||||||
* @param widget the dropdown widget to create the dropdown for
|
* @param widget the dropdown widget to create the dropdown for
|
||||||
*/
|
*/
|
||||||
virtual void ShowDateDropDown(int widget)
|
virtual void ShowDateDropDown(int widget) override
|
||||||
{
|
{
|
||||||
int selected;
|
int selected;
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
@@ -224,7 +224,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
ShowDropDownList(this, std::move(list), selected, widget);
|
ShowDropDownList(this, std::move(list), selected, widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||||
{
|
{
|
||||||
Dimension d = {0, 0};
|
Dimension d = {0, 0};
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -250,7 +250,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
*size = d;
|
*size = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void SetStringParameters(int widget) const
|
virtual void SetStringParameters(int widget) const override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SD_DAY: SetDParam(0, MINUTES_MINUTE(minutes)); break;
|
case WID_SD_DAY: SetDParam(0, MINUTES_MINUTE(minutes)); break;
|
||||||
@@ -258,7 +258,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnClick(Point pt, int widget, int click_count)
|
virtual void OnClick(Point pt, int widget, int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SD_DAY:
|
case WID_SD_DAY:
|
||||||
@@ -276,7 +276,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnDropdownSelect(int widget, int index)
|
virtual void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
Minutes current = 0;
|
Minutes current = 0;
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
|
@@ -657,7 +657,7 @@ struct DepotWindow : Window {
|
|||||||
this->flag_size = maxdim(GetScaledSpriteSize(SPR_FLAG_VEH_STOPPED), GetScaledSpriteSize(SPR_FLAG_VEH_RUNNING));
|
this->flag_size = maxdim(GetScaledSpriteSize(SPR_FLAG_VEH_STOPPED), GetScaledSpriteSize(SPR_FLAG_VEH_RUNNING));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_D_MATRIX: {
|
case WID_D_MATRIX: {
|
||||||
@@ -705,7 +705,7 @@ struct DepotWindow : Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
this->generate_list = true;
|
this->generate_list = true;
|
||||||
}
|
}
|
||||||
@@ -756,13 +756,12 @@ struct DepotWindow : Window {
|
|||||||
WID_D_BUILD,
|
WID_D_BUILD,
|
||||||
WID_D_CLONE,
|
WID_D_CLONE,
|
||||||
WID_D_RENAME,
|
WID_D_RENAME,
|
||||||
WID_D_AUTOREPLACE,
|
WID_D_AUTOREPLACE);
|
||||||
WIDGET_LIST_END);
|
|
||||||
|
|
||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_D_MATRIX: // List
|
case WID_D_MATRIX: // List
|
||||||
@@ -844,7 +843,7 @@ struct DepotWindow : Window {
|
|||||||
DoCommandP(0, this->GetDepotIndex(), 0, CMD_RENAME_DEPOT | CMD_MSG(STR_ERROR_CAN_T_RENAME_DEPOT), nullptr, str);
|
DoCommandP(0, this->GetDepotIndex(), 0, CMD_RENAME_DEPOT | CMD_MSG(STR_ERROR_CAN_T_RENAME_DEPOT), nullptr, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OnRightClick(Point pt, int widget) override
|
bool OnRightClick([[maybe_unused]] Point pt, int widget) override
|
||||||
{
|
{
|
||||||
if (widget != WID_D_MATRIX) return false;
|
if (widget != WID_D_MATRIX) return false;
|
||||||
|
|
||||||
|
@@ -714,7 +714,7 @@ static bool DisasterTick_Submarine(DisasterVehicle *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool DisasterTick_NULL(DisasterVehicle *v)
|
static bool DisasterTick_NULL(DisasterVehicle *)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -47,9 +47,9 @@ struct DisasterVehicle FINAL : public SpecializedVehicle<DisasterVehicle, VEH_DI
|
|||||||
virtual ~DisasterVehicle();
|
virtual ~DisasterVehicle();
|
||||||
|
|
||||||
void UpdatePosition(int x, int y, int z);
|
void UpdatePosition(int x, int y, int z);
|
||||||
void UpdateDeltaXY();
|
void UpdateDeltaXY() override;
|
||||||
void UpdateImage();
|
void UpdateImage();
|
||||||
bool Tick();
|
bool Tick() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* DISASTER_VEHICLE_H */
|
#endif /* DISASTER_VEHICLE_H */
|
||||||
|
@@ -118,7 +118,7 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
@@ -126,8 +126,7 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
this->SetWidgetsDisabledState(!can_build,
|
this->SetWidgetsDisabledState(!can_build,
|
||||||
WID_DT_DEPOT,
|
WID_DT_DEPOT,
|
||||||
WID_DT_STATION,
|
WID_DT_STATION,
|
||||||
WID_DT_BUOY,
|
WID_DT_BUOY);
|
||||||
WIDGET_LIST_END);
|
|
||||||
if (!can_build) {
|
if (!can_build) {
|
||||||
CloseWindowById(WC_BUILD_STATION, TRANSPORT_WATER);
|
CloseWindowById(WC_BUILD_STATION, TRANSPORT_WATER);
|
||||||
CloseWindowById(WC_BUILD_DEPOT, TRANSPORT_WATER);
|
CloseWindowById(WC_BUILD_DEPOT, TRANSPORT_WATER);
|
||||||
@@ -147,7 +146,7 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_DT_CANAL: // Build canal button
|
case WID_DT_CANAL: // Build canal button
|
||||||
@@ -188,7 +187,7 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
this->last_clicked_widget = (DockToolbarWidgets)widget;
|
this->last_clicked_widget = (DockToolbarWidgets)widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceObject(Point pt, TileIndex tile) override
|
void OnPlaceObject([[maybe_unused]] Point pt, TileIndex tile) override
|
||||||
{
|
{
|
||||||
switch (this->last_clicked_widget) {
|
switch (this->last_clicked_widget) {
|
||||||
case WID_DT_CANAL: // Build canal button
|
case WID_DT_CANAL: // Build canal button
|
||||||
@@ -237,12 +236,12 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) override
|
void OnPlaceDrag(ViewportPlaceMethod select_method, [[maybe_unused]] ViewportDragDropSelectionProcess select_proc, [[maybe_unused]] Point pt) override
|
||||||
{
|
{
|
||||||
VpSelectTilesWithMethod(pt.x, pt.y, select_method);
|
VpSelectTilesWithMethod(pt.x, pt.y, select_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) override
|
void OnPlaceMouseUp([[maybe_unused]] ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, [[maybe_unused]] Point pt, TileIndex start_tile, TileIndex end_tile) override
|
||||||
{
|
{
|
||||||
if (pt.x != -1) {
|
if (pt.x != -1) {
|
||||||
switch (select_proc) {
|
switch (select_proc) {
|
||||||
@@ -273,7 +272,7 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
CloseWindowByClass(WC_BUILD_BRIDGE);
|
CloseWindowByClass(WC_BUILD_BRIDGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlacePresize(Point pt, TileIndex tile_from) override
|
void OnPlacePresize([[maybe_unused]] Point pt, TileIndex tile_from) override
|
||||||
{
|
{
|
||||||
TileIndex tile_to = tile_from;
|
TileIndex tile_to = tile_from;
|
||||||
|
|
||||||
@@ -458,7 +457,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case BDSW_LT_OFF:
|
case BDSW_LT_OFF:
|
||||||
@@ -473,7 +472,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRealtimeTick(uint delta_ms) override
|
void OnRealtimeTick([[maybe_unused]] uint delta_ms) override
|
||||||
{
|
{
|
||||||
CheckRedrawStationCoverage(this);
|
CheckRedrawStationCoverage(this);
|
||||||
}
|
}
|
||||||
@@ -526,7 +525,7 @@ public:
|
|||||||
UpdateDocksDirection();
|
UpdateDocksDirection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BDD_X:
|
case WID_BDD_X:
|
||||||
@@ -560,7 +559,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BDD_X:
|
case WID_BDD_X:
|
||||||
|
@@ -1396,9 +1396,10 @@ static void TriggerIndustryProduction(Industry *i)
|
|||||||
} else {
|
} else {
|
||||||
for (uint ci_in = 0; ci_in < lengthof(i->incoming_cargo_waiting); ci_in++) {
|
for (uint ci_in = 0; ci_in < lengthof(i->incoming_cargo_waiting); ci_in++) {
|
||||||
uint cargo_waiting = i->incoming_cargo_waiting[ci_in];
|
uint cargo_waiting = i->incoming_cargo_waiting[ci_in];
|
||||||
if (cargo_waiting == 0) continue;
|
if (cargo_waiting == 0 || i->accepts_cargo[ci_in] == CT_INVALID) continue;
|
||||||
|
|
||||||
for (uint ci_out = 0; ci_out < lengthof(i->produced_cargo_waiting); ci_out++) {
|
for (uint ci_out = 0; ci_out < lengthof(i->produced_cargo_waiting); ci_out++) {
|
||||||
|
if (i->produced_cargo[ci_out] == CT_INVALID) continue;
|
||||||
i->produced_cargo_waiting[ci_out] = ClampTo<uint16_t>(i->produced_cargo_waiting[ci_out] + (cargo_waiting * indspec->input_cargo_multiplier[ci_in][ci_out] / 256));
|
i->produced_cargo_waiting[ci_out] = ClampTo<uint16_t>(i->produced_cargo_waiting[ci_out] + (cargo_waiting * indspec->input_cargo_multiplier[ci_in][ci_out] / 256));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,8 +30,8 @@ struct EffectVehicle FINAL : public SpecializedVehicle<EffectVehicle, VEH_EFFECT
|
|||||||
/** We want to 'destruct' the right class. */
|
/** We want to 'destruct' the right class. */
|
||||||
virtual ~EffectVehicle() { this->RemoveEffectVehicleFromTickCache(); }
|
virtual ~EffectVehicle() { this->RemoveEffectVehicleFromTickCache(); }
|
||||||
|
|
||||||
void UpdateDeltaXY();
|
void UpdateDeltaXY() override;
|
||||||
bool Tick();
|
bool Tick() override;
|
||||||
TransparencyOption GetTransparencyOption() const;
|
TransparencyOption GetTransparencyOption() const;
|
||||||
void AddEffectVehicleToTickCache();
|
void AddEffectVehicleToTickCache();
|
||||||
void RemoveEffectVehicleFromTickCache();
|
void RemoveEffectVehicleFromTickCache();
|
||||||
|
@@ -76,7 +76,7 @@ struct EnginePreviewWindow : Window {
|
|||||||
this->flags |= WF_STICKY;
|
this->flags |= WF_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_EP_QUESTION) return;
|
if (widget != WID_EP_QUESTION) return;
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ struct EnginePreviewWindow : Window {
|
|||||||
DrawStringMultiLine(r.left, r.right, y, r.bottom, GetEngineInfoString(engine), TC_FROMSTRING, SA_CENTER);
|
DrawStringMultiLine(r.left, r.right, y, r.bottom, GetEngineInfoString(engine), TC_FROMSTRING, SA_CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_EP_YES:
|
case WID_EP_YES:
|
||||||
@@ -133,7 +133,7 @@ struct EnginePreviewWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
|
@@ -177,7 +177,7 @@ public:
|
|||||||
this->InitNested();
|
this->InitNested();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_EM_MESSAGE: {
|
case WID_EM_MESSAGE: {
|
||||||
@@ -241,7 +241,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
/* If company gets shut down, while displaying an error about it, remove the error message. */
|
/* If company gets shut down, while displaying an error about it, remove the error message. */
|
||||||
if (this->face != INVALID_COMPANY && !Company::IsValidID(this->face)) this->Close();
|
if (this->face != INVALID_COMPANY && !Company::IsValidID(this->face)) this->Close();
|
||||||
|
@@ -280,10 +280,9 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Try to add a fios item set with the given filename.
|
* Try to add a fios item set with the given filename.
|
||||||
* @param filename the full path to the file to read
|
* @param filename the full path to the file to read
|
||||||
* @param basepath_length amount of characters to chop of before to get a relative filename
|
|
||||||
* @return true if the file is added.
|
* @return true if the file is added.
|
||||||
*/
|
*/
|
||||||
bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename)
|
bool FiosFileScanner::AddFile(const std::string &filename, size_t, const std::string &)
|
||||||
{
|
{
|
||||||
auto sep = filename.rfind('.');
|
auto sep = filename.rfind('.');
|
||||||
if (sep == std::string::npos) return false;
|
if (sep == std::string::npos) return false;
|
||||||
@@ -660,7 +659,7 @@ public:
|
|||||||
this->scanned = true;
|
this->scanned = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
|
bool AddFile(const std::string &filename, size_t, const std::string &) override
|
||||||
{
|
{
|
||||||
FILE *f = FioFOpenFile(filename, "r", SCENARIO_DIR);
|
FILE *f = FioFOpenFile(filename, "r", SCENARIO_DIR);
|
||||||
if (f == nullptr) return false;
|
if (f == nullptr) return false;
|
||||||
|
@@ -291,13 +291,13 @@ private:
|
|||||||
QueryString filter_editbox; ///< Filter editbox;
|
QueryString filter_editbox; ///< Filter editbox;
|
||||||
std::vector<FiosItem *> display_list; ///< Filtered display list
|
std::vector<FiosItem *> display_list; ///< Filtered display list
|
||||||
|
|
||||||
static void SaveGameConfirmationCallback(Window *w, bool confirmed)
|
static void SaveGameConfirmationCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
/* File name has already been written to _file_to_saveload */
|
/* File name has already been written to _file_to_saveload */
|
||||||
if (confirmed) _switch_mode = SM_SAVE_GAME;
|
if (confirmed) _switch_mode = SM_SAVE_GAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SaveHeightmapConfirmationCallback(Window *w, bool confirmed)
|
static void SaveHeightmapConfirmationCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
/* File name has already been written to _file_to_saveload */
|
/* File name has already been written to _file_to_saveload */
|
||||||
if (confirmed) _switch_mode = SM_SAVE_HEIGHTMAP;
|
if (confirmed) _switch_mode = SM_SAVE_HEIGHTMAP;
|
||||||
@@ -587,7 +587,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SL_BACKGROUND:
|
case WID_SL_BACKGROUND:
|
||||||
@@ -620,7 +620,7 @@ public:
|
|||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SL_SORT_BYNAME: // Sort save names by name
|
case WID_SL_SORT_BYNAME: // Sort save names by name
|
||||||
@@ -742,7 +742,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnMouseOver(Point pt, int widget) override
|
void OnMouseOver([[maybe_unused]] Point pt, int widget) override
|
||||||
{
|
{
|
||||||
if (widget == WID_SL_DRIVES_DIRECTORIES_LIST) {
|
if (widget == WID_SL_DRIVES_DIRECTORIES_LIST) {
|
||||||
auto it = this->vscroll->GetScrolledItemFromWidget(this->display_list, pt.y, this, WID_SL_DRIVES_DIRECTORIES_LIST, WidgetDimensions::scaled.inset.top);
|
auto it = this->vscroll->GetScrolledItemFromWidget(this->display_list, pt.y, this, WID_SL_DRIVES_DIRECTORIES_LIST, WidgetDimensions::scaled.inset.top);
|
||||||
|
@@ -187,5 +187,5 @@ bool HasAntialiasedFonts()
|
|||||||
|
|
||||||
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
|
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
|
||||||
|
|
||||||
bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_isocode, int winlangid, MissingGlyphSearcher *callback) { return false; }
|
bool SetFallbackFont(FontCacheSettings *, const std::string &, int, MissingGlyphSearcher *) { return false; }
|
||||||
#endif /* !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) */
|
#endif /* !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) */
|
||||||
|
@@ -63,7 +63,7 @@ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : Tr
|
|||||||
this->SetFontSize(fs, face, pixels);
|
this->SetFontSize(fs, face, pixels);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeTypeFontCache::SetFontSize(FontSize fs, FT_Face face, int pixels)
|
void FreeTypeFontCache::SetFontSize(FontSize, FT_Face, int pixels)
|
||||||
{
|
{
|
||||||
if (pixels == 0) {
|
if (pixels == 0) {
|
||||||
/* Try to determine a good height based on the minimal height recommended by the font. */
|
/* Try to determine a good height based on the minimal height recommended by the font. */
|
||||||
|
@@ -23,16 +23,16 @@ private:
|
|||||||
public:
|
public:
|
||||||
SpriteFontCache(FontSize fs);
|
SpriteFontCache(FontSize fs);
|
||||||
~SpriteFontCache();
|
~SpriteFontCache();
|
||||||
virtual void SetUnicodeGlyph(WChar key, SpriteID sprite);
|
void SetUnicodeGlyph(char32_t key, SpriteID sprite) override;
|
||||||
virtual void InitializeUnicodeGlyphMap();
|
void InitializeUnicodeGlyphMap() override;
|
||||||
virtual void ClearFontCache();
|
void ClearFontCache() override;
|
||||||
virtual const Sprite *GetGlyph(GlyphID key);
|
const Sprite *GetGlyph(GlyphID key) override;
|
||||||
virtual uint GetGlyphWidth(GlyphID key);
|
uint GetGlyphWidth(GlyphID key) override;
|
||||||
virtual bool GetDrawGlyphShadow();
|
bool GetDrawGlyphShadow() override;
|
||||||
virtual GlyphID MapCharToGlyph(WChar key) { assert(IsPrintable(key)); return SPRITE_GLYPH | key; }
|
GlyphID MapCharToGlyph(char32_t key) override { assert(IsPrintable(key)); return SPRITE_GLYPH | key; }
|
||||||
virtual const void *GetFontTable(uint32 tag, size_t &length) { length = 0; return nullptr; }
|
const void *GetFontTable(uint32_t, size_t &length) override { length = 0; return nullptr; }
|
||||||
virtual std::string GetFontName() { return "sprite"; }
|
std::string GetFontName() override { return "sprite"; }
|
||||||
virtual bool IsBuiltInFont() { return true; }
|
bool IsBuiltInFont() override { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SPRITEFONTCACHE_H */
|
#endif /* SPRITEFONTCACHE_H */
|
||||||
|
@@ -456,7 +456,7 @@ struct FramerateWindow : Window {
|
|||||||
ResizeWindow(this, 0, (std::max(MIN_ELEMENTS, this->num_displayed) - MIN_ELEMENTS) * FONT_HEIGHT_NORMAL);
|
ResizeWindow(this, 0, (std::max(MIN_ELEMENTS, this->num_displayed) - MIN_ELEMENTS) * FONT_HEIGHT_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRealtimeTick(uint delta_ms) override
|
void OnRealtimeTick([[maybe_unused]] uint delta_ms) override
|
||||||
{
|
{
|
||||||
bool elapsed = this->next_update.Elapsed(delta_ms);
|
bool elapsed = this->next_update.Elapsed(delta_ms);
|
||||||
|
|
||||||
@@ -538,7 +538,7 @@ struct FramerateWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_FRW_RATE_GAMELOOP:
|
case WID_FRW_RATE_GAMELOOP:
|
||||||
@@ -691,7 +691,7 @@ struct FramerateWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_FRW_TIMES_NAMES:
|
case WID_FRW_TIMES_NAMES:
|
||||||
@@ -779,7 +779,7 @@ struct FrametimeGraphWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget == WID_FGW_GRAPH) {
|
if (widget == WID_FGW_GRAPH) {
|
||||||
SetDParam(0, 100);
|
SetDParam(0, 100);
|
||||||
|
@@ -137,7 +137,7 @@ struct GSConfigWindow : public Window {
|
|||||||
this->vscroll->SetCount(this->visible_settings.size());
|
this->vscroll->SetCount(this->visible_settings.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GSC_SETTINGS:
|
case WID_GSC_SETTINGS:
|
||||||
@@ -245,7 +245,7 @@ struct GSConfigWindow : public Window {
|
|||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget >= WID_GSC_TEXTFILE && widget < WID_GSC_TEXTFILE + TFT_CONTENT_END) {
|
if (widget >= WID_GSC_TEXTFILE && widget < WID_GSC_TEXTFILE + TFT_CONTENT_END) {
|
||||||
if (GameConfig::GetConfig() == nullptr) return;
|
if (GameConfig::GetConfig() == nullptr) return;
|
||||||
@@ -321,7 +321,7 @@ struct GSConfigWindow : public Window {
|
|||||||
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_GSC_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
||||||
@@ -374,12 +374,14 @@ struct GSConfigWindow : public Window {
|
|||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
|
if (widget != WID_GSC_SETTING_DROPDOWN) return;
|
||||||
assert(this->clicked_dropdown);
|
assert(this->clicked_dropdown);
|
||||||
SetValue(index);
|
SetValue(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDropdownClose(Point pt, int widget, int index, bool instant_close) override
|
void OnDropdownClose(Point, int widget, int, bool) override
|
||||||
{
|
{
|
||||||
|
if (widget != WID_GSC_SETTING_DROPDOWN) return;
|
||||||
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
||||||
* the same dropdown button was clicked again, and then not open the dropdown again.
|
* the same dropdown button was clicked again, and then not open the dropdown again.
|
||||||
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
||||||
@@ -407,7 +409,7 @@ struct GSConfigWindow : public Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
|
@@ -143,22 +143,22 @@ struct TranslationWriter : LanguageWriter {
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteHeader(const LanguagePackHeader *header)
|
void WriteHeader(const LanguagePackHeader *) override
|
||||||
{
|
{
|
||||||
/* We don't use the header. */
|
/* We don't use the header. */
|
||||||
}
|
}
|
||||||
|
|
||||||
void Finalise()
|
void Finalise() override
|
||||||
{
|
{
|
||||||
/* Nothing to do. */
|
/* Nothing to do. */
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteLength(uint length)
|
void WriteLength(uint) override
|
||||||
{
|
{
|
||||||
/* We don't write the length. */
|
/* We don't write the length. */
|
||||||
}
|
}
|
||||||
|
|
||||||
void Write(const byte *buffer, size_t length)
|
void Write(const byte *buffer, size_t length) override
|
||||||
{
|
{
|
||||||
this->strings.emplace_back((const char *)buffer, length);
|
this->strings.emplace_back((const char *)buffer, length);
|
||||||
}
|
}
|
||||||
@@ -176,12 +176,12 @@ struct StringNameWriter : HeaderWriter {
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteStringID(const char *name, int stringid)
|
void WriteStringID(const char *name, int stringid) override
|
||||||
{
|
{
|
||||||
if (stringid == (int)this->strings.size()) this->strings.emplace_back(name);
|
if (stringid == (int)this->strings.size()) this->strings.emplace_back(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Finalise(const StringData &data)
|
void Finalise(const StringData &) override
|
||||||
{
|
{
|
||||||
/* Nothing to do. */
|
/* Nothing to do. */
|
||||||
}
|
}
|
||||||
@@ -207,7 +207,7 @@ public:
|
|||||||
this->FileScanner::Scan(".txt", directory, false);
|
this->FileScanner::Scan(".txt", directory, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
|
bool AddFile(const std::string &filename, size_t, const std::string &) override
|
||||||
{
|
{
|
||||||
if (exclude == filename) return true;
|
if (exclude == filename) return true;
|
||||||
|
|
||||||
|
@@ -580,7 +580,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
/* Update the climate buttons */
|
/* Update the climate buttons */
|
||||||
@@ -595,7 +595,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
this->SetWidgetDisabledState(WID_GL_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == LG_ORIGINAL);
|
this->SetWidgetDisabledState(WID_GL_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == LG_ORIGINAL);
|
||||||
this->SetWidgetDisabledState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges);
|
this->SetWidgetDisabledState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges);
|
||||||
this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM,
|
this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM,
|
||||||
WID_GL_WATER_NW, WID_GL_WATER_NE, WID_GL_WATER_SE, WID_GL_WATER_SW, WIDGET_LIST_END);
|
WID_GL_WATER_NW, WID_GL_WATER_NE, WID_GL_WATER_SE, WID_GL_WATER_SW);
|
||||||
|
|
||||||
this->SetWidgetLoweredState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.water_borders == BORDERS_RANDOM);
|
this->SetWidgetLoweredState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.water_borders == BORDERS_RANDOM);
|
||||||
|
|
||||||
@@ -605,7 +605,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
this->SetWidgetLoweredState(WID_GL_WATER_SW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SW));
|
this->SetWidgetLoweredState(WID_GL_WATER_SW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SW));
|
||||||
|
|
||||||
this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC),
|
this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC),
|
||||||
WID_GL_TERRAIN_PULLDOWN, WID_GL_WATER_PULLDOWN, WIDGET_LIST_END);
|
WID_GL_TERRAIN_PULLDOWN, WID_GL_WATER_PULLDOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disable snowline if not arctic */
|
/* Disable snowline if not arctic */
|
||||||
@@ -655,7 +655,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
Dimension d{0, (uint)FONT_HEIGHT_NORMAL};
|
Dimension d{0, (uint)FONT_HEIGHT_NORMAL};
|
||||||
const StringID *strs = nullptr;
|
const StringID *strs = nullptr;
|
||||||
@@ -758,7 +758,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
*size = maxdim(*size, d);
|
*size = maxdim(*size, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GL_TEMPERATE:
|
case WID_GL_TEMPERATE:
|
||||||
@@ -998,16 +998,13 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
|
|
||||||
void OnTimeout() override
|
void OnTimeout() override
|
||||||
{
|
{
|
||||||
static const int newgame_raise_widgets[] = {WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WID_GL_RAINFOREST_LEVEL_UP, WID_GL_RAINFOREST_LEVEL_DOWN, WIDGET_LIST_END};
|
if (mode == GLWM_HEIGHTMAP) {
|
||||||
static const int heightmap_raise_widgets[] = {WID_GL_HEIGHTMAP_HEIGHT_DOWN, WID_GL_HEIGHTMAP_HEIGHT_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WID_GL_RAINFOREST_LEVEL_UP, WID_GL_RAINFOREST_LEVEL_DOWN, WIDGET_LIST_END};
|
this->RaiseWidgetsWhenLowered(WID_GL_HEIGHTMAP_HEIGHT_DOWN, WID_GL_HEIGHTMAP_HEIGHT_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP,
|
||||||
|
WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN, WID_GL_SNOW_LEVEL_UP,
|
||||||
const int *widget = (mode == GLWM_HEIGHTMAP) ? heightmap_raise_widgets : newgame_raise_widgets;
|
WID_GL_SNOW_LEVEL_DOWN, WID_GL_RAINFOREST_LEVEL_UP, WID_GL_RAINFOREST_LEVEL_DOWN);
|
||||||
|
} else {
|
||||||
for (; *widget != WIDGET_LIST_END; widget++) {
|
this->RaiseWidgetsWhenLowered(WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP,
|
||||||
if (this->IsWidgetLowered(*widget)) {
|
WID_GL_DESERT_COVERAGE_DOWN, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WID_GL_RAINFOREST_LEVEL_UP, WID_GL_RAINFOREST_LEVEL_DOWN);
|
||||||
this->RaiseWidget(*widget);
|
|
||||||
this->SetWidgetDirty(*widget);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1279,7 +1276,7 @@ struct CreateScenarioWindow : public Window
|
|||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
StringID str = STR_JUST_INT;
|
StringID str = STR_JUST_INT;
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -1306,7 +1303,7 @@ struct CreateScenarioWindow : public Window
|
|||||||
*size = maxdim(*size, d);
|
*size = maxdim(*size, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_CS_TEMPERATE:
|
case WID_CS_TEMPERATE:
|
||||||
@@ -1375,13 +1372,7 @@ struct CreateScenarioWindow : public Window
|
|||||||
|
|
||||||
void OnTimeout() override
|
void OnTimeout() override
|
||||||
{
|
{
|
||||||
static const int raise_widgets[] = {WID_CS_START_DATE_DOWN, WID_CS_START_DATE_UP, WID_CS_FLAT_LAND_HEIGHT_DOWN, WID_CS_FLAT_LAND_HEIGHT_UP, WIDGET_LIST_END};
|
this->RaiseWidgetsWhenLowered(WID_CS_START_DATE_DOWN, WID_CS_START_DATE_UP, WID_CS_FLAT_LAND_HEIGHT_DOWN, WID_CS_FLAT_LAND_HEIGHT_UP);
|
||||||
for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) {
|
|
||||||
if (this->IsWidgetLowered(*widget)) {
|
|
||||||
this->RaiseWidget(*widget);
|
|
||||||
this->SetWidgetDirty(*widget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
@@ -1530,7 +1521,7 @@ static const StringID _generation_class_table[] = {
|
|||||||
static_assert(lengthof(_generation_class_table) == GWP_CLASS_COUNT);
|
static_assert(lengthof(_generation_class_table) == GWP_CLASS_COUNT);
|
||||||
|
|
||||||
|
|
||||||
static void AbortGeneratingWorldCallback(Window *w, bool confirmed)
|
static void AbortGeneratingWorldCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
if (confirmed) {
|
if (confirmed) {
|
||||||
AbortGeneratingWorld();
|
AbortGeneratingWorld();
|
||||||
@@ -1546,7 +1537,7 @@ struct GenerateProgressWindow : public Window {
|
|||||||
this->InitNested();
|
this->InitNested();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GP_ABORT:
|
case WID_GP_ABORT:
|
||||||
@@ -1561,7 +1552,7 @@ struct GenerateProgressWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GP_PROGRESS_BAR: {
|
case WID_GP_PROGRESS_BAR: {
|
||||||
|
@@ -96,8 +96,9 @@ public:
|
|||||||
* @param c The character to add.
|
* @param c The character to add.
|
||||||
* @return The number of buffer spaces that were used.
|
* @return The number of buffer spaces that were used.
|
||||||
*/
|
*/
|
||||||
/* static */ size_t FallbackParagraphLayoutFactory::AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
|
/* static */ size_t FallbackParagraphLayoutFactory::AppendToBuffer(char32_t *buff, [[maybe_unused]] const char32_t *buffer_last, char32_t c)
|
||||||
{
|
{
|
||||||
|
assert(buff < buffer_last);
|
||||||
*buff = c;
|
*buff = c;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@@ -340,13 +340,11 @@ std::vector<ICURun> ItemizeScript(UChar *buff, size_t length, std::vector<ICURun
|
|||||||
*
|
*
|
||||||
* Basically, this always returns the same or more runs than given.
|
* Basically, this always returns the same or more runs than given.
|
||||||
*
|
*
|
||||||
* @param buff The string to itemize.
|
|
||||||
* @param length The length of the string.
|
|
||||||
* @param runs_current The current runs.
|
* @param runs_current The current runs.
|
||||||
* @param font_mapping The font mapping.
|
* @param font_mapping The font mapping.
|
||||||
* @return The runs.
|
* @return The runs.
|
||||||
*/
|
*/
|
||||||
std::vector<ICURun> ItemizeStyle(UChar *buff, size_t length, std::vector<ICURun> &runs_current, FontMap &font_mapping)
|
std::vector<ICURun> ItemizeStyle(std::vector<ICURun> &runs_current, FontMap &font_mapping)
|
||||||
{
|
{
|
||||||
std::vector<ICURun> runs;
|
std::vector<ICURun> runs;
|
||||||
|
|
||||||
@@ -380,7 +378,7 @@ std::vector<ICURun> ItemizeStyle(UChar *buff, size_t length, std::vector<ICURun>
|
|||||||
|
|
||||||
auto runs = ItemizeBidi(buff, length);
|
auto runs = ItemizeBidi(buff, length);
|
||||||
runs = ItemizeScript(buff, length, runs);
|
runs = ItemizeScript(buff, length, runs);
|
||||||
runs = ItemizeStyle(buff, length, runs, font_mapping);
|
runs = ItemizeStyle(runs, font_mapping);
|
||||||
|
|
||||||
if (runs.size() == 0) return nullptr;
|
if (runs.size() == 0) return nullptr;
|
||||||
|
|
||||||
@@ -524,6 +522,7 @@ std::unique_ptr<const ICUParagraphLayout::Line> ICUParagraphLayout::NextLine(int
|
|||||||
|
|
||||||
/* static */ size_t ICUParagraphLayoutFactory::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
|
/* static */ size_t ICUParagraphLayoutFactory::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
|
||||||
{
|
{
|
||||||
|
assert(buff < buffer_last);
|
||||||
/* Transform from UTF-32 to internal ICU format of UTF-16. */
|
/* Transform from UTF-32 to internal ICU format of UTF-16. */
|
||||||
int32 length = 0;
|
int32 length = 0;
|
||||||
UErrorCode err = U_ZERO_ERROR;
|
UErrorCode err = U_ZERO_ERROR;
|
||||||
|
@@ -63,7 +63,7 @@ struct GoalListWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GOAL_GLOBAL_BUTTON:
|
case WID_GOAL_GLOBAL_BUTTON:
|
||||||
@@ -168,7 +168,7 @@ struct GoalListWindow : public Window {
|
|||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_GOAL_LIST) return;
|
if (widget != WID_GOAL_LIST) return;
|
||||||
Dimension d = GetStringBoundingBox(STR_GOALS_NONE);
|
Dimension d = GetStringBoundingBox(STR_GOALS_NONE);
|
||||||
@@ -269,7 +269,7 @@ struct GoalListWindow : public Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->vscroll->SetCount(this->CountLines());
|
this->vscroll->SetCount(this->CountLines());
|
||||||
@@ -370,7 +370,7 @@ struct GoalQuestionWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GQ_BUTTON_1:
|
case WID_GQ_BUTTON_1:
|
||||||
@@ -390,7 +390,7 @@ struct GoalQuestionWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_GQ_QUESTION) return;
|
if (widget != WID_GQ_QUESTION) return;
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ struct GraphLegendWindow : Window {
|
|||||||
DrawString(tr.left, tr.right, CenterBounds(tr.top, tr.bottom, FONT_HEIGHT_NORMAL), STR_COMPANY_NAME_COMPANY_NUM, HasBit(_legend_excluded_companies, cid) ? TC_BLACK : TC_WHITE);
|
DrawString(tr.left, tr.right, CenterBounds(tr.top, tr.bottom, FONT_HEIGHT_NORMAL), STR_COMPANY_NAME_COMPANY_NUM, HasBit(_legend_excluded_companies, cid) ? TC_BLACK : TC_WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (!IsInsideMM(widget, WID_GL_FIRST_COMPANY, MAX_COMPANIES + WID_GL_FIRST_COMPANY)) return;
|
if (!IsInsideMM(widget, WID_GL_FIRST_COMPANY, MAX_COMPANIES + WID_GL_FIRST_COMPANY)) return;
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ struct GraphLegendWindow : Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
if (Company::IsValidID(data)) return;
|
if (Company::IsValidID(data)) return;
|
||||||
@@ -514,7 +514,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != this->graph_widget) return;
|
if (widget != this->graph_widget) return;
|
||||||
|
|
||||||
@@ -557,12 +557,12 @@ public:
|
|||||||
DrawGraph(r);
|
DrawGraph(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
|
virtual OverflowSafeInt64 GetGraphData(const Company *, int)
|
||||||
{
|
{
|
||||||
return INVALID_DATAPOINT;
|
return INVALID_DATAPOINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
/* Clicked on legend? */
|
/* Clicked on legend? */
|
||||||
if (widget == WID_CV_KEY_BUTTON) ShowGraphLegend();
|
if (widget == WID_CV_KEY_BUTTON) ShowGraphLegend();
|
||||||
@@ -578,7 +578,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->UpdateStatistics(true);
|
this->UpdateStatistics(true);
|
||||||
@@ -1061,7 +1061,7 @@ struct PerformanceHistoryGraphWindow : BaseGraphWindow {
|
|||||||
return c->old_economy[j].performance_history;
|
return c->old_economy[j].performance_history;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget == WID_PHG_DETAILED_PERFORMANCE) ShowPerformanceRatingDetail();
|
if (widget == WID_PHG_DETAILED_PERFORMANCE) ShowPerformanceRatingDetail();
|
||||||
this->BaseGraphWindow::OnClick(pt, widget, click_count);
|
this->BaseGraphWindow::OnClick(pt, widget, click_count);
|
||||||
@@ -1267,7 +1267,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_CPR_MATRIX) {
|
if (widget != WID_CPR_MATRIX) {
|
||||||
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
|
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
|
||||||
@@ -1326,7 +1326,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_CPR_ENABLE_CARGOES:
|
case WID_CPR_ENABLE_CARGOES:
|
||||||
@@ -1386,7 +1386,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->SetXAxis();
|
this->SetXAxis();
|
||||||
@@ -1533,7 +1533,7 @@ struct PerformanceRatingDetailWindow : Window {
|
|||||||
uint score_detail_left;
|
uint score_detail_left;
|
||||||
uint score_detail_right;
|
uint score_detail_right;
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_PRD_SCORE_FIRST:
|
case WID_PRD_SCORE_FIRST:
|
||||||
@@ -1670,7 +1670,7 @@ struct PerformanceRatingDetailWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
/* Check which button is clicked */
|
/* Check which button is clicked */
|
||||||
if (IsInsideMM(widget, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST + 1)) {
|
if (IsInsideMM(widget, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST + 1)) {
|
||||||
@@ -1698,7 +1698,7 @@ struct PerformanceRatingDetailWindow : Window {
|
|||||||
* @param data the company ID of the company that is going to be removed
|
* @param data the company ID of the company that is going to be removed
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
/* Disable the companies who are not active */
|
/* Disable the companies who are not active */
|
||||||
|
@@ -424,9 +424,6 @@ public:
|
|||||||
this->group_rename = INVALID_GROUP;
|
this->group_rename = INVALID_GROUP;
|
||||||
this->group_over = INVALID_GROUP;
|
this->group_over = INVALID_GROUP;
|
||||||
|
|
||||||
this->BuildVehicleList();
|
|
||||||
this->SortVehicleList();
|
|
||||||
|
|
||||||
this->groups.ForceRebuild();
|
this->groups.ForceRebuild();
|
||||||
this->groups.NeedResort();
|
this->groups.NeedResort();
|
||||||
this->BuildGroupList(vli.company);
|
this->BuildGroupList(vli.company);
|
||||||
@@ -445,6 +442,9 @@ public:
|
|||||||
|
|
||||||
this->FinishInitNested(window_number);
|
this->FinishInitNested(window_number);
|
||||||
this->owner = vli.company;
|
this->owner = vli.company;
|
||||||
|
|
||||||
|
this->BuildVehicleList();
|
||||||
|
this->SortVehicleList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Close() override
|
void Close() override
|
||||||
@@ -453,7 +453,7 @@ public:
|
|||||||
this->Window::Close();
|
this->Window::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GL_LIST_GROUP:
|
case WID_GL_LIST_GROUP:
|
||||||
@@ -511,7 +511,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (data == 0) {
|
if (data == 0) {
|
||||||
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
||||||
@@ -593,16 +593,14 @@ public:
|
|||||||
this->SetWidgetDisabledState(WID_GL_MANAGE_VEHICLES_DROPDOWN, !this->ShouldShowActionDropdownList() || _local_company != this->vli.company);
|
this->SetWidgetDisabledState(WID_GL_MANAGE_VEHICLES_DROPDOWN, !this->ShouldShowActionDropdownList() || _local_company != this->vli.company);
|
||||||
this->SetWidgetsDisabledState(this->vehicles.size() == 0 || _local_company != this->vli.company || (IsTopLevelGroupID(this->vli.index) && _settings_client.gui.disable_top_veh_list_mass_actions),
|
this->SetWidgetsDisabledState(this->vehicles.size() == 0 || _local_company != this->vli.company || (IsTopLevelGroupID(this->vli.index) && _settings_client.gui.disable_top_veh_list_mass_actions),
|
||||||
WID_GL_STOP_ALL,
|
WID_GL_STOP_ALL,
|
||||||
WID_GL_START_ALL,
|
WID_GL_START_ALL);
|
||||||
WIDGET_LIST_END);
|
|
||||||
|
|
||||||
/* Disable the group specific function when we select the default group or all vehicles */
|
/* Disable the group specific function when we select the default group or all vehicles */
|
||||||
this->SetWidgetsDisabledState(IsDefaultGroupID(this->vli.index) || IsAllGroupID(this->vli.index) || _local_company != this->vli.company,
|
this->SetWidgetsDisabledState(IsDefaultGroupID(this->vli.index) || IsAllGroupID(this->vli.index) || _local_company != this->vli.company,
|
||||||
WID_GL_DELETE_GROUP,
|
WID_GL_DELETE_GROUP,
|
||||||
WID_GL_RENAME_GROUP,
|
WID_GL_RENAME_GROUP,
|
||||||
WID_GL_LIVERY_GROUP,
|
WID_GL_LIVERY_GROUP,
|
||||||
WID_GL_REPLACE_PROTECTION,
|
WID_GL_REPLACE_PROTECTION);
|
||||||
WIDGET_LIST_END);
|
|
||||||
|
|
||||||
/* Disable remaining buttons for non-local companies
|
/* Disable remaining buttons for non-local companies
|
||||||
* Needed while changing _local_company, eg. by cheats
|
* Needed while changing _local_company, eg. by cheats
|
||||||
@@ -612,8 +610,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
this->SetWidgetsDisabledState(_local_company != this->vli.company,
|
this->SetWidgetsDisabledState(_local_company != this->vli.company,
|
||||||
WID_GL_CREATE_GROUP,
|
WID_GL_CREATE_GROUP,
|
||||||
WID_GL_AVAILABLE_VEHICLES,
|
WID_GL_AVAILABLE_VEHICLES);
|
||||||
WIDGET_LIST_END);
|
|
||||||
|
|
||||||
/* If not a default group and the group has replace protection, show an enabled replace sprite. */
|
/* If not a default group and the group has replace protection, show an enabled replace sprite. */
|
||||||
uint16 protect_sprite = SPR_GROUP_REPLACE_OFF_TRAIN;
|
uint16 protect_sprite = SPR_GROUP_REPLACE_OFF_TRAIN;
|
||||||
@@ -716,7 +713,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GL_SORT_BY_ORDER: // Flip sorting method ascending/descending
|
case WID_GL_SORT_BY_ORDER: // Flip sorting method ascending/descending
|
||||||
|
@@ -129,7 +129,7 @@ struct HelpWindow : public Window {
|
|||||||
this->EnableTextfileButton(LICENSE_FILENAME, WID_HW_LICENSE);
|
this->EnableTextfileButton(LICENSE_FILENAME, WID_HW_LICENSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_HW_README:
|
case WID_HW_README:
|
||||||
|
@@ -62,7 +62,7 @@ struct EndGameHighScoreBaseWindow : Window {
|
|||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, [[maybe_unused]] int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
this->Close();
|
this->Close();
|
||||||
}
|
}
|
||||||
|
@@ -206,7 +206,7 @@ Industry::~Industry()
|
|||||||
* Invalidating some stuff after removing item from the pool.
|
* Invalidating some stuff after removing item from the pool.
|
||||||
* @param index index of deleted item
|
* @param index index of deleted item
|
||||||
*/
|
*/
|
||||||
void Industry::PostDestructor(size_t index)
|
void Industry::PostDestructor(size_t)
|
||||||
{
|
{
|
||||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_FORCE_REBUILD);
|
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_FORCE_REBUILD);
|
||||||
SetWindowDirty(WC_BUILD_INDUSTRY, 0);
|
SetWindowDirty(WC_BUILD_INDUSTRY, 0);
|
||||||
@@ -385,7 +385,7 @@ static void DrawTile_Industry(TileInfo *ti, DrawTileProcParams params)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetSlopePixelZ_Industry(TileIndex tile, uint x, uint y, bool ground_vehicle)
|
static int GetSlopePixelZ_Industry(TileIndex tile, uint, uint, bool)
|
||||||
{
|
{
|
||||||
return GetTileMaxPixelZ(tile);
|
return GetTileMaxPixelZ(tile);
|
||||||
}
|
}
|
||||||
@@ -993,7 +993,7 @@ static bool ClickTile_Industry(TileIndex tile)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
static TrackStatus GetTileTrackStatus_Industry(TileIndex, TransportType, uint, DiagDirection)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1140,10 +1140,9 @@ void PlantRandomFarmField(const Industry *i)
|
|||||||
/**
|
/**
|
||||||
* Search callback function for ChopLumberMillTrees
|
* Search callback function for ChopLumberMillTrees
|
||||||
* @param tile to test
|
* @param tile to test
|
||||||
* @param user_data that is passed by the caller. In this case, nothing
|
|
||||||
* @return the result of the test
|
* @return the result of the test
|
||||||
*/
|
*/
|
||||||
static bool SearchLumberMillTrees(TileIndex tile, void *user_data)
|
static bool SearchLumberMillTrees(TileIndex tile, void *)
|
||||||
{
|
{
|
||||||
if (IsTileType(tile, MP_TREES) && GetTreeGrowth(tile) > 2) { ///< 3 and up means all fully grown trees
|
if (IsTileType(tile, MP_TREES) && GetTreeGrowth(tile) > 2) { ///< 3 and up means all fully grown trees
|
||||||
/* found a tree */
|
/* found a tree */
|
||||||
@@ -1168,6 +1167,9 @@ static bool SearchLumberMillTrees(TileIndex tile, void *user_data)
|
|||||||
*/
|
*/
|
||||||
static void ChopLumberMillTrees(Industry *i)
|
static void ChopLumberMillTrees(Industry *i)
|
||||||
{
|
{
|
||||||
|
/* Skip production if cargo slot is invalid. */
|
||||||
|
if (i->produced_cargo[0] == CT_INVALID) return;
|
||||||
|
|
||||||
/* We only want to cut trees if all tiles are completed. */
|
/* We only want to cut trees if all tiles are completed. */
|
||||||
for (TileIndex tile_cur : i->location) {
|
for (TileIndex tile_cur : i->location) {
|
||||||
if (i->TileBelongsToIndustry(tile_cur)) {
|
if (i->TileBelongsToIndustry(tile_cur)) {
|
||||||
@@ -1184,6 +1186,7 @@ static void ChopLumberMillTrees(Industry *i)
|
|||||||
static void ProduceIndustryGoodsFromRate(Industry *i, bool scale)
|
static void ProduceIndustryGoodsFromRate(Industry *i, bool scale)
|
||||||
{
|
{
|
||||||
for (size_t j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
|
for (size_t j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
|
||||||
|
if (i->produced_cargo[j] == CT_INVALID) continue;
|
||||||
uint amount = i->production_rate[j];
|
uint amount = i->production_rate[j];
|
||||||
if (amount != 0 && scale) {
|
if (amount != 0 && scale) {
|
||||||
amount = ScaleQuantity(amount, _settings_game.economy.industry_cargo_scale_factor);
|
amount = ScaleQuantity(amount, _settings_game.economy.industry_cargo_scale_factor);
|
||||||
@@ -1291,10 +1294,9 @@ void OnTick_Industry()
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the conditions of #CHECK_NOTHING (Always succeeds).
|
* Check the conditions of #CHECK_NOTHING (Always succeeds).
|
||||||
* @param tile %Tile to perform the checking.
|
|
||||||
* @return Succeeded or failed command.
|
* @return Succeeded or failed command.
|
||||||
*/
|
*/
|
||||||
static CommandCost CheckNewIndustry_NULL(TileIndex tile)
|
static CommandCost CheckNewIndustry_NULL(TileIndex)
|
||||||
{
|
{
|
||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
@@ -1660,7 +1662,7 @@ static bool CheckCanTerraformSurroundingTiles(TileIndex tile, uint height, int i
|
|||||||
* This function tries to flatten out the land below an industry, without
|
* This function tries to flatten out the land below an industry, without
|
||||||
* damaging the surroundings too much.
|
* damaging the surroundings too much.
|
||||||
*/
|
*/
|
||||||
static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, DoCommandFlag flags, const IndustryTileLayout &layout, int type)
|
static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, DoCommandFlag flags, const IndustryTileLayout &layout)
|
||||||
{
|
{
|
||||||
int max_x = 0;
|
int max_x = 0;
|
||||||
int max_y = 0;
|
int max_y = 0;
|
||||||
@@ -2074,7 +2076,7 @@ static CommandCost CreateNewIndustryHelper(TileIndex tile, IndustryType type, Do
|
|||||||
if (ret.Failed()) return ret;
|
if (ret.Failed()) return ret;
|
||||||
|
|
||||||
if (!custom_shape_check && _settings_game.game_creation.land_generator == LG_TERRAGENESIS && _generating_world &&
|
if (!custom_shape_check && _settings_game.game_creation.land_generator == LG_TERRAGENESIS && _generating_world &&
|
||||||
!_ignore_restrictions && !CheckIfCanLevelIndustryPlatform(tile, DC_NO_WATER, layout, type)) {
|
!_ignore_restrictions && !CheckIfCanLevelIndustryPlatform(tile, DC_NO_WATER, layout)) {
|
||||||
return_cmd_error(STR_ERROR_SITE_UNSUITABLE);
|
return_cmd_error(STR_ERROR_SITE_UNSUITABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2082,7 +2084,7 @@ static CommandCost CreateNewIndustryHelper(TileIndex tile, IndustryType type, Do
|
|||||||
|
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
*ip = new Industry(tile);
|
*ip = new Industry(tile);
|
||||||
if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_NO_WATER | DC_EXEC, layout, type);
|
if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_NO_WATER | DC_EXEC, layout);
|
||||||
DoCreateNewIndustry(*ip, tile, type, layout, layout_index, t, founder, random_initial_bits);
|
DoCreateNewIndustry(*ip, tile, type, layout, layout_index, t, founder, random_initial_bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -430,7 +430,7 @@ public:
|
|||||||
this->SetupArrays();
|
this->SetupArrays();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_DPI_MATRIX_WIDGET: {
|
case WID_DPI_MATRIX_WIDGET: {
|
||||||
@@ -603,7 +603,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AskManyRandomIndustriesCallback(Window *w, bool confirmed)
|
static void AskManyRandomIndustriesCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
if (!confirmed) return;
|
if (!confirmed) return;
|
||||||
|
|
||||||
@@ -618,7 +618,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AskRemoveAllIndustriesCallback(Window *w, bool confirmed)
|
static void AskRemoveAllIndustriesCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
if (!confirmed) return;
|
if (!confirmed) return;
|
||||||
|
|
||||||
@@ -634,7 +634,7 @@ public:
|
|||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_DPI_CREATE_RANDOM_INDUSTRIES_WIDGET: {
|
case WID_DPI_CREATE_RANDOM_INDUSTRIES_WIDGET: {
|
||||||
@@ -698,7 +698,7 @@ public:
|
|||||||
this->vscroll->SetCapacityFromWidget(this, WID_DPI_MATRIX_WIDGET);
|
this->vscroll->SetCapacityFromWidget(this, WID_DPI_MATRIX_WIDGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlaceObject(Point pt, TileIndex tile) override
|
void OnPlaceObject([[maybe_unused]] Point pt, TileIndex tile) override
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
/* We do not need to protect ourselves against "Random Many Industries" in this mode */
|
/* We do not need to protect ourselves against "Random Many Industries" in this mode */
|
||||||
@@ -760,7 +760,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->SetupArrays();
|
this->SetupArrays();
|
||||||
@@ -992,12 +992,12 @@ public:
|
|||||||
if (widget == WID_IV_CAPTION) SetDParam(0, this->window_number);
|
if (widget == WID_IV_CAPTION) SetDParam(0, this->window_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget == WID_IV_INFO) size->height = this->info_height;
|
if (widget == WID_IV_INFO) size->height = this->info_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_IV_INFO: {
|
case WID_IV_INFO: {
|
||||||
@@ -1145,7 +1145,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
const Industry *i = Industry::Get(this->window_number);
|
const Industry *i = Industry::Get(this->window_number);
|
||||||
@@ -1622,7 +1622,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IndustryDirectoryWindow(WindowDesc *desc, WindowNumber number) : Window(desc), industry_editbox(MAX_FILTER_LENGTH * MAX_CHAR_LENGTH, MAX_FILTER_LENGTH)
|
IndustryDirectoryWindow(WindowDesc *desc, WindowNumber) : Window(desc), industry_editbox(MAX_FILTER_LENGTH * MAX_CHAR_LENGTH, MAX_FILTER_LENGTH)
|
||||||
{
|
{
|
||||||
this->CreateNestedTree();
|
this->CreateNestedTree();
|
||||||
this->vscroll = this->GetScrollbar(WID_ID_SCROLLBAR);
|
this->vscroll = this->GetScrollbar(WID_ID_SCROLLBAR);
|
||||||
@@ -1630,10 +1630,11 @@ public:
|
|||||||
this->industries.SetListing(this->last_sorting);
|
this->industries.SetListing(this->last_sorting);
|
||||||
this->industries.SetSortFuncs(IndustryDirectoryWindow::sorter_funcs);
|
this->industries.SetSortFuncs(IndustryDirectoryWindow::sorter_funcs);
|
||||||
this->industries.ForceRebuild();
|
this->industries.ForceRebuild();
|
||||||
this->BuildSortIndustriesList();
|
|
||||||
|
|
||||||
this->FinishInitNested(0);
|
this->FinishInitNested(0);
|
||||||
|
|
||||||
|
this->BuildSortIndustriesList();
|
||||||
|
|
||||||
this->querystrings[WID_ID_FILTER] = &this->industry_editbox;
|
this->querystrings[WID_ID_FILTER] = &this->industry_editbox;
|
||||||
this->industry_editbox.cancel_button = QueryString::ACTION_CLEAR;
|
this->industry_editbox.cancel_button = QueryString::ACTION_CLEAR;
|
||||||
}
|
}
|
||||||
@@ -1700,7 +1701,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_ID_DROPDOWN_ORDER: {
|
case WID_ID_DROPDOWN_ORDER: {
|
||||||
@@ -1738,7 +1739,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_ID_DROPDOWN_ORDER:
|
case WID_ID_DROPDOWN_ORDER:
|
||||||
@@ -1827,7 +1828,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case IDIWD_FORCE_REBUILD:
|
case IDIWD_FORCE_REBUILD:
|
||||||
@@ -1931,6 +1932,11 @@ enum CargoesFieldType {
|
|||||||
|
|
||||||
static const uint MAX_CARGOES = 16; ///< Maximum number of cargoes carried in a #CFT_CARGO field in #CargoesField.
|
static const uint MAX_CARGOES = 16; ///< Maximum number of cargoes carried in a #CFT_CARGO field in #CargoesField.
|
||||||
|
|
||||||
|
static bool CargoIDSorter(const CargoID &a, const CargoID &b)
|
||||||
|
{
|
||||||
|
return _sorted_cargo_types[a] < _sorted_cargo_types[b];
|
||||||
|
}
|
||||||
|
|
||||||
/** Data about a single field in the #IndustryCargoesWindow panel. */
|
/** Data about a single field in the #IndustryCargoesWindow panel. */
|
||||||
struct CargoesField {
|
struct CargoesField {
|
||||||
static int vert_inter_industry_space;
|
static int vert_inter_industry_space;
|
||||||
@@ -1958,15 +1964,15 @@ struct CargoesField {
|
|||||||
CargoID other_accepted[MAX_CARGOES]; ///< Cargoes accepted but not used in this figure.
|
CargoID other_accepted[MAX_CARGOES]; ///< Cargoes accepted but not used in this figure.
|
||||||
} industry; ///< Industry data (for #CFT_INDUSTRY).
|
} industry; ///< Industry data (for #CFT_INDUSTRY).
|
||||||
struct {
|
struct {
|
||||||
CargoID vertical_cargoes[MAX_CARGOES]; ///< Cargoes running from top to bottom (cargo ID or #INVALID_CARGO).
|
CargoID vertical_cargoes[MAX_CARGOES]; ///< Cargoes running from top to bottom (cargo ID or #CT_INVALID).
|
||||||
byte num_cargoes; ///< Number of cargoes.
|
uint8_t num_cargoes; ///< Number of cargoes.
|
||||||
CargoID supp_cargoes[MAX_CARGOES]; ///< Cargoes entering from the left (index in #vertical_cargoes, or #INVALID_CARGO).
|
CargoID supp_cargoes[MAX_CARGOES]; ///< Cargoes entering from the left (index in #vertical_cargoes, or #CT_INVALID).
|
||||||
byte top_end; ///< Stop at the top of the vertical cargoes.
|
uint8_t top_end; ///< Stop at the top of the vertical cargoes.
|
||||||
CargoID cust_cargoes[MAX_CARGOES]; ///< Cargoes leaving to the right (index in #vertical_cargoes, or #INVALID_CARGO).
|
CargoID cust_cargoes[MAX_CARGOES]; ///< Cargoes leaving to the right (index in #vertical_cargoes, or #CT_INVALID).
|
||||||
byte bottom_end; ///< Stop at the bottom of the vertical cargoes.
|
uint8_t bottom_end; ///< Stop at the bottom of the vertical cargoes.
|
||||||
} cargo; ///< Cargo data (for #CFT_CARGO).
|
} cargo; ///< Cargo data (for #CFT_CARGO).
|
||||||
struct {
|
struct {
|
||||||
CargoID cargoes[MAX_CARGOES]; ///< Cargoes to display (or #INVALID_CARGO).
|
CargoID cargoes[MAX_CARGOES]; ///< Cargoes to display (or #CT_INVALID).
|
||||||
bool left_align; ///< Align all cargo texts to the left (else align to the right).
|
bool left_align; ///< Align all cargo texts to the left (else align to the right).
|
||||||
} cargo_label; ///< Label data (for #CFT_CARGO_LABEL).
|
} cargo_label; ///< Label data (for #CFT_CARGO_LABEL).
|
||||||
StringID header; ///< Header text (for #CFT_HEADER).
|
StringID header; ///< Header text (for #CFT_HEADER).
|
||||||
@@ -1990,8 +1996,8 @@ struct CargoesField {
|
|||||||
{
|
{
|
||||||
this->type = CFT_INDUSTRY;
|
this->type = CFT_INDUSTRY;
|
||||||
this->u.industry.ind_type = ind_type;
|
this->u.industry.ind_type = ind_type;
|
||||||
MemSetT(this->u.industry.other_accepted, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(this->u.industry.other_accepted), std::end(this->u.industry.other_accepted), CT_INVALID);
|
||||||
MemSetT(this->u.industry.other_produced, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(this->u.industry.other_produced), std::end(this->u.industry.other_produced), CT_INVALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2003,7 +2009,7 @@ struct CargoesField {
|
|||||||
int ConnectCargo(CargoID cargo, bool producer)
|
int ConnectCargo(CargoID cargo, bool producer)
|
||||||
{
|
{
|
||||||
assert(this->type == CFT_CARGO);
|
assert(this->type == CFT_CARGO);
|
||||||
if (cargo == INVALID_CARGO) return -1;
|
if (cargo == CT_INVALID) return -1;
|
||||||
|
|
||||||
/* Find the vertical cargo column carrying the cargo. */
|
/* Find the vertical cargo column carrying the cargo. */
|
||||||
int column = -1;
|
int column = -1;
|
||||||
@@ -2016,10 +2022,10 @@ struct CargoesField {
|
|||||||
if (column < 0) return -1;
|
if (column < 0) return -1;
|
||||||
|
|
||||||
if (producer) {
|
if (producer) {
|
||||||
assert(this->u.cargo.supp_cargoes[column] == INVALID_CARGO);
|
assert(this->u.cargo.supp_cargoes[column] == CT_INVALID);
|
||||||
this->u.cargo.supp_cargoes[column] = column;
|
this->u.cargo.supp_cargoes[column] = column;
|
||||||
} else {
|
} else {
|
||||||
assert(this->u.cargo.cust_cargoes[column] == INVALID_CARGO);
|
assert(this->u.cargo.cust_cargoes[column] == CT_INVALID);
|
||||||
this->u.cargo.cust_cargoes[column] = column;
|
this->u.cargo.cust_cargoes[column] = column;
|
||||||
}
|
}
|
||||||
return column;
|
return column;
|
||||||
@@ -2034,15 +2040,15 @@ struct CargoesField {
|
|||||||
assert(this->type == CFT_CARGO);
|
assert(this->type == CFT_CARGO);
|
||||||
|
|
||||||
for (uint i = 0; i < MAX_CARGOES; i++) {
|
for (uint i = 0; i < MAX_CARGOES; i++) {
|
||||||
if (this->u.cargo.supp_cargoes[i] != INVALID_CARGO) return true;
|
if (this->u.cargo.supp_cargoes[i] != CT_INVALID) return true;
|
||||||
if (this->u.cargo.cust_cargoes[i] != INVALID_CARGO) return true;
|
if (this->u.cargo.cust_cargoes[i] != CT_INVALID) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make a piece of cargo column.
|
* Make a piece of cargo column.
|
||||||
* @param cargoes Array of #CargoID (may contain #INVALID_CARGO).
|
* @param cargoes Array of #CargoID (may contain #CT_INVALID).
|
||||||
* @param length Number of cargoes in \a cargoes.
|
* @param length Number of cargoes in \a cargoes.
|
||||||
* @param count Number of cargoes to display (should be at least the number of valid cargoes, or \c -1 to let the method compute it).
|
* @param count Number of cargoes to display (should be at least the number of valid cargoes, or \c -1 to let the method compute it).
|
||||||
* @param top_end This is the first cargo field of this column.
|
* @param top_end This is the first cargo field of this column.
|
||||||
@@ -2052,25 +2058,25 @@ struct CargoesField {
|
|||||||
void MakeCargo(const CargoID *cargoes, uint length, int count = -1, bool top_end = false, bool bottom_end = false)
|
void MakeCargo(const CargoID *cargoes, uint length, int count = -1, bool top_end = false, bool bottom_end = false)
|
||||||
{
|
{
|
||||||
this->type = CFT_CARGO;
|
this->type = CFT_CARGO;
|
||||||
uint i;
|
auto insert = std::begin(this->u.cargo.vertical_cargoes);
|
||||||
uint num = 0;
|
for (uint i = 0; insert != std::end(this->u.cargo.vertical_cargoes) && i < length; i++) {
|
||||||
for (i = 0; i < MAX_CARGOES && i < length; i++) {
|
if (cargoes[i] != CT_INVALID) {
|
||||||
if (cargoes[i] != INVALID_CARGO) {
|
*insert = cargoes[i];
|
||||||
this->u.cargo.vertical_cargoes[num] = cargoes[i];
|
++insert;
|
||||||
num++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->u.cargo.num_cargoes = (count < 0) ? num : count;
|
this->u.cargo.num_cargoes = (count < 0) ? static_cast<uint8_t>(insert - std::begin(this->u.cargo.vertical_cargoes)) : count;
|
||||||
for (; num < MAX_CARGOES; num++) this->u.cargo.vertical_cargoes[num] = INVALID_CARGO;
|
std::sort(std::begin(this->u.cargo.vertical_cargoes), insert, &CargoIDSorter);
|
||||||
|
std::fill(insert, std::end(this->u.cargo.vertical_cargoes), CT_INVALID);
|
||||||
this->u.cargo.top_end = top_end;
|
this->u.cargo.top_end = top_end;
|
||||||
this->u.cargo.bottom_end = bottom_end;
|
this->u.cargo.bottom_end = bottom_end;
|
||||||
MemSetT(this->u.cargo.supp_cargoes, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(this->u.cargo.supp_cargoes), std::end(this->u.cargo.supp_cargoes), CT_INVALID);
|
||||||
MemSetT(this->u.cargo.cust_cargoes, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(this->u.cargo.cust_cargoes), std::end(this->u.cargo.cust_cargoes), CT_INVALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make a field displaying cargo type names.
|
* Make a field displaying cargo type names.
|
||||||
* @param cargoes Array of #CargoID (may contain #INVALID_CARGO).
|
* @param cargoes Array of #CargoID (may contain #CT_INVALID).
|
||||||
* @param length Number of cargoes in \a cargoes.
|
* @param length Number of cargoes in \a cargoes.
|
||||||
* @param left_align ALign texts to the left (else to the right).
|
* @param left_align ALign texts to the left (else to the right).
|
||||||
*/
|
*/
|
||||||
@@ -2079,7 +2085,7 @@ struct CargoesField {
|
|||||||
this->type = CFT_CARGO_LABEL;
|
this->type = CFT_CARGO_LABEL;
|
||||||
uint i;
|
uint i;
|
||||||
for (i = 0; i < MAX_CARGOES && i < length; i++) this->u.cargo_label.cargoes[i] = cargoes[i];
|
for (i = 0; i < MAX_CARGOES && i < length; i++) this->u.cargo_label.cargoes[i] = cargoes[i];
|
||||||
for (; i < MAX_CARGOES; i++) this->u.cargo_label.cargoes[i] = INVALID_CARGO;
|
for (; i < MAX_CARGOES; i++) this->u.cargo_label.cargoes[i] = CT_INVALID;
|
||||||
this->u.cargo_label.left_align = left_align;
|
this->u.cargo_label.left_align = left_align;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2162,13 +2168,13 @@ struct CargoesField {
|
|||||||
}
|
}
|
||||||
ypos1 += CargoesField::cargo_border.height + (FONT_HEIGHT_NORMAL - CargoesField::cargo_line.height) / 2;
|
ypos1 += CargoesField::cargo_border.height + (FONT_HEIGHT_NORMAL - CargoesField::cargo_line.height) / 2;
|
||||||
for (uint i = 0; i < CargoesField::max_cargoes; i++) {
|
for (uint i = 0; i < CargoesField::max_cargoes; i++) {
|
||||||
if (other_right[i] != INVALID_CARGO) {
|
if (other_right[i] != CT_INVALID) {
|
||||||
const CargoSpec *csp = CargoSpec::Get(other_right[i]);
|
const CargoSpec *csp = CargoSpec::Get(other_right[i]);
|
||||||
int xp = xpos + industry_width + CargoesField::cargo_stub.width;
|
int xp = xpos + industry_width + CargoesField::cargo_stub.width;
|
||||||
DrawHorConnection(xpos + industry_width, xp - 1, ypos1, csp);
|
DrawHorConnection(xpos + industry_width, xp - 1, ypos1, csp);
|
||||||
GfxDrawLine(xp, ypos1, xp, ypos1 + CargoesField::cargo_line.height - 1, CARGO_LINE_COLOUR);
|
GfxDrawLine(xp, ypos1, xp, ypos1 + CargoesField::cargo_line.height - 1, CARGO_LINE_COLOUR);
|
||||||
}
|
}
|
||||||
if (other_left[i] != INVALID_CARGO) {
|
if (other_left[i] != CT_INVALID) {
|
||||||
const CargoSpec *csp = CargoSpec::Get(other_left[i]);
|
const CargoSpec *csp = CargoSpec::Get(other_left[i]);
|
||||||
int xp = xpos - CargoesField::cargo_stub.width;
|
int xp = xpos - CargoesField::cargo_stub.width;
|
||||||
DrawHorConnection(xp + 1, xpos - 1, ypos1, csp);
|
DrawHorConnection(xp + 1, xpos - 1, ypos1, csp);
|
||||||
@@ -2206,7 +2212,7 @@ struct CargoesField {
|
|||||||
}
|
}
|
||||||
ypos += CargoesField::cargo_border.height + vert_inter_industry_space / 2 + (FONT_HEIGHT_NORMAL - CargoesField::cargo_line.height) / 2;
|
ypos += CargoesField::cargo_border.height + vert_inter_industry_space / 2 + (FONT_HEIGHT_NORMAL - CargoesField::cargo_line.height) / 2;
|
||||||
for (uint i = 0; i < MAX_CARGOES; i++) {
|
for (uint i = 0; i < MAX_CARGOES; i++) {
|
||||||
if (hor_left[i] != INVALID_CARGO) {
|
if (hor_left[i] != CT_INVALID) {
|
||||||
int col = hor_left[i];
|
int col = hor_left[i];
|
||||||
int dx = 0;
|
int dx = 0;
|
||||||
const CargoSpec *csp = CargoSpec::Get(this->u.cargo.vertical_cargoes[col]);
|
const CargoSpec *csp = CargoSpec::Get(this->u.cargo.vertical_cargoes[col]);
|
||||||
@@ -2217,7 +2223,7 @@ struct CargoesField {
|
|||||||
}
|
}
|
||||||
DrawHorConnection(xpos, cargo_base - dx, ypos, csp);
|
DrawHorConnection(xpos, cargo_base - dx, ypos, csp);
|
||||||
}
|
}
|
||||||
if (hor_right[i] != INVALID_CARGO) {
|
if (hor_right[i] != CT_INVALID) {
|
||||||
int col = hor_right[i];
|
int col = hor_right[i];
|
||||||
int dx = 0;
|
int dx = 0;
|
||||||
const CargoSpec *csp = CargoSpec::Get(this->u.cargo.vertical_cargoes[col]);
|
const CargoSpec *csp = CargoSpec::Get(this->u.cargo.vertical_cargoes[col]);
|
||||||
@@ -2236,7 +2242,7 @@ struct CargoesField {
|
|||||||
case CFT_CARGO_LABEL:
|
case CFT_CARGO_LABEL:
|
||||||
ypos += CargoesField::cargo_border.height + vert_inter_industry_space / 2;
|
ypos += CargoesField::cargo_border.height + vert_inter_industry_space / 2;
|
||||||
for (uint i = 0; i < MAX_CARGOES; i++) {
|
for (uint i = 0; i < MAX_CARGOES; i++) {
|
||||||
if (this->u.cargo_label.cargoes[i] != INVALID_CARGO) {
|
if (this->u.cargo_label.cargoes[i] != CT_INVALID) {
|
||||||
const CargoSpec *csp = CargoSpec::Get(this->u.cargo_label.cargoes[i]);
|
const CargoSpec *csp = CargoSpec::Get(this->u.cargo_label.cargoes[i]);
|
||||||
DrawString(xpos + WidgetDimensions::scaled.framerect.left, xpos + industry_width - 1 - WidgetDimensions::scaled.framerect.right, ypos, csp->name, TC_WHITE,
|
DrawString(xpos + WidgetDimensions::scaled.framerect.left, xpos + industry_width - 1 - WidgetDimensions::scaled.framerect.right, ypos, csp->name, TC_WHITE,
|
||||||
(this->u.cargo_label.left_align) ? SA_LEFT : SA_RIGHT);
|
(this->u.cargo_label.left_align) ? SA_LEFT : SA_RIGHT);
|
||||||
@@ -2255,7 +2261,7 @@ struct CargoesField {
|
|||||||
* @param left Left industry neighbour if available (else \c nullptr should be supplied).
|
* @param left Left industry neighbour if available (else \c nullptr should be supplied).
|
||||||
* @param right Right industry neighbour if available (else \c nullptr should be supplied).
|
* @param right Right industry neighbour if available (else \c nullptr should be supplied).
|
||||||
* @param pt Click position in the cargo field.
|
* @param pt Click position in the cargo field.
|
||||||
* @return Cargo clicked at, or #INVALID_CARGO if none.
|
* @return Cargo clicked at, or #CT_INVALID if none.
|
||||||
*/
|
*/
|
||||||
CargoID CargoClickedAt(const CargoesField *left, const CargoesField *right, Point pt) const
|
CargoID CargoClickedAt(const CargoesField *left, const CargoesField *right, Point pt) const
|
||||||
{
|
{
|
||||||
@@ -2274,45 +2280,50 @@ struct CargoesField {
|
|||||||
int vpos = vert_inter_industry_space / 2 + CargoesField::cargo_border.width;
|
int vpos = vert_inter_industry_space / 2 + CargoesField::cargo_border.width;
|
||||||
uint row;
|
uint row;
|
||||||
for (row = 0; row < MAX_CARGOES; row++) {
|
for (row = 0; row < MAX_CARGOES; row++) {
|
||||||
if (pt.y < vpos) return INVALID_CARGO;
|
if (pt.y < vpos) return CT_INVALID;
|
||||||
if (pt.y < vpos + FONT_HEIGHT_NORMAL) break;
|
if (pt.y < vpos + FONT_HEIGHT_NORMAL) break;
|
||||||
vpos += FONT_HEIGHT_NORMAL + CargoesField::cargo_space.width;
|
vpos += FONT_HEIGHT_NORMAL + CargoesField::cargo_space.width;
|
||||||
}
|
}
|
||||||
if (row == MAX_CARGOES) return INVALID_CARGO;
|
if (row == MAX_CARGOES) return CT_INVALID;
|
||||||
|
|
||||||
/* row = 0 -> at first horizontal row, row = 1 -> second horizontal row, 2 = 3rd horizontal row. */
|
/* row = 0 -> at first horizontal row, row = 1 -> second horizontal row, 2 = 3rd horizontal row. */
|
||||||
if (col == 0) {
|
if (col == 0) {
|
||||||
if (this->u.cargo.supp_cargoes[row] != INVALID_CARGO) return this->u.cargo.vertical_cargoes[this->u.cargo.supp_cargoes[row]];
|
if (this->u.cargo.supp_cargoes[row] != CT_INVALID) return this->u.cargo.vertical_cargoes[this->u.cargo.supp_cargoes[row]];
|
||||||
if (left != nullptr) {
|
if (left != nullptr) {
|
||||||
if (left->type == CFT_INDUSTRY) return left->u.industry.other_produced[row];
|
if (left->type == CFT_INDUSTRY) return left->u.industry.other_produced[row];
|
||||||
if (left->type == CFT_CARGO_LABEL && !left->u.cargo_label.left_align) return left->u.cargo_label.cargoes[row];
|
if (left->type == CFT_CARGO_LABEL && !left->u.cargo_label.left_align) return left->u.cargo_label.cargoes[row];
|
||||||
}
|
}
|
||||||
return INVALID_CARGO;
|
return CT_INVALID;
|
||||||
}
|
}
|
||||||
if (col == this->u.cargo.num_cargoes) {
|
if (col == this->u.cargo.num_cargoes) {
|
||||||
if (this->u.cargo.cust_cargoes[row] != INVALID_CARGO) return this->u.cargo.vertical_cargoes[this->u.cargo.cust_cargoes[row]];
|
if (this->u.cargo.cust_cargoes[row] != CT_INVALID) return this->u.cargo.vertical_cargoes[this->u.cargo.cust_cargoes[row]];
|
||||||
if (right != nullptr) {
|
if (right != nullptr) {
|
||||||
if (right->type == CFT_INDUSTRY) return right->u.industry.other_accepted[row];
|
if (right->type == CFT_INDUSTRY) return right->u.industry.other_accepted[row];
|
||||||
if (right->type == CFT_CARGO_LABEL && right->u.cargo_label.left_align) return right->u.cargo_label.cargoes[row];
|
if (right->type == CFT_CARGO_LABEL && right->u.cargo_label.left_align) return right->u.cargo_label.cargoes[row];
|
||||||
}
|
}
|
||||||
return INVALID_CARGO;
|
return CT_INVALID;
|
||||||
}
|
}
|
||||||
if (row >= col) {
|
if (row >= col) {
|
||||||
/* Clicked somewhere in-between vertical cargo connection.
|
/* Clicked somewhere in-between vertical cargo connection.
|
||||||
* Since the horizontal connection is made in the same order as the vertical list, the above condition
|
* Since the horizontal connection is made in the same order as the vertical list, the above condition
|
||||||
* ensures we are left-below the main diagonal, thus at the supplying side.
|
* ensures we are left-below the main diagonal, thus at the supplying side.
|
||||||
*/
|
*/
|
||||||
return (this->u.cargo.supp_cargoes[row] != INVALID_CARGO) ? this->u.cargo.vertical_cargoes[this->u.cargo.supp_cargoes[row]] : INVALID_CARGO;
|
if (this->u.cargo.supp_cargoes[row] == CT_INVALID) return CT_INVALID;
|
||||||
|
return this->u.cargo.vertical_cargoes[this->u.cargo.supp_cargoes[row]];
|
||||||
} else {
|
} else {
|
||||||
/* Clicked at a customer connection. */
|
/* Clicked at a customer connection. */
|
||||||
return (this->u.cargo.cust_cargoes[row] != INVALID_CARGO) ? this->u.cargo.vertical_cargoes[this->u.cargo.cust_cargoes[row]] : INVALID_CARGO;
|
if (this->u.cargo.cust_cargoes[row] == CT_INVALID) return CT_INVALID;
|
||||||
|
return this->u.cargo.vertical_cargoes[this->u.cargo.cust_cargoes[row]];
|
||||||
}
|
}
|
||||||
|
/* Clicked at a customer connection. */
|
||||||
|
if (IsValidCargoID(this->u.cargo.cust_cargoes[row])) return this->u.cargo.vertical_cargoes[this->u.cargo.cust_cargoes[row]];
|
||||||
|
return CT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decide what cargo the user clicked in the cargo label field.
|
* Decide what cargo the user clicked in the cargo label field.
|
||||||
* @param pt Click position in the cargo label field.
|
* @param pt Click position in the cargo label field.
|
||||||
* @return Cargo clicked at, or #INVALID_CARGO if none.
|
* @return Cargo clicked at, or #CT_INVALID if none.
|
||||||
*/
|
*/
|
||||||
CargoID CargoLabelClickedAt(Point pt) const
|
CargoID CargoLabelClickedAt(Point pt) const
|
||||||
{
|
{
|
||||||
@@ -2321,11 +2332,11 @@ struct CargoesField {
|
|||||||
int vpos = vert_inter_industry_space / 2 + CargoesField::cargo_border.height;
|
int vpos = vert_inter_industry_space / 2 + CargoesField::cargo_border.height;
|
||||||
uint row;
|
uint row;
|
||||||
for (row = 0; row < MAX_CARGOES; row++) {
|
for (row = 0; row < MAX_CARGOES; row++) {
|
||||||
if (pt.y < vpos) return INVALID_CARGO;
|
if (pt.y < vpos) return CT_INVALID;
|
||||||
if (pt.y < vpos + FONT_HEIGHT_NORMAL) break;
|
if (pt.y < vpos + FONT_HEIGHT_NORMAL) break;
|
||||||
vpos += FONT_HEIGHT_NORMAL + CargoesField::cargo_space.height;
|
vpos += FONT_HEIGHT_NORMAL + CargoesField::cargo_space.height;
|
||||||
}
|
}
|
||||||
if (row == MAX_CARGOES) return INVALID_CARGO;
|
if (row == MAX_CARGOES) return CT_INVALID;
|
||||||
return this->u.cargo_label.cargoes[row];
|
return this->u.cargo_label.cargoes[row];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2380,7 +2391,7 @@ struct CargoesRow {
|
|||||||
CargoesField *cargo_fld = this->columns + column + 1;
|
CargoesField *cargo_fld = this->columns + column + 1;
|
||||||
assert(ind_fld->type == CFT_INDUSTRY && cargo_fld->type == CFT_CARGO);
|
assert(ind_fld->type == CFT_INDUSTRY && cargo_fld->type == CFT_CARGO);
|
||||||
|
|
||||||
MemSetT(ind_fld->u.industry.other_produced, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(ind_fld->u.industry.other_produced), std::end(ind_fld->u.industry.other_produced), CT_INVALID);
|
||||||
|
|
||||||
if (ind_fld->u.industry.ind_type < NUM_INDUSTRYTYPES) {
|
if (ind_fld->u.industry.ind_type < NUM_INDUSTRYTYPES) {
|
||||||
CargoID others[MAX_CARGOES]; // Produced cargoes not carried in the cargo column.
|
CargoID others[MAX_CARGOES]; // Produced cargoes not carried in the cargo column.
|
||||||
@@ -2395,7 +2406,7 @@ struct CargoesRow {
|
|||||||
|
|
||||||
/* Allocate other cargoes in the empty holes of the horizontal cargo connections. */
|
/* Allocate other cargoes in the empty holes of the horizontal cargo connections. */
|
||||||
for (uint i = 0; i < CargoesField::max_cargoes && other_count > 0; i++) {
|
for (uint i = 0; i < CargoesField::max_cargoes && other_count > 0; i++) {
|
||||||
if (cargo_fld->u.cargo.supp_cargoes[i] == INVALID_CARGO) ind_fld->u.industry.other_produced[i] = others[--other_count];
|
if (cargo_fld->u.cargo.supp_cargoes[i] == CT_INVALID) ind_fld->u.industry.other_produced[i] = others[--other_count];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Houses only display what is demanded. */
|
/* Houses only display what is demanded. */
|
||||||
@@ -2414,7 +2425,7 @@ struct CargoesRow {
|
|||||||
void MakeCargoLabel(int column, bool accepting)
|
void MakeCargoLabel(int column, bool accepting)
|
||||||
{
|
{
|
||||||
CargoID cargoes[MAX_CARGOES];
|
CargoID cargoes[MAX_CARGOES];
|
||||||
MemSetT(cargoes, INVALID_CARGO, lengthof(cargoes));
|
std::fill(std::begin(cargoes), std::end(cargoes), CT_INVALID);
|
||||||
|
|
||||||
CargoesField *label_fld = this->columns + column;
|
CargoesField *label_fld = this->columns + column;
|
||||||
CargoesField *cargo_fld = this->columns + (accepting ? column - 1 : column + 1);
|
CargoesField *cargo_fld = this->columns + (accepting ? column - 1 : column + 1);
|
||||||
@@ -2438,7 +2449,7 @@ struct CargoesRow {
|
|||||||
CargoesField *cargo_fld = this->columns + column - 1;
|
CargoesField *cargo_fld = this->columns + column - 1;
|
||||||
assert(ind_fld->type == CFT_INDUSTRY && cargo_fld->type == CFT_CARGO);
|
assert(ind_fld->type == CFT_INDUSTRY && cargo_fld->type == CFT_CARGO);
|
||||||
|
|
||||||
MemSetT(ind_fld->u.industry.other_accepted, INVALID_CARGO, MAX_CARGOES);
|
std::fill(std::begin(ind_fld->u.industry.other_accepted), std::end(ind_fld->u.industry.other_accepted), CT_INVALID);
|
||||||
|
|
||||||
if (ind_fld->u.industry.ind_type < NUM_INDUSTRYTYPES) {
|
if (ind_fld->u.industry.ind_type < NUM_INDUSTRYTYPES) {
|
||||||
CargoID others[MAX_CARGOES]; // Accepted cargoes not carried in the cargo column.
|
CargoID others[MAX_CARGOES]; // Accepted cargoes not carried in the cargo column.
|
||||||
@@ -2453,7 +2464,7 @@ struct CargoesRow {
|
|||||||
|
|
||||||
/* Allocate other cargoes in the empty holes of the horizontal cargo connections. */
|
/* Allocate other cargoes in the empty holes of the horizontal cargo connections. */
|
||||||
for (uint i = 0; i < CargoesField::max_cargoes && other_count > 0; i++) {
|
for (uint i = 0; i < CargoesField::max_cargoes && other_count > 0; i++) {
|
||||||
if (cargo_fld->u.cargo.cust_cargoes[i] == INVALID_CARGO) ind_fld->u.industry.other_accepted[i] = others[--other_count];
|
if (cargo_fld->u.cargo.cust_cargoes[i] == CT_INVALID) ind_fld->u.industry.other_accepted[i] = others[--other_count];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Houses only display what is demanded. */
|
/* Houses only display what is demanded. */
|
||||||
@@ -2591,7 +2602,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
CargoesField::cargo_field_width = CargoesField::cargo_border.width * 2 + CargoesField::cargo_line.width * CargoesField::max_cargoes + CargoesField::cargo_space.width * (CargoesField::max_cargoes - 1);
|
CargoesField::cargo_field_width = CargoesField::cargo_border.width * 2 + CargoesField::cargo_line.width * CargoesField::max_cargoes + CargoesField::cargo_space.width * (CargoesField::max_cargoes - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_IC_PANEL:
|
case WID_IC_PANEL:
|
||||||
@@ -2636,7 +2647,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
static bool HasCommonValidCargo(const CargoID *cargoes1, uint length1, const CargoID *cargoes2, uint length2)
|
static bool HasCommonValidCargo(const CargoID *cargoes1, uint length1, const CargoID *cargoes2, uint length2)
|
||||||
{
|
{
|
||||||
while (length1 > 0) {
|
while (length1 > 0) {
|
||||||
if (*cargoes1 != INVALID_CARGO) {
|
if (*cargoes1 != CT_INVALID) {
|
||||||
for (uint i = 0; i < length2; i++) if (*cargoes1 == cargoes2[i]) return true;
|
for (uint i = 0; i < length2; i++) if (*cargoes1 == cargoes2[i]) return true;
|
||||||
}
|
}
|
||||||
cargoes1++;
|
cargoes1++;
|
||||||
@@ -2654,7 +2665,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
static bool HousesCanSupply(const CargoID *cargoes, uint length)
|
static bool HousesCanSupply(const CargoID *cargoes, uint length)
|
||||||
{
|
{
|
||||||
for (uint i = 0; i < length; i++) {
|
for (uint i = 0; i < length; i++) {
|
||||||
if (cargoes[i] == INVALID_CARGO) continue;
|
if (cargoes[i] == CT_INVALID) continue;
|
||||||
if (cargoes[i] == CT_PASSENGERS || cargoes[i] == CT_MAIL) return true;
|
if (cargoes[i] == CT_PASSENGERS || cargoes[i] == CT_MAIL) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -2677,7 +2688,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
for (uint i = 0; i < length; i++) {
|
for (uint i = 0; i < length; i++) {
|
||||||
if (cargoes[i] == INVALID_CARGO) continue;
|
if (cargoes[i] == CT_INVALID) continue;
|
||||||
|
|
||||||
for (uint h = 0; h < NUM_HOUSES; h++) {
|
for (uint h = 0; h < NUM_HOUSES; h++) {
|
||||||
HouseSpec *hs = HouseSpec::Get(h);
|
HouseSpec *hs = HouseSpec::Get(h);
|
||||||
@@ -2826,7 +2837,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
/* Add suppliers and customers of the 'it' industry. */
|
/* Add suppliers and customers of the 'it' industry. */
|
||||||
int supp_count = 0;
|
int supp_count = 0;
|
||||||
int cust_count = 0;
|
int cust_count = 0;
|
||||||
for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) {
|
for (IndustryType it : _sorted_industry_types) {
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(it);
|
const IndustrySpec *indsp = GetIndustrySpec(it);
|
||||||
if (!indsp->enabled) continue;
|
if (!indsp->enabled) continue;
|
||||||
|
|
||||||
@@ -2898,7 +2909,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
/* Add suppliers and customers of the cargo. */
|
/* Add suppliers and customers of the cargo. */
|
||||||
int supp_count = 0;
|
int supp_count = 0;
|
||||||
int cust_count = 0;
|
int cust_count = 0;
|
||||||
for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) {
|
for (IndustryType it : _sorted_industry_types) {
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(it);
|
const IndustrySpec *indsp = GetIndustrySpec(it);
|
||||||
if (!indsp->enabled) continue;
|
if (!indsp->enabled) continue;
|
||||||
|
|
||||||
@@ -2937,14 +2948,11 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
* - data = NUM_INDUSTRYTYPES: Stop sending updates to the smallmap window.
|
* - data = NUM_INDUSTRYTYPES: Stop sending updates to the smallmap window.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
if (data == NUM_INDUSTRYTYPES) {
|
if (data == NUM_INDUSTRYTYPES) {
|
||||||
if (this->IsWidgetLowered(WID_IC_NOTIFY)) {
|
this->RaiseWidgetWhenLowered(WID_IC_NOTIFY);
|
||||||
this->RaiseWidget(WID_IC_NOTIFY);
|
|
||||||
this->SetWidgetDirty(WID_IC_NOTIFY);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3037,7 +3045,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_IC_PANEL: {
|
case WID_IC_PANEL: {
|
||||||
@@ -3054,13 +3062,13 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
CargoesField *lft = (fieldxy.x > 0) ? this->fields[fieldxy.y].columns + fieldxy.x - 1 : nullptr;
|
CargoesField *lft = (fieldxy.x > 0) ? this->fields[fieldxy.y].columns + fieldxy.x - 1 : nullptr;
|
||||||
CargoesField *rgt = (fieldxy.x < 4) ? this->fields[fieldxy.y].columns + fieldxy.x + 1 : nullptr;
|
CargoesField *rgt = (fieldxy.x < 4) ? this->fields[fieldxy.y].columns + fieldxy.x + 1 : nullptr;
|
||||||
CargoID cid = fld->CargoClickedAt(lft, rgt, xy);
|
CargoID cid = fld->CargoClickedAt(lft, rgt, xy);
|
||||||
if (cid != INVALID_CARGO) this->ComputeCargoDisplay(cid);
|
if (cid != CT_INVALID) this->ComputeCargoDisplay(cid);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CFT_CARGO_LABEL: {
|
case CFT_CARGO_LABEL: {
|
||||||
CargoID cid = fld->CargoLabelClickedAt(xy);
|
CargoID cid = fld->CargoLabelClickedAt(xy);
|
||||||
if (cid != INVALID_CARGO) this->ComputeCargoDisplay(cid);
|
if (cid != CT_INVALID) this->ComputeCargoDisplay(cid);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3147,7 +3155,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override
|
bool OnTooltip([[maybe_unused]] Point pt, int widget, TooltipCloseCondition close_cond) override
|
||||||
{
|
{
|
||||||
if (widget != WID_IC_PANEL) return false;
|
if (widget != WID_IC_PANEL) return false;
|
||||||
|
|
||||||
@@ -3155,7 +3163,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
if (!CalculatePositionInWidget(pt, &fieldxy, &xy)) return false;
|
if (!CalculatePositionInWidget(pt, &fieldxy, &xy)) return false;
|
||||||
|
|
||||||
const CargoesField *fld = this->fields[fieldxy.y].columns + fieldxy.x;
|
const CargoesField *fld = this->fields[fieldxy.y].columns + fieldxy.x;
|
||||||
CargoID cid = INVALID_CARGO;
|
CargoID cid = CT_INVALID;
|
||||||
switch (fld->type) {
|
switch (fld->type) {
|
||||||
case CFT_CARGO: {
|
case CFT_CARGO: {
|
||||||
CargoesField *lft = (fieldxy.x > 0) ? this->fields[fieldxy.y].columns + fieldxy.x - 1 : nullptr;
|
CargoesField *lft = (fieldxy.x > 0) ? this->fields[fieldxy.y].columns + fieldxy.x - 1 : nullptr;
|
||||||
@@ -3178,7 +3186,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (cid != INVALID_CARGO && (this->ind_cargo < NUM_INDUSTRYTYPES || cid != this->ind_cargo - NUM_INDUSTRYTYPES)) {
|
if (cid != CT_INVALID && (this->ind_cargo < NUM_INDUSTRYTYPES || cid != this->ind_cargo - NUM_INDUSTRYTYPES)) {
|
||||||
const CargoSpec *csp = CargoSpec::Get(cid);
|
const CargoSpec *csp = CargoSpec::Get(cid);
|
||||||
SetDParam(0, csp->name);
|
SetDParam(0, csp->name);
|
||||||
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, close_cond, 1);
|
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, close_cond, 1);
|
||||||
|
@@ -92,8 +92,8 @@ struct IniFile : IniLoadFile {
|
|||||||
|
|
||||||
bool SaveToDisk(const std::string &filename);
|
bool SaveToDisk(const std::string &filename);
|
||||||
|
|
||||||
virtual FILE *OpenFile(const std::string &filename, Subdirectory subdir, size_t *size);
|
FILE *OpenFile(const std::string &filename, Subdirectory subdir, size_t *size) override;
|
||||||
virtual void ReportFileError(const char * const pre, const char * const buffer, const char * const post);
|
void ReportFileError(const char * const pre, const char * const buffer, const char * const post) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* INI_TYPE_H */
|
#endif /* INI_TYPE_H */
|
||||||
|
@@ -190,7 +190,7 @@ struct SelectGameWindow : public Window {
|
|||||||
this->mouse_idle_pos = _cursor.pos;
|
this->mouse_idle_pos = _cursor.pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRealtimeTick(uint delta_ms) override
|
void OnRealtimeTick([[maybe_unused]] uint delta_ms) override
|
||||||
{
|
{
|
||||||
/* Move the main game viewport according to intro viewport commands. */
|
/* Move the main game viewport according to intro viewport commands. */
|
||||||
|
|
||||||
@@ -265,7 +265,7 @@ struct SelectGameWindow : public Window {
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->SetWidgetLoweredState(WID_SGI_TEMPERATE_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
|
this->SetWidgetLoweredState(WID_SGI_TEMPERATE_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
|
||||||
@@ -298,7 +298,7 @@ struct SelectGameWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
StringID str = 0;
|
StringID str = 0;
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -327,7 +327,7 @@ struct SelectGameWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
/* Do not create a network server when you (just) have closed one of the game
|
/* Do not create a network server when you (just) have closed one of the game
|
||||||
* creation/load windows for the network server. */
|
* creation/load windows for the network server. */
|
||||||
@@ -508,7 +508,7 @@ void ShowSelectGameWindow()
|
|||||||
new SelectGameWindow(&_select_game_desc);
|
new SelectGameWindow(&_select_game_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AskExitGameCallback(Window *w, bool confirmed)
|
static void AskExitGameCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
if (confirmed) {
|
if (confirmed) {
|
||||||
_survey.Transmit(NetworkSurveyHandler::Reason::EXIT, true);
|
_survey.Transmit(NetworkSurveyHandler::Reason::EXIT, true);
|
||||||
@@ -528,7 +528,7 @@ void AskExitGame()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void AskExitToGameMenuCallback(Window *w, bool confirmed)
|
static void AskExitToGameMenuCallback(Window *, bool confirmed)
|
||||||
{
|
{
|
||||||
if (confirmed) {
|
if (confirmed) {
|
||||||
_switch_mode = SM_MENU;
|
_switch_mode = SM_MENU;
|
||||||
|
@@ -1035,10 +1035,9 @@ static void CreateDesertOrRainForest(uint desert_tropic_line)
|
|||||||
/**
|
/**
|
||||||
* Find the spring of a river.
|
* Find the spring of a river.
|
||||||
* @param tile The tile to consider for being the spring.
|
* @param tile The tile to consider for being the spring.
|
||||||
* @param user_data Ignored data.
|
|
||||||
* @return True iff it is suitable as a spring.
|
* @return True iff it is suitable as a spring.
|
||||||
*/
|
*/
|
||||||
static bool FindSpring(TileIndex tile, void *user_data)
|
static bool FindSpring(TileIndex tile, void *)
|
||||||
{
|
{
|
||||||
int referenceHeight;
|
int referenceHeight;
|
||||||
if (!IsTileFlat(tile, &referenceHeight) || IsWaterTile(tile)) return false;
|
if (!IsTileFlat(tile, &referenceHeight) || IsWaterTile(tile)) return false;
|
||||||
|
@@ -3401,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecio
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} em {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} em {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objeto
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objeto
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferrovia
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferrovia
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variável NewGRF 60+ parâmetro x (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variável NewGRF 60+ parâmetro x (hexadecimal)
|
||||||
|
|
||||||
|
@@ -524,6 +524,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Esborra tots el
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de la casella
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de la casella
|
||||||
|
STR_ABOUT_MENU_HELP :Ajuda i manuals
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Commuta la consola
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Commuta la consola
|
||||||
STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA i l'script de partida
|
STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA i l'script de partida
|
||||||
@@ -1427,6 +1428,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Cap*
|
|||||||
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduït
|
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduït
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
|
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Permet passos a nivell amb carreteres o rails dels competidors: {STRING}
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Permet la construcció de passos a nivell en carreteres o vies ferroviàries que siguin propietat d'altres jugadors.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permet situar parades en carreteres que són propietat de les poblacions: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permet situar parades en carreteres que són propietat de les poblacions: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permet la construcció de passos a nivell als carrers propietat de les poblacions
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permet la construcció de passos a nivell als carrers propietat de les poblacions
|
||||||
@@ -2123,6 +2126,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multijug
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}Opcions del joc
|
STR_INTRO_GAME_OPTIONS :{BLACK}Opcions del joc
|
||||||
STR_INTRO_HIGHSCORE :{BLACK}Taula de rècords
|
STR_INTRO_HIGHSCORE :{BLACK}Taula de rècords
|
||||||
|
STR_INTRO_HELP :{BLACK}Ajuda i manuals
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configuració
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configuració
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Extensions NewGRF
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Extensions NewGRF
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}Contingut en línia
|
STR_INTRO_ONLINE_CONTENT :{BLACK}Contingut en línia
|
||||||
@@ -2144,6 +2148,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Seleccio
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra les opcions del joc
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra les opcions del joc
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la taula de rècords
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la taula de rècords
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}Accediu a la documentació i recursos en línia.
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra la finestra de configuració
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra la finestra de configuració
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar
|
||||||
@@ -2166,6 +2171,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Esteu s
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Esteu segur que voleu sortir de l'escenari?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Esteu segur que voleu sortir de l'escenari?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}Ajuda i manuals
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}Llocs web
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}Documents
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}Llegeix-me
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}Registre de canvis
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Errors coneguts
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}Llicència
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manual / Wiki
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}Informeu d'un error
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :Comunitat
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trampes
|
STR_CHEATS :{WHITE}Trampes
|
||||||
@@ -3385,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecci
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objecte
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objecte
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipus de via
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipus de via
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipus de carretera
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmetre NewGRF variable 60+x (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmetre NewGRF variable 60+x (hexadecimal)
|
||||||
|
|
||||||
@@ -4700,6 +4717,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}Taula de continguts
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Salteu a una secció del fitxer que es mostra amb aquesta llista.
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Torneu enrere segons l'historial de navegació.
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Aneu avant segons l'historial de navegació.
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ajusta text
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ajusta text
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajusta el text afegint-hi canvis de línia, de manera que sigui més fàcil desplaçar-se pel text
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajusta el text afegint-hi canvis de línia, de manera que sigui més fàcil desplaçar-se pel text
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeix-me
|
STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeix-me
|
||||||
@@ -4710,6 +4732,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}Llegeix-
|
|||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registre de canvis del {STRING} de {STRING}
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registre de canvis del {STRING} de {STRING}
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Llicència del {STRING} de {STRING}
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Llicència del {STRING} de {STRING}
|
||||||
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Vista prèvia del resultat del sondeig
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Vista prèvia del resultat del sondeig
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Document '{STRING}' de l'OpenTTD
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
|
@@ -523,6 +523,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Slet alle beske
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Landområde information
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :Landområde information
|
||||||
|
STR_ABOUT_MENU_HELP :Hjælp & manualer
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Tænd/Sluk konsol
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Tænd/Sluk konsol
|
||||||
STR_ABOUT_MENU_AI_DEBUG :Computerspiller/spilscript debug
|
STR_ABOUT_MENU_AI_DEBUG :Computerspiller/spilscript debug
|
||||||
@@ -2124,6 +2125,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Netværk
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}Opsætning
|
STR_INTRO_GAME_OPTIONS :{BLACK}Opsætning
|
||||||
STR_INTRO_HIGHSCORE :{BLACK} Topresultater
|
STR_INTRO_HIGHSCORE :{BLACK} Topresultater
|
||||||
|
STR_INTRO_HELP :{BLACK}Hjælp og manualer
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Indstillinger
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Indstillinger
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}Tjek Online Indhold
|
STR_INTRO_ONLINE_CONTENT :{BLACK}Tjek Online Indhold
|
||||||
@@ -2145,6 +2147,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vælg 'l
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Sæt spillet op
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Sæt spillet op
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hvis topscoreliste
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hvis topscoreliste
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}Få adgang til dokumentation og online ressourcer
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skærm indstillinger
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skærm indstillinger
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for nyt og opdateret indhold til download
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for nyt og opdateret indhold til download
|
||||||
@@ -2167,6 +2170,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Er du s
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du sikker på, at du vil afslutte dette scenarie ?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du sikker på, at du vil afslutte dette scenarie ?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}Hjælp og manualer
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}Hjemmesider
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumenter
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}Læs mig
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}Ændringslog
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Kendte Bugs
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}Licens
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manual / Wiki
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}Anmeld en fejl
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :{BLACK}Fællesskab
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Snydefunktioner
|
STR_CHEATS :{WHITE}Snydefunktioner
|
||||||
@@ -3386,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspicer
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ved {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ved {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vej type
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal)
|
||||||
|
|
||||||
@@ -4701,6 +4716,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}Indholdsfortegnelse
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Spring hurtigt til en sektion i den viste fil via denne liste
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Gå tilbage i navigationshistorikken
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Vend tilbage i navigationshistorikken
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ombryd tekst
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ombryd tekst
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ombryd teksten i vinduet, så det hele passer uden at skulle rulle
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ombryd teksten i vinduet, så det hele passer uden at skulle rulle
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Se readme
|
STR_TEXTFILE_VIEW_README :{BLACK}Se readme
|
||||||
@@ -4711,6 +4731,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}
|
|||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} ændringslog for {STRING}
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} ændringslog for {STRING}
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licens for {STRING}
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licens for {STRING}
|
||||||
STR_TEXTFILE_SURVEY_RESULT_CAPTION :Forhåndsvisning af undersøgelsesresultat
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :Forhåndsvisning af undersøgelsesresultat
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD dokument '{STRING}'
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
|
@@ -3400,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecte
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} bij {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} bij {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Spoortype
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Spoortype
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Wegtype
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parameter 60+x voor NewGRF-variabele (hexadecimaal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parameter 60+x voor NewGRF-variabele (hexadecimaal)
|
||||||
|
|
||||||
|
@@ -3400,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspect
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING1} at {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING1} at {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||||
|
|
||||||
|
@@ -3400,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspect
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||||
|
|
||||||
|
@@ -3400,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspect
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||||
|
|
||||||
|
@@ -1198,7 +1198,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Zobrazí
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}P
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}P
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Přejít na číslo spritu...
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Přejít na číslo spritu...
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Kliknutí zvýrazní skupinu spritů{}Shift+kliknutí sbalí skupinu spritů{}Ctrl+kliknutí zvýrazní dočasný registr úložiště
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Kliknutí zvýrazní skupinu spritů{}Shift+kliknutí sbalí skupinu spritů{}Ctrl+kliknutí zvýrazní dočasný registr úložiště
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Typ silnice/tramvajové tratě
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Návěstidla
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Návěstidla
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Neimplementované přemapované feature ID: název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Neimplementované přemapované feature ID: název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Neimplementované přemapované Action 0 property feature: {4:HEX}, název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Neimplementované přemapované Action 0 property feature: {4:HEX}, název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1265,7 +1265,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Display
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scroll to sprite number
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scroll to sprite number
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click to highlight sprite group{}Shift+Click to collapse sprite group{}Ctrl+Click to highlight temporary storage register
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click to highlight sprite group{}Shift+Click to collapse sprite group{}Ctrl+Click to highlight temporary storage register
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road/tram type
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signals
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signals
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Unimplemented remapped feature ID: name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Unimplemented remapped feature ID: name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Unimplemented remapped Action 0 property feature: {4:HEX}, name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Unimplemented remapped Action 0 property feature: {4:HEX}, name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1224,7 +1224,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Amosar g
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Desprazarse o sprite número
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Desprazarse o sprite número
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click para destacar o grupo de sprites{}Shift+Click para compactar o grupo de sprites{}Ctrl+Click para destacar o rexistro de almacenamento temporal
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click para destacar o grupo de sprites{}Shift+Click para compactar o grupo de sprites{}Ctrl+Click para destacar o rexistro de almacenamento temporal
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada/tranvía
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Sinais
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Sinais
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Característica non implementada remapeada ID: nome: {2:STRING}, mapeada a: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Característica non implementada remapeada ID: nome: {2:STRING}, mapeada a: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Remapeado non implementado dunha característica da propiedade 'Action 0': {4:HEX}, nome: {2:STRING}, mapeado a: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Remapeado non implementado dunha característica da propiedade 'Action 0': {4:HEX}, nome: {2:STRING}, mapeado a: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1098,7 +1098,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Zeige Sp
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scrolle zum Sprite Nummer
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scrolle zum Sprite Nummer
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Klicke, um Sprite-Gruppe hervorzuheben{}Umschalt+Klick, um die Sprite-Gruppe zu schließen{}Strg+Klick, um temporäres Speicherregister hervorzuheben
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Klicke, um Sprite-Gruppe hervorzuheben{}Umschalt+Klick, um die Sprite-Gruppe zu schließen{}Strg+Klick, um temporäres Speicherregister hervorzuheben
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Straßen(bahn)typ
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signale
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signale
|
||||||
|
|
||||||
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
||||||
|
@@ -1218,7 +1218,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}모든
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}특정 스프라이트 번호로 이동합니다
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}특정 스프라이트 번호로 이동합니다
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}스프라이트 그룹을 강조 표시하려면 클릭하세요{}SHIFT+클릭하면 스프라이트 그룹을 접거나 펼 수 있습니다.{}Ctrl+클릭하면 임시 저장 레지스터를 강조 표시합니다.
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}스프라이트 그룹을 강조 표시하려면 클릭하세요{}SHIFT+클릭하면 스프라이트 그룹을 접거나 펼 수 있습니다.{}Ctrl+클릭하면 임시 저장 레지스터를 강조 표시합니다.
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :도로/전차 종류
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :신호기
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :신호기
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :구현되지 않은 재배치된 기능 ID: 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :구현되지 않은 재배치된 기능 ID: 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :구현되지 않은 재배치된 액션 0 속성 특성: {4:HEX}, 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :구현되지 않은 재배치된 액션 0 속성 특성: {4:HEX}, 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
||||||
|
@@ -1217,7 +1217,6 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}在没
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}滚动Sprite编号
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}滚动Sprite编号
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}点击高亮Sprite组{}Shift+点击折叠Sprite组{}Ctrl+点击高亮临时存储寄存器
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}点击高亮Sprite组{}Shift+点击折叠Sprite组{}Ctrl+点击高亮临时存储寄存器
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路/电车道类型
|
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :信号
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :信号
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :未生效的重映射特性 ID: name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :未生效的重映射特性 ID: name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :未生效的重映射 Action 0 属性特性: {4:HEX},name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :未生效的重映射 Action 0 属性特性: {4:HEX},name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -3400,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Tutki va
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} sijainnissa {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} sijainnissa {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekti
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekti
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rautatien tyyppi
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rautatien tyyppi
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tien tyyppi
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muuttujan 60+x parametri (heksadesimaali)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muuttujan 60+x parametri (heksadesimaali)
|
||||||
|
|
||||||
|
@@ -3401,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecte
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} à {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} à {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objet
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objet
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Type de rail
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Type de rail
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Type de route
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramètre de variable NewGRF 60+x (héxadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramètre de variable NewGRF 60+x (héxadecimal)
|
||||||
|
|
||||||
|
@@ -525,6 +525,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Elimina tutti i
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informazioni sull'area di terreno
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informazioni sull'area di terreno
|
||||||
|
STR_ABOUT_MENU_HELP :Aiuto e manuali
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Apri/chiudi console
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Apri/chiudi console
|
||||||
STR_ABOUT_MENU_AI_DEBUG :Debug IA/Script
|
STR_ABOUT_MENU_AI_DEBUG :Debug IA/Script
|
||||||
@@ -1461,6 +1462,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nessuno*
|
|||||||
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Ridotto
|
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Ridotto
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normale
|
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normale
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Consenti passaggi a livello con strade o ferrovie di proprietà dei concorrenti: {STRING}
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Consenti la realizzazione di passaggi a livello su strade o rotaie di proprietà dei concorrenti
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Consenti fermate passanti sulle strade di proprietà delle città: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Consenti fermate passanti sulle strade di proprietà delle città: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permettere la costruzione di fermate stradali passanti sulle strade di proprietà delle città.
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permettere la costruzione di fermate stradali passanti sulle strade di proprietà delle città.
|
||||||
@@ -2157,6 +2160,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multigio
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}Opzioni di gioco
|
STR_INTRO_GAME_OPTIONS :{BLACK}Opzioni di gioco
|
||||||
STR_INTRO_HIGHSCORE :{BLACK}Punteggi migliori
|
STR_INTRO_HIGHSCORE :{BLACK}Punteggi migliori
|
||||||
|
STR_INTRO_HELP :{BLACK}Aiuto e manuali
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Impostazioni
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Impostazioni
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Impostazioni NewGRF
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Impostazioni NewGRF
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}Contenuti online
|
STR_INTRO_ONLINE_CONTENT :{BLACK}Contenuti online
|
||||||
@@ -2178,6 +2182,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selezion
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra le opzioni di gioco
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra le opzioni di gioco
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la tabella dei punteggi migliori
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la tabella dei punteggi migliori
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}Ottieni l'accesso alla documentazione e alle risorse online
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra le impostazioni
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra le impostazioni
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra le impostazioni NewGRF
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra le impostazioni NewGRF
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Controlla la disponibilità di contenuti nuovi o aggiornati da scaricare
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Controlla la disponibilità di contenuti nuovi o aggiornati da scaricare
|
||||||
@@ -2200,6 +2205,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Si è s
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Si è sicuri di voler abbandonare questo scenario?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Si è sicuri di voler abbandonare questo scenario?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}Aiuto e manuali
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}Siti web
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}Documenti
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}Leggimi
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}Changelog
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Bug conosciuti
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}Licenza
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manuale / Wiki
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}Segnala un bug
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :{BLACK}Community
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trucchi
|
STR_CHEATS :{WHITE}Trucchi
|
||||||
@@ -2688,6 +2704,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Attiva/d
|
|||||||
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza dei ponti. CTRL+clic per bloccare
|
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza dei ponti. CTRL+clic per bloccare
|
||||||
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza di strutture come fari e antenne. CTRL+clic per bloccare
|
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza di strutture come fari e antenne. CTRL+clic per bloccare
|
||||||
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza delle catenarie. CTRL+clic per bloccare
|
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza delle catenarie. CTRL+clic per bloccare
|
||||||
|
STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza per il caricamento e il testo costi/entrate. Ctrl+clic per bloccare
|
||||||
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Rendi gli oggetti invisibili invece che trasparenti
|
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Rendi gli oggetti invisibili invece che trasparenti
|
||||||
|
|
||||||
# Linkgraph legend window
|
# Linkgraph legend window
|
||||||
@@ -3268,7 +3285,7 @@ STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Mostra i
|
|||||||
STR_MAPGEN_AI_SETTINGS :{BLACK}Impostazioni IA
|
STR_MAPGEN_AI_SETTINGS :{BLACK}Impostazioni IA
|
||||||
STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Mostra impostazioni IA
|
STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Mostra impostazioni IA
|
||||||
STR_MAPGEN_GS_SETTINGS :{BLACK}Impostazioni script di gioco
|
STR_MAPGEN_GS_SETTINGS :{BLACK}Impostazioni script di gioco
|
||||||
STR_MAPGEN_GS_SETTINGS_TOOLTIP :BLACK}Visualizza le impostazioni dello script di gioco
|
STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Visualizza le impostazioni dello script di gioco
|
||||||
|
|
||||||
###length 21
|
###length 21
|
||||||
STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Inglesi (originali)
|
STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Inglesi (originali)
|
||||||
@@ -3424,6 +3441,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ispezion
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oggetto
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oggetto
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo di rotaie
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo di rotaie
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo di strada
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametro variabile NewGRF 60+x (esadecimale)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametro variabile NewGRF 60+x (esadecimale)
|
||||||
|
|
||||||
@@ -4739,6 +4757,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}Sommario
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Passa rapidamente a una sezione del file visualizzato tramite questo elenco
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Torna indietro nella cronologia di navigazione
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Vai avanti nella cronologia di navigazione
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}A capo automatico
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}A capo automatico
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Manda automaticamente a capo il testo della finestra in modo che sia visibile senza doverlo scorrere
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Manda automaticamente a capo il testo della finestra in modo che sia visibile senza doverlo scorrere
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Visualizza file leggimi
|
STR_TEXTFILE_VIEW_README :{BLACK}Visualizza file leggimi
|
||||||
@@ -4749,6 +4772,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}File leg
|
|||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Changelog del {STRING} {STRING}
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Changelog del {STRING} {STRING}
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licenza del {STRING} {STRING}
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licenza del {STRING} {STRING}
|
||||||
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Anteprima del risultato del sondaggio
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Anteprima del risultato del sondaggio
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Documento OpenTTD '{STRING}'
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
|
@@ -930,7 +930,7 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION
|
|||||||
STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION}에서 이제 {STRING}{G 1 "을" "를"} 받을 수 있습니다.
|
STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION}에서 이제 {STRING}{G 1 "을" "를"} 받을 수 있습니다.
|
||||||
STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION}에서 이제 {STRING}/{STRING}{G 2 "을" "를"} 받을 수 있습니다.
|
STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION}에서 이제 {STRING}/{STRING}{G 2 "을" "를"} 받을 수 있습니다.
|
||||||
|
|
||||||
STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}보조금 지급 계약 파기:{}{}{1:STRING}에서 {2:STRING}까지의 {0:STRING} 수송은{}더 이상 보조금을 지급하지 않습니다.
|
STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}보조금 지급 종료:{}{}{1:STRING}에서 {2:STRING}까지의 {0:STRING} 수송은{}더 이상 보조금을 지급하지 않습니다.
|
||||||
STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}보조금 지급 만료:{}{}{1:STRING}에서 {2:STRING}까지의{}{0:STRING} 수송 보조금은 더 이상 지급되지 않습니다.
|
STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}보조금 지급 만료:{}{}{1:STRING}에서 {2:STRING}까지의{}{0:STRING} 수송 보조금은 더 이상 지급되지 않습니다.
|
||||||
STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}보조금 지급 안내{}{}처음으로 {1:STRING}에서 {2:STRING}까지{}{0:STRING}{G 0 "을" "를"} 수송하는 회사는{}지역 당국으로부터 {3:NUM}년 동안 보조금을 받게 될 것입니다!
|
STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}보조금 지급 안내{}{}처음으로 {1:STRING}에서 {2:STRING}까지{}{0:STRING}{G 0 "을" "를"} 수송하는 회사는{}지역 당국으로부터 {3:NUM}년 동안 보조금을 받게 될 것입니다!
|
||||||
###length 4
|
###length 4
|
||||||
@@ -3401,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}상위
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING}, {HEX}에서
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING}, {HEX}에서
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :오브젝트
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :오브젝트
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :철도 종류
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :철도 종류
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :도로 종류
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF 변수 60+x 매개 변수 (16진법)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF 변수 60+x 매개 변수 (16진법)
|
||||||
|
|
||||||
|
@@ -902,6 +902,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Usuń wszystkie
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informacje o terenie
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informacje o terenie
|
||||||
|
STR_ABOUT_MENU_HELP :Pomoc i instrukcje
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Przełącz konsolę
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Przełącz konsolę
|
||||||
STR_ABOUT_MENU_AI_DEBUG :Debugowanie SI / Game Script
|
STR_ABOUT_MENU_AI_DEBUG :Debugowanie SI / Game Script
|
||||||
@@ -1023,7 +1024,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliknij
|
|||||||
|
|
||||||
# Company league window
|
# Company league window
|
||||||
STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Ranking firm
|
STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Ranking firm
|
||||||
STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}'
|
STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} „{STRING}”
|
||||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inżynier
|
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inżynier
|
||||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Administrator Ruchu
|
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Administrator Ruchu
|
||||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordynator Transportu
|
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordynator Transportu
|
||||||
@@ -1123,9 +1124,9 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat
|
|||||||
STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potentat
|
STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potentat
|
||||||
STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon Stulecia
|
STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon Stulecia
|
||||||
STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY}
|
STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY}
|
||||||
STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA})
|
STR_HIGHSCORE_STATS :{BIG_FONT}„{STRING}” ({COMMA})
|
||||||
STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} osiąga status: '{STRING}'!
|
STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} osiąga status: „{STRING}”!
|
||||||
STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} osiągnęło status '{STRING}'!
|
STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} osiągnęło status „{STRING}”!
|
||||||
|
|
||||||
# Smallmap window
|
# Smallmap window
|
||||||
STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING}
|
STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING}
|
||||||
@@ -1231,10 +1232,10 @@ STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLAC
|
|||||||
STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Wypadek lotniczy!{}Samolot rozbił się z powodu braku paliwa, zginęł{P 0 a y o} {COMMA} os{P oba oby ób}!
|
STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Wypadek lotniczy!{}Samolot rozbił się z powodu braku paliwa, zginęł{P 0 a y o} {COMMA} os{P oba oby ób}!
|
||||||
|
|
||||||
STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Katastrofa Zeppelina na {STATION}!
|
STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Katastrofa Zeppelina na {STATION}!
|
||||||
STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Pojazd zniszczony w kolizji z 'UFO'!
|
STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Pojazd zniszczony w kolizji z „UFO”!
|
||||||
STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozja rafinerii w pobliżu {TOWN}!
|
STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozja rafinerii w pobliżu {TOWN}!
|
||||||
STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabryka zniszczona w podejrzanych okolicznościach w pobliżu {TOWN}!
|
STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabryka zniszczona w podejrzanych okolicznościach w pobliżu {TOWN}!
|
||||||
STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' wylądowało w pobliżu {TOWN}!
|
STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}„UFO” wylądowało w pobliżu {TOWN}!
|
||||||
STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Tąpnięcie przy kopalni pozostawiło pas zniszczenia blisko {TOWN}!
|
STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Tąpnięcie przy kopalni pozostawiło pas zniszczenia blisko {TOWN}!
|
||||||
STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Powódź!{}Przynajmniej {COMMA} zaginęło lub utonęło w czasie powodzi!
|
STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Powódź!{}Przynajmniej {COMMA} zaginęło lub utonęło w czasie powodzi!
|
||||||
|
|
||||||
@@ -1571,7 +1572,7 @@ STR_CITY_APPROVAL_TOLERANT :Tolerancyjne
|
|||||||
STR_CITY_APPROVAL_HOSTILE :Wrogie
|
STR_CITY_APPROVAL_HOSTILE :Wrogie
|
||||||
STR_CITY_APPROVAL_PERMISSIVE :Przyjazne (bez wpływu na działania firmy)
|
STR_CITY_APPROVAL_PERMISSIVE :Przyjazne (bez wpływu na działania firmy)
|
||||||
|
|
||||||
STR_WARNING_NO_SUITABLE_AI :{WHITE}Brak pasujących SI...{}Możesz pobrać wszystkie SI przez system "Dodatki online"
|
STR_WARNING_NO_SUITABLE_AI :{WHITE}Brak pasujących SI...{}Możesz pobrać wszystkie SI przez przeglądarkę „Dodatków Online”
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ustawienia
|
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ustawienia
|
||||||
@@ -1680,7 +1681,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL :Nastawienie wł
|
|||||||
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wybierz, jak bardzo hałas i niszczenie środowiska przez firmy wpływają na ich ocenę w mieście i na dalsze działania związane z budową na jego obszarze
|
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wybierz, jak bardzo hałas i niszczenie środowiska przez firmy wpływają na ich ocenę w mieście i na dalsze działania związane z budową na jego obszarze
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limit wysokości mapy: {STRING}
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limit wysokości mapy: {STRING}
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Ustawia limit wysokości mapy. Z ustawieniem "(automatyczna)" odpowiednia wartość zostanie dobrana po wygenerowaniu terenu
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Ustawia limit wysokości mapy. Z ustawieniem „(automatyczna)” odpowiednia wartość zostanie dobrana po wygenerowaniu terenu
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
|
||||||
###setting-zero-is-special
|
###setting-zero-is-special
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automatyczna)
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automatyczna)
|
||||||
@@ -1759,7 +1760,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Po prawej
|
|||||||
STR_CONFIG_SETTING_SHOWFINANCES :Pokazuj okno finansów na koniec roku: {STRING}
|
STR_CONFIG_SETTING_SHOWFINANCES :Pokazuj okno finansów na koniec roku: {STRING}
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Jeśli włączone, to okienko finansowe pokazuje się na zakończenie każdego roku, by ułatwić śledzenie sytuacji finansowej firmy
|
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Jeśli włączone, to okienko finansowe pokazuje się na zakończenie każdego roku, by ułatwić śledzenie sytuacji finansowej firmy
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nowe polecenia są domyślnie 'bez zatrzymywania się': {STRING}
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nowe polecenia są domyślnie „bez zatrzymywania się”: {STRING}
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalnie pojazd zatrzyma się na każdej stacji, przez którą przejeżdża. Po włączeniu tej opcji, pojazd przejedzie do swojego celu bez zatrzymywania się. Zwróć uwagę na to, że to ustawienie ma wpływ tylko na nowe polecenia. Pojedyncze polecenia mogą być ustalane bez względu na wartość tej opcji
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalnie pojazd zatrzyma się na każdej stacji, przez którą przejeżdża. Po włączeniu tej opcji, pojazd przejedzie do swojego celu bez zatrzymywania się. Zwróć uwagę na to, że to ustawienie ma wpływ tylko na nowe polecenia. Pojedyncze polecenia mogą być ustalane bez względu na wartość tej opcji
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION :Nowe rozkazy pociągu kończą się domyślnie na {STRING} peronu
|
STR_CONFIG_SETTING_STOP_LOCATION :Nowe rozkazy pociągu kończą się domyślnie na {STRING} peronu
|
||||||
@@ -1894,7 +1895,7 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksymalna odle
|
|||||||
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerie są budowane tylko w pobliżu krawędzi map, to znaczy na wybrzeżach dla map wyspiarskich. To ustawienie pozwala ograniczyć jak daleko od krawędzi mapy mogą być budowane rafinerie i platformy wiertnicze. Na mapach większych niż 256 pól, wartość ta jest skalowana w górę.
|
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerie są budowane tylko w pobliżu krawędzi map, to znaczy na wybrzeżach dla map wyspiarskich. To ustawienie pozwala ograniczyć jak daleko od krawędzi mapy mogą być budowane rafinerie i platformy wiertnicze. Na mapach większych niż 256 pól, wartość ta jest skalowana w górę.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Wysokość granicy wiecznych śniegów: {STRING}
|
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Wysokość granicy wiecznych śniegów: {STRING}
|
||||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wysokość linii śniegu w klimacie arktycznym. Poziom pokrywy śnieżnej wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast. Może być zmodyfikowana wyłącznie poprzez Edytor scenariusza, normalnie jest obliczana za pomocą ustawienia "pokrycia śniegiem"
|
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wysokość linii śniegu w klimacie arktycznym. Poziom pokrywy śnieżnej wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast. Może być zmodyfikowana poprzez Edytor Scenariuszy, w innym przypadku jest obliczana za pomocą ustawienia „pokrycie śniegiem”
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SNOW_COVERAGE :Pokrycie śniegiem: {STRING}
|
STR_CONFIG_SETTING_SNOW_COVERAGE :Pokrycie śniegiem: {STRING}
|
||||||
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Ustawia przybliżoną ilość śniegu w krajobrazie arktycznym. Śnieg wpływa również wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast. Używane tylko podczas generowania mapy. Teren tuż ponad poziomem morza jest zawsze bez śniegu
|
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Ustawia przybliżoną ilość śniegu w krajobrazie arktycznym. Śnieg wpływa również wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast. Używane tylko podczas generowania mapy. Teren tuż ponad poziomem morza jest zawsze bez śniegu
|
||||||
@@ -1919,7 +1920,7 @@ STR_CONFIG_SETTING_RIVER_AMOUNT :Liczba rzek: {S
|
|||||||
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Określa liczbę rzek na mapie
|
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Określa liczbę rzek na mapie
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TREE_PLACER :Algorytm rozmieszczenia drzew: {STRING}
|
STR_CONFIG_SETTING_TREE_PLACER :Algorytm rozmieszczenia drzew: {STRING}
|
||||||
STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Metoda generowania terenów zalesionych. Algorytm "Oryginalny" rozmieszcza drzewa równomiernie na całej mapie, a "Ulepszony" gromadzi je w skupiska
|
STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Metoda generowania terenów zalesionych. Algorytm „oryginalny” rozmieszcza drzewa równomiernie na całej mapie, a „ulepszony” gromadzi je w skupiska
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_TREE_PLACER_NONE :Brak
|
STR_CONFIG_SETTING_TREE_PLACER_NONE :Brak
|
||||||
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Oryginalny
|
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Oryginalny
|
||||||
@@ -2009,7 +2010,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Pojedyncze klik
|
|||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Pojedyncze kliknięcie (natychmiast)
|
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Pojedyncze kliknięcie (natychmiast)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_USE_RELAY_SERVICE :Używanie usługi przekaźnika: {STRING}
|
STR_CONFIG_SETTING_USE_RELAY_SERVICE :Używanie usługi przekaźnika: {STRING}
|
||||||
STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Jeśli nawiązanie połączenia z serwerem nie powiedzie się, można użyć usługi przekaźnika do nawiązania połączenia. „Nigdy" nie zezwoli na to, „pytaj” najpierw zapyta, „zezwól” pozwoli na to bez pytania
|
STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Jeśli nawiązanie połączenia z serwerem nie powiedzie się, można użyć usługi przekaźnika do nawiązania połączenia. „Nigdy” nie zezwoli na to, „pytaj” najpierw zapyta, „zezwól” pozwoli na to bez pytania
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Nigdy
|
STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Nigdy
|
||||||
STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Pytaj
|
STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Pytaj
|
||||||
@@ -2029,11 +2030,11 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Nie
|
|||||||
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Tak
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Tak
|
||||||
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Tak, z wyjątkiem przypiętych
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Tak, z wyjątkiem przypiętych
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Użyj {STRING} formatu daty dla nazw zapisów gry
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Użyj daty w formacie {STRING} dla nazw zapisów gry
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format daty w nazwach plików zapisu gry
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format daty w nazwach plików zapisu gry
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :długiego (31 grudnia 2008)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :długim (31 grudnia 2008)
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krótkiego (31-12-2008)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krótkim (31-12-2008)
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatycznie włącz pauzę przy rozpoczęciu nowej gry: {STRING}
|
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatycznie włącz pauzę przy rozpoczęciu nowej gry: {STRING}
|
||||||
@@ -2060,10 +2061,10 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokazuj przyjaz
|
|||||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Wyświetlanie przewidywanego przyjazdu i odjazdu w rozkładach
|
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Wyświetlanie przewidywanego przyjazdu i odjazdu w rozkładach
|
||||||
|
|
||||||
STR_CONFIG_SETTING_QUICKGOTO :Szybkie tworzenie poleceń pojazdu: {STRING}
|
STR_CONFIG_SETTING_QUICKGOTO :Szybkie tworzenie poleceń pojazdu: {STRING}
|
||||||
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Po wybraniu stacji docelowej automatycznie włącz ponownie narzędzie 'idź do'
|
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Po wybraniu stacji docelowej automatycznie włącz ponownie narzędzie „idź do”
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torów: {STRING}
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torów: {STRING}
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rodzaj torów wybierany przy rozpoczęciu lub załadowaniu gry. 'Pierwszy dostępny' wybiera najstarszy rodzaj torów, 'najnowszy' wybiera najnowszy rodzaj torów, a 'najczęściej używany' wybiera ten, który jest używany najczęściej
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rodzaj torów wybierany przy rozpoczęciu lub załadowaniu gry. „Pierwszy dostępny” wybiera najstarszy rodzaj torów, „najnowszy” wybiera najnowszy rodzaj torów, a „najczęściej używany” wybiera ten, który jest używany najczęściej
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :pierwszy dostępny
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :pierwszy dostępny
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :najnowszy
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :najnowszy
|
||||||
@@ -2469,21 +2470,21 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Zmiana w
|
|||||||
|
|
||||||
# Config errors
|
# Config errors
|
||||||
STR_CONFIG_ERROR :{WHITE}Błąd w pliku konfiguracyjnym
|
STR_CONFIG_ERROR :{WHITE}Błąd w pliku konfiguracyjnym
|
||||||
STR_CONFIG_ERROR_ARRAY :{WHITE}... błąd w tablicy '{STRING}'
|
STR_CONFIG_ERROR_ARRAY :{WHITE}... błąd w tablicy „{STRING}”
|
||||||
STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nieprawidłowa wartość '{STRING}' dla '{STRING}'
|
STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nieprawidłowa wartość „{STRING}” dla „{STRING}”
|
||||||
STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... zbędne znaki na końcu ustawienia '{STRING}'
|
STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... zbędne znaki na końcu ustawienia „{STRING}”
|
||||||
STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorowanie NewGRF-a '{STRING}': zduplikowany GRF ID z '{STRING}'
|
STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorowanie NewGRF-a „{STRING}”: zduplikowany GRF ID z „{STRING}”
|
||||||
STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... pominięcie nieprawidłowych NewGRF-ów '{STRING}': {STRING}
|
STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... pominięcie nieprawidłowych NewGRF-ów „{STRING}”: {STRING}
|
||||||
STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nie znaleziono
|
STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nie znaleziono
|
||||||
STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :{G=n}niebezpieczne w stałym użyciu
|
STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :{G=n}niebezpieczne w stałym użyciu
|
||||||
STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systemowe NewGRF
|
STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systemowe NewGRF
|
||||||
STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :niezgodne z tą wersją OpenTTD
|
STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :niezgodne z tą wersją OpenTTD
|
||||||
STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nieznany
|
STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nieznany
|
||||||
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... poziom kompresji '{STRING}' nie jest poprawny
|
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... poziom kompresji „{STRING}” jest niepoprawny
|
||||||
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format zapisu gry '{STRING}' jest niedostępny. Powracanie do '{STRING}'
|
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format zapisu gry „{STRING}” jest niedostępny. Powracanie do „{STRING}”
|
||||||
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Graphics '{STRING}': nie odnaleziono
|
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Graphics „{STRING}”: nie odnaleziono
|
||||||
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Sounds '{STRING}': nie odnaleziono
|
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Sounds „{STRING}”: nie odnaleziono
|
||||||
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoruję zestaw Base Music '{STRING}': nie odnaleziono
|
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoruję zestaw Base Music „{STRING}”: nie odnaleziono
|
||||||
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Brak pamięci
|
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Brak pamięci
|
||||||
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nie powiodła się rezerwacja pamięci cache dla sprite'ów od wielkości {BYTES}. Pamięć cache sprite'ów została zredukowana do {BYTES}. Obniży to wydajność OpenTTD. By zmniejszyć zapotrzebowanie pamięci, możesz spróbować wyłączyć grafikę 32bpp i/lub poziomy zbliżenia
|
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nie powiodła się rezerwacja pamięci cache dla sprite'ów od wielkości {BYTES}. Pamięć cache sprite'ów została zredukowana do {BYTES}. Obniży to wydajność OpenTTD. By zmniejszyć zapotrzebowanie pamięci, możesz spróbować wyłączyć grafikę 32bpp i/lub poziomy zbliżenia
|
||||||
|
|
||||||
@@ -2504,9 +2505,10 @@ STR_INTRO_MULTIPLAYER :{BLACK}Gra wiel
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}Opcje gry
|
STR_INTRO_GAME_OPTIONS :{BLACK}Opcje gry
|
||||||
STR_INTRO_HIGHSCORE :{BLACK}Tabela wyników
|
STR_INTRO_HIGHSCORE :{BLACK}Tabela wyników
|
||||||
|
STR_INTRO_HELP :{BLACK}Pomoc i Instrukcje
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ustawienia
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ustawienia
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ustawienia NewGRF
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ustawienia NewGRF
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}Sprawdź dodatki online
|
STR_INTRO_ONLINE_CONTENT :{BLACK}Sprawdź Dodatki Online
|
||||||
STR_INTRO_AI_SETTINGS :{BLACK}Ustawienia SI
|
STR_INTRO_AI_SETTINGS :{BLACK}Ustawienia SI
|
||||||
STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Ustawienia Game Script
|
STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Ustawienia Game Script
|
||||||
STR_INTRO_QUIT :{BLACK}Wyjście
|
STR_INTRO_QUIT :{BLACK}Wyjście
|
||||||
@@ -2525,6 +2527,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wybierz
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Wyświetl opcje gry
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Wyświetl opcje gry
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Wyświetl tabelę wyników
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Wyświetl tabelę wyników
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}Uzyskaj dostęp do dokumentacji i zasobów online
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Wyświetl ustawienia gry
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Wyświetl ustawienia gry
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Wyświetl ustawienia NewGRF
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Wyświetl ustawienia NewGRF
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Poszukaj nowych lub zaktualizowanych dodatków do pobrania
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Poszukaj nowych lub zaktualizowanych dodatków do pobrania
|
||||||
@@ -2547,6 +2550,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Czy na
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Czy na pewno chcesz porzucić ten scenariusz?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Czy na pewno chcesz porzucić ten scenariusz?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}Pomoc i Instrukcje
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}Strony internetowe
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumenty
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}Plik „readme”
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}Lista Zmian
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Znane Błędy
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}Licencja
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Podręcznik / Wiki
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}Zgłoś Błąd
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :{BLACK}Społeczność
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Oszustwa
|
STR_CHEATS :{WHITE}Oszustwa
|
||||||
@@ -2623,7 +2637,7 @@ STR_FACE_FACECODE :{BLACK}Numer tw
|
|||||||
STR_FACE_FACECODE_TOOLTIP :{BLACK}Obejrzyj i/lub ustaw numer twarzy prezesa firmy
|
STR_FACE_FACECODE_TOOLTIP :{BLACK}Obejrzyj i/lub ustaw numer twarzy prezesa firmy
|
||||||
STR_FACE_FACECODE_CAPTION :{WHITE}Obejrzyj i/lub ustaw numer twarzy prezesa
|
STR_FACE_FACECODE_CAPTION :{WHITE}Obejrzyj i/lub ustaw numer twarzy prezesa
|
||||||
STR_FACE_FACECODE_SET :{WHITE}Ustawiono nowy numer twarzy gracza
|
STR_FACE_FACECODE_SET :{WHITE}Ustawiono nowy numer twarzy gracza
|
||||||
STR_FACE_FACECODE_ERR :{WHITE}Nie można ustawić numeru twarzy prezesa - musi być liczbą pomiędzy 0 a 4'294'967'295!
|
STR_FACE_FACECODE_ERR :{WHITE}Nie można ustawić numeru twarzy prezesa - musi być liczbą pomiędzy 0 a 4{NBSP}294{NBSP}967{NBSP}295!
|
||||||
STR_FACE_SAVE :{BLACK}Zapisz
|
STR_FACE_SAVE :{BLACK}Zapisz
|
||||||
STR_FACE_SAVE_TOOLTIP :{BLACK}Zapisz ulubioną twarz
|
STR_FACE_SAVE_TOOLTIP :{BLACK}Zapisz ulubioną twarz
|
||||||
STR_FACE_SAVE_DONE :{WHITE}Ta twarz będzie zapisana w pliku konfiguracyjnym OpenTTD jako twoja ulubiona
|
STR_FACE_SAVE_DONE :{WHITE}Ta twarz będzie zapisana w pliku konfiguracyjnym OpenTTD jako twoja ulubiona
|
||||||
@@ -2858,7 +2872,7 @@ STR_NETWORK_CHAT_CLIENT :[Prywatna] {STR
|
|||||||
STR_NETWORK_CHAT_TO_CLIENT :[Prywatna] Do {STRING}: {WHITE}{STRING}
|
STR_NETWORK_CHAT_TO_CLIENT :[Prywatna] Do {STRING}: {WHITE}{STRING}
|
||||||
STR_NETWORK_CHAT_ALL :[Wszyscy] {STRING}: {WHITE}{STRING}
|
STR_NETWORK_CHAT_ALL :[Wszyscy] {STRING}: {WHITE}{STRING}
|
||||||
STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING}
|
STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING}
|
||||||
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Wpisz tekst do chat'u
|
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Wprowadź tekst do czatu sieciowego
|
||||||
|
|
||||||
# Network messages
|
# Network messages
|
||||||
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nie znaleziono urządzeń sieciowych
|
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nie znaleziono urządzeń sieciowych
|
||||||
@@ -2988,7 +3002,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Rozmiar
|
|||||||
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Zaznaczono z powodu: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Zaznaczono z powodu: {WHITE}{STRING}
|
||||||
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Zależności: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Zależności: {WHITE}{STRING}
|
||||||
STR_CONTENT_DETAIL_TAGS :{SILVER}Tagi: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_TAGS :{SILVER}Tagi: {WHITE}{STRING}
|
||||||
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD jest zbudowany bez wsparcia dla "zlib"...
|
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD jest zbudowany bez wsparcia dla „zlib”...
|
||||||
STR_CONTENT_NO_ZLIB_SUB :{WHITE}... pobieranie zawartości nie jest możliwe!
|
STR_CONTENT_NO_ZLIB_SUB :{WHITE}... pobieranie zawartości nie jest możliwe!
|
||||||
|
|
||||||
# Order of these is important!
|
# Order of these is important!
|
||||||
@@ -3114,7 +3128,7 @@ STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wybierz
|
|||||||
STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Długość peronu
|
STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Długość peronu
|
||||||
STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wybierz długość stacji
|
STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wybierz długość stacji
|
||||||
STR_STATION_BUILD_DRAG_DROP :{BLACK}Przeciągnij i upuść
|
STR_STATION_BUILD_DRAG_DROP :{BLACK}Przeciągnij i upuść
|
||||||
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Buduj stację używając "przeciągnij i upuść"
|
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Buduj stację używając „przeciągnij i upuść”
|
||||||
|
|
||||||
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj stacji do pokazania
|
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj stacji do pokazania
|
||||||
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wybierz typ stacji do zbudowania
|
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wybierz typ stacji do zbudowania
|
||||||
@@ -3131,13 +3145,13 @@ STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Przełą
|
|||||||
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (semafor){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz
|
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (semafor){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (semafor){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym wypadku czerwony.
|
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (semafor){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym wypadku czerwony.
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (semafor){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych
|
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (semafor){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (semafor){}Sygnalizator złożony zachowuje się jak kombinacja sygnalizatorów wejściowych oraz wyjściowych. Umożliwia to budowę wielkich "drzew" presygnalizatorów
|
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (semafor){}Sygnalizator złożony zachowuje się jak kombinacja sygnalizatorów wejściowych oraz wyjściowych. Umożliwia to budowę wielkich „drzew” presygnalizatorów
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku
|
STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku
|
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (elektryczny){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz
|
STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (elektryczny){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (elektryczny){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym przypadku czerwony
|
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (elektryczny){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym przypadku czerwony
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (elektryczny){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych
|
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (elektryczny){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (elektryczny){}Sygnalizator złożony działa jako sygnał wejściowy i wyjściowy. Umożliwia to budowę wielkich "drzew" presygnalizatorów
|
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (elektryczny){}Sygnalizator złożony działa jako sygnał wejściowy i wyjściowy. Umożliwia to budowę wielkich „drzew” presygnalizatorów
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku
|
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku
|
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku
|
||||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę go na wybrany typ i wariant. Ctrl+klik przełącza istniejący wariant. Shift+klik pokazuje szacowany koszt zamiany
|
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę go na wybrany typ i wariant. Ctrl+klik przełącza istniejący wariant. Shift+klik pokazuje szacowany koszt zamiany
|
||||||
@@ -3766,6 +3780,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Zbadaj o
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} w {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} w {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiekt
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiekt
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typ szyn
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typ szyn
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Rodzaj drogi
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR zmienna 60+parametr x (heksadecymalnie)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR zmienna 60+parametr x (heksadecymalnie)
|
||||||
|
|
||||||
@@ -3822,7 +3837,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Potrzebne źró
|
|||||||
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} został wyłączony przez {STRING}
|
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} został wyłączony przez {STRING}
|
||||||
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Niepoprawny/nieznany format układu sprite'u (sprite {3:NUM})
|
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Niepoprawny/nieznany format układu sprite'u (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zbyt wiele elementów na liście wartości właściwości (sprite {3:NUM}, właściwość {4:HEX})
|
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zbyt wiele elementów na liście wartości właściwości (sprite {3:NUM}, właściwość {4:HEX})
|
||||||
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Niewłaściwy wywołanie produkcji przedsiębiorstwa (sprite {3:NUM}, "{2:STRING}")
|
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Nieprawidłowe wywołanie zwrotne produkcji przedsiębiorstwa (sprite {3:NUM}, „{2:STRING}”)
|
||||||
|
|
||||||
# NewGRF related 'general' warnings
|
# NewGRF related 'general' warnings
|
||||||
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uwaga!
|
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uwaga!
|
||||||
@@ -3845,17 +3860,17 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Znalezi
|
|||||||
STR_NEWGRF_LIST_MISSING :{RED}Brakujące pliki
|
STR_NEWGRF_LIST_MISSING :{RED}Brakujące pliki
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
STR_NEWGRF_BROKEN :{WHITE}Zachowanie NewGRF '{0:STRING}' może powodować desynchronizacje i/lub błędy
|
STR_NEWGRF_BROKEN :{WHITE}Zachowanie NewGRF „{0:STRING}” może powodować desynchronizacje i/lub błędy
|
||||||
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmieniony stan wagonu silnikowego '{1:ENGINE}', gdy był poza halą warsztatów
|
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmieniony stan wagonu silnikowego „{1:ENGINE}”, gdy był poza halą warsztatów
|
||||||
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmiana długości pojazdu '{1:ENGINE}' , który nie jest zatrzymany w hali
|
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmiana długości pojazdu „{1:ENGINE}”, który nie jest zatrzymany w hali warsztatów
|
||||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Zmieniono ładowność pojazdu na '{1:ENGINE}', kiedy nie był w hali warsztatów lub w trakcie przebudowy
|
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Zmieniono ładowność pojazdu na „{1:ENGINE}”, kiedy nie był w hali warsztatów lub w trakcie przebudowy
|
||||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg „{VEHICLE}” należący do „{COMPANY}” ma nieprawidłową długość. Prawdopodobnie jest to spowodowane problemami z NewGRF-ami. Gra może się desychronizować lub zawiesić
|
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg „{VEHICLE}” należący do „{COMPANY}” ma nieprawidłową długość. Prawdopodobnie jest to spowodowane problemami z NewGRF-ami. Gra może się desychronizować lub zawiesić
|
||||||
|
|
||||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' dostarcza niepoprawnych danych
|
STR_NEWGRF_BUGGY :{WHITE}NewGRF „{0:STRING}” dostarcza niepoprawne dane
|
||||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla '{1:ENGINE}' różnią się od listy zakupu po zbudowaniu. Może to spowodować, że autoodnowienie/-zamiana nie wykona remontu poprawnie
|
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla „{1:ENGINE}” różnią się od listy zakupu po zbudowaniu. Może to spowodować, że autoodnowienie/-zamiana nie wykona remontu poprawnie
|
||||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' spowodował nieskończoną pętlę w wywołaniu produkcji
|
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}” spowodował nieskończoną pętlę w wywołaniu zwrotnym produkcji
|
||||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Wywołanie {1:HEX} zwróciło nieznany/błędny wynik {2:HEX}
|
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Wywołanie zwrotne {1:HEX} zwróciło nieznany/błędny wynik {2:HEX}
|
||||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' zwrócił niewłaściwy typ ładunku w wywołaniu produkcji w {2:HEX}
|
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}” zwrócił niewłaściwy typ ładunku w wywołaniu zwrotnym produkcji w {2:HEX}
|
||||||
|
|
||||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||||
STR_NEWGRF_INVALID_CARGO :<nieprawidłowy ładunek>
|
STR_NEWGRF_INVALID_CARGO :<nieprawidłowy ładunek>
|
||||||
@@ -5023,7 +5038,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Pokaż o
|
|||||||
STR_AI_GAME_SCRIPT :{BLACK}Game Script
|
STR_AI_GAME_SCRIPT :{BLACK}Game Script
|
||||||
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sprawdź log Game Script
|
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sprawdź log Game Script
|
||||||
|
|
||||||
STR_ERROR_AI_NO_AI_FOUND :Nie znaleziono SI do wczytania.{}SI jest nieaktywne i nic nie robi.{}Możesz ściągnąć SI z 'Dodatki Online' w głównym menu gry
|
STR_ERROR_AI_NO_AI_FOUND :Nie znaleziono SI do wczytania.{}SI jest nieaktywne i nic nie robi.{}Możesz pobrać kilka SI z przeglądarki „Dodatków Online”
|
||||||
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jeden z uruchomionych skryptów przestał działać. Prosimy o zgłoszenie tego autorowi skryptu dołączając zrzut ekranu okna debugowania SI / GameScript
|
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jeden z uruchomionych skryptów przestał działać. Prosimy o zgłoszenie tego autorowi skryptu dołączając zrzut ekranu okna debugowania SI / GameScript
|
||||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno debugowania SI / Game Script jest dostępne tylko na serwerze
|
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno debugowania SI / Game Script jest dostępne tylko na serwerze
|
||||||
|
|
||||||
@@ -5087,6 +5102,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}Spis Treści
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Przeskocz do wybranej sekcji w wyświetlanym pliku za pomocą tej listy
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Cofnij się w historii nawigacji
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Powrót do przodu w historii nawigacji
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}Zawijaj tekst
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}Zawijaj tekst
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zawiń tekst w oknie, aby zmieścił się bez konieczności przewijania
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zawiń tekst w oknie, aby zmieścił się bez konieczności przewijania
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Odczytaj plik „readme”
|
STR_TEXTFILE_VIEW_README :{BLACK}Odczytaj plik „readme”
|
||||||
@@ -5097,6 +5117,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}
|
|||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} - lista zmian
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} - lista zmian
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} - licencja
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} - licencja
|
||||||
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Podgląd wyniku ankiety
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Podgląd wyniku ankiety
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Dokument OpenTTD „{STRING}”
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -5164,8 +5185,8 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Znalezio
|
|||||||
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromny zrzut ekranu
|
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromny zrzut ekranu
|
||||||
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Zrzut ekranu będzie miał rozdzielczość {COMMA} x {COMMA} pikseli. Zrzut ekranu może zająć chwilę. Kontynuować?
|
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Zrzut ekranu będzie miał rozdzielczość {COMMA} x {COMMA} pikseli. Zrzut ekranu może zająć chwilę. Kontynuować?
|
||||||
|
|
||||||
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa wysokości pomyślnie zapisana jako '{STRING}'. Najwyższy szczyt wynosi {NUM}
|
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa wysokości pomyślnie zapisana jako „{STRING}”. Najwyższy szczyt wynosi {NUM}
|
||||||
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Zrzut ekranu zapisany na dysk z powodzeniem '{STRING}'
|
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Zrzut ekranu zapisany na dysk z powodzeniem „{STRING}”
|
||||||
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Błąd zrzutu ekranu!
|
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Błąd zrzutu ekranu!
|
||||||
|
|
||||||
# Error message titles
|
# Error message titles
|
||||||
|
@@ -3401,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecci
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} em {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} em {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objecto
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objecto
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferrovia
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferrovia
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal)
|
||||||
|
|
||||||
|
@@ -3575,6 +3575,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Прос
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} в {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} в {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Объект
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Объект
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Тип рельсов
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Тип рельсов
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тип дороги
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр переменной NewGRF 60+x (шестнадцатеричный)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр переменной NewGRF 60+x (шестнадцатеричный)
|
||||||
|
|
||||||
|
@@ -191,6 +191,23 @@ STR_COLOUR_WHITE :白 色
|
|||||||
STR_COLOUR_RANDOM :随机
|
STR_COLOUR_RANDOM :随机
|
||||||
|
|
||||||
###length 17
|
###length 17
|
||||||
|
STR_COLOUR_SECONDARY_DARK_BLUE :深蓝色
|
||||||
|
STR_COLOUR_SECONDARY_PALE_GREEN :浅绿色
|
||||||
|
STR_COLOUR_SECONDARY_SECONDARY_PINK :粉色
|
||||||
|
STR_COLOUR_SECONDARY_YELLOW :黄 色
|
||||||
|
STR_COLOUR_SECONDARY_RED :红 色
|
||||||
|
STR_COLOUR_SECONDARY_LIGHT_BLUE :淡蓝色
|
||||||
|
STR_COLOUR_SECONDARY_GREEN :绿 色
|
||||||
|
STR_COLOUR_SECONDARY_DARK_GREEN :深绿色
|
||||||
|
STR_COLOUR_SECONDARY_BLUE :蓝 色
|
||||||
|
STR_COLOUR_SECONDARY_CREAM :奶油色
|
||||||
|
STR_COLOUR_SECONDARY_MAUVE :深紫色
|
||||||
|
STR_COLOUR_SECONDARY_PURPLE :紫 色
|
||||||
|
STR_COLOUR_SECONDARY_ORANGE :橘黄色
|
||||||
|
STR_COLOUR_SECONDARY_BROWN :棕 色
|
||||||
|
STR_COLOUR_SECONDARY_GREY :浅灰色
|
||||||
|
STR_COLOUR_SECONDARY_WHITE :白 色
|
||||||
|
STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :与主色调相同
|
||||||
|
|
||||||
|
|
||||||
# Units used in OpenTTD
|
# Units used in OpenTTD
|
||||||
@@ -198,6 +215,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}
|
|||||||
STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}千米/小时
|
STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}千米/小时
|
||||||
STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}米/秒
|
STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}米/秒
|
||||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}格/天
|
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}格/天
|
||||||
|
STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}节
|
||||||
|
|
||||||
STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}匹马力
|
STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}匹马力
|
||||||
STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}匹马力
|
STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}匹马力
|
||||||
@@ -346,9 +364,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}打开
|
|||||||
###length 31
|
###length 31
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}暂停游戏
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}暂停游戏
|
||||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}快速游戏模式
|
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}快速游戏模式
|
||||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}选项
|
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}选项和设置
|
||||||
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}保存游戏、放弃游戏、退出
|
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}保存游戏、读取游戏、放弃游戏、退出
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}显示地图、附加视点或标志列表
|
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}显示地图、附加视点、客货流或标志列表
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}显示城镇列表
|
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}显示城镇列表
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}显示财政补贴
|
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}显示财政补贴
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}显示公司所有的车站列表
|
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}显示公司所有的车站列表
|
||||||
@@ -356,9 +374,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}显示
|
|||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}显示公司综合信息
|
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}显示公司综合信息
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}显示公司历史纪录
|
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}显示公司历史纪录
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}显示游戏目标选单
|
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}显示游戏目标选单
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}显示图表
|
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}显示图表和货物运费表
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司名次表
|
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司名次表
|
||||||
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}工业设施列表/产业链/建立新工业设施
|
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}查看工业设施或投资工业设施建设
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}显示公司的火车列表。按住 Ctrl 键单击可以切换组群和车辆列表。
|
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}显示公司的火车列表。按住 Ctrl 键单击可以切换组群和车辆列表。
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}显示公司的汽车列表。按住 Ctrl 键单击可以切换组群和汽车列表。
|
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}显示公司的汽车列表。按住 Ctrl 键单击可以切换组群和汽车列表。
|
||||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}显示公司的船只列表。按住 Ctrl 键单击可以切换组群和船只列表。
|
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}显示公司的船只列表。按住 Ctrl 键单击可以切换组群和船只列表。
|
||||||
@@ -372,8 +390,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}显示
|
|||||||
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}显示机场建设工具
|
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}显示机场建设工具
|
||||||
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}打开景观美化工具栏{}以修改地形、设置地貌等
|
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}打开景观美化工具栏{}以修改地形、设置地貌等
|
||||||
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}显示 声音/音乐 控制菜单
|
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}显示 声音/音乐 控制菜单
|
||||||
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}显示最新消息新闻,消息选项,消息历史
|
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}显示最新消息、新闻,消息历史或删除所有消息
|
||||||
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}地块信息查询,控制台,脚本调试,截图,关于OpenTTD
|
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}查询地块信息、截图、关于 OpenTTD 和开发者工具
|
||||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切换工具栏
|
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切换工具栏
|
||||||
|
|
||||||
# Extra tooltips for the scenario editor toolbar
|
# Extra tooltips for the scenario editor toolbar
|
||||||
@@ -505,6 +523,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :删除全部消
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :查询地块信息
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :查询地块信息
|
||||||
|
STR_ABOUT_MENU_HELP :帮助和指南
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :切换到控制台模式
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :切换到控制台模式
|
||||||
STR_ABOUT_MENU_AI_DEBUG :AI /游戏脚本调试
|
STR_ABOUT_MENU_AI_DEBUG :AI /游戏脚本调试
|
||||||
@@ -606,7 +625,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}利润
|
|||||||
STR_GRAPH_INCOME_CAPTION :{WHITE}收入图表
|
STR_GRAPH_INCOME_CAPTION :{WHITE}收入图表
|
||||||
STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}运输的货物总数
|
STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}运输的货物总数
|
||||||
STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司评价表现指数 (最大指数为1000)
|
STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司评价表现指数 (最大指数为1000)
|
||||||
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}公司市值
|
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}公司市值图表
|
||||||
|
|
||||||
STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}货物运输价格
|
STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}货物运输价格
|
||||||
STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}运输时间(天)
|
STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}运输时间(天)
|
||||||
@@ -848,7 +867,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC
|
|||||||
STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 已经宣布破产,所有资产均已抵债!
|
STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 已经宣布破产,所有资产均已抵债!
|
||||||
STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}新的运输公司开业大吉!
|
STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}新的运输公司开业大吉!
|
||||||
STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 在 {TOWN} 附近开工建设!
|
STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 在 {TOWN} 附近开工建设!
|
||||||
STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 收购!
|
STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 以未知的价格收购 !
|
||||||
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(总裁)
|
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(总裁)
|
||||||
|
|
||||||
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} 赞助了城镇 {TOWN} 的建设!
|
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} 赞助了城镇 {TOWN} 的建设!
|
||||||
@@ -933,12 +952,27 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}将主
|
|||||||
# Game options window
|
# Game options window
|
||||||
STR_GAME_OPTIONS_CAPTION :{WHITE}游戏选项
|
STR_GAME_OPTIONS_CAPTION :{WHITE}游戏选项
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_TAB_GENERAL :通用
|
||||||
|
STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}选择通用设定
|
||||||
|
STR_GAME_OPTIONS_TAB_GRAPHICS :图形包
|
||||||
|
STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}选择图形组设定
|
||||||
|
STR_GAME_OPTIONS_TAB_SOUND :音效
|
||||||
|
STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}选择音乐和音效的设定
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_VOLUME :音量
|
||||||
|
STR_GAME_OPTIONS_SFX_VOLUME :音效
|
||||||
|
STR_GAME_OPTIONS_MUSIC_VOLUME :音乐
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_VOLUME_0 :0%
|
||||||
|
STR_GAME_OPTIONS_VOLUME_25 :25%
|
||||||
|
STR_GAME_OPTIONS_VOLUME_50 :50%
|
||||||
|
STR_GAME_OPTIONS_VOLUME_75 :75%
|
||||||
|
STR_GAME_OPTIONS_VOLUME_100 :100%
|
||||||
|
|
||||||
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币单位
|
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币单位
|
||||||
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择
|
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING})
|
||||||
|
|
||||||
###length 42
|
###length 42
|
||||||
STR_GAME_OPTIONS_CURRENCY_GBP :英镑
|
STR_GAME_OPTIONS_CURRENCY_GBP :英镑
|
||||||
@@ -990,6 +1024,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择
|
|||||||
# Autosave dropdown
|
# Autosave dropdown
|
||||||
###length 5
|
###length 5
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭
|
||||||
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :每10分钟
|
||||||
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :每30分钟
|
||||||
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :每60分钟
|
||||||
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :每120分钟
|
||||||
|
|
||||||
STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言
|
STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言
|
||||||
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言
|
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言
|
||||||
@@ -1026,6 +1064,13 @@ STR_GAME_OPTIONS_GUI_SCALE_3X :3倍
|
|||||||
STR_GAME_OPTIONS_GUI_SCALE_4X :4倍
|
STR_GAME_OPTIONS_GUI_SCALE_4X :4倍
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_5X :5倍
|
STR_GAME_OPTIONS_GUI_SCALE_5X :5倍
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}自动体验调查
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}参与自动体验调查
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}“打开”时, OpenTTD会在结束游戏时传输调查结果
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}关于体验调查和隐私
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}这会提供更多自动体验调查的信息(打开浏览器)
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}预览调查结果
|
||||||
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}展示正在运行的存档的调查结果
|
||||||
|
|
||||||
STR_GAME_OPTIONS_GRAPHICS :{BLACK}图像
|
STR_GAME_OPTIONS_GRAPHICS :{BLACK}图像
|
||||||
|
|
||||||
@@ -1035,12 +1080,12 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz
|
|||||||
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}高于 60Hz 的刷新率可能会影响性能。
|
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}高于 60Hz 的刷新率可能会影响性能。
|
||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}基础图形组
|
STR_GAME_OPTIONS_BASE_GRF :{BLACK}基础图形组
|
||||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}选择要使用的基础图形组
|
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}选择要使用的基础图形组(只能在主菜单更改,不能在游戏中更改)
|
||||||
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 文件{}未找到或不正确
|
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 文件{}未找到或不正确
|
||||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}关于基本图组的额外信息
|
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}关于基本图组的额外信息
|
||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_SFX :{BLACK}基础音效组
|
STR_GAME_OPTIONS_BASE_SFX :{BLACK}基础音效组
|
||||||
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}选择要使用的基础音效组
|
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}选择要使用的基础音效组(只能在主菜单更改,不能在游戏中更改)
|
||||||
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}有关基础音效组的附加信息
|
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}有关基础音效组的附加信息
|
||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基础音乐组
|
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基础音乐组
|
||||||
@@ -1156,6 +1201,7 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}展开
|
|||||||
STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}关闭全部
|
STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}关闭全部
|
||||||
STR_CONFIG_SETTING_RESET_ALL :{BLACK}重置所有值
|
STR_CONFIG_SETTING_RESET_ALL :{BLACK}重置所有值
|
||||||
STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(没有可用的提示)
|
STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(没有可用的提示)
|
||||||
|
STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR}
|
||||||
STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}默认值: {ORANGE}{STRING}
|
STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}默认值: {ORANGE}{STRING}
|
||||||
STR_CONFIG_SETTING_TYPE :{LTBLUE}设置类型: {ORANGE}{STRING}
|
STR_CONFIG_SETTING_TYPE :{LTBLUE}设置类型: {ORANGE}{STRING}
|
||||||
STR_CONFIG_SETTING_TYPE_CLIENT :当前客户端设置(不保存,影响所有游戏)
|
STR_CONFIG_SETTING_TYPE_CLIENT :当前客户端设置(不保存,影响所有游戏)
|
||||||
@@ -1209,6 +1255,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :左侧
|
|||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :中央
|
STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :中央
|
||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :右侧
|
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :右侧
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}秒
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大初始贷款: {STRING}
|
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大初始贷款: {STRING}
|
||||||
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最大贷款额(不考虑通货膨胀的影响)
|
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最大贷款额(不考虑通货膨胀的影响)
|
||||||
@@ -1337,7 +1384,7 @@ STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新的调度命
|
|||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :通常,车辆在它经过的每一个车站都会停车。“打开”本选项时,车辆会不停车的通过所有中间车站前往最终目的地。注意:这只是为每一条新调度命令设置一个默认信息,仍然可以为每条调度命令设置明确的信息
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :通常,车辆在它经过的每一个车站都会停车。“打开”本选项时,车辆会不停车的通过所有中间车站前往最终目的地。注意:这只是为每一条新调度命令设置一个默认信息,仍然可以为每条调度命令设置明确的信息
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠在站台{STRING} 位置
|
STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠在站台{STRING} 位置
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入的那一端,“中间”是站台中间位置,“远端”是远离车辆进入的那一端
|
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入的那一端,“中间”是站台中间位置,“远端”是远离车辆进入的那一端。注意:本设定只改变新指令的默认设定。玩家仍可通过点击指令文字改变列车在某车站的停车位置。
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端
|
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中间
|
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中间
|
||||||
@@ -1380,6 +1427,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :不出现*
|
|||||||
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :较少出现
|
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :较少出现
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :正常
|
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :正常
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :允许在竞争对手所属的道路或铁路上建平交道口: {STRING}
|
||||||
|
STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :“打开”时,允许在竞争对手所属的道路上建平交道口
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇所属的道路上建通过式车站: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇所属的道路上建通过式车站: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站
|
||||||
@@ -1393,6 +1442,8 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :固定资产会
|
|||||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :初创公司颜色:{STRING}
|
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :初创公司颜色:{STRING}
|
||||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :选定公司的初始配色方案
|
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :选定公司的初始配色方案
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :公司初始副色调: {STRING}
|
||||||
|
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :如果正在使用的NewGRF允许,选定一个公司初始副色调。
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场: {STRING}
|
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场: {STRING}
|
||||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :“打开”此选项,每种类型机场出现后一直是可用的
|
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :“打开”此选项,每种类型机场出现后一直是可用的
|
||||||
@@ -1537,7 +1588,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :灰色到红色
|
|||||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :灰度
|
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :灰度
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SCROLLMODE :视点滚动方式:{STRING}
|
STR_CONFIG_SETTING_SCROLLMODE :视点滚动方式:{STRING}
|
||||||
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :滚动地图的行为
|
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :用鼠标拖动地图时的行为。“鼠标位置锁定”选项并不在任何平台上适用,如基于网页的版本、触屏、Linux 上的 Wayland等
|
||||||
###length 4
|
###length 4
|
||||||
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :鼠标右键移动视角,鼠标指针不跟随移动
|
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :鼠标右键移动视角,鼠标指针不跟随移动
|
||||||
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :鼠标右键移动地图,鼠标指针不跟随移动
|
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :鼠标右键移动地图,鼠标指针不跟随移动
|
||||||
@@ -1595,6 +1646,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :关闭
|
|||||||
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :右键关闭窗口: {STRING}
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :右键关闭窗口: {STRING}
|
||||||
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :使用在窗口内按右键关闭该窗口,本功能与右键工具提示不能共存!
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :使用在窗口内按右键关闭该窗口,本功能与右键工具提示不能共存!
|
||||||
###length 3
|
###length 3
|
||||||
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :否
|
||||||
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :是
|
||||||
|
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :是(非粘滞)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 形式的文件名存档
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 形式的文件名存档
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :游戏存档文件名中日期的格式
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :游戏存档文件名中日期的格式
|
||||||
@@ -1716,7 +1770,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :单个脚本强
|
|||||||
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
|
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT :保养周期(百分数): {STRING}
|
STR_CONFIG_SETTING_SERVINT_ISPERCENT :保养周期(百分数): {STRING}
|
||||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :选择触发车辆保养的条件,距离上一次保养的时间或者与最高可靠性的百分比
|
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :“打开”时,当车辆的可靠性降到他们最大可靠性的一定百分比时,他们会去保养。{}{}例如,如果一辆车的最大可靠性是90%,而保养间隔是20%,车辆会在可靠性为72%时去保养。
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING}
|
STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING}
|
||||||
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期
|
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期
|
||||||
@@ -1846,8 +1900,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :“打开”时
|
|||||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :允许城镇建设平交道: {STRING}
|
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :允许城镇建设平交道: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :“打开”时允许城镇建设平交路口
|
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :“打开”时允许城镇建设平交路口
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NOISE_LEVEL :允许城镇控制机场噪音: {STRING}
|
STR_CONFIG_SETTING_NOISE_LEVEL :基于噪音级别控制机场建设: {STRING}
|
||||||
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :“关闭”本选项时,每个城镇可以建设两个机场,“打开”时,可以建设的机场数目取决于城市对噪音的忍耐度,而这与城市人口、机场规模和距离有关
|
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :允许城镇基于城镇人口、机场大小和距离控制机场噪音。“关闭”时,每个城市只允许建设两座机场,除非地方政府态度被设为“宽容的”
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING :在游戏中建立城镇: {STRING}
|
STR_CONFIG_SETTING_TOWN_FOUNDING :在游戏中建立城镇: {STRING}
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :“打开”本选项时,允许玩家在游戏中创建新城镇
|
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :“打开”本选项时,允许玩家在游戏中创建新城镇
|
||||||
@@ -1921,6 +1975,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :没有
|
|||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始城市规模因子:{STRING}
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始城市规模因子:{STRING}
|
||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :每 {STRING} 更新货物分配
|
||||||
|
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :两次连结图的重新计算间隔。每次重新计算会计算图中一个部分的计划。这意味着填入的值X不意味着整张图会每X秒更新一次,只有其中的一部分会被更新。此设定赋值越小,则更多的CPU时间会被用来重新计算。此设定赋值越大,则在线路改变时货物再分配所需时间会变长。
|
||||||
|
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :花费 {STRING} 在货物分配的重新计算上
|
||||||
|
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :每一个连结图的重新计算时间。当一次重新计算开始,一个线程会被允许运行这个秒数。此设定赋值越小,则线程无法按时结束的可能性越大,从而导致游戏运行延迟。此设定赋值越大,则在线路改变时货物再分配所需时间会变长。
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_PAX :乗客分配方式:{STRING}
|
STR_CONFIG_SETTING_DISTRIBUTION_PAX :乗客分配方式:{STRING}
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的乗客数量与乙站往甲站的乘客数量大致相同。“不对称”指任何一站往另一站的乘客数量皆由系统随意决定。“手动”指系统不会自动分配乘客的目的地。
|
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的乗客数量与乙站往甲站的乘客数量大致相同。“不对称”指任何一站往另一站的乘客数量皆由系统随意决定。“手动”指系统不会自动分配乘客的目的地。
|
||||||
@@ -1946,13 +2004,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :如果把此设
|
|||||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :如果最短路径的饱和度超过{STRING},把货物改派往容量较大的路径
|
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :如果最短路径的饱和度超过{STRING},把货物改派往容量较大的路径
|
||||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :货物分配功能在派送货物时,会优先使用最短路径,当它饱和后改用第二短的路径,如此类推。当所有路径皆饱和但仍未满足需求,系统會由容量较大的路径开始继续加载货物。{}由于路径饱和度难以准确估算,此设定容许您定义一值,使短路径达到该饱和度后,系统便开始加载容量较大的路径。{}如果此设定的值少於100%,就算系统高估路径容量,也不會使过多的货物滞留在站台上。
|
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :货物分配功能在派送货物时,会优先使用最短路径,当它饱和后改用第二短的路径,如此类推。当所有路径皆饱和但仍未满足需求,系统會由容量较大的路径开始继续加载货物。{}由于路径饱和度难以准确估算,此设定容许您定义一值,使短路径达到该饱和度后,系统便开始加载容量较大的路径。{}如果此设定的值少於100%,就算系统高估路径容量,也不會使过多的货物滞留在站台上。
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :速度单位:{STRING}
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :速度单位(陆地):{STRING}
|
||||||
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :速度单位 (航海): {STRING}
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :在界面上以所选择的单位表示速度
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :在界面上以所选择的单位表示速度
|
||||||
###length 5
|
###length 5
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :英制(英里/小时)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :英制(英里/小时)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :公制(千米/小时)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :公制(千米/小时)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :国际单位制(米/秒)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :国际单位制(米/秒)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :游戏单位 (格/日)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :游戏单位 (格/日)
|
||||||
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :节
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :运输工具功率单位:{STRING}
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :运输工具功率单位:{STRING}
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :在界面上以所选择的单位表示运输工具的功率
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :在界面上以所选择的单位表示运输工具的功率
|
||||||
@@ -2051,6 +2111,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}无法
|
|||||||
# Video initalization errors
|
# Video initalization errors
|
||||||
STR_VIDEO_DRIVER_ERROR :{WHITE}图形设置错误…
|
STR_VIDEO_DRIVER_ERROR :{WHITE}图形设置错误…
|
||||||
STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}… 找不到合适的 GPU。硬件加速已禁用
|
STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}… 找不到合适的 GPU。硬件加速已禁用
|
||||||
|
STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU使游戏崩溃了。硬件加速已禁用
|
||||||
|
|
||||||
# Intro window
|
# Intro window
|
||||||
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
|
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
|
||||||
@@ -2064,6 +2125,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}联机
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}游戏选项
|
STR_INTRO_GAME_OPTIONS :{BLACK}游戏选项
|
||||||
STR_INTRO_HIGHSCORE :{BLACK}高分榜
|
STR_INTRO_HIGHSCORE :{BLACK}高分榜
|
||||||
|
STR_INTRO_HELP :{BLACK}帮助和指南
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}设置
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}设置
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 设置
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 设置
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}在线查找扩展包
|
STR_INTRO_ONLINE_CONTENT :{BLACK}在线查找扩展包
|
||||||
@@ -2085,6 +2147,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}选择
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}显示游戏选项
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}显示游戏选项
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}显示高分榜
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}显示高分榜
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}获取说明和在线资源
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}显示设置
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}显示设置
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}显示GRF设定
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}显示GRF设定
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}连接服务器并查找扩展包
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}连接服务器并查找扩展包
|
||||||
@@ -2107,6 +2170,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}你确
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}你确定要退出当前场景吗?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}你确定要退出当前场景吗?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}帮助和指南
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}网页
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}文档
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}查看说明
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}更新日志
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}已知漏洞
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}许可证
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}手册 / 百科
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}反馈游戏漏洞
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :{BLACK}社区
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}作弊
|
STR_CHEATS :{WHITE}作弊
|
||||||
@@ -2355,6 +2429,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(新公司)
|
|||||||
STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}新建并加入公司
|
STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}新建并加入公司
|
||||||
STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}这是你
|
STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}这是你
|
||||||
STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}这里是游戏的主机
|
STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}这里是游戏的主机
|
||||||
|
STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM}个客户端 {NUM}/{NUM}所公司
|
||||||
STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}服务器管理员允许的当前连接的玩家数量、公司数量和最多公司数量
|
STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}服务器管理员允许的当前连接的玩家数量、公司数量和最多公司数量
|
||||||
|
|
||||||
# Matches ConnectionType
|
# Matches ConnectionType
|
||||||
@@ -2382,6 +2457,12 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}否
|
|||||||
STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}是,本次请求
|
STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}是,本次请求
|
||||||
STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}是,不要再次询问
|
STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}是,不要再次询问
|
||||||
|
|
||||||
|
STR_NETWORK_ASK_SURVEY_CAPTION :是否参与自动调查?
|
||||||
|
STR_NETWORK_ASK_SURVEY_TEXT :您是否愿意参与自动体验调查?{} OpenTTD 会在结束游戏时传输调查结果。{} 您可以在任意时刻在“游戏选项”菜单修改本选项。
|
||||||
|
STR_NETWORK_ASK_SURVEY_PREVIEW :预览调查结果
|
||||||
|
STR_NETWORK_ASK_SURVEY_LINK :关于体验调查和隐私
|
||||||
|
STR_NETWORK_ASK_SURVEY_NO :否
|
||||||
|
STR_NETWORK_ASK_SURVEY_YES :是
|
||||||
|
|
||||||
STR_NETWORK_SPECTATORS :旁观者
|
STR_NETWORK_SPECTATORS :旁观者
|
||||||
|
|
||||||
@@ -2588,6 +2669,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}调整
|
|||||||
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}调整桥梁是否为透明{}CTRL+点击 锁定
|
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}调整桥梁是否为透明{}CTRL+点击 锁定
|
||||||
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}调整灯塔及信号发射塔是否为透明{}CTRL+点击 锁定
|
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}调整灯塔及信号发射塔是否为透明{}CTRL+点击 锁定
|
||||||
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整电气铁路电线是否为透明{}CTRL+点击 锁定
|
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整电气铁路电线是否为透明{}CTRL+点击 锁定
|
||||||
|
STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}调整装卸提示和盈亏提示是否为透明{}CTRL+点击 锁定
|
||||||
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}选择设置为:不显示或透明
|
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}选择设置为:不显示或透明
|
||||||
|
|
||||||
# Linkgraph legend window
|
# Linkgraph legend window
|
||||||
@@ -2671,8 +2753,11 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}使用
|
|||||||
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}选择一个要显示车站类型
|
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}选择一个要显示车站类型
|
||||||
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}选择要建造的车站类型
|
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}选择要建造的车站类型
|
||||||
|
|
||||||
STR_STATION_CLASS_DFLT :默认车站
|
STR_STATION_CLASS_DFLT :默认
|
||||||
|
STR_STATION_CLASS_DFLT_STATION :默认车站
|
||||||
|
STR_STATION_CLASS_DFLT_ROADSTOP :默认道路站点
|
||||||
STR_STATION_CLASS_WAYP :路标
|
STR_STATION_CLASS_WAYP :路标
|
||||||
|
STR_STATION_CLASS_WAYP_WAYPOINT :默认路点
|
||||||
|
|
||||||
# Signal window
|
# Signal window
|
||||||
STR_BUILD_SIGNAL_CAPTION :{WHITE}信号灯
|
STR_BUILD_SIGNAL_CAPTION :{WHITE}信号灯
|
||||||
@@ -2896,14 +2981,14 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}移除
|
|||||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}你确定要清除所有工业吗?
|
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}你确定要清除所有工业吗?
|
||||||
|
|
||||||
# Industry cargoes window
|
# Industry cargoes window
|
||||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} 的产业链
|
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}产业链- {STRING}
|
||||||
STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} 的产业链
|
STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}货物的产业链 - {STRING}
|
||||||
STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}供应商
|
STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}供应商
|
||||||
STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}采购商
|
STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}采购商
|
||||||
STR_INDUSTRY_CARGOES_HOUSES :{WHITE}房屋
|
STR_INDUSTRY_CARGOES_HOUSES :{WHITE}房屋
|
||||||
STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}点击查看上下游产业链
|
STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}点击查看上下游产业链
|
||||||
STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}点该货物可显示其上下游工业
|
STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}点该货物可显示其上下游工业
|
||||||
STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}显示产业链
|
STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}产业链
|
||||||
STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}显示货物的上下游工业
|
STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}显示货物的上下游工业
|
||||||
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}在缩略地图显示
|
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}在缩略地图显示
|
||||||
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}将该产业链的工业显示在缩略地图中
|
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}将该产业链的工业显示在缩略地图中
|
||||||
@@ -3315,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}检查
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :物件
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :物件
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :铁路类型
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :铁路类型
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路类型
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数 (十六进制)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数 (十六进制)
|
||||||
|
|
||||||
@@ -3349,6 +3435,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
|||||||
STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING}
|
STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING}
|
||||||
STR_NEWGRF_ERROR_MSG_ERROR :{RED}错误:{SILVER}{STRING}
|
STR_NEWGRF_ERROR_MSG_ERROR :{RED}错误:{SILVER}{STRING}
|
||||||
STR_NEWGRF_ERROR_MSG_FATAL :{RED}严重错误:{SILVER}{STRING}
|
STR_NEWGRF_ERROR_MSG_FATAL :{RED}严重错误:{SILVER}{STRING}
|
||||||
|
STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF "{STRING}" 发生了严重错误:{}{STRING}
|
||||||
STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF "{STRING}"发生了一个错误:{}{STRING}
|
STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF "{STRING}"发生了一个错误:{}{STRING}
|
||||||
STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 不能与 OpenTTD 报告的 TTDPatch 版本兼容。
|
STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 不能与 OpenTTD 报告的 TTDPatch 版本兼容。
|
||||||
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 是为 {2:STRING} 版 TTD 开发的。
|
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 是为 {2:STRING} 版 TTD 开发的。
|
||||||
@@ -3497,8 +3584,8 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{Y
|
|||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{PUSH_COLOUR}{YELLOW}资助市政道路进行重建。{}将造成市内交通阻断 6 个月。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{PUSH_COLOUR}{YELLOW}资助市政道路进行重建。{}将造成市内交通阻断 6 个月。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}以公司的名义设立一尊塑像。{}为位于该城镇的车站提供永久的评分增益。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}以公司的名义设立一尊塑像。{}为位于该城镇的车站提供永久的评分增益。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}资助市内建设新的商业设施。{}为城镇提供暂时的成长速度增益。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}资助市内建设新的商业设施。{}为城镇提供暂时的成长速度增益。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{PUSH_COLOUR}{YELLOW}购买该市一年的运输专营权。{}其间该市的乘客及货物只允许选用贵公司的运输服务。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{PUSH_COLOUR}{YELLOW}购买该市一年的运输专营权。{}其间该市的乘客及货物只允许选用贵公司的运输服务。若竞争对手对该市的贿赂成功,此合同将被取消。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}贿赂地方政府以提高评价,但有被发现后严厉惩罚的风险。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}贿赂地方政府以提高评价,并终止竞争者的运输专营权,但有被发现后严厉惩罚的风险。{}{POP_COLOUR}费用:{CURRENCY_LONG}
|
||||||
|
|
||||||
# Goal window
|
# Goal window
|
||||||
STR_GOALS_CAPTION :{WHITE}{COMPANY} 目标
|
STR_GOALS_CAPTION :{WHITE}{COMPANY} 目标
|
||||||
@@ -3720,6 +3807,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}固定
|
|||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}显示详细的设施情况
|
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}显示详细的设施情况
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}给予资金
|
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}给予资金
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}给予该公司资金
|
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}给予该公司资金
|
||||||
|
STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}不受其欢迎的收购
|
||||||
|
STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}对此公司进行不受其欢迎的收购
|
||||||
|
|
||||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}新的头像
|
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}新的头像
|
||||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}为总裁选择新头像
|
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}为总裁选择新头像
|
||||||
@@ -3735,6 +3824,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :总裁姓名
|
|||||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :输入你要给予的金额
|
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :输入你要给予的金额
|
||||||
|
|
||||||
STR_BUY_COMPANY_MESSAGE :{WHITE}我们正在寻找一家愿意收购我们的公司。{}{}您愿意收购 {COMPANY} ({CURRENCY_LONG}) 吗?
|
STR_BUY_COMPANY_MESSAGE :{WHITE}我们正在寻找一家愿意收购我们的公司。{}{}您愿意收购 {COMPANY} ({CURRENCY_LONG}) 吗?
|
||||||
|
STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}当不受其欢迎地收购 {COMPANY} 时,您会买下其所有的资产,还清其所有的债务,并支付其两年的利润。{}{}总价预计为 {CURRENCY_LONG}.{}{}您想继续此收购吗?
|
||||||
|
|
||||||
# Company infrastructure window
|
# Company infrastructure window
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} 的设施
|
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} 的设施
|
||||||
@@ -3806,7 +3896,10 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}管理
|
|||||||
STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}向所有在此列表中的运输工具发出指令
|
STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}向所有在此列表中的运输工具发出指令
|
||||||
STR_VEHICLE_LIST_REPLACE_VEHICLES :替换车辆/飞机/船只
|
STR_VEHICLE_LIST_REPLACE_VEHICLES :替换车辆/飞机/船只
|
||||||
STR_VEHICLE_LIST_SEND_FOR_SERVICING :进行保养
|
STR_VEHICLE_LIST_SEND_FOR_SERVICING :进行保养
|
||||||
|
STR_VEHICLE_LIST_CREATE_GROUP :创建分组
|
||||||
STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}今年利润:{CURRENCY_LONG} (去年利润:{CURRENCY_LONG})
|
STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}今年利润:{CURRENCY_LONG} (去年利润:{CURRENCY_LONG})
|
||||||
|
STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}]
|
||||||
|
STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING}
|
||||||
|
|
||||||
STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :前往列车车库
|
STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :前往列车车库
|
||||||
STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :前往汽车车库
|
STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :前往汽车车库
|
||||||
@@ -4517,7 +4610,7 @@ STR_TIMETABLE_CLEAR_SPEED :{BLACK}取消
|
|||||||
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除高亮调度命令的最高限速。按住 Ctrl 键单击可以清除所有命令的最高限速
|
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除高亮调度命令的最高限速。按住 Ctrl 键单击可以清除所有命令的最高限速
|
||||||
|
|
||||||
STR_TIMETABLE_RESET_LATENESS :{BLACK}清除晚点计数器
|
STR_TIMETABLE_RESET_LATENESS :{BLACK}清除晚点计数器
|
||||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置晚点计数器,从而使车辆准时到达
|
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置晚点计数器,从而使车辆被视为准时到达。CTRL+点击会重置全分组的计数器,从而使晚点最多的载具被视为准点而其他被视为早点
|
||||||
|
|
||||||
STR_TIMETABLE_AUTOFILL :{BLACK}自动填充
|
STR_TIMETABLE_AUTOFILL :{BLACK}自动填充
|
||||||
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时间表。按住Ctrl单击可保持等候时间
|
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时间表。按住Ctrl单击可保持等候时间
|
||||||
@@ -4526,6 +4619,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}预期
|
|||||||
STR_TIMETABLE_SCHEDULED :{BLACK}表定时间
|
STR_TIMETABLE_SCHEDULED :{BLACK}表定时间
|
||||||
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间
|
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间
|
||||||
|
|
||||||
|
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
|
||||||
|
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
|
||||||
|
|
||||||
|
|
||||||
# Date window (for timetable)
|
# Date window (for timetable)
|
||||||
@@ -4562,14 +4657,16 @@ STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}您使
|
|||||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI调试窗口只对服务器可用
|
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI调试窗口只对服务器可用
|
||||||
|
|
||||||
# AI configuration window
|
# AI configuration window
|
||||||
STR_AI_CONFIG_CAPTION_AI :{WHITE}AI配置
|
STR_AI_CONFIG_CAPTION_AI :{WHITE}AI 设置
|
||||||
STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}游戏脚本配置
|
STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}游戏脚本设定
|
||||||
STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}下局游戏将启用这些脚本
|
STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}下局游戏将启用这些脚本
|
||||||
STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局游戏将启用这些AI
|
STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局游戏将启用这些AI
|
||||||
STR_AI_CONFIG_HUMAN_PLAYER :玩家
|
STR_AI_CONFIG_HUMAN_PLAYER :玩家
|
||||||
STR_AI_CONFIG_RANDOM_AI :随机 AI
|
STR_AI_CONFIG_RANDOM_AI :随机 AI
|
||||||
STR_AI_CONFIG_NONE :(无)
|
STR_AI_CONFIG_NONE :(无)
|
||||||
|
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
|
||||||
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}最大竞争对手个数:{ORANGE}{COMMA}
|
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}最大竞争对手个数:{ORANGE}{COMMA}
|
||||||
|
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}竞争对手公司建立间隔: {ORANGE}{COMMA} 分钟
|
||||||
|
|
||||||
STR_AI_CONFIG_MOVE_UP :{BLACK}上移
|
STR_AI_CONFIG_MOVE_UP :{BLACK}上移
|
||||||
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}在列表中将选择的AI上移
|
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}在列表中将选择的AI上移
|
||||||
@@ -4582,7 +4679,7 @@ STR_AI_CONFIG_AI :{SILVER}AI
|
|||||||
|
|
||||||
STR_AI_CONFIG_CHANGE_AI :{BLACK}选择 AI
|
STR_AI_CONFIG_CHANGE_AI :{BLACK}选择 AI
|
||||||
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}选择游戏脚本
|
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}选择游戏脚本
|
||||||
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}装在另一脚本
|
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}载入另一脚本。CTRL+点击以显示所有可用版本
|
||||||
STR_AI_CONFIG_CONFIGURE :{BLACK}设定
|
STR_AI_CONFIG_CONFIGURE :{BLACK}设定
|
||||||
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}设定脚本参数
|
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}设定脚本参数
|
||||||
|
|
||||||
@@ -4619,6 +4716,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}目录
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}通过此列表快速访问想要查看的页面
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}退回到定位历史
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}取消定位历史撤回
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}強迫文字换行
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}強迫文字换行
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}強迫宽于窗格的內文自动换行
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}強迫宽于窗格的內文自动换行
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}查看说明
|
STR_TEXTFILE_VIEW_README :{BLACK}查看说明
|
||||||
@@ -4628,6 +4730,8 @@ STR_TEXTFILE_VIEW_LICENCE :{BLACK}版权
|
|||||||
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} 的说明
|
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} 的说明
|
||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} 的更新日志
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} 的更新日志
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} 的版权信息
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} 的版权信息
|
||||||
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}预览调查结果
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD 文档 '{STRING}'
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -4810,7 +4914,7 @@ STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}汽车
|
|||||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}距离另一码头过近
|
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}距离另一码头过近
|
||||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}距离另一机场过近
|
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}距离另一机场过近
|
||||||
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}不能重命名车站
|
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}不能重命名车站
|
||||||
STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}这是一条城镇所属的道路
|
STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... 城镇所有的道路
|
||||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}道路方向不对
|
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}道路方向不对
|
||||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... 途中型车站不能建在转角处
|
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... 途中型车站不能建在转角处
|
||||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 不能在岔路口修建过路型站台
|
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 不能在岔路口修建过路型站台
|
||||||
@@ -5069,6 +5173,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... 飞
|
|||||||
# Extra messages which go on the third line of errors, explaining why orders failed
|
# Extra messages which go on the third line of errors, explaining why orders failed
|
||||||
STR_ERROR_NO_RAIL_STATION :{WHITE}没有火车站
|
STR_ERROR_NO_RAIL_STATION :{WHITE}没有火车站
|
||||||
STR_ERROR_NO_BUS_STATION :{WHITE}没有公交车站
|
STR_ERROR_NO_BUS_STATION :{WHITE}没有公交车站
|
||||||
|
STR_ERROR_NO_TRUCK_STATION :{WHITE}没有货车站
|
||||||
STR_ERROR_NO_DOCK :{WHITE}这里没有码头
|
STR_ERROR_NO_DOCK :{WHITE}这里没有码头
|
||||||
STR_ERROR_NO_AIRPORT :{WHITE}没有机场/直升机场
|
STR_ERROR_NO_AIRPORT :{WHITE}没有机场/直升机场
|
||||||
STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}没有兼容此道路类型的站点
|
STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}没有兼容此道路类型的站点
|
||||||
@@ -5077,11 +5182,13 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}没有
|
|||||||
STR_ERROR_AIRPORT_NO_PLANES :{WHITE}这架飞机不能降落在这个直升机场
|
STR_ERROR_AIRPORT_NO_PLANES :{WHITE}这架飞机不能降落在这个直升机场
|
||||||
STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}这架直升机不能降落在这个机场
|
STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}这架直升机不能降落在这个机场
|
||||||
STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}没有铁路路点
|
STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}没有铁路路点
|
||||||
|
STR_ERROR_NO_BUOY :{WHITE}没有浮标
|
||||||
|
|
||||||
# Timetable related errors
|
# Timetable related errors
|
||||||
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能给车辆编制时间表…
|
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能给车辆编制时间表…
|
||||||
STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}车辆只能在站内等候。
|
STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}车辆只能在站内等候。
|
||||||
STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此车辆将不停靠本站。
|
STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此车辆将不停靠本站。
|
||||||
|
STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... 时间表不完整
|
||||||
|
|
||||||
# Sign related errors
|
# Sign related errors
|
||||||
STR_ERROR_TOO_MANY_SIGNS :{WHITE}……标志太多了
|
STR_ERROR_TOO_MANY_SIGNS :{WHITE}……标志太多了
|
||||||
@@ -5561,17 +5668,21 @@ STR_VEHICLE_NAME :{VEHICLE}
|
|||||||
STR_WAYPOINT_NAME :{WAYPOINT}
|
STR_WAYPOINT_NAME :{WAYPOINT}
|
||||||
|
|
||||||
STR_JUST_CARGO :{CARGO_LONG}
|
STR_JUST_CARGO :{CARGO_LONG}
|
||||||
|
STR_JUST_RIGHT_ARROW :{RIGHT_ARROW}
|
||||||
STR_JUST_CHECKMARK :{CHECKMARK}
|
STR_JUST_CHECKMARK :{CHECKMARK}
|
||||||
STR_JUST_COMMA :{COMMA}
|
STR_JUST_COMMA :{COMMA}
|
||||||
STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT}
|
STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT}
|
||||||
STR_JUST_CURRENCY_LONG :{CURRENCY_LONG}
|
STR_JUST_CURRENCY_LONG :{CURRENCY_LONG}
|
||||||
STR_JUST_CARGO_LIST :{CARGO_LIST}
|
STR_JUST_CARGO_LIST :{CARGO_LIST}
|
||||||
|
STR_JUST_DECIMAL :{DECIMAL}
|
||||||
STR_JUST_INT :{NUM}
|
STR_JUST_INT :{NUM}
|
||||||
STR_JUST_DATE_TINY :{DATE_TINY}
|
STR_JUST_DATE_TINY :{DATE_TINY}
|
||||||
STR_JUST_DATE_SHORT :{DATE_SHORT}
|
STR_JUST_DATE_SHORT :{DATE_SHORT}
|
||||||
STR_JUST_DATE_LONG :{DATE_LONG}
|
STR_JUST_DATE_LONG :{DATE_LONG}
|
||||||
STR_JUST_DATE_ISO :{DATE_ISO}
|
STR_JUST_DATE_ISO :{DATE_ISO}
|
||||||
STR_JUST_STRING :{STRING}
|
STR_JUST_STRING :{STRING}
|
||||||
|
STR_JUST_STRING1 :{STRING}
|
||||||
|
STR_JUST_STRING2 :{STRING}
|
||||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||||
STR_JUST_RAW_STRING :{STRING}
|
STR_JUST_RAW_STRING :{STRING}
|
||||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||||
|
@@ -523,6 +523,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Xoá tất cả
|
|||||||
# About menu
|
# About menu
|
||||||
###length 11
|
###length 11
|
||||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Thông tin vùng đất
|
STR_ABOUT_MENU_LAND_BLOCK_INFO :Thông tin vùng đất
|
||||||
|
STR_ABOUT_MENU_HELP :Trợ giúp & hướng dẫn
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Bật/tắt bảng lệnh
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Bật/tắt bảng lệnh
|
||||||
STR_ABOUT_MENU_AI_DEBUG :Gỡ rối AI / Game script
|
STR_ABOUT_MENU_AI_DEBUG :Gỡ rối AI / Game script
|
||||||
@@ -2124,6 +2125,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Nhiều
|
|||||||
|
|
||||||
STR_INTRO_GAME_OPTIONS :{BLACK}Cấu Hình Trò Chơi
|
STR_INTRO_GAME_OPTIONS :{BLACK}Cấu Hình Trò Chơi
|
||||||
STR_INTRO_HIGHSCORE :{BLACK}Bảng điểm chơi cao nhất
|
STR_INTRO_HIGHSCORE :{BLACK}Bảng điểm chơi cao nhất
|
||||||
|
STR_INTRO_HELP :{BLACK}Trợ giúp & hướng dẫn
|
||||||
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập
|
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập
|
||||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Thiết Lập NewGRF
|
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Thiết Lập NewGRF
|
||||||
STR_INTRO_ONLINE_CONTENT :{BLACK}Các Nội Dung Trên Mạng
|
STR_INTRO_ONLINE_CONTENT :{BLACK}Các Nội Dung Trên Mạng
|
||||||
@@ -2145,6 +2147,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Chọn k
|
|||||||
|
|
||||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Hiển thị cấu hình của trò chơi
|
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Hiển thị cấu hình của trò chơi
|
||||||
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hiện bảng điểm chơi cao nhất
|
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hiện bảng điểm chơi cao nhất
|
||||||
|
STR_INTRO_TOOLTIP_HELP :{BLACK}Truy cập vào tài liệu và tài nguyên trực tuyến
|
||||||
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập hiển thị
|
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập hiển thị
|
||||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Hiển thị tùy chỉnh NewGRF
|
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Hiển thị tùy chỉnh NewGRF
|
||||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kiểm tra những nội dung mới & cập nhật để tải về
|
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kiểm tra những nội dung mới & cập nhật để tải về
|
||||||
@@ -2167,6 +2170,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Bạn c
|
|||||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Bạn có chắc bạn muốn bỏ màn chơi kịch bản này?
|
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Bạn có chắc bạn muốn bỏ màn chơi kịch bản này?
|
||||||
|
|
||||||
# Help window
|
# Help window
|
||||||
|
STR_HELP_WINDOW_CAPTION :{WHITE}Trợ giúp & hướng dẫn
|
||||||
|
STR_HELP_WINDOW_WEBSITES :{BLACK}Websites
|
||||||
|
STR_HELP_WINDOW_DOCUMENTS :{BLACK}Tài liệu
|
||||||
|
STR_HELP_WINDOW_README :{BLACK}Readme
|
||||||
|
STR_HELP_WINDOW_CHANGELOG :{BLACK}Lịch sử thay đổi
|
||||||
|
STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Các lỗi đã biết
|
||||||
|
STR_HELP_WINDOW_LICENSE :{BLACK}Giấy phép
|
||||||
|
STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD
|
||||||
|
STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Hướng dẫn / Wiki
|
||||||
|
STR_HELP_WINDOW_BUGTRACKER :{BLACK}Báo cáo lỗi
|
||||||
|
STR_HELP_WINDOW_COMMUNITY :{BLACK}Cộng đồng
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheats
|
STR_CHEATS :{WHITE}Cheats
|
||||||
@@ -3386,6 +3400,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Phân t
|
|||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} tại {HEX}
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} tại {HEX}
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Đối Tượng
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Đối Tượng
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Kiểu ray
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Kiểu ray
|
||||||
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Loại đường
|
||||||
|
|
||||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Biến số NewGRF là 60+x (dạng hexa)
|
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Biến số NewGRF là 60+x (dạng hexa)
|
||||||
|
|
||||||
@@ -4701,6 +4716,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
STR_TEXTFILE_JUMPLIST :{WHITE}Danh mục
|
||||||
|
STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Dùng danh sách này để chuyển nhanh tới một phần trong tập tin được hiển thị
|
||||||
|
STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING}
|
||||||
|
STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Trở về trước trong lịch sử điều hướng
|
||||||
|
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Trở về sau trong lịch sử điều hướng
|
||||||
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ép văn bản
|
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ép văn bản
|
||||||
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ép chữ cái vừa khung cửa sổ để khỏi phải cuộn chuột
|
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ép chữ cái vừa khung cửa sổ để khỏi phải cuộn chuột
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Xem readme
|
STR_TEXTFILE_VIEW_README :{BLACK}Xem readme
|
||||||
@@ -4711,6 +4731,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}Readme c
|
|||||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Lịch sử thay đổi của {STRING} {STRING}
|
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Lịch sử thay đổi của {STRING} {STRING}
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Giấy phép của {STRING} {STRING}
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Giấy phép của {STRING} {STRING}
|
||||||
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Xem trước kết quả khảo sát
|
STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Xem trước kết quả khảo sát
|
||||||
|
STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Tài liệu OpenTTD '{STRING}'
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
|
@@ -127,7 +127,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_PLT_BACKGROUND) return;
|
if (widget != WID_PLT_BACKGROUND) return;
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (data == 0) {
|
if (data == 0) {
|
||||||
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
||||||
@@ -354,7 +354,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget != WID_SLT_BACKGROUND) return;
|
if (widget != WID_SLT_BACKGROUND) return;
|
||||||
|
|
||||||
@@ -394,7 +394,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick(Point pt, int widget, int click_count) override
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget != WID_SLT_BACKGROUND) return;
|
if (widget != WID_SLT_BACKGROUND) return;
|
||||||
|
|
||||||
@@ -411,7 +411,7 @@ public:
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
this->BuildTable();
|
this->BuildTable();
|
||||||
this->ReInit();
|
this->ReInit();
|
||||||
|
@@ -36,7 +36,7 @@ public:
|
|||||||
* Call the demand calculator on the given component.
|
* Call the demand calculator on the given component.
|
||||||
* @param job Component to calculate the demands for.
|
* @param job Component to calculate the demands for.
|
||||||
*/
|
*/
|
||||||
virtual void Run(LinkGraphJob &job) const { DemandCalculator c(job); }
|
void Run(LinkGraphJob &job) const override { DemandCalculator c(job); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Virtual destructor has to be defined because of virtual Run().
|
* Virtual destructor has to be defined because of virtual Run().
|
||||||
|
@@ -28,7 +28,7 @@ public:
|
|||||||
* values. Only do that on the very last flow mapping.
|
* values. Only do that on the very last flow mapping.
|
||||||
*/
|
*/
|
||||||
FlowMapper(bool scale) : scale(scale) {}
|
FlowMapper(bool scale) : scale(scale) {}
|
||||||
virtual void Run(LinkGraphJob &job) const;
|
void Run(LinkGraphJob &job) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ public:
|
|||||||
* Initialize the link graph job.
|
* Initialize the link graph job.
|
||||||
* @param job Job to be initialized.
|
* @param job Job to be initialized.
|
||||||
*/
|
*/
|
||||||
virtual void Run(LinkGraphJob &job) const { job.Init(); }
|
void Run(LinkGraphJob &job) const override { job.Init(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* INIT_H */
|
#endif /* INIT_H */
|
||||||
|
@@ -306,7 +306,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Bare constructor, only for save/load. */
|
/** Bare constructor, only for save/load. */
|
||||||
LinkGraph() : cargo(INVALID_CARGO), last_compression(0) {}
|
LinkGraph() : cargo(CT_INVALID), last_compression(0) {}
|
||||||
/**
|
/**
|
||||||
* Real constructor.
|
* Real constructor.
|
||||||
* @param cargo Cargo the link graph is about.
|
* @param cargo Cargo the link graph is about.
|
||||||
|
@@ -760,7 +760,7 @@ void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinkGraphLegendWindow::UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
void LinkGraphLegendWindow::UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize)
|
||||||
{
|
{
|
||||||
if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) {
|
if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) {
|
||||||
StringID str = STR_NULL;
|
StringID str = STR_NULL;
|
||||||
@@ -819,7 +819,7 @@ void LinkGraphLegendWindow::DrawWidget(const Rect &r, int widget) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LinkGraphLegendWindow::OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond)
|
bool LinkGraphLegendWindow::OnTooltip([[maybe_unused]] Point, int widget, TooltipCloseCondition close_cond)
|
||||||
{
|
{
|
||||||
if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
|
if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
|
||||||
if (this->IsWidgetDisabled(widget)) {
|
if (this->IsWidgetDisabled(widget)) {
|
||||||
@@ -867,7 +867,7 @@ void LinkGraphLegendWindow::UpdateOverlayCargoes()
|
|||||||
this->overlay->SetCargoMask(mask);
|
this->overlay->SetCargoMask(mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinkGraphLegendWindow::OnClick(Point pt, int widget, int click_count)
|
void LinkGraphLegendWindow::OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count)
|
||||||
{
|
{
|
||||||
/* Check which button is clicked */
|
/* Check which button is clicked */
|
||||||
if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
|
if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
|
||||||
@@ -899,7 +899,7 @@ void LinkGraphLegendWindow::OnClick(Point pt, int widget, int click_count)
|
|||||||
* @param data ignored
|
* @param data ignored
|
||||||
* @param gui_scope ignored
|
* @param gui_scope ignored
|
||||||
*/
|
*/
|
||||||
void LinkGraphLegendWindow::OnInvalidateData(int data, bool gui_scope)
|
void LinkGraphLegendWindow::OnInvalidateData([[maybe_unused]] int data, [[maybe_unused]] bool gui_scope)
|
||||||
{
|
{
|
||||||
if (this->num_cargo != _sorted_cargo_specs.size()) {
|
if (this->num_cargo != _sorted_cargo_specs.size()) {
|
||||||
this->Close();
|
this->Close();
|
||||||
|
@@ -128,10 +128,10 @@ public:
|
|||||||
LinkGraphLegendWindow(WindowDesc *desc, int window_number);
|
LinkGraphLegendWindow(WindowDesc *desc, int window_number);
|
||||||
void SetOverlay(LinkGraphOverlay *overlay);
|
void SetOverlay(LinkGraphOverlay *overlay);
|
||||||
|
|
||||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override;
|
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override;
|
||||||
void DrawWidget(const Rect &r, int widget) const override;
|
void DrawWidget(const Rect &r, int widget) const override;
|
||||||
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override;
|
bool OnTooltip([[maybe_unused]] Point pt, int widget, TooltipCloseCondition close_cond) override;
|
||||||
void OnClick(Point pt, int widget, int click_count) override;
|
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override;
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
|
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -129,10 +129,9 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the node to start iterating at.
|
* Setup the node to start iterating at.
|
||||||
* @param source Unused.
|
|
||||||
* @param node Node to start iterating at.
|
* @param node Node to start iterating at.
|
||||||
*/
|
*/
|
||||||
void SetNode(NodeID source, NodeID node)
|
void SetNode(NodeID, NodeID node)
|
||||||
{
|
{
|
||||||
Node node_anno = this->job[node];
|
Node node_anno = this->job[node];
|
||||||
this->i = node_anno.GetEdges().begin();
|
this->i = node_anno.GetEdges().begin();
|
||||||
@@ -232,7 +231,7 @@ public:
|
|||||||
* @return True if base + the new edge would be better than the path associated
|
* @return True if base + the new edge would be better than the path associated
|
||||||
* with this annotation.
|
* with this annotation.
|
||||||
*/
|
*/
|
||||||
bool DistanceAnnotation::IsBetter(const DistanceAnnotation *base, uint cap,
|
bool DistanceAnnotation::IsBetter(const DistanceAnnotation *base, uint,
|
||||||
int free_cap, uint dist) const
|
int free_cap, uint dist) const
|
||||||
{
|
{
|
||||||
/* If any of the paths is disconnected, the other one is better. If both
|
/* If any of the paths is disconnected, the other one is better. If both
|
||||||
|
@@ -81,7 +81,7 @@ public:
|
|||||||
* Run the calculation.
|
* Run the calculation.
|
||||||
* @param graph Component to be calculated.
|
* @param graph Component to be calculated.
|
||||||
*/
|
*/
|
||||||
virtual void Run(LinkGraphJob &job) const { Tpass pass(job); }
|
void Run(LinkGraphJob &job) const override { Tpass pass(job); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MCF_H */
|
#endif /* MCF_H */
|
||||||
|
@@ -515,7 +515,7 @@ struct MainWindow : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override
|
bool OnTooltip([[maybe_unused]] Point pt, int widget, TooltipCloseCondition close_cond) override
|
||||||
{
|
{
|
||||||
if (widget != WID_M_VIEWPORT) return false;
|
if (widget != WID_M_VIEWPORT) return false;
|
||||||
return this->viewport->overlay->ShowTooltip(pt, close_cond);
|
return this->viewport->overlay->ShowTooltip(pt, close_cond);
|
||||||
@@ -526,7 +526,7 @@ struct MainWindow : Window
|
|||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
/* Forward the message to the appropriate toolbar (ingame or scenario editor) */
|
/* Forward the message to the appropriate toolbar (ingame or scenario editor) */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user