summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt38
-rw-r--r--src/CBot/CBotString.cpp54
-rw-r--r--src/app/app.cpp165
-rw-r--r--src/app/app.h9
-rw-r--r--src/common/config.h.cmake4
-rw-r--r--src/common/image.cpp4
-rw-r--r--src/common/restext.cpp4
-rw-r--r--src/desktop/.gitignore1
-rw-r--r--src/desktop/CMakeLists.txt48
-rw-r--r--src/desktop/colobot.pod47
-rw-r--r--src/desktop/po/colobot-desktop.pot106
-rw-r--r--src/desktop/po/fr.po127
-rw-r--r--src/desktop/po4a.cfg1
-rw-r--r--src/graphics/engine/text.cpp2
-rw-r--r--src/object/brain.cpp27
-rw-r--r--src/object/robotmain.cpp8
-rw-r--r--src/object/task/taskgoto.cpp4
-rw-r--r--src/po/CMakeLists.txt5
-rw-r--r--src/po/colobot.pot100
-rw-r--r--src/po/de.po117
-rw-r--r--src/po/fr.po279
-rw-r--r--src/po/pl.po117
-rw-r--r--src/script/script.cpp33
-rw-r--r--src/sound/oalsound/alsound.cpp14
-rw-r--r--src/sound/oalsound/channel.cpp24
-rw-r--r--src/sound/sound.h2
-rw-r--r--src/ui/edit.cpp60
-rw-r--r--src/ui/edit.h2
-rw-r--r--src/ui/maindialog.cpp20
29 files changed, 1082 insertions, 340 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a80e7d3..399ae96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,32 @@ cmake_minimum_required(VERSION 2.8)
project(colobot C CXX)
+##
+# Project version
+##
+set(COLOBOT_VERSION_CODENAME "Gold")
+set(COLOBOT_VERSION_MAJOR 0)
+set(COLOBOT_VERSION_MINOR 1)
+set(COLOBOT_VERSION_REVISION 0)
+
+# Comment out when releasing
+set(COLOBOT_VERSION_UNRELEASED "~pre-alpha")
+
+# Append git characteristics to version
+if(DEFINED COLOBOT_VERSION_UNRELEASED AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
+ find_package(Git)
+ execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
+ OUTPUT_VARIABLE GIT_BRANCH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+ OUTPUT_VARIABLE GIT_REVISION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(COLOBOT_VERSION_UNRELEASED "${COLOBOT_VERSION_UNRELEASED}-git-${GIT_BRANCH}~r${GIT_REVISION}")
+endif()
+
+set(COLOBOT_VERSION_FULL "${COLOBOT_VERSION_MAJOR}.${COLOBOT_VERSION_MINOR}.${COLOBOT_VERSION_REVISION}${COLOBOT_VERSION_UNRELEASED}")
+message(STATUS "Building Colobot \"${COLOBOT_VERSION_CODENAME}\" (${COLOBOT_VERSION_FULL})")
+
# Include cmake directory with some additional scripts
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake")
@@ -127,7 +153,7 @@ if(${TESTS})
add_definitions(-DTEST_VIRTUAL=virtual)
enable_testing()
else()
- add_definitions(-DTEST_VIRTUAL)
+ add_definitions(-DTEST_VIRTUAL=)
endif()
@@ -183,11 +209,11 @@ if(${TESTS})
endif()
# Installation paths defined before compiling sources
-set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory")
-set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/games/colobot CACHE PATH "Colobot shared data directory")
-set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/colobot CACHE PATH "Colobot libraries directory")
-set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/colobot CACHE PATH "Colobot documentation directory")
-set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/share/locale CACHE PATH "Colobot translations directory")
+set(COLOBOT_INSTALL_BIN_DIR games CACHE PATH "Colobot binary directory")
+set(COLOBOT_INSTALL_DATA_DIR share/games/colobot CACHE PATH "Colobot shared data directory")
+set(COLOBOT_INSTALL_LIB_DIR lib/colobot CACHE PATH "Colobot libraries directory")
+set(COLOBOT_INSTALL_DOC_DIR share/doc/colobot CACHE PATH "Colobot documentation directory")
+set(COLOBOT_INSTALL_I18N_DIR share/locale CACHE PATH "Colobot translations directory")
# Subdirectory with sources
add_subdirectory(src bin)
diff --git a/src/CBot/CBotString.cpp b/src/CBot/CBotString.cpp
index 4795b63..b1b5fc4 100644
--- a/src/CBot/CBotString.cpp
+++ b/src/CBot/CBotString.cpp
@@ -127,7 +127,8 @@ CBotString::CBotString()
CBotString::~CBotString()
{
- free(m_ptr); //we can call free on null pointer as it's save
+ delete[] m_ptr;
+ m_ptr = nullptr;
}
@@ -138,7 +139,7 @@ CBotString::CBotString(const char* p)
m_ptr = NULL;
if (m_lg>0)
{
- m_ptr = static_cast<char*>(malloc(m_lg+1));
+ m_ptr = new char[m_lg+1];
strcpy(m_ptr, p);
}
}
@@ -150,7 +151,7 @@ CBotString::CBotString(const CBotString& srcString)
m_ptr = NULL;
if (m_lg>0)
{
- m_ptr = static_cast<char*>(malloc(m_lg+1));
+ m_ptr = new char[m_lg+1];
strcpy(m_ptr, srcString.m_ptr);
}
}
@@ -285,12 +286,12 @@ CBotString CBotString::Mid(int start, int lg)
if ( lg < 0 ) lg = m_lg - start;
- char* p = static_cast<char*>(malloc(m_lg+1));
+ char* p = new char[m_lg+1];
strcpy(p, m_ptr+start);
p[lg] = 0;
res = p;
- free(p);
+ delete[] p;
return res;
}
@@ -314,15 +315,16 @@ void CBotString::MakeLower()
bool CBotString::LoadString(unsigned int id)
{
- const char * str = NULL;
+ const char * str = nullptr;
str = MapIdToString(static_cast<EID>(id));
- if (m_ptr != NULL) free(m_ptr);
+ if (m_ptr != nullptr)
+ delete[] m_ptr;
m_lg = strlen(str);
m_ptr = NULL;
if (m_lg > 0)
{
- m_ptr = static_cast<char*>(malloc(m_lg+1));
+ m_ptr = new char[m_lg+1];
strcpy(m_ptr, str);
return true;
}
@@ -332,14 +334,14 @@ bool CBotString::LoadString(unsigned int id)
const CBotString& CBotString::operator=(const CBotString& stringSrc)
{
- free(m_ptr);
- m_ptr = NULL;
+ delete[] m_ptr;
+ m_ptr = nullptr;
m_lg = stringSrc.m_lg;
if (m_lg > 0)
{
- m_ptr = static_cast<char*>(malloc(m_lg+1));
+ m_ptr = new char[m_lg+1];
strcpy(m_ptr, stringSrc.m_ptr);
}
@@ -355,13 +357,13 @@ CBotString operator+(const CBotString& string, const char * lpsz)
const CBotString& CBotString::operator+(const CBotString& stringSrc)
{
- char* p = static_cast<char*>(malloc(m_lg+stringSrc.m_lg+1));
+ char* p = new char[m_lg+stringSrc.m_lg+1];
if (m_ptr!=NULL) strcpy(p, m_ptr);
char* pp = p + m_lg;
if (stringSrc.m_ptr!=NULL) strcpy(pp, stringSrc.m_ptr);
- free(m_ptr);
+ delete[] m_ptr;
m_ptr = p;
m_lg += stringSrc.m_lg;
@@ -370,11 +372,11 @@ const CBotString& CBotString::operator+(const CBotString& stringSrc)
const CBotString& CBotString::operator=(const char ch)
{
- free(m_ptr);
+ delete[] m_ptr;
m_lg = 1;
- m_ptr = static_cast<char*>(malloc(2));
+ m_ptr = new char[2];
m_ptr[0] = ch;
m_ptr[1] = 0;
@@ -383,16 +385,16 @@ const CBotString& CBotString::operator=(const char ch)
const CBotString& CBotString::operator=(const char* pString)
{
- free(m_ptr);
- m_ptr = NULL;
+ delete[] m_ptr;
+ m_ptr = nullptr;
- if (pString != NULL)
+ if (pString != nullptr)
{
m_lg = strlen(pString);
if (m_lg != 0)
{
- m_ptr = static_cast<char*>(malloc(m_lg+1));
+ m_ptr = new char[m_lg+1];
strcpy(m_ptr, pString);
}
}
@@ -403,13 +405,13 @@ const CBotString& CBotString::operator=(const char* pString)
const CBotString& CBotString::operator+=(const char ch)
{
- char* p = static_cast<char*>(malloc(m_lg+2));
+ char* p = new char[m_lg+2];
- if (m_ptr!=NULL) strcpy(p, m_ptr);
+ if (m_ptr != nullptr) strcpy(p, m_ptr);
p[m_lg++] = ch;
p[m_lg] = 0;
- free(m_ptr);
+ delete[] m_ptr;
m_ptr = p;
@@ -418,7 +420,7 @@ const CBotString& CBotString::operator+=(const char ch)
const CBotString& CBotString::operator+=(const CBotString& str)
{
- char* p = static_cast<char*>(malloc(m_lg+str.m_lg+1));
+ char* p = new char[m_lg+str.m_lg+1];
strcpy(p, m_ptr);
char* pp = p + m_lg;
@@ -426,7 +428,7 @@ const CBotString& CBotString::operator+=(const CBotString& str)
m_lg = m_lg + str.m_lg;
- free(m_ptr);
+ delete[] m_ptr;
m_ptr = p;
@@ -500,8 +502,8 @@ bool CBotString::IsEmpty() const
void CBotString::Empty()
{
- free(m_ptr);
- m_ptr = NULL;
+ delete[] m_ptr;
+ m_ptr = nullptr;
m_lg = 0;
}
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 118e100..c936ac1 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -246,7 +246,7 @@ ParseArgsStatus CApplication::ParseArguments(int argc, char *argv[])
else if (arg == "-help")
{
GetLogger()->Message("\n");
- GetLogger()->Message("COLOBOT GOLD pre-alpha\n");
+ GetLogger()->Message("Colobot %s (%s)\n",COLOBOT_CODENAME,COLOBOT_VERSION);
GetLogger()->Message("\n");
GetLogger()->Message("List of available options:\n");
GetLogger()->Message(" -help this help\n");
@@ -285,67 +285,32 @@ bool CApplication::Create()
return false;
}
- /* Gettext initialization */
-
- std::string locale = "";
- switch (m_language)
- {
- default:
- case LANGUAGE_ENV:
- locale = "";
- break;
-
- case LANGUAGE_ENGLISH:
- locale = "en_US.utf8";
- break;
-
- case LANGUAGE_GERMAN:
- locale = "de_DE.utf8";
- break;
-
- case LANGUAGE_FRENCH:
- locale = "fr_FR.utf8";
- break;
-
- case LANGUAGE_POLISH:
- locale = "pl_PL.utf8";
- break;
- }
-
- std::string langStr = "LANGUAGE=";
- langStr += locale;
- strcpy(S_LANGUAGE, langStr.c_str());
- putenv(S_LANGUAGE);
- setlocale(LC_ALL, locale.c_str());
- GetLogger()->Debug("Set locale to '%s'\n", locale.c_str());
-
- bindtextdomain("colobot", COLOBOT_I18N_DIR);
- bind_textdomain_codeset("colobot", "UTF-8");
- textdomain("colobot");
-
- GetLogger()->Debug("Testing gettext translation: '%s'\n", gettext("Colobot rules!"));
+ SetLanguage(m_language);
//Create the sound instance.
- if (!GetProfile().InitCurrentDirectory()) {
+ if (!GetProfile().InitCurrentDirectory())
+ {
GetLogger()->Warn("Config not found. Default values will be used!\n");
m_sound = new CSoundInterface();
- } else {
+ }
+ else
+ {
std::string path;
if (GetProfile().GetLocalProfileString("Resources", "Data", path))
m_dataPath = path;
- #ifdef OPENAL_SOUND
- m_sound = static_cast<CSoundInterface *>(new ALSound());
- #else
- GetLogger()->Info("No sound support.\n");
- m_sound = new CSoundInterface();
- #endif
+ #ifdef OPENAL_SOUND
+ m_sound = static_cast<CSoundInterface *>(new ALSound());
+ #else
+ GetLogger()->Info("No sound support.\n");
+ m_sound = new CSoundInterface();
+ #endif
m_sound->Create(true);
if (GetProfile().GetLocalProfileString("Resources", "Sound", path))
m_sound->CacheAll(path);
else
- m_sound->CacheAll(m_dataPath);
+ m_sound->CacheAll(GetDataSubdirPath(DIR_SOUND));
}
std::string standardInfoMessage =
@@ -1418,24 +1383,26 @@ std::string CApplication::GetDataDirPath()
return m_dataPath;
}
-std::string CApplication::GetDataFilePath(DataDir dataDir, const std::string& subpath)
+std::string CApplication::GetDataSubdirPath(DataDir stdDir)
{
- int index = static_cast<int>(dataDir);
+ int index = static_cast<int>(stdDir);
assert(index >= 0 && index < DIR_MAX);
std::stringstream str;
str << m_dataPath;
str << "/";
str << m_dataDirs[index];
- str << "/";
- str << subpath;
return str.str();
}
-std::string CApplication::GetDataFilePath(const std::string& subpath)
+std::string CApplication::GetDataFilePath(DataDir stdDir, const std::string& subpath)
{
+ int index = static_cast<int>(stdDir);
+ assert(index >= 0 && index < DIR_MAX);
std::stringstream str;
str << m_dataPath;
str << "/";
+ str << m_dataDirs[index];
+ str << "/";
str << subpath;
return str.str();
}
@@ -1445,9 +1412,99 @@ Language CApplication::GetLanguage()
return m_language;
}
+char CApplication::GetLanguageChar()
+{
+ char langChar = 'E';
+ switch (m_language)
+ {
+ default:
+ case LANGUAGE_ENV:
+ case LANGUAGE_ENGLISH:
+ langChar = 'E';
+ break;
+
+ case LANGUAGE_GERMAN:
+ langChar = 'D';
+ break;
+
+ case LANGUAGE_FRENCH:
+ langChar = 'F';
+ break;
+
+ case LANGUAGE_POLISH:
+ langChar = 'P';
+ break;
+ }
+ return langChar;
+}
+
void CApplication::SetLanguage(Language language)
{
m_language = language;
+
+ /* Gettext initialization */
+
+ std::string locale = "";
+ switch (m_language)
+ {
+ default:
+ case LANGUAGE_ENV:
+ locale = "";
+ break;
+
+ case LANGUAGE_ENGLISH:
+ locale = "en_US.utf8";
+ break;
+
+ case LANGUAGE_GERMAN:
+ locale = "de_DE.utf8";
+ break;
+
+ case LANGUAGE_FRENCH:
+ locale = "fr_FR.utf8";
+ break;
+
+ case LANGUAGE_POLISH:
+ locale = "pl_PL.utf8";
+ break;
+ }
+
+ if (locale.empty())
+ {
+ char *envLang = getenv("LANGUAGE");
+ if (strncmp(envLang,"en",2) == 0)
+ {
+ m_language = LANGUAGE_ENGLISH;
+ }
+ else if (strncmp(envLang,"de",2) == 0)
+ {
+ m_language = LANGUAGE_GERMAN;
+ }
+ else if (strncmp(envLang,"fr",2) == 0)
+ {
+ m_language = LANGUAGE_FRENCH;
+ }
+ else if (strncmp(envLang,"po",2) == 0)
+ {
+ m_language = LANGUAGE_POLISH;
+ }
+ GetLogger()->Trace("SetLanguage: Inherit LANGUAGE=%s from environment\n", envLang);
+ }
+ else
+ {
+ std::string langStr = "LANGUAGE=";
+ langStr += locale;
+ strcpy(S_LANGUAGE, langStr.c_str());
+ putenv(S_LANGUAGE);
+ GetLogger()->Trace("SetLanguage: Set LANGUAGE=%s in environment\n", locale.c_str());
+ }
+ setlocale(LC_ALL, "");
+
+ bindtextdomain("colobot", COLOBOT_I18N_DIR);
+ bind_textdomain_codeset("colobot", "UTF-8");
+ textdomain("colobot");
+
+ GetLogger()->Debug("SetLanguage: Test gettext translation: '%s'\n", gettext("Colobot rules!"));
}
void CApplication::SetLowCPU(bool low)
diff --git a/src/app/app.h b/src/app/app.h
index 5bf6867..2da20d3 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -285,15 +285,16 @@ public:
//! Returns the full path to data directory
std::string GetDataDirPath();
- //! Returns the full path to a file in data directory given standard dir and subpath
- std::string GetDataFilePath(DataDir dir, const std::string &subpath);
+ //! Returns the full path to a standard dir in data directory
+ std::string GetDataSubdirPath(DataDir stdDir);
- //! Returns the full path to a file in data directory given custom subpath in data dir
- std::string GetDataFilePath(const std::string &subpath);
+ //! Returns the full path to a file in data directory given standard dir and subpath
+ std::string GetDataFilePath(DataDir stdDir, const std::string &subpath);
//! Management of language
//@{
Language GetLanguage();
+ char GetLanguageChar();
void SetLanguage(Language language);
//@}
diff --git a/src/common/config.h.cmake b/src/common/config.h.cmake
index dd280a3..022bb69 100644
--- a/src/common/config.h.cmake
+++ b/src/common/config.h.cmake
@@ -8,6 +8,10 @@
#cmakedefine USE_GLEW @USE_GLEW@
#cmakedefine GLEW_STATIC
+#define COLOBOT_VERSION "@COLOBOT_VERSION_FULL@"
+#define COLOBOT_CODENAME "@COLOBOT_VERSION_CODENAME@"
+#define COLOBOT_FULLNAME "Colobot @COLOBOT_VERSION_CODENAME@"
+
#define COLOBOT_DEFAULT_DATADIR "@COLOBOT_INSTALL_DATA_DIR@"
#define COLOBOT_I18N_DIR "@COLOBOT_INSTALL_I18N_DIR@"
diff --git a/src/common/image.cpp b/src/common/image.cpp
index f3cfa34..ef8097e 100644
--- a/src/common/image.cpp
+++ b/src/common/image.cpp
@@ -124,14 +124,14 @@ bool PNGSaveSurface(const char *filename, SDL_Surface *surf)
png_write_info(png_ptr, info_ptr);
png_set_packing(png_ptr);
- row_pointers = static_cast<png_bytep*>( malloc(sizeof(png_bytep)*surf->h) );
+ row_pointers = new png_bytep[surf->h];
for (i = 0; i < surf->h; i++)
row_pointers[i] = static_cast<png_bytep>( static_cast<Uint8 *>(surf->pixels) ) + i*surf->pitch;
png_write_image(png_ptr, row_pointers);
png_write_end(png_ptr, info_ptr);
/* Cleaning out... */
- free(row_pointers);
+ delete[] row_pointers;
png_destroy_write_struct(&png_ptr, &info_ptr);
fclose(fp);
diff --git a/src/common/restext.cpp b/src/common/restext.cpp
index da06131..4c56ae5 100644
--- a/src/common/restext.cpp
+++ b/src/common/restext.cpp
@@ -17,6 +17,8 @@
#include "common/restext.h"
+#include "common/config.h"
+
#include "common/global.h"
#include "common/event.h"
#include "common/logger.h"
@@ -39,7 +41,7 @@ const char* stringsCbot[TX_MAX] = { nullptr };
void InitializeRestext()
{
- stringsText[RT_VERSION_ID] = "Colobot Gold";
+ stringsText[RT_VERSION_ID] = COLOBOT_FULLNAME;
stringsText[RT_DISINFO_TITLE] = "SatCom";
stringsText[RT_WINDOW_MAXIMIZED] = "Maximize";
diff --git a/src/desktop/.gitignore b/src/desktop/.gitignore
new file mode 100644
index 0000000..bade6f3
--- /dev/null
+++ b/src/desktop/.gitignore
@@ -0,0 +1 @@
+lang/
diff --git a/src/desktop/CMakeLists.txt b/src/desktop/CMakeLists.txt
index cc159a9..ce4f48d 100644
--- a/src/desktop/CMakeLists.txt
+++ b/src/desktop/CMakeLists.txt
@@ -37,6 +37,41 @@ if(RSVG_CONVERT)
endforeach()
endif()
+# Create manpage from pod-formatted file
+find_program(POD2MAN pod2man)
+if(POD2MAN)
+ set(COLOBOT_MANPAGE_SECTION 6)
+
+ macro(podman)
+ cmake_parse_arguments(PM "" "PODFILE;LOCALE;" "" ${ARGN})
+ if(PM_LOCALE)
+ # This copes with the fact that english has no "/LANG" in the paths and filenames.
+ set(SLASHLOCALE /${PM_LOCALE})
+ endif()
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE})
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
+ COMMAND ${POD2MAN} ARGS --section=${COLOBOT_MANPAGE_SECTION}
+ --center="Colobot" --stderr --utf8
+ --release="${COLOBOT_VERSION_FULL}"
+ ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
+ ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
+ COMMENT "Create ${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} manpage"
+ )
+ add_custom_target(man${PM_LOCALE} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION})
+
+ install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man${SLASHLOCALE}/man${COLOBOT_MANPAGE_SECTION}/ )
+
+ add_dependencies(man man${PM_LOCALE})
+ endmacro()
+
+ # Create the english manpage
+ podman(PODFILE colobot.pod)
+
+endif()
+
# Translate translatable material
find_program(PO4A po4a)
@@ -46,4 +81,17 @@ if(PO4A)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_dependencies(desktopfile desktop_po4a)
+
+ if(POD2MAN)
+ add_custom_target(man_po4a
+ COMMAND ${PO4A} po4a.cfg
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+ add_dependencies(man man_po4a)
+ file(GLOB LINGUAS_PO RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po/ ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
+ string(REGEX REPLACE ".po$" "" LINGUAS ${LINGUAS_PO})
+ foreach(LOCALE ${LINGUAS})
+ podman(PODFILE lang/${LOCALE}/colobot.pod LOCALE ${LOCALE})
+ endforeach()
+ endif()
endif()
diff --git a/src/desktop/colobot.pod b/src/desktop/colobot.pod
new file mode 100644
index 0000000..2fc3a00
--- /dev/null
+++ b/src/desktop/colobot.pod
@@ -0,0 +1,47 @@
+=encoding utf8
+
+=head1 COLOBOT
+
+colobot - educational programming strategy game
+
+=head1 SYNOPSIS
+
+B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] [B<-language> I<lang>]
+
+=head1 DESCRIPTION
+
+Colobot (Colonize with Bots) is an educational game aiming to teach
+programming through entertainment. You are playing as an astronaut on a
+journey with robot helpers to find a planet for colonization. It features 3D
+real-time graphics and a C++ and Java-like, object-oriented language, CBOT,
+which can be used to program the robots available in the game.
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<-help>
+
+Display a short help text
+
+=item B<-datadir> F</path/to/data/>
+
+Set custom data directory path
+
+=item B<-debug>
+
+Enable debug mode (more info printed in logs)
+
+=item B<-loglevel> I<level>
+
+Set log level. Possible choices are: trace, debug, info, warn, error, none.
+
+=item B<-language> I<lang>
+
+Set language. Note that you can also fill the B<LANG> environment variable.
+
+=back
+
+=head1 AUTHOR
+
+This manpage was written by Didier Raboud <S<odyx@debian.org>>.
diff --git a/src/desktop/po/colobot-desktop.pot b/src/desktop/po/colobot-desktop.pot
index e74136a..17e60c3 100644
--- a/src/desktop/po/colobot-desktop.pot
+++ b/src/desktop/po/colobot-desktop.pot
@@ -7,13 +7,13 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2012-12-26 15:05+0100\n"
+"POT-Creation-Date: 2012-12-27 10:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: colobot.ini:1
@@ -30,3 +30,105 @@ msgstr ""
#, no-wrap
msgid "Colonize with bots"
msgstr ""
+
+#. type: =head1
+#: colobot.pod:3
+msgid "COLOBOT"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:5
+msgid "colobot - educational programming strategy game"
+msgstr ""
+
+#. type: =head1
+#: colobot.pod:7
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:9
+msgid ""
+"B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] "
+"[B<-language> I<lang>]"
+msgstr ""
+
+#. type: =head1
+#: colobot.pod:11
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:13
+msgid ""
+"Colobot (Colonize with Bots) is an educational game aiming to teach "
+"programming through entertainment. You are playing as an astronaut on a "
+"journey with robot helpers to find a planet for colonization. It features 3D "
+"real-time graphics and a C++ and Java-like, object-oriented language, CBOT, "
+"which can be used to program the robots available in the game."
+msgstr ""
+
+#. type: =head1
+#: colobot.pod:19
+msgid "OPTIONS"
+msgstr ""
+
+#. type: =item
+#: colobot.pod:23
+msgid "B<-help>"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:25
+msgid "Display a short help text"
+msgstr ""
+
+#. type: =item
+#: colobot.pod:27
+msgid "B<-datadir> F</path/to/data/>"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:29
+msgid "Set custom data directory path"
+msgstr ""
+
+#. type: =item
+#: colobot.pod:31
+msgid "B<-debug>"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:33
+msgid "Enable debug mode (more info printed in logs)"
+msgstr ""
+
+#. type: =item
+#: colobot.pod:35
+msgid "B<-loglevel> I<level>"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:37
+msgid "Set log level. Possible choices are: trace, debug, info, warn, error, none."
+msgstr ""
+
+#. type: =item
+#: colobot.pod:39
+msgid "B<-language> I<lang>"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:41
+msgid "Set language. Note that you can also fill the B<LANG> environment variable."
+msgstr ""
+
+#. type: =head1
+#: colobot.pod:45
+msgid "AUTHOR"
+msgstr ""
+
+#. type: textblock
+#: colobot.pod:47
+msgid "This manpage was written by Didier Raboud <S<odyx@debian.org>>."
+msgstr ""
diff --git a/src/desktop/po/fr.po b/src/desktop/po/fr.po
index 63dbb23..4709d49 100644
--- a/src/desktop/po/fr.po
+++ b/src/desktop/po/fr.po
@@ -1,13 +1,13 @@
# French translations for PACKAGE package
# Copyright (C) 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
-# Automatically generated, 2012.
#
+# Didier Raboud <odyx@debian.org>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2012-12-26 15:05+0100\n"
-"PO-Revision-Date: 2012-12-26 15:05+0100\n"
+"POT-Creation-Date: 2012-12-27 10:55+0100\n"
+"PO-Revision-Date: 2012-12-27 11:00+0100\n"
"Last-Translator: Didier Raboud <odyx@debian.org>\n"
"Language-Team: none\n"
"Language: fr\n"
@@ -30,3 +30,124 @@ msgstr "Apprentissage de la programmation par le jeu"
#, no-wrap
msgid "Colonize with bots"
msgstr "Colonise avec des roBots"
+
+#. type: =head1
+#: colobot.pod:3
+msgid "COLOBOT"
+msgstr "COLOBOT"
+
+#. type: textblock
+#: colobot.pod:5
+msgid "colobot - educational programming strategy game"
+msgstr "colobot - Jeu éducatif de stratégie et de programmation"
+
+#. type: =head1
+#: colobot.pod:7
+msgid "SYNOPSIS"
+msgstr "RÉSUMÉ"
+
+#. type: textblock
+#: colobot.pod:9
+msgid ""
+"B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] [B<-"
+"language> I<lang>]"
+msgstr ""
+"B<colobot> [B<-datadir> I<chemin>] [B<-debug>] [B<-loglevel> I<niveau>] [B<-"
+"language> I<code-de-langue>]"
+
+#. type: =head1
+#: colobot.pod:11
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: textblock
+#: colobot.pod:13
+msgid ""
+"Colobot (Colonize with Bots) is an educational game aiming to teach "
+"programming through entertainment. You are playing as an astronaut on a "
+"journey with robot helpers to find a planet for colonization. It features 3D "
+"real-time graphics and a C++ and Java-like, object-oriented language, CBOT, "
+"which can be used to program the robots available in the game."
+msgstr ""
+"Colobot (Colonise avec des roBots) est un jeu éducatif visant à "
+"l'enseignement de la programmation par le jeu. Vous jouez un astronaute en "
+"voyage avec des robots à la recherche d'une planète à coloniser. Son "
+"interface est en trois-dimensions et en temps réel; le language utilisé "
+"(CBOT) ressemble au C++ et à Java et peut être utilisé pour programmer les "
+"robots disponibles dans le jeu."
+
+#. type: =head1
+#: colobot.pod:19
+msgid "OPTIONS"
+msgstr "OPTIONS"
+
+#. type: =item
+#: colobot.pod:23
+msgid "B<-help>"
+msgstr "B<-help>"
+
+#. type: textblock
+#: colobot.pod:25
+msgid "Display a short help text"
+msgstr "Affiche un court texte d'aide"
+
+#. type: =item
+#: colobot.pod:27
+msgid "B<-datadir> F</path/to/data/>"
+msgstr "B<-datadir> F</chemin/vers/les/donnes/>"
+
+#. type: textblock
+#: colobot.pod:29
+msgid "Set custom data directory path"
+msgstr "Définit le chemin vers un répertoire de données spécifique"
+
+#. type: =item
+#: colobot.pod:31
+msgid "B<-debug>"
+msgstr "B<-debug>"
+
+#. type: textblock
+#: colobot.pod:33
+msgid "Enable debug mode (more info printed in logs)"
+msgstr ""
+"Active le mode de déboguage (plus d'informations sont affichées dans le "
+"journal)"
+
+#. type: =item
+#: colobot.pod:35
+msgid "B<-loglevel> I<level>"
+msgstr "B<-loglevel> I<niveau>"
+
+#. type: textblock
+#: colobot.pod:37
+msgid ""
+"Set log level. Possible choices are: trace, debug, info, warn, error, none."
+msgstr ""
+"Définit le niveau de journalisation parmi: trace, debug, info, warn, error, "
+"none."
+
+#. type: =item
+#: colobot.pod:39
+msgid "B<-language> I<lang>"
+msgstr "B<-language> I<langue>"
+
+#. type: textblock
+#: colobot.pod:41
+msgid ""
+"Set language. Note that you can also fill the B<LANG> environment variable."
+msgstr ""
+"Définit la langue. Il est aussi possible d'utiliser la variable "
+"d'environnement B<LANG>."
+
+#. type: =head1
+#: colobot.pod:45
+msgid "AUTHOR"
+msgstr "Auteur"
+
+#. type: textblock
+#: colobot.pod:47
+msgid "This manpage was written by Didier Raboud <S<odyx@debian.org>>."
+msgstr ""
+"Cette page de manuel a été écrite et traduite par Didier Raboud "
+"<S<odyx@debian.org>>."
+
diff --git a/src/desktop/po4a.cfg b/src/desktop/po4a.cfg
index eda2985..c251959 100644
--- a/src/desktop/po4a.cfg
+++ b/src/desktop/po4a.cfg
@@ -1,3 +1,4 @@
[po_directory] po/
[type:ini] colobot.ini $lang:lang/$lang/colobot.ini
+[type:pod] colobot.pod $lang:lang/$lang/colobot.pod
diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp
index 66c73a9..101e01a 100644
--- a/src/graphics/engine/text.cpp
+++ b/src/graphics/engine/text.cpp
@@ -677,7 +677,7 @@ void CText::DrawCharAndAdjustPos(UTF8Char ch, FontType font, float size, Math::P
return;
int width = 1;
- if (ch.c1 < 32) { // FIXME add support for chars with code 9 10 23
+ if (ch.c1 > 0 && ch.c1 < 32) { // FIXME add support for chars with code 9 10 23
ch.c1 = ' ';
ch.c2 = 0;
ch.c3 = 0;
diff --git a/src/object/brain.cpp b/src/object/brain.cpp
index 4ce1bf8..ef7309d 100644
--- a/src/object/brain.cpp
+++ b/src/object/brain.cpp
@@ -99,7 +99,7 @@ CBrain::CBrain(CInstanceManager* iMan, CObject* object)
m_selScript = 0;
m_bTraceRecord = false;
- m_traceRecordBuffer = 0;
+ m_traceRecordBuffer = nullptr;
}
// Object's destructor.
@@ -111,12 +111,21 @@ CBrain::~CBrain()
for ( i=0 ; i<BRAINMAXSCRIPT ; i++ )
{
delete m_script[i];
+ m_script[i] = nullptr;
}
delete m_primaryTask;
+ m_primaryTask = nullptr;
+
delete m_secondaryTask;
+ m_secondaryTask = nullptr;
+
delete m_studio;
- delete m_traceRecordBuffer;
+ m_studio = nullptr;
+
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = nullptr;
+
m_iMan->DeleteInstance(CLASS_BRAIN, this);
}
@@ -2791,8 +2800,8 @@ void CBrain::TraceRecordStart()
m_traceColor = -1;
}
- delete m_traceRecordBuffer;
- m_traceRecordBuffer = static_cast<TraceRecord*>(malloc(sizeof(TraceRecord)*MAXTRACERECORD));
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = new TraceRecord[MAXTRACERECORD];
m_traceRecordIndex = 0;
}
@@ -2858,10 +2867,10 @@ void CBrain::TraceRecordStop()
int max, i;
char* buffer;
- if ( m_traceRecordBuffer == 0 ) return;
+ if ( m_traceRecordBuffer == nullptr ) return;
max = 10000;
- buffer = static_cast<char*>(malloc(max));
+ buffer = new char[max];
*buffer = 0;
strncat(buffer, "extern void object::AutoDraw()\n{\n", max-1);
@@ -2892,8 +2901,8 @@ void CBrain::TraceRecordStop()
}
TraceRecordPut(buffer, max, lastOper, lastParam);
- delete m_traceRecordBuffer;
- m_traceRecordBuffer = 0;
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = nullptr;
strncat(buffer, "}\n", max-1);
buffer[max-1] = 0;
@@ -2904,7 +2913,7 @@ void CBrain::TraceRecordStop()
m_script[i] = new CScript(m_iMan, m_object, &m_secondaryTask);
}
m_script[i]->SendScript(buffer);
- delete buffer;
+ delete[] buffer;
}
// Saves an instruction CBOT.
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp
index d5805d0..aa2fe22 100644
--- a/src/object/robotmain.cpp
+++ b/src/object/robotmain.cpp
@@ -3808,16 +3808,16 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_title);
- sprintf(op, "Resume.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_resume);
- sprintf(op, "ScriptName.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "ScriptName.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_scriptName);
diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp
index ce778ef..cab57f1 100644
--- a/src/object/task/taskgoto.cpp
+++ b/src/object/task/taskgoto.cpp
@@ -2119,7 +2119,7 @@ bool CTaskGoto::BitmapOpen()
BitmapClose();
m_bmSize = static_cast<int>(3200.0f/BM_DIM_STEP);
- m_bmArray = static_cast<unsigned char*>(malloc(m_bmSize*m_bmSize/8*2));
+ m_bmArray = new unsigned char[m_bmSize*m_bmSize/8*2];
memset(m_bmArray, 0, m_bmSize*m_bmSize/8*2);
m_bmOffset = m_bmSize/2;
@@ -2137,7 +2137,7 @@ bool CTaskGoto::BitmapOpen()
bool CTaskGoto::BitmapClose()
{
- free(m_bmArray);
+ delete[] m_bmArray;
m_bmArray = 0;
return true;
}
diff --git a/src/po/CMakeLists.txt b/src/po/CMakeLists.txt
index 3b26571..df667dd 100644
--- a/src/po/CMakeLists.txt
+++ b/src/po/CMakeLists.txt
@@ -6,14 +6,13 @@ find_program(XGETTEXT_CMD xgettext)
add_custom_command(OUTPUT ${_potFile}
COMMAND ${XGETTEXT_CMD} ../app/app.cpp --output=${_potFile}
- COMMAND ${XGETTEXT_CMD} ../common/restext_strings.c --output=${_potFile} --join-existing --extract-all --no-location
+ COMMAND ${XGETTEXT_CMD} ../common/restext.cpp --output=${_potFile} --join-existing --extract-all --no-location
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Extract translatable messages to ${_potFile}"
)
-add_custom_target(_${potFile} ${_all} DEPENDS ${_potFile})
+add_custom_target(update-pot DEPENDS ${_potFile})
file(GLOB _poFiles *.po)
-
gettext_create_translations(${_potFile} ALL ${_poFiles})
diff --git a/src/po/colobot.pot b/src/po/colobot.pot
index d0a9c12..e1f9dc7 100644
--- a/src/po/colobot.pot
+++ b/src/po/colobot.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-13 21:46+0100\n"
+"POT-Creation-Date: 2012-12-27 17:09+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,9 +20,6 @@ msgstr ""
msgid "Colobot rules!"
msgstr ""
-msgid "Colobot Gold"
-msgstr ""
-
msgid "SatCom"
msgstr ""
@@ -1436,7 +1433,7 @@ msgstr ""
msgid "Program infected by a virus"
msgstr ""
-msgid "Infected by a virus, temporarily out of order"
+msgid "Infected by a virus; temporarily out of order"
msgstr ""
msgid "Impossible when swimming"
@@ -1464,7 +1461,7 @@ msgstr ""
msgid "Building destroyed"
msgstr ""
-msgid "Can not create this, there are too many objects"
+msgid "Can not create this; there are too many objects"
msgstr ""
#, c-format
@@ -1528,10 +1525,10 @@ msgstr ""
msgid "Found a site for a derrick"
msgstr ""
-msgid "<<< Well done, mission accomplished >>>"
+msgid "<<< Well done; mission accomplished >>>"
msgstr ""
-msgid "<<< Sorry, mission failed >>>"
+msgid "<<< Sorry; mission failed >>>"
msgstr ""
msgid "Current mission saved"
@@ -1612,7 +1609,7 @@ msgstr ""
msgid "Instruction \"break\" outside a loop"
msgstr ""
-msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\""
+msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\""
msgstr ""
msgid "This label does not exist"
@@ -1734,3 +1731,88 @@ msgstr ""
msgid "Write error"
msgstr ""
+
+msgid "left;"
+msgstr ""
+
+msgid "right;"
+msgstr ""
+
+msgid "up;"
+msgstr ""
+
+msgid "down;"
+msgstr ""
+
+msgid "gup;"
+msgstr ""
+
+msgid "gdown;"
+msgstr ""
+
+msgid "camera;"
+msgstr ""
+
+msgid "desel;"
+msgstr ""
+
+msgid "action;"
+msgstr ""
+
+msgid "near;"
+msgstr ""
+
+msgid "away;"
+msgstr ""
+
+msgid "next;"
+msgstr ""
+
+msgid "human;"
+msgstr ""
+
+msgid "quit;"
+msgstr ""
+
+msgid "help;"
+msgstr ""
+
+msgid "prog;"
+msgstr ""
+
+msgid "cbot;"
+msgstr ""
+
+msgid "visit;"
+msgstr ""
+
+msgid "speed10;"
+msgstr ""
+
+msgid "speed15;"
+msgstr ""
+
+msgid "speed20;"
+msgstr ""
+
+#, c-format
+msgid "GetResource event num out of range: %d\n"
+msgstr ""
+
+msgid "Ctrl"
+msgstr ""
+
+msgid "Shift"
+msgstr ""
+
+msgid "Alt"
+msgstr ""
+
+msgid "Win"
+msgstr ""
+
+msgid "Button %1"
+msgstr ""
+
+msgid "%1"
+msgstr ""
diff --git a/src/po/de.po b/src/po/de.po
index bbd0b77..2992cb1 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-13 21:46+0100\n"
+"POT-Creation-Date: 2012-12-27 17:09+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -64,6 +64,9 @@ msgstr "Es fehlt eine geschlossene eckige Klammer \" ] \""
msgid "\"%s\" missing in this exercise"
msgstr "Es fehlt \"%s\" in Ihrem Programm"
+msgid "%1"
+msgstr ""
+
msgid "..behind"
msgstr "..hinten"
@@ -85,13 +88,16 @@ msgstr "3D-Geräusche\\Orten der Geräusche im Raum"
msgid "<< Back \\Back to the previous screen"
msgstr "<< Zurück \\Zurück zum Hauptmenü"
-msgid "<<< Sorry, mission failed >>>"
+#, fuzzy
+msgid "<<< Sorry; mission failed >>>"
msgstr "<<< Mission gescheitert >>>"
-msgid "<<< Well done, mission accomplished >>>"
+#, fuzzy
+msgid "<<< Well done; mission accomplished >>>"
msgstr "<<< Bravo, Mission vollendet >>>"
-msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\""
+#, fuzzy
+msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\""
msgstr ""
"Ein Label kann nur vor den Anweisungen \"for\", \"while\", \"do\" oder "
"\"switch\" vorkommen"
@@ -122,6 +128,9 @@ msgstr "Insektenkönigin tödlich verwundet"
msgid "Already carrying something"
msgstr "Trägt schon etwas"
+msgid "Alt"
+msgstr "Alt"
+
msgid "Analysis already performed"
msgstr "Analyse schon durchgeführt"
@@ -299,6 +308,9 @@ msgstr "Gebäude zerstört"
msgid "Building too close"
msgstr "Gebäude zu nahe"
+msgid "Button %1"
+msgstr "Knopf %1"
+
msgid "COLOBOT"
msgstr "COLOBOT"
@@ -326,7 +338,8 @@ msgstr "Kamera links"
msgid "Camera to right"
msgstr "Kamera rechts"
-msgid "Can not create this, there are too many objects"
+#, fuzzy
+msgid "Can not create this; there are too many objects"
msgstr "Kein neues Objekt kann erstellt werden (zu viele vorhanden)"
msgid "Can't open file"
@@ -365,9 +378,6 @@ msgstr "Schließen"
msgid "Closing bracket missing "
msgstr "Es fehlt eine geschlossene Klammer \")\""
-msgid "Colobot Gold"
-msgstr "Colobot Gold"
-
msgid "Colobot rules!"
msgstr "Colobot ist wunderbar!"
@@ -404,6 +414,9 @@ msgstr "Kopieren"
msgid "Copy (Ctrl+c)"
msgstr "Kopieren (Ctrl+c)"
+msgid "Ctrl"
+msgstr "Ctrl"
+
msgid "Current mission saved"
msgstr "Mission gespeichert"
@@ -610,6 +623,10 @@ msgstr "Spiel\\Gameplay Einstellungen"
msgid "Gantry crane"
msgstr "Träger"
+#, c-format
+msgid "GetResource event num out of range: %d\n"
+msgstr ""
+
msgid "Goto: destination occupied"
msgstr "Ziel ist schon besetzt"
@@ -682,7 +699,8 @@ msgstr "Falscher Batterietyp"
msgid "Incorrect index type"
msgstr "Falscher Typ für einen Index"
-msgid "Infected by a virus, temporarily out of order"
+#, fuzzy
+msgid "Infected by a virus; temporarily out of order"
msgstr "Von Virus infiziert, zeitweise außer Betrieb"
msgid "Information exchange post"
@@ -1256,6 +1274,9 @@ msgstr "Reichweite Schutzschild"
msgid "Shielder"
msgstr "Schutzschild"
+msgid "Shift"
+msgstr "Shift"
+
msgid "Shoot (\\key action;)"
msgstr "Feuer (\\key action;)"
@@ -1565,6 +1586,9 @@ msgstr "Shooter"
msgid "Wheeled sniffer"
msgstr "Schnüffler"
+msgid "Win"
+msgstr ""
+
msgid "Winged grabber"
msgstr "Transporter"
@@ -1730,6 +1754,69 @@ msgstr "\\b;Liste der Roboter\n"
msgid "\\c; (none)\\n;\n"
msgstr "\\c; (keine)\\n;\n"
+msgid "action;"
+msgstr ""
+
+msgid "away;"
+msgstr ""
+
+msgid "camera;"
+msgstr ""
+
+msgid "cbot;"
+msgstr ""
+
+msgid "desel;"
+msgstr ""
+
+msgid "down;"
+msgstr ""
+
+msgid "gdown;"
+msgstr ""
+
+msgid "gup;"
+msgstr ""
+
+msgid "help;"
+msgstr ""
+
+msgid "human;"
+msgstr ""
+
+msgid "left;"
+msgstr ""
+
+msgid "near;"
+msgstr ""
+
+msgid "next;"
+msgstr ""
+
+msgid "prog;"
+msgstr ""
+
+msgid "quit;"
+msgstr ""
+
+msgid "right;"
+msgstr ""
+
+msgid "speed10;"
+msgstr ""
+
+msgid "speed15;"
+msgstr ""
+
+msgid "speed20;"
+msgstr ""
+
+msgid "up;"
+msgstr ""
+
+msgid "visit;"
+msgstr ""
+
msgid "www.epsitec.com"
msgstr "www.epsitec.com"
@@ -1739,9 +1826,6 @@ msgstr "www.epsitec.com"
#~ msgid "<--"
#~ msgstr "<--"
-#~ msgid "Alt"
-#~ msgstr "Alt"
-
#~ msgid "Application key"
#~ msgstr "Application key"
@@ -1760,9 +1844,6 @@ msgstr "www.epsitec.com"
#~ msgid "Attn"
#~ msgstr "Attn"
-#~ msgid "Button %1"
-#~ msgstr "Knopf %1"
-
#~ msgid "Caps Lock"
#~ msgstr "Caps Lock"
@@ -1775,9 +1856,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel"
#~ msgstr "CrSel"
-#~ msgid "Ctrl"
-#~ msgstr "Ctrl"
-
#~ msgid "Delete Key"
#~ msgstr "Delete"
@@ -1961,9 +2039,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select"
#~ msgstr "Select"
-#~ msgid "Shift"
-#~ msgstr "Shift"
-
#~ msgid "Space"
#~ msgstr "Leertaste"
diff --git a/src/po/fr.po b/src/po/fr.po
index bda683d..662fb93 100644
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -1,13 +1,18 @@
+# Didier Raboud <odyx@debian.org>, 2012.
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-13 21:46+0100\n"
+"POT-Creation-Date: 2012-12-27 17:09+0100\n"
+"PO-Revision-Date: 2012-12-27 14:07+0100\n"
+"Last-Translator: Didier Raboud <odyx@debian.org>\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Language: fr_FR\n"
"X-Source-Language: en_US\n"
+"X-Generator: Lokalize 1.4\n"
msgid " "
msgstr " "
@@ -37,7 +42,7 @@ msgid " Missions on this planet:"
msgstr " Liste des missions du chapitre :"
msgid " Planets:"
-msgstr " Liste des plančtes :"
+msgstr " Liste des planètes :"
msgid " Prototypes on this planet:"
msgstr " Liste des prototypes du chapitre :"
@@ -64,8 +69,11 @@ msgstr "\" ] \" attendu"
msgid "\"%s\" missing in this exercise"
msgstr "Il manque \"%s\" dans le programme"
+msgid "%1"
+msgstr "%1"
+
msgid "..behind"
-msgstr "..derričre"
+msgstr "..derrière"
msgid "..in front"
msgstr "..devant"
@@ -74,7 +82,7 @@ msgid "..power cell"
msgstr "..pile"
msgid "1) First click on the key you want to redefine."
-msgstr "1) Cliquez d'abord sur la touche ŕ redéfinir."
+msgstr "1) Cliquez d'abord sur la touche à redéfinir."
msgid "2) Then press the key you want to use instead."
msgstr "2) Appuyez ensuite sur la nouvelle touche souhaitée."
@@ -85,15 +93,15 @@ msgstr "Bruitages 3D\\Positionnement sonore dans l'espace"
msgid "<< Back \\Back to the previous screen"
msgstr "<< Retour \\Retour au niveau précédent"
-msgid "<<< Sorry, mission failed >>>"
-msgstr "<<< Désolé, mission échouée >>>"
+msgid "<<< Sorry; mission failed >>>"
+msgstr "<<< Désolé; mission échouée >>>"
-msgid "<<< Well done, mission accomplished >>>"
-msgstr "<<< Bravo, mission terminée >>>"
+msgid "<<< Well done; mission accomplished >>>"
+msgstr "<<< Bravo; mission terminée >>>"
-msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\""
+msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\""
msgstr ""
-"Un label ne peut se placer que devant un \"for\", un \"while\", un \"do\" ou "
+"Un label ne peut se placer que devant un \"for\"; un \"while\"; un \"do\" ou "
"un \"switch\""
msgid "A variable can not be declared twice"
@@ -103,14 +111,14 @@ msgid "Abort\\Abort the current mission"
msgstr "Abandonner\\Abandonner la mission en cours"
msgid "Access beyond array limit"
-msgstr "Accčs hors du tableau"
+msgstr "Accès hors du tableau"
msgid ""
"Access to solution\\Shows the solution (detailed instructions for missions)"
-msgstr "Accčs ŕ la solution\\Donne la solution"
+msgstr "Accès à la solution\\Donne la solution"
msgid "Access to solutions\\Show program \"4: Solution\" in the exercises"
-msgstr "Accčs aux solutions\\Programme \"4: Solution\" dans les exercices"
+msgstr "Accès aux solutions\\Programme \"4: Solution\" dans les exercices"
msgid "Alien Queen"
msgstr "Pondeuse"
@@ -119,16 +127,19 @@ msgid "Alien Queen killed"
msgstr "Pondeuse mortellement touchée"
msgid "Already carrying something"
-msgstr "Porte déjŕ quelque chose"
+msgstr "Porte déjà quelque chose"
+
+msgid "Alt"
+msgstr "Alt"
msgid "Analysis already performed"
-msgstr "Analyse déjŕ effectuée"
+msgstr "Analyse déjà effectuée"
msgid "Analysis performed"
msgstr "Analyse terminée"
msgid "Analyzes only organic matter"
-msgstr "N'analyse que la matičre organique"
+msgstr "N'analyse que la matière organique"
msgid "Ant"
msgstr "Fourmi"
@@ -149,7 +160,7 @@ msgid "Assignment impossible"
msgstr "Assignation impossible"
msgid "Autolab"
-msgstr "Laboratoire de matičres organiques"
+msgstr "Laboratoire de matières organiques"
msgid "Automatic indent\\When program editing"
msgstr "Indentation automatique\\Pendant l'édition d'un programme"
@@ -164,7 +175,7 @@ msgid "Backward (\\key down;)"
msgstr "Recule (\\key down;)"
msgid "Backward\\Moves backward"
-msgstr "Reculer\\Moteur en arričre"
+msgstr "Reculer\\Moteur en arrière"
msgid "Bad argument for \"new\""
msgstr "Mauvais argument pour \"new\""
@@ -203,16 +214,16 @@ msgid "Build a exchange post"
msgstr "Construit une borne d'information"
msgid "Build a legged grabber"
-msgstr "Fabrique un déménageur ŕ pattes"
+msgstr "Fabrique un déménageur à pattes"
msgid "Build a legged orga shooter"
-msgstr "Fabrique un orgaShooter ŕ pattes"
+msgstr "Fabrique un orgaShooter à pattes"
msgid "Build a legged shooter"
-msgstr "Fabrique un shooter ŕ pattes"
+msgstr "Fabrique un shooter à pattes"
msgid "Build a legged sniffer"
-msgstr "Fabrique un renifleur ŕ pattes"
+msgstr "Fabrique un renifleur à pattes"
msgid "Build a lightning conductor"
msgstr "Construit un paratonnerre"
@@ -251,28 +262,28 @@ msgid "Build a thumper"
msgstr "Fabrique un robot secoueur"
msgid "Build a tracked grabber"
-msgstr "Fabrique un déménageur ŕ chenilles"
+msgstr "Fabrique un déménageur à chenilles"
msgid "Build a tracked orga shooter"
-msgstr "Fabrique un orgaShooter ŕ chenilles"
+msgstr "Fabrique un orgaShooter à chenilles"
msgid "Build a tracked shooter"
-msgstr "Fabrique un shooter ŕ chenilles"
+msgstr "Fabrique un shooter à chenilles"
msgid "Build a tracked sniffer"
-msgstr "Fabrique un renifleur ŕ chenilles"
+msgstr "Fabrique un renifleur à chenilles"
msgid "Build a wheeled grabber"
-msgstr "Fabrique un déménageur ŕ roues"
+msgstr "Fabrique un déménageur à roues"
msgid "Build a wheeled orga shooter"
-msgstr "Fabrique un orgaShooter ŕ roues"
+msgstr "Fabrique un orgaShooter à roues"
msgid "Build a wheeled shooter"
-msgstr "Fabrique un shooter ŕ roues"
+msgstr "Fabrique un shooter à roues"
msgid "Build a wheeled sniffer"
-msgstr "Fabrique un renifleur ŕ roues"
+msgstr "Fabrique un renifleur à roues"
msgid "Build a winged grabber"
msgstr "Fabrique un déménageur volant"
@@ -298,6 +309,9 @@ msgstr "Bâtiment détruit"
msgid "Building too close"
msgstr "Bâtiment trop proche"
+msgid "Button %1"
+msgstr "Bouton %1"
+
msgid "COLOBOT"
msgstr "COLOBOT"
@@ -320,13 +334,13 @@ msgid "Camera nearest"
msgstr "Caméra plus proche"
msgid "Camera to left"
-msgstr "Caméra ŕ gauche"
+msgstr "Caméra à gauche"
msgid "Camera to right"
-msgstr "Caméra ŕ droite"
+msgstr "Caméra à droite"
-msgid "Can not create this, there are too many objects"
-msgstr "Création impossible, il y a trop d'objets"
+msgid "Can not create this; there are too many objects"
+msgstr "Création impossible; il y a trop d'objets"
msgid "Can't open file"
msgstr "Ouverture du fichier impossible"
@@ -362,10 +376,7 @@ msgid "Close"
msgstr "Fermer"
msgid "Closing bracket missing "
-msgstr "Il manque une parenthčse fermante"
-
-msgid "Colobot Gold"
-msgstr "Colobot Gold"
+msgstr "Il manque une parenthèse fermante"
msgid "Colobot rules!"
msgstr "Colobot est super!"
@@ -403,6 +414,9 @@ msgstr "Copier"
msgid "Copy (Ctrl+c)"
msgstr "Copier (Ctrl+c)"
+msgid "Ctrl"
+msgstr "Ctrl"
+
msgid "Current mission saved"
msgstr "Enregistrement effectué"
@@ -477,10 +491,10 @@ msgid "Dust\\Dust and dirt on bots and buildings"
msgstr "Salissures\\Salissures des robots et bâtiments"
msgid "Dynamic lighting\\Mobile light sources"
-msgstr "Lumičres dynamiques\\Eclairages mobiles"
+msgstr "Lumières dynamiques\\Éclairages mobiles"
msgid "Edit the selected program"
-msgstr "Edite le programme sélectionné"
+msgstr "Édite le programme sélectionné"
msgid "Egg"
msgstr "Oeuf"
@@ -531,7 +545,7 @@ msgid "Filename:"
msgstr "Nom du fichier :"
msgid "Film sequences\\Films before and after the missions"
-msgstr "Séquences cinématiques\\Films avant ou aprčs une mission"
+msgstr "Séquences cinématiques\\Films avant ou après une mission"
msgid "Finish"
msgstr "But"
@@ -553,7 +567,7 @@ msgid "Folder: %s"
msgstr "Dossier: %s"
msgid "Font size"
-msgstr "Taille des caractčres"
+msgstr "Taille des caractères"
msgid "Forward"
msgstr "Page suivante"
@@ -589,13 +603,13 @@ msgid "Free game\\Free game without a specific goal"
msgstr "Jeu libre\\Jeu libre sans but précis"
msgid "Friendly fire\\Your shooting can damage your own objects "
-msgstr "Dégâts ŕ soi-męme\\Vos tirs infligent des dommages ŕ vos unités"
+msgstr "Dégâts à soi-même\\Vos tirs infligent des dommages à vos unités"
msgid "Full screen\\Full screen or window mode"
-msgstr "Plein écran\\Plein écran ou fenętré"
+msgstr "Plein écran\\Plein écran ou fenêtré"
msgid "Function already exists"
-msgstr "Cette fonction existe déjŕ"
+msgstr "Cette fonction existe déjà"
msgid "Function name missing"
msgstr "Nom de la fonction attendu"
@@ -609,8 +623,12 @@ msgstr "Jeu\\Options de jouabilité"
msgid "Gantry crane"
msgstr "Portique"
+#, c-format
+msgid "GetResource event num out of range: %d\n"
+msgstr ""
+
msgid "Goto: destination occupied"
-msgstr "Destination occupée"
+msgstr "Goto: Destination occupée"
msgid "Goto: inaccessible destination"
msgstr "Chemin introuvable"
@@ -637,7 +655,7 @@ msgid "Hair color:"
msgstr "Couleur des cheveux :"
msgid "Head\\Face and hair"
-msgstr "Tęte\\Visage et cheveux"
+msgstr "Tête\\Visage et cheveux"
msgid "Help about selected object"
msgstr "Instructions sur la sélection"
@@ -681,8 +699,8 @@ msgstr "Pas le bon type de pile"
msgid "Incorrect index type"
msgstr "Mauvais type d'index"
-msgid "Infected by a virus, temporarily out of order"
-msgstr "Infecté par un virus, ne fonctionne plus temporairement"
+msgid "Infected by a virus; temporarily out of order"
+msgstr "Infecté par un virus; ne fonctionne plus temporairement"
msgid "Information exchange post"
msgstr "Borne d'information"
@@ -703,7 +721,7 @@ msgid "Instructions (\\key help;)"
msgstr "Instructions (\\key help;)"
msgid "Instructions after the final closing brace"
-msgstr "Instructions aprčs la fin"
+msgstr "Instructions après la fin"
msgid "Instructions for the mission (\\key help;)"
msgstr "Instructions sur la mission (\\key help;)"
@@ -712,7 +730,7 @@ msgid "Instructions from Houston"
msgstr "Instructions de Houston"
msgid "Instructions\\Shows the instructions for the current mission"
-msgstr "Instructions mission\\Marche ŕ suivre"
+msgstr "Instructions mission\\Marche à suivre"
msgid "Jet temperature"
msgstr "Température du réacteur"
@@ -843,16 +861,16 @@ msgid "No energy in the subsoil"
msgstr "Pas d'énergie en sous-sol"
msgid "No flag nearby"
-msgstr "Aucun drapeau ŕ proximité"
+msgstr "Aucun drapeau à proximité"
msgid "No function running"
msgstr "Pas de fonction en exécution"
msgid "No function with this name accepts this kind of parameter"
-msgstr "Aucune fonction de ce nom n'accepte ce(s) type(s) de paramčtre(s)"
+msgstr "Aucune fonction de ce nom n'accepte ce(s) type(s) de paramètre(s)"
msgid "No function with this name accepts this number of parameters"
-msgstr "Aucune fonction de ce nom n'accepte ce nombre de paramčtres"
+msgstr "Aucune fonction de ce nom n'accepte ce nombre de paramètres"
msgid "No information exchange post within range"
msgstr "Pas trouvé de borne d'information"
@@ -876,13 +894,13 @@ msgid "No titanium around"
msgstr "Titanium inexistant"
msgid "No titanium ore to convert"
-msgstr "Pas de minerai de titanium ŕ convertir"
+msgstr "Pas de minerai de titanium à convertir"
msgid "No titanium to transform"
-msgstr "Pas de titanium ŕ transformer"
+msgstr "Pas de titanium à transformer"
msgid "No uranium to transform"
-msgstr "Pas d'uranium ŕ transformer"
+msgstr "Pas d'uranium à transformer"
msgid "Normal size"
msgstr "Taille normale"
@@ -903,16 +921,16 @@ msgid "Not yet enough energy"
msgstr "Pas encore assez d'énergie"
msgid "Nothing to analyze"
-msgstr "Rien ŕ analyser"
+msgstr "Rien à analyser"
msgid "Nothing to drop"
-msgstr "Rien ŕ déposer"
+msgstr "Rien à déposer"
msgid "Nothing to grab"
-msgstr "Rien ŕ prendre"
+msgstr "Rien à prendre"
msgid "Nothing to recycle"
-msgstr "Rien ŕ recycler"
+msgstr "Rien à recycler"
msgid "Nuclear power cell"
msgstr "Pile nucléaire"
@@ -933,7 +951,7 @@ msgid "Number of insects detected"
msgstr "Nombre d'insectes détectés"
msgid "Number of particles\\Explosions, dust, reflections, etc."
-msgstr "Quantité de particules\\Explosions, poussičres, reflets, etc."
+msgstr "Quantité de particules\\Explosions, poussières, reflets, etc."
msgid "OK"
msgstr "D'accord"
@@ -963,7 +981,7 @@ msgid "Opening brace missing "
msgstr "Début d'un bloc attendu"
msgid "Opening bracket missing"
-msgstr "Il manque une parenthčse ouvrante"
+msgstr "Il manque une parenthèse ouvrante"
msgid "Operation impossible with value \"nan\""
msgstr "Opération sur un \"nan\""
@@ -975,13 +993,13 @@ msgid "Options\\Preferences"
msgstr "Options\\Réglages"
msgid "Organic matter"
-msgstr "Matičre organique"
+msgstr "Matière organique"
msgid "Origin of last message\\Shows where the last message was sent from"
msgstr "Montrer le lieu d'un message\\Montrer le lieu du dernier message"
msgid "Parameters missing "
-msgstr "Pas assez de paramčtres"
+msgstr "Pas assez de paramètres"
msgid "Particles in the interface\\Steam clouds and sparks in the interface"
msgstr "Particules dans l'interface\\Pluie de particules"
@@ -1002,7 +1020,7 @@ msgid "Place occupied"
msgstr "Emplacement occupé"
msgid "Planets and stars\\Astronomical objects in the sky"
-msgstr "Plančtes et étoiles\\Motifs mobiles dans le ciel"
+msgstr "Planètes et étoiles\\Motifs mobiles dans le ciel"
msgid "Plans for defense tower available"
msgstr "Construction d'une tour de défense possible"
@@ -1023,7 +1041,7 @@ msgid "Plans for thumper available"
msgstr "Fabrication d'un robot secoueur possible"
msgid "Plans for tracked robots available "
-msgstr "Fabrication d'un robot ŕ chenilles possible"
+msgstr "Fabrication d'un robot à chenilles possible"
msgid "Plant a flag"
msgstr "Pose un drapeau de couleur"
@@ -1086,10 +1104,10 @@ msgid "Programming exercises"
msgstr "Programmation"
msgid "Programming help"
-msgstr "Aide ŕ la programmation"
+msgstr "Aide à la programmation"
msgid "Programming help (\\key prog;)"
-msgstr "Aide ŕ la programmation (\\key prog;)"
+msgstr "Aide à la programmation (\\key prog;)"
msgid "Programming help\\Gives more detailed help with programming"
msgstr "Instructions programmation\\Explication sur la programmation"
@@ -1107,7 +1125,7 @@ msgid "Public required"
msgstr "Public requis"
msgid "Public\\Common folder"
-msgstr "Public\\Dossier commun ŕ tous les joueurs"
+msgstr "Public\\Dossier commun à tous les joueurs"
msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion"
@@ -1125,7 +1143,7 @@ msgid "Radar station"
msgstr "Radar"
msgid "Read error"
-msgstr "Erreur ŕ la lecture"
+msgstr "Erreur à la lecture"
msgid "Recorder"
msgstr "Enregistreur"
@@ -1149,7 +1167,7 @@ msgid "Remains of Apollo mission"
msgstr "Vestige d'une mission Apollo"
msgid "Remove a flag"
-msgstr "Enlčve un drapeau"
+msgstr "Enlève un drapeau"
msgid "Repair center"
msgstr "Centre de réparation"
@@ -1158,7 +1176,7 @@ msgid "Research center"
msgstr "Centre de recherches"
msgid "Research program already performed"
-msgstr "Recherche déjŕ effectuée"
+msgstr "Recherche déjà effectuée"
msgid "Research program completed"
msgstr "Recherche terminée"
@@ -1258,6 +1276,9 @@ msgstr "Rayon du bouclier"
msgid "Shielder"
msgstr "Robot bouclier"
+msgid "Shift"
+msgstr "Shift"
+
msgid "Shoot (\\key action;)"
msgstr "Tir (\\key action;)"
@@ -1350,7 +1371,7 @@ msgid "Still working ..."
msgstr "Travail en cours ..."
msgid "String missing"
-msgstr "Une chaîne de caractčre est attendue"
+msgstr "Une chaîne de caractère est attendue"
msgid "Strip color:"
msgstr "Couleur des bandes :"
@@ -1405,7 +1426,7 @@ msgid "The types of the two operands are incompatible "
msgstr "Les deux opérandes ne sont pas de types compatibles"
msgid "This class already exists"
-msgstr "Cette classe existe déjŕ"
+msgstr "Cette classe existe déjà"
msgid "This class does not exist"
msgstr "Cette classe n'existe pas"
@@ -1456,7 +1477,7 @@ msgid "Too many flags of this color (maximum 5)"
msgstr "Trop de drapeaux de cette couleur (maximum 5)"
msgid "Too many parameters"
-msgstr "Trop de paramčtres"
+msgstr "Trop de paramètres"
msgid "Tracked grabber"
msgstr "Robot déménageur"
@@ -1480,16 +1501,16 @@ msgid "Transmitted information"
msgstr "Informations diffusées"
msgid "Turn left (\\key left;)"
-msgstr "Tourne ŕ gauche (\\key left;)"
+msgstr "Tourne à gauche (\\key left;)"
msgid "Turn left\\turns the bot to the left"
-msgstr "Tourner ŕ gauche\\Moteur ŕ gauche"
+msgstr "Tourner à gauche\\Moteur à gauche"
msgid "Turn right (\\key right;)"
-msgstr "Tourne ŕ droite (\\key right;)"
+msgstr "Tourne à droite (\\key right;)"
msgid "Turn right\\turns the bot to the right"
-msgstr "Tourner ŕ droite\\Moteur ŕ droite"
+msgstr "Tourner à droite\\Moteur à droite"
msgid "Type declaration missing"
msgstr "Déclaration de type attendu"
@@ -1543,7 +1564,7 @@ msgid "Violet flag"
msgstr "Drapeau violet"
msgid "Void parameter"
-msgstr "Paramčtre void"
+msgstr "Paramètre void"
msgid "Wasp"
msgstr "Guępe"
@@ -1566,6 +1587,9 @@ msgstr "Robot shooter"
msgid "Wheeled sniffer"
msgstr "Robot renifleur"
+msgid "Win"
+msgstr "Gagné"
+
msgid "Winged grabber"
msgstr "Robot déménageur"
@@ -1591,7 +1615,7 @@ msgid "Wreckage"
msgstr "Epave de robot"
msgid "Write error"
-msgstr "Erreur ŕ l'écriture"
+msgstr "Erreur à l'écriture"
msgid "Wrong type for the assignment"
msgstr "Mauvais type de résultat pour l'assignation"
@@ -1652,13 +1676,13 @@ msgid "\\Green flags"
msgstr "\\Drapeaux verts"
msgid "\\New player name"
-msgstr "\\Nom du joueur ŕ créer"
+msgstr "\\Nom du joueur à créer"
msgid "\\No eyeglasses"
msgstr "\\Pas de lunettes"
msgid "\\Raise the pencil"
-msgstr "\\Relčve le crayon"
+msgstr "\\Relève le crayon"
msgid "\\Red flags"
msgstr "\\Drapeaux rouges"
@@ -1676,10 +1700,10 @@ msgid "\\Stop recording"
msgstr "\\Stoppe l'enregistrement"
msgid "\\Turn left"
-msgstr "\\Rotation ŕ gauche"
+msgstr "\\Rotation à gauche"
msgid "\\Turn right"
-msgstr "\\Rotation ŕ droite"
+msgstr "\\Rotation à droite"
msgid "\\Use the black pencil"
msgstr "\\Abaisse le crayon noir"
@@ -1732,6 +1756,69 @@ msgstr "\\b;Listes des robots\n"
msgid "\\c; (none)\\n;\n"
msgstr "\\c; (aucun)\\n;\n"
+msgid "action;"
+msgstr ""
+
+msgid "away;"
+msgstr ""
+
+msgid "camera;"
+msgstr ""
+
+msgid "cbot;"
+msgstr ""
+
+msgid "desel;"
+msgstr ""
+
+msgid "down;"
+msgstr ""
+
+msgid "gdown;"
+msgstr ""
+
+msgid "gup;"
+msgstr ""
+
+msgid "help;"
+msgstr ""
+
+msgid "human;"
+msgstr ""
+
+msgid "left;"
+msgstr ""
+
+msgid "near;"
+msgstr ""
+
+msgid "next;"
+msgstr ""
+
+msgid "prog;"
+msgstr ""
+
+msgid "quit;"
+msgstr ""
+
+msgid "right;"
+msgstr ""
+
+msgid "speed10;"
+msgstr ""
+
+msgid "speed15;"
+msgstr ""
+
+msgid "speed20;"
+msgstr ""
+
+msgid "up;"
+msgstr ""
+
+msgid "visit;"
+msgstr ""
+
msgid "www.epsitec.com"
msgstr "www.epsitec.com"
@@ -1741,30 +1828,24 @@ msgstr "www.epsitec.com"
#~ msgid "<--"
#~ msgstr "<--"
-#~ msgid "Alt"
-#~ msgstr "Alt"
-
#~ msgid "Application key"
#~ msgstr "Application key"
#~ msgid "Arrow down"
-#~ msgstr "Flčche Bas"
+#~ msgstr "Flèche Bas"
#~ msgid "Arrow left"
-#~ msgstr "Flčche Gauche"
+#~ msgstr "Flèche Gauche"
#~ msgid "Arrow right"
-#~ msgstr "Flčche Droite"
+#~ msgstr "Flèche Droite"
#~ msgid "Arrow up"
-#~ msgstr "Flčche Haut"
+#~ msgstr "Flèche Haut"
#~ msgid "Attn"
#~ msgstr "Attn"
-#~ msgid "Button %1"
-#~ msgstr "Bouton %1"
-
#~ msgid "Caps Lock"
#~ msgstr "Caps Lock"
@@ -1777,9 +1858,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel"
#~ msgstr "CrSel"
-#~ msgid "Ctrl"
-#~ msgstr "Ctrl"
-
#~ msgid "Delete Key"
#~ msgstr "Delete"
@@ -1963,9 +2041,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select"
#~ msgstr "Select"
-#~ msgid "Shift"
-#~ msgstr "Shift"
-
#~ msgid "Space"
#~ msgstr "Espace"
diff --git a/src/po/pl.po b/src/po/pl.po
index 700ee9e..9bab529 100644
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-13 21:46+0100\n"
+"POT-Creation-Date: 2012-12-27 17:09+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -65,6 +65,9 @@ msgstr "Brak \" ] \""
msgid "\"%s\" missing in this exercise"
msgstr "It misses \"%s\" in this exercise"
+msgid "%1"
+msgstr ""
+
msgid "..behind"
msgstr "..za"
@@ -86,13 +89,16 @@ msgstr "Dźwięk 3D\\Przestrzenne pozycjonowanie dźwięków"
msgid "<< Back \\Back to the previous screen"
msgstr "<< Wstecz \\Wraca do poprzedniego ekranu"
-msgid "<<< Sorry, mission failed >>>"
+#, fuzzy
+msgid "<<< Sorry; mission failed >>>"
msgstr "<<< Niestety, misja nie powiodła się >>>"
-msgid "<<< Well done, mission accomplished >>>"
+#, fuzzy
+msgid "<<< Well done; mission accomplished >>>"
msgstr "<<< Dobra robota, misja wypełniona >>>"
-msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\""
+#, fuzzy
+msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\""
msgstr "Po etykiecie musi wystąpić \"for\", \"while\", \"do\" lub \"switch\""
msgid "A variable can not be declared twice"
@@ -122,6 +128,9 @@ msgstr "Królowa Obcych została zabita"
msgid "Already carrying something"
msgstr "Nie można nieść więcej przedmiotów"
+msgid "Alt"
+msgstr "Alt"
+
msgid "Analysis already performed"
msgstr "Analiza została już wykonana"
@@ -301,6 +310,9 @@ msgstr "Budynek zniszczony"
msgid "Building too close"
msgstr "Budynek za blisko"
+msgid "Button %1"
+msgstr "Przycisk %1"
+
msgid "COLOBOT"
msgstr "COLOBOT"
@@ -328,7 +340,8 @@ msgstr "Camera to left"
msgid "Camera to right"
msgstr "Camera to right"
-msgid "Can not create this, there are too many objects"
+#, fuzzy
+msgid "Can not create this; there are too many objects"
msgstr "Nie można tego utworzyć, za dużo obiektów"
msgid "Can't open file"
@@ -367,9 +380,6 @@ msgstr "Zamknij"
msgid "Closing bracket missing "
msgstr "Brak nawiasu zamykającego"
-msgid "Colobot Gold"
-msgstr "Colobot Gold"
-
msgid "Colobot rules!"
msgstr "Colobot rządzi!"
@@ -406,6 +416,9 @@ msgstr "Kopiuj"
msgid "Copy (Ctrl+c)"
msgstr "Kopiuj (Ctrl+C)"
+msgid "Ctrl"
+msgstr "Ctrl"
+
msgid "Current mission saved"
msgstr "Bieżąca misja zapisana"
@@ -612,6 +625,10 @@ msgstr "Gra\\Ustawienia gry"
msgid "Gantry crane"
msgstr "Żuraw przesuwalny"
+#, c-format
+msgid "GetResource event num out of range: %d\n"
+msgstr ""
+
msgid "Goto: destination occupied"
msgstr "Goto: miejsce docelowe zajęte"
@@ -685,7 +702,8 @@ msgstr "Nieodpowiedni rodzaj ogniw"
msgid "Incorrect index type"
msgstr "Nieprawidłowy typ indeksu"
-msgid "Infected by a virus, temporarily out of order"
+#, fuzzy
+msgid "Infected by a virus; temporarily out of order"
msgstr "Zainfekowane wirusem, chwilowo niesprawne"
msgid "Information exchange post"
@@ -1264,6 +1282,9 @@ msgstr "Zasięg osłony"
msgid "Shielder"
msgstr "Osłaniacz"
+msgid "Shift"
+msgstr "Shift"
+
msgid "Shoot (\\key action;)"
msgstr "Strzelaj (\\key action;)"
@@ -1575,6 +1596,9 @@ msgstr "Działo na kołach"
msgid "Wheeled sniffer"
msgstr "Szperacz na kołach"
+msgid "Win"
+msgstr ""
+
msgid "Winged grabber"
msgstr "Transporter latający"
@@ -1740,6 +1764,69 @@ msgstr "\\b;Roboty\n"
msgid "\\c; (none)\\n;\n"
msgstr "\\c; (brak)\\n;\n"
+msgid "action;"
+msgstr ""
+
+msgid "away;"
+msgstr ""
+
+msgid "camera;"
+msgstr ""
+
+msgid "cbot;"
+msgstr ""
+
+msgid "desel;"
+msgstr ""
+
+msgid "down;"
+msgstr ""
+
+msgid "gdown;"
+msgstr ""
+
+msgid "gup;"
+msgstr ""
+
+msgid "help;"
+msgstr ""
+
+msgid "human;"
+msgstr ""
+
+msgid "left;"
+msgstr ""
+
+msgid "near;"
+msgstr ""
+
+msgid "next;"
+msgstr ""
+
+msgid "prog;"
+msgstr ""
+
+msgid "quit;"
+msgstr ""
+
+msgid "right;"
+msgstr ""
+
+msgid "speed10;"
+msgstr ""
+
+msgid "speed15;"
+msgstr ""
+
+msgid "speed20;"
+msgstr ""
+
+msgid "up;"
+msgstr ""
+
+msgid "visit;"
+msgstr ""
+
msgid "www.epsitec.com"
msgstr "www.epsitec.com"
@@ -1749,9 +1836,6 @@ msgstr "www.epsitec.com"
#~ msgid "<--"
#~ msgstr "<--"
-#~ msgid "Alt"
-#~ msgstr "Alt"
-
#~ msgid "Application key"
#~ msgstr "Klawisz menu kontekstowego"
@@ -1770,9 +1854,6 @@ msgstr "www.epsitec.com"
#~ msgid "Attn"
#~ msgstr "Attn"
-#~ msgid "Button %1"
-#~ msgstr "Przycisk %1"
-
#~ msgid "Caps Lock"
#~ msgstr "Caps Lock"
@@ -1785,9 +1866,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel"
#~ msgstr "CrSel"
-#~ msgid "Ctrl"
-#~ msgstr "Ctrl"
-
#~ msgid "Delete Key"
#~ msgstr "Delete"
@@ -1971,9 +2049,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select"
#~ msgstr "Zaznacz"
-#~ msgid "Shift"
-#~ msgstr "Shift"
-
#~ msgid "Space"
#~ msgstr "Spacja"
diff --git a/src/script/script.cpp b/src/script/script.cpp
index 8471df5..57d638e 100644
--- a/src/script/script.cpp
+++ b/src/script/script.cpp
@@ -1571,7 +1571,7 @@ bool CScript::rGrab(CBotVar* var, CBotVar* result, int& exception, void* user)
if ( script->m_primaryTask == 0 ) // no task in progress?
{
script->m_primaryTask = new CTaskManager(script->m_iMan, script->m_object);
- if ( var == 0 )
+ if ( var == 0 )
{
type = TMA_FFRONT;
}
@@ -2753,9 +2753,14 @@ void CScript::InitFonctions()
CScript::~CScript()
{
delete m_botProg;
+ m_botProg = nullptr;
+
delete m_primaryTask;
- delete m_script;
- m_script = 0;
+ m_primaryTask = nullptr;
+
+ delete[] m_script;
+ m_script = nullptr;
+
m_len = 0;
m_iMan->DeleteInstance(CLASS_SCRIPT, this);
@@ -2766,7 +2771,7 @@ CScript::~CScript()
void CScript::PutScript(Ui::CEdit* edit, const char* name)
{
- if ( m_script == 0 )
+ if ( m_script == nullptr )
{
New(edit, name);
}
@@ -2785,11 +2790,11 @@ bool CScript::GetScript(Ui::CEdit* edit)
{
int len;
- delete m_script;
- m_script = 0;
+ delete[] m_script;
+ m_script = nullptr;
len = edit->GetTextLength();
- m_script = static_cast<char*>(malloc(sizeof(char)*(len+1)));
+ m_script = new char[len+1];
edit->GetText(m_script, len+1);
edit->GetCursor(m_cursor2, m_cursor1);
@@ -2997,7 +3002,7 @@ void CScript::SetStepMode(bool bStep)
bool CScript::Run()
{
if( m_botProg == 0 ) return false;
- if ( m_script == 0 || m_len == 0 ) return false;
+ if ( m_script == nullptr || m_len == 0 ) return false;
if ( !m_botProg->Start(m_title) ) return false;
@@ -3475,9 +3480,9 @@ bool CScript::IntroduceVirus()
start = found[i+1];
i = found[i+0];
- newScript = static_cast<char*>(malloc(sizeof(char)*(m_len+strlen(names[i+1])+1)));
+ newScript = new char[m_len+strlen(names[i+1])+1];
strcpy(newScript, m_script);
- delete m_script;
+ delete[] m_script;
m_script = newScript;
DeleteToken(m_script, start, strlen(names[i]));
@@ -3638,7 +3643,7 @@ void CScript::New(Ui::CEdit* edit, const char* name)
bool CScript::SendScript(char* text)
{
m_len = strlen(text);
- m_script = static_cast<char*>(malloc(sizeof(char)*(m_len+1)));
+ m_script = new char[m_len+1];
strcpy(m_script, text);
if ( !CheckToken() ) return false;
if ( !Compile() ) return false;
@@ -3669,8 +3674,8 @@ bool CScript::ReadScript(const char* filename)
if ( file == NULL ) return false;
fclose(file);
- delete m_script;
- m_script = 0;
+ delete[] m_script;
+ m_script = nullptr;
edit = m_interface->CreateEdit(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 0, EVENT_EDIT9);
edit->SetMaxChar(Ui::EDITSTUDIOMAX);
@@ -3697,7 +3702,7 @@ bool CScript::WriteScript(const char* filename)
name = filename;
}
- if ( m_script == 0 )
+ if ( m_script == nullptr )
{
remove(filename);
return false;
diff --git a/src/sound/oalsound/alsound.cpp b/src/sound/oalsound/alsound.cpp
index 0201417..f683a62 100644
--- a/src/sound/oalsound/alsound.cpp
+++ b/src/sound/oalsound/alsound.cpp
@@ -296,6 +296,8 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc
GetLogger()->Warn("Sound %d was not loaded!\n", sound);
return -1;
}
+
+ GetLogger()->Trace("ALSound::Play sound: %d volume: %f frequency: %f\n", sound, amplitude, frequency);
int channel;
bool bAlreadyLoaded;
@@ -308,12 +310,12 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc
Position(channel, pos);
// setting initial values
- mChannels[channel]->SetStartAmplitude(amplitude);
+ mChannels[channel]->SetStartAmplitude(mAudioVolume);
mChannels[channel]->SetStartFrequency(frequency);
mChannels[channel]->SetChangeFrequency(1.0f);
mChannels[channel]->ResetOper();
- mChannels[channel]->AdjustFrequency(frequency);
- mChannels[channel]->AdjustVolume(mAudioVolume);
+ mChannels[channel]->AdjustFrequency(frequency);
+ mChannels[channel]->AdjustVolume(amplitude * mAudioVolume);
mChannels[channel]->Play();
return channel;
}
@@ -451,17 +453,17 @@ void ALSound::FrameMove(float delta)
it.second->AdjustVolume(volume * mAudioVolume);
// setting frequency
- frequency = progress * (oper.finalFrequency - it.second->GetStartFrequency()) * it.second->GetStartFrequency() * it.second->GetChangeFrequency();
+ frequency = progress * abs(oper.finalFrequency - it.second->GetStartFrequency()) * it.second->GetStartFrequency() * it.second->GetChangeFrequency();
it.second->AdjustFrequency(frequency);
if (it.second->GetEnvelope().totalTime <= it.second->GetCurrentTime()) {
if (oper.nextOper == SOPER_LOOP) {
- GetLogger()->Trace("Sound oper: replay.\n");
+ GetLogger()->Trace("ALSound::FrameMove oper: replay.\n");
it.second->SetCurrentTime(0.0f);
it.second->Play();
} else {
- GetLogger()->Trace("Sound oper: next.\n");
+ GetLogger()->Trace("ALSound::FrameMove oper: next.\n");
it.second->SetStartAmplitude(oper.finalAmplitude);
it.second->SetStartFrequency(oper.finalFrequency);
it.second->PopEnvelope();
diff --git a/src/sound/oalsound/channel.cpp b/src/sound/oalsound/channel.cpp
index 2285414..7d8244b 100644
--- a/src/sound/oalsound/channel.cpp
+++ b/src/sound/oalsound/channel.cpp
@@ -39,7 +39,7 @@ Channel::~Channel() {
alSourcei(mSource, AL_BUFFER, 0);
alDeleteSources(1, &mSource);
if (alCheck())
- GetLogger()->Warn("Failed to delete sound source. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Failed to delete sound source. Code: %d\n", alGetCode());
}
}
@@ -50,7 +50,7 @@ bool Channel::Play() {
alSourcePlay(mSource);
if (alCheck())
- GetLogger()->Warn("Could not play audio sound source. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not play audio sound source. Code: %d\n", alGetCode());
return true;
}
@@ -61,7 +61,7 @@ bool Channel::SetPosition(Math::Vector pos) {
alSource3f(mSource, AL_POSITION, pos.x, pos.y, pos.z);
if (alCheck()) {
- GetLogger()->Warn("Could not set sound position. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not set sound position. Code: %d\n", alGetCode());
return false;
}
return true;
@@ -75,7 +75,7 @@ bool Channel::SetFrequency(float freq)
alSourcef(mSource, AL_PITCH, freq);
if (alCheck()) {
- GetLogger()->Warn("Could not set sound pitch. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not set sound pitch to '%f'. Code: %d\n", freq, alGetCode());
return false;
}
return true;
@@ -90,7 +90,7 @@ float Channel::GetFrequency()
alGetSourcef(mSource, AL_PITCH, &freq);
if (alCheck()) {
- GetLogger()->Warn("Could not get sound pitch. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not get sound pitch. Code: %d\n", alGetCode());
return 0;
}
@@ -105,7 +105,7 @@ bool Channel::SetVolume(float vol)
alSourcef(mSource, AL_GAIN, vol / MAXVOLUME);
if (alCheck()) {
- GetLogger()->Warn("Could not set sound volume. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not set sound volume to '%f'. Code: %d\n", vol, alGetCode());
return false;
}
return true;
@@ -120,7 +120,7 @@ float Channel::GetVolume()
alGetSourcef(mSource, AL_GAIN, &vol);
if (alCheck()) {
- GetLogger()->Warn("Could not get sound volume. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not get sound volume. Code: %d\n", alGetCode());
return 0;
}
@@ -213,7 +213,7 @@ bool Channel::SetBuffer(Buffer *buffer) {
mBuffer = buffer;
alSourcei(mSource, AL_BUFFER, buffer->GetBuffer());
if (alCheck()) {
- GetLogger()->Warn("Could not set sound buffer. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not set sound buffer. Code: %d\n", alGetCode());
return false;
}
mInitFrequency = GetFrequency();
@@ -237,7 +237,7 @@ bool Channel::IsPlaying() {
alGetSourcei(mSource, AL_SOURCE_STATE, &status);
if (alCheck()) {
- GetLogger()->Warn("Could not get sound status. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not get sound status. Code: %d\n", alGetCode());
return false;
}
@@ -253,7 +253,7 @@ bool Channel::IsReady() {
bool Channel::Stop() {
alSourceStop(mSource);
if (alCheck()) {
- GetLogger()->Warn("Could not stop sound. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not stop sound. Code: %d\n", alGetCode());
return false;
}
return true;
@@ -265,7 +265,7 @@ float Channel::GetCurrentTime()
ALfloat current;
alGetSourcef(mSource, AL_SEC_OFFSET, &current);
if (alCheck()) {
- GetLogger()->Warn("Could not get source current play time. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not get source current play time. Code: %d\n", alGetCode());
return 0.0f;
}
return current;
@@ -276,7 +276,7 @@ void Channel::SetCurrentTime(float current)
{
alSourcef(mSource, AL_SEC_OFFSET, current);
if (alCheck())
- GetLogger()->Warn("Could not get source current play time. Code: %s\n", alGetCode());
+ GetLogger()->Warn("Could not get source current play time. Code: %d\n", alGetCode());
}
diff --git a/src/sound/sound.h b/src/sound/sound.h
index 566f415..518e2ad 100644
--- a/src/sound/sound.h
+++ b/src/sound/sound.h
@@ -168,7 +168,7 @@ class CSoundInterface
* Function calls \link CSoundInterface::Cache() \endlink for each file
*/
inline void CacheAll(std::string path) {
- for ( int i = 1; i < 69; i++ ) {
+ for ( int i = 1; i <= 81; i++ ) {
std::stringstream filename;
filename << path << "/sound" << std::setfill('0') << std::setw(3) << i << ".wav";
if ( !Cache(static_cast<Sound>(i), filename.str()) )
diff --git a/src/ui/edit.cpp b/src/ui/edit.cpp
index e14b19d..639215a 100644
--- a/src/ui/edit.cpp
+++ b/src/ui/edit.cpp
@@ -243,7 +243,7 @@ bool CEdit::EventProcess(const Event &event)
Scroll(m_lineFirst-3, true);
return true;
}
- if (event.type == EVENT_KEY_DOWN &&
+ if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mousePos) )
{
@@ -282,7 +282,7 @@ bool CEdit::EventProcess(const Event &event)
}
}
- if ( m_scroll != 0 && !m_bGeneric )
+ if ( m_scroll != nullptr && !m_bGeneric )
{
m_scroll->EventProcess(event);
@@ -1248,7 +1248,7 @@ void CEdit::SetText(const char *text, bool bNew)
{
int i, j, font;
bool bBOL;
-
+
if ( !bNew ) UndoMemorize(OPERUNDO_SPEC);
m_len = strlen(text);
@@ -2172,11 +2172,11 @@ void CEdit::Scroll()
{
float value;
- if ( m_scroll != 0 )
+ if ( m_scroll != nullptr )
{
value = m_scroll->GetVisibleValue();
- value *= m_lineTotal-m_lineVisible;
- Scroll(static_cast<int>(value+0.5f), true);
+ value *= m_lineTotal - m_lineVisible;
+ Scroll(static_cast<int>(value + 0.5f), true);
}
}
@@ -3048,7 +3048,7 @@ bool CEdit::MinMaj(bool bMaj)
void CEdit::Justif()
{
- float width, value, size, indentLength;
+ float width, size, indentLength;
int i, j, line, indent;
bool bDual, bString, bRem;
@@ -3176,26 +3176,7 @@ void CEdit::Justif()
m_lineFirst = 0;
}
- if ( m_scroll != 0 )
- {
- if ( m_lineTotal <= m_lineVisible )
- {
- m_scroll->SetVisibleRatio(1.0f);
- m_scroll->SetVisibleValue(0.0f);
- m_scroll->SetArrowStep(0.0f);
- }
- else
- {
- value = static_cast<float>(m_lineVisible/m_lineTotal);
- m_scroll->SetVisibleRatio(value);
-
- value = static_cast<float>(m_lineFirst/(m_lineTotal-m_lineVisible));
- m_scroll->SetVisibleValue(value);
-
- value = static_cast<float>(1.0f/(m_lineTotal-m_lineVisible));
- m_scroll->SetArrowStep(value);
- }
- }
+ UpdateScroll();
m_timeBlink = 0.0f; // lights the cursor immediately
}
@@ -3326,5 +3307,30 @@ bool CEdit::SetFormat(int cursor1, int cursor2, int format)
return true;
}
+void CEdit::UpdateScroll()
+{
+ float value;
+
+ if ( m_scroll != nullptr )
+ {
+ if ( m_lineTotal <= m_lineVisible )
+ {
+ m_scroll->SetVisibleRatio(1.0f);
+ m_scroll->SetVisibleValue(0.0f);
+ m_scroll->SetArrowStep(0.0f);
+ }
+ else
+ {
+ value = static_cast<float>(m_lineVisible) / m_lineTotal;
+ m_scroll->SetVisibleRatio(value);
+
+ value = static_cast<float>(m_lineFirst) / (m_lineTotal - m_lineVisible);
+ m_scroll->SetVisibleValue(value);
+
+ value = 1.0f / (m_lineTotal - m_lineVisible);
+ m_scroll->SetArrowStep(value);
+ }
+ }
+}
}
diff --git a/src/ui/edit.h b/src/ui/edit.h
index 35d8b2c..7247181 100644
--- a/src/ui/edit.h
+++ b/src/ui/edit.h
@@ -234,6 +234,8 @@ protected:
void UndoFlush();
void UndoMemorize(OperUndo oper);
bool UndoRecall();
+
+ void UpdateScroll();
protected:
CScroll* m_scroll; // vertical scrollbar on the right
diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index ebf7d10..68e7854 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -4305,8 +4305,8 @@ void CMainDialog::IOReadName()
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/ );
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar() );
if ( Cmd(line, op) )
{
OpString(line, "resume", resume);
@@ -4701,8 +4701,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
}
}
- /* TODO: language letters */
- sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4748,8 +4748,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E'/*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4851,8 +4851,8 @@ void CMainDialog::UpdateSceneList(int chap, int &sel)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4996,8 +4996,8 @@ void CMainDialog::UpdateSceneResume(int rank)
}
}
- // TODO: language letters
- sprintf(op, "Resume.%c", 'E' /*MAX_FNAME()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);