Merge of master and dev

dev-ui
Piotr Dziwinski 2012-12-29 15:01:57 +01:00
parent cf65681f80
commit a134cb75c5
29 changed files with 1088 additions and 346 deletions

View File

@ -7,6 +7,32 @@ cmake_minimum_required(VERSION 2.8)
project(colobot C CXX) 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 # Include cmake directory with some additional scripts
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake")
@ -127,7 +153,7 @@ if(${TESTS})
add_definitions(-DTEST_VIRTUAL=virtual) add_definitions(-DTEST_VIRTUAL=virtual)
enable_testing() enable_testing()
else() else()
add_definitions(-DTEST_VIRTUAL) add_definitions(-DTEST_VIRTUAL=)
endif() endif()
@ -183,11 +209,11 @@ if(${TESTS})
endif() endif()
# Installation paths defined before compiling sources # Installation paths defined before compiling sources
set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory") set(COLOBOT_INSTALL_BIN_DIR 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_DATA_DIR 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_LIB_DIR 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_DOC_DIR 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_I18N_DIR share/locale CACHE PATH "Colobot translations directory")
# Subdirectory with sources # Subdirectory with sources
add_subdirectory(src bin) add_subdirectory(src bin)

View File

@ -127,7 +127,8 @@ CBotString::CBotString()
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; m_ptr = NULL;
if (m_lg>0) if (m_lg>0)
{ {
m_ptr = static_cast<char*>(malloc(m_lg+1)); m_ptr = new char[m_lg+1];
strcpy(m_ptr, p); strcpy(m_ptr, p);
} }
} }
@ -150,7 +151,7 @@ CBotString::CBotString(const CBotString& srcString)
m_ptr = NULL; m_ptr = NULL;
if (m_lg>0) 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); strcpy(m_ptr, srcString.m_ptr);
} }
} }
@ -285,12 +286,12 @@ CBotString CBotString::Mid(int start, int lg)
if ( lg < 0 ) lg = m_lg - start; 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); strcpy(p, m_ptr+start);
p[lg] = 0; p[lg] = 0;
res = p; res = p;
free(p); delete[] p;
return res; return res;
} }
@ -314,15 +315,16 @@ void CBotString::MakeLower()
bool CBotString::LoadString(unsigned int id) bool CBotString::LoadString(unsigned int id)
{ {
const char * str = NULL; const char * str = nullptr;
str = MapIdToString(static_cast<EID>(id)); 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_lg = strlen(str);
m_ptr = NULL; m_ptr = NULL;
if (m_lg > 0) if (m_lg > 0)
{ {
m_ptr = static_cast<char*>(malloc(m_lg+1)); m_ptr = new char[m_lg+1];
strcpy(m_ptr, str); strcpy(m_ptr, str);
return true; return true;
} }
@ -332,14 +334,14 @@ bool CBotString::LoadString(unsigned int id)
const CBotString& CBotString::operator=(const CBotString& stringSrc) const CBotString& CBotString::operator=(const CBotString& stringSrc)
{ {
free(m_ptr); delete[] m_ptr;
m_ptr = NULL; m_ptr = nullptr;
m_lg = stringSrc.m_lg; m_lg = stringSrc.m_lg;
if (m_lg > 0) 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); 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) 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); if (m_ptr!=NULL) strcpy(p, m_ptr);
char* pp = p + m_lg; char* pp = p + m_lg;
if (stringSrc.m_ptr!=NULL) strcpy(pp, stringSrc.m_ptr); if (stringSrc.m_ptr!=NULL) strcpy(pp, stringSrc.m_ptr);
free(m_ptr); delete[] m_ptr;
m_ptr = p; m_ptr = p;
m_lg += stringSrc.m_lg; m_lg += stringSrc.m_lg;
@ -370,11 +372,11 @@ const CBotString& CBotString::operator+(const CBotString& stringSrc)
const CBotString& CBotString::operator=(const char ch) const CBotString& CBotString::operator=(const char ch)
{ {
free(m_ptr); delete[] m_ptr;
m_lg = 1; m_lg = 1;
m_ptr = static_cast<char*>(malloc(2)); m_ptr = new char[2];
m_ptr[0] = ch; m_ptr[0] = ch;
m_ptr[1] = 0; m_ptr[1] = 0;
@ -383,16 +385,16 @@ const CBotString& CBotString::operator=(const char ch)
const CBotString& CBotString::operator=(const char* pString) const CBotString& CBotString::operator=(const char* pString)
{ {
free(m_ptr); delete[] m_ptr;
m_ptr = NULL; m_ptr = nullptr;
if (pString != NULL) if (pString != nullptr)
{ {
m_lg = strlen(pString); m_lg = strlen(pString);
if (m_lg != 0) if (m_lg != 0)
{ {
m_ptr = static_cast<char*>(malloc(m_lg+1)); m_ptr = new char[m_lg+1];
strcpy(m_ptr, pString); strcpy(m_ptr, pString);
} }
} }
@ -403,13 +405,13 @@ const CBotString& CBotString::operator=(const char* pString)
const CBotString& CBotString::operator+=(const char ch) 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++] = ch;
p[m_lg] = 0; p[m_lg] = 0;
free(m_ptr); delete[] m_ptr;
m_ptr = p; m_ptr = p;
@ -418,7 +420,7 @@ const CBotString& CBotString::operator+=(const char ch)
const CBotString& CBotString::operator+=(const CBotString& str) 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); strcpy(p, m_ptr);
char* pp = p + m_lg; char* pp = p + m_lg;
@ -426,7 +428,7 @@ const CBotString& CBotString::operator+=(const CBotString& str)
m_lg = m_lg + str.m_lg; m_lg = m_lg + str.m_lg;
free(m_ptr); delete[] m_ptr;
m_ptr = p; m_ptr = p;
@ -500,8 +502,8 @@ bool CBotString::IsEmpty() const
void CBotString::Empty() void CBotString::Empty()
{ {
free(m_ptr); delete[] m_ptr;
m_ptr = NULL; m_ptr = nullptr;
m_lg = 0; m_lg = 0;
} }

View File

@ -246,7 +246,7 @@ ParseArgsStatus CApplication::ParseArguments(int argc, char *argv[])
else if (arg == "-help") else if (arg == "-help")
{ {
GetLogger()->Message("\n"); 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("\n");
GetLogger()->Message("List of available options:\n"); GetLogger()->Message("List of available options:\n");
GetLogger()->Message(" -help this help\n"); GetLogger()->Message(" -help this help\n");
@ -285,67 +285,32 @@ bool CApplication::Create()
return false; return false;
} }
/* Gettext initialization */ SetLanguage(m_language);
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!"));
//Create the sound instance. //Create the sound instance.
if (!GetProfile().InitCurrentDirectory()) { if (!GetProfile().InitCurrentDirectory())
{
GetLogger()->Warn("Config not found. Default values will be used!\n"); GetLogger()->Warn("Config not found. Default values will be used!\n");
m_sound = new CSoundInterface(); m_sound = new CSoundInterface();
} else { }
else
{
std::string path; std::string path;
if (GetProfile().GetLocalProfileString("Resources", "Data", path)) if (GetProfile().GetLocalProfileString("Resources", "Data", path))
m_dataPath = path; m_dataPath = path;
#ifdef OPENAL_SOUND #ifdef OPENAL_SOUND
m_sound = static_cast<CSoundInterface *>(new ALSound()); m_sound = static_cast<CSoundInterface *>(new ALSound());
#else #else
GetLogger()->Info("No sound support.\n"); GetLogger()->Info("No sound support.\n");
m_sound = new CSoundInterface(); m_sound = new CSoundInterface();
#endif #endif
m_sound->Create(true); m_sound->Create(true);
if (GetProfile().GetLocalProfileString("Resources", "Sound", path)) if (GetProfile().GetLocalProfileString("Resources", "Sound", path))
m_sound->CacheAll(path); m_sound->CacheAll(path);
else else
m_sound->CacheAll(m_dataPath); m_sound->CacheAll(GetDataSubdirPath(DIR_SOUND));
} }
std::string standardInfoMessage = std::string standardInfoMessage =
@ -1418,9 +1383,20 @@ std::string CApplication::GetDataDirPath()
return m_dataPath; 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];
return str.str();
}
std::string CApplication::GetDataFilePath(DataDir stdDir, const std::string& subpath)
{
int index = static_cast<int>(stdDir);
assert(index >= 0 && index < DIR_MAX); assert(index >= 0 && index < DIR_MAX);
std::stringstream str; std::stringstream str;
str << m_dataPath; str << m_dataPath;
@ -1431,23 +1407,104 @@ std::string CApplication::GetDataFilePath(DataDir dataDir, const std::string& su
return str.str(); return str.str();
} }
std::string CApplication::GetDataFilePath(const std::string& subpath)
{
std::stringstream str;
str << m_dataPath;
str << "/";
str << subpath;
return str.str();
}
Language CApplication::GetLanguage() Language CApplication::GetLanguage()
{ {
return m_language; 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) void CApplication::SetLanguage(Language language)
{ {
m_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) void CApplication::SetLowCPU(bool low)

View File

@ -285,15 +285,16 @@ public:
//! Returns the full path to data directory //! Returns the full path to data directory
std::string GetDataDirPath(); std::string GetDataDirPath();
//! Returns the full path to a file in data directory given standard dir and subpath //! Returns the full path to a standard dir in data directory
std::string GetDataFilePath(DataDir dir, const std::string &subpath); std::string GetDataSubdirPath(DataDir stdDir);
//! Returns the full path to a file in data directory given custom subpath in data dir //! Returns the full path to a file in data directory given standard dir and subpath
std::string GetDataFilePath(const std::string &subpath); std::string GetDataFilePath(DataDir stdDir, const std::string &subpath);
//! Management of language //! Management of language
//@{ //@{
Language GetLanguage(); Language GetLanguage();
char GetLanguageChar();
void SetLanguage(Language language); void SetLanguage(Language language);
//@} //@}

View File

@ -8,6 +8,10 @@
#cmakedefine USE_GLEW @USE_GLEW@ #cmakedefine USE_GLEW @USE_GLEW@
#cmakedefine GLEW_STATIC #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_DEFAULT_DATADIR "@COLOBOT_INSTALL_DATA_DIR@"
#define COLOBOT_I18N_DIR "@COLOBOT_INSTALL_I18N_DIR@" #define COLOBOT_I18N_DIR "@COLOBOT_INSTALL_I18N_DIR@"

View File

@ -124,14 +124,14 @@ bool PNGSaveSurface(const char *filename, SDL_Surface *surf)
png_write_info(png_ptr, info_ptr); png_write_info(png_ptr, info_ptr);
png_set_packing(png_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++) for (i = 0; i < surf->h; i++)
row_pointers[i] = static_cast<png_bytep>( static_cast<Uint8 *>(surf->pixels) ) + i*surf->pitch; row_pointers[i] = static_cast<png_bytep>( static_cast<Uint8 *>(surf->pixels) ) + i*surf->pitch;
png_write_image(png_ptr, row_pointers); png_write_image(png_ptr, row_pointers);
png_write_end(png_ptr, info_ptr); png_write_end(png_ptr, info_ptr);
/* Cleaning out... */ /* Cleaning out... */
free(row_pointers); delete[] row_pointers;
png_destroy_write_struct(&png_ptr, &info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr);
fclose(fp); fclose(fp);

View File

@ -17,6 +17,8 @@
#include "common/restext.h" #include "common/restext.h"
#include "common/config.h"
#include "common/global.h" #include "common/global.h"
#include "common/event.h" #include "common/event.h"
#include "common/logger.h" #include "common/logger.h"
@ -39,7 +41,7 @@ const char* stringsCbot[TX_MAX] = { nullptr };
void InitializeRestext() void InitializeRestext()
{ {
stringsText[RT_VERSION_ID] = "Colobot Gold"; stringsText[RT_VERSION_ID] = COLOBOT_FULLNAME;
stringsText[RT_DISINFO_TITLE] = "SatCom"; stringsText[RT_DISINFO_TITLE] = "SatCom";
stringsText[RT_WINDOW_MAXIMIZED] = "Maximize"; stringsText[RT_WINDOW_MAXIMIZED] = "Maximize";

1
src/desktop/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
lang/

View File

@ -37,6 +37,41 @@ if(RSVG_CONVERT)
endforeach() endforeach()
endif() 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 # Translate translatable material
find_program(PO4A po4a) find_program(PO4A po4a)
@ -46,4 +81,17 @@ if(PO4A)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
) )
add_dependencies(desktopfile desktop_po4a) 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() endif()

47
src/desktop/colobot.pod Normal file
View File

@ -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>>.

View File

@ -7,13 +7,13 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
#: colobot.ini:1 #: colobot.ini:1
@ -30,3 +30,105 @@ msgstr ""
#, no-wrap #, no-wrap
msgid "Colonize with bots" msgid "Colonize with bots"
msgstr "" 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 ""

View File

@ -1,13 +1,13 @@
# French translations for PACKAGE package # French translations for PACKAGE package
# Copyright (C) 2012 Free Software Foundation, Inc. # Copyright (C) 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2012.
# #
# Didier Raboud <odyx@debian.org>, 2012.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2012-12-26 15:05+0100\n" "POT-Creation-Date: 2012-12-27 10:55+0100\n"
"PO-Revision-Date: 2012-12-26 15:05+0100\n" "PO-Revision-Date: 2012-12-27 11:00+0100\n"
"Last-Translator: Didier Raboud <odyx@debian.org>\n" "Last-Translator: Didier Raboud <odyx@debian.org>\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: fr\n" "Language: fr\n"
@ -30,3 +30,124 @@ msgstr "Apprentissage de la programmation par le jeu"
#, no-wrap #, no-wrap
msgid "Colonize with bots" msgid "Colonize with bots"
msgstr "Colonise avec des roBots" 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>>."

View File

@ -1,3 +1,4 @@
[po_directory] po/ [po_directory] po/
[type:ini] colobot.ini $lang:lang/$lang/colobot.ini [type:ini] colobot.ini $lang:lang/$lang/colobot.ini
[type:pod] colobot.pod $lang:lang/$lang/colobot.pod

View File

@ -677,7 +677,7 @@ void CText::DrawCharAndAdjustPos(UTF8Char ch, FontType font, float size, Math::P
return; return;
int width = 1; 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.c1 = ' ';
ch.c2 = 0; ch.c2 = 0;
ch.c3 = 0; ch.c3 = 0;

View File

@ -99,7 +99,7 @@ CBrain::CBrain(CInstanceManager* iMan, CObject* object)
m_selScript = 0; m_selScript = 0;
m_bTraceRecord = false; m_bTraceRecord = false;
m_traceRecordBuffer = 0; m_traceRecordBuffer = nullptr;
} }
// Object's destructor. // Object's destructor.
@ -111,12 +111,21 @@ CBrain::~CBrain()
for ( i=0 ; i<BRAINMAXSCRIPT ; i++ ) for ( i=0 ; i<BRAINMAXSCRIPT ; i++ )
{ {
delete m_script[i]; delete m_script[i];
m_script[i] = nullptr;
} }
delete m_primaryTask; delete m_primaryTask;
m_primaryTask = nullptr;
delete m_secondaryTask; delete m_secondaryTask;
m_secondaryTask = nullptr;
delete m_studio; delete m_studio;
delete m_traceRecordBuffer; m_studio = nullptr;
delete[] m_traceRecordBuffer;
m_traceRecordBuffer = nullptr;
m_iMan->DeleteInstance(CLASS_BRAIN, this); m_iMan->DeleteInstance(CLASS_BRAIN, this);
} }
@ -2791,8 +2800,8 @@ void CBrain::TraceRecordStart()
m_traceColor = -1; m_traceColor = -1;
} }
delete m_traceRecordBuffer; delete[] m_traceRecordBuffer;
m_traceRecordBuffer = static_cast<TraceRecord*>(malloc(sizeof(TraceRecord)*MAXTRACERECORD)); m_traceRecordBuffer = new TraceRecord[MAXTRACERECORD];
m_traceRecordIndex = 0; m_traceRecordIndex = 0;
} }
@ -2858,10 +2867,10 @@ void CBrain::TraceRecordStop()
int max, i; int max, i;
char* buffer; char* buffer;
if ( m_traceRecordBuffer == 0 ) return; if ( m_traceRecordBuffer == nullptr ) return;
max = 10000; max = 10000;
buffer = static_cast<char*>(malloc(max)); buffer = new char[max];
*buffer = 0; *buffer = 0;
strncat(buffer, "extern void object::AutoDraw()\n{\n", max-1); strncat(buffer, "extern void object::AutoDraw()\n{\n", max-1);
@ -2892,8 +2901,8 @@ void CBrain::TraceRecordStop()
} }
TraceRecordPut(buffer, max, lastOper, lastParam); TraceRecordPut(buffer, max, lastOper, lastParam);
delete m_traceRecordBuffer; delete[] m_traceRecordBuffer;
m_traceRecordBuffer = 0; m_traceRecordBuffer = nullptr;
strncat(buffer, "}\n", max-1); strncat(buffer, "}\n", max-1);
buffer[max-1] = 0; 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] = new CScript(m_iMan, m_object, &m_secondaryTask);
} }
m_script[i]->SendScript(buffer); m_script[i]->SendScript(buffer);
delete buffer; delete[] buffer;
} }
// Saves an instruction CBOT. // Saves an instruction CBOT.

View File

@ -3808,16 +3808,16 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
} }
} }
// TODO: language letters // TODO: Fallback to an non-localized entry
sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/); sprintf(op, "Title.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject) if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_title); OpString(line, "text", m_title);
sprintf(op, "Resume.%c", 'E' /*GetLanguageLetter()*/); sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject) if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_resume); OpString(line, "text", m_resume);
sprintf(op, "ScriptName.%c", 'E' /*GetLanguageLetter()*/); sprintf(op, "ScriptName.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject) if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_scriptName); OpString(line, "text", m_scriptName);

View File

@ -2119,7 +2119,7 @@ bool CTaskGoto::BitmapOpen()
BitmapClose(); BitmapClose();
m_bmSize = static_cast<int>(3200.0f/BM_DIM_STEP); 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); memset(m_bmArray, 0, m_bmSize*m_bmSize/8*2);
m_bmOffset = m_bmSize/2; m_bmOffset = m_bmSize/2;
@ -2137,7 +2137,7 @@ bool CTaskGoto::BitmapOpen()
bool CTaskGoto::BitmapClose() bool CTaskGoto::BitmapClose()
{ {
free(m_bmArray); delete[] m_bmArray;
m_bmArray = 0; m_bmArray = 0;
return true; return true;
} }

View File

@ -6,14 +6,13 @@ find_program(XGETTEXT_CMD xgettext)
add_custom_command(OUTPUT ${_potFile} add_custom_command(OUTPUT ${_potFile}
COMMAND ${XGETTEXT_CMD} ../app/app.cpp --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} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Extract translatable messages to ${_potFile}" COMMENT "Extract translatable messages to ${_potFile}"
) )
add_custom_target(_${potFile} ${_all} DEPENDS ${_potFile}) add_custom_target(update-pot DEPENDS ${_potFile})
file(GLOB _poFiles *.po) file(GLOB _poFiles *.po)
gettext_create_translations(${_potFile} ALL ${_poFiles}) gettext_create_translations(${_potFile} ALL ${_poFiles})

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,9 +20,6 @@ msgstr ""
msgid "Colobot rules!" msgid "Colobot rules!"
msgstr "" msgstr ""
msgid "Colobot Gold"
msgstr ""
msgid "SatCom" msgid "SatCom"
msgstr "" msgstr ""
@ -1436,7 +1433,7 @@ msgstr ""
msgid "Program infected by a virus" msgid "Program infected by a virus"
msgstr "" msgstr ""
msgid "Infected by a virus, temporarily out of order" msgid "Infected by a virus; temporarily out of order"
msgstr "" msgstr ""
msgid "Impossible when swimming" msgid "Impossible when swimming"
@ -1464,7 +1461,7 @@ msgstr ""
msgid "Building destroyed" msgid "Building destroyed"
msgstr "" msgstr ""
msgid "Can not create this, there are too many objects" msgid "Can not create this; there are too many objects"
msgstr "" msgstr ""
#, c-format #, c-format
@ -1528,10 +1525,10 @@ msgstr ""
msgid "Found a site for a derrick" msgid "Found a site for a derrick"
msgstr "" msgstr ""
msgid "<<< Well done, mission accomplished >>>" msgid "<<< Well done; mission accomplished >>>"
msgstr "" msgstr ""
msgid "<<< Sorry, mission failed >>>" msgid "<<< Sorry; mission failed >>>"
msgstr "" msgstr ""
msgid "Current mission saved" msgid "Current mission saved"
@ -1612,7 +1609,7 @@ msgstr ""
msgid "Instruction \"break\" outside a loop" msgid "Instruction \"break\" outside a loop"
msgstr "" 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 "" msgstr ""
msgid "This label does not exist" msgid "This label does not exist"
@ -1734,3 +1731,88 @@ msgstr ""
msgid "Write error" msgid "Write error"
msgstr "" 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 ""

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -64,6 +64,9 @@ msgstr "Es fehlt eine geschlossene eckige Klammer \" ] \""
msgid "\"%s\" missing in this exercise" msgid "\"%s\" missing in this exercise"
msgstr "Es fehlt \"%s\" in Ihrem Programm" msgstr "Es fehlt \"%s\" in Ihrem Programm"
msgid "%1"
msgstr ""
msgid "..behind" msgid "..behind"
msgstr "..hinten" msgstr "..hinten"
@ -85,13 +88,16 @@ msgstr "3D-Geräusche\\Orten der Geräusche im Raum"
msgid "<< Back \\Back to the previous screen" msgid "<< Back \\Back to the previous screen"
msgstr "<< Zurück \\Zurück zum Hauptmenü" msgstr "<< Zurück \\Zurück zum Hauptmenü"
msgid "<<< Sorry, mission failed >>>" #, fuzzy
msgid "<<< Sorry; mission failed >>>"
msgstr "<<< Mission gescheitert >>>" msgstr "<<< Mission gescheitert >>>"
msgid "<<< Well done, mission accomplished >>>" #, fuzzy
msgid "<<< Well done; mission accomplished >>>"
msgstr "<<< Bravo, Mission vollendet >>>" 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 "" msgstr ""
"Ein Label kann nur vor den Anweisungen \"for\", \"while\", \"do\" oder " "Ein Label kann nur vor den Anweisungen \"for\", \"while\", \"do\" oder "
"\"switch\" vorkommen" "\"switch\" vorkommen"
@ -122,6 +128,9 @@ msgstr "Insektenkönigin tödlich verwundet"
msgid "Already carrying something" msgid "Already carrying something"
msgstr "Trägt schon etwas" msgstr "Trägt schon etwas"
msgid "Alt"
msgstr "Alt"
msgid "Analysis already performed" msgid "Analysis already performed"
msgstr "Analyse schon durchgeführt" msgstr "Analyse schon durchgeführt"
@ -299,6 +308,9 @@ msgstr "Gebäude zerstört"
msgid "Building too close" msgid "Building too close"
msgstr "Gebäude zu nahe" msgstr "Gebäude zu nahe"
msgid "Button %1"
msgstr "Knopf %1"
msgid "COLOBOT" msgid "COLOBOT"
msgstr "COLOBOT" msgstr "COLOBOT"
@ -326,7 +338,8 @@ msgstr "Kamera links"
msgid "Camera to right" msgid "Camera to right"
msgstr "Kamera rechts" 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)" msgstr "Kein neues Objekt kann erstellt werden (zu viele vorhanden)"
msgid "Can't open file" msgid "Can't open file"
@ -365,9 +378,6 @@ msgstr "Schließen"
msgid "Closing bracket missing " msgid "Closing bracket missing "
msgstr "Es fehlt eine geschlossene Klammer \")\"" msgstr "Es fehlt eine geschlossene Klammer \")\""
msgid "Colobot Gold"
msgstr "Colobot Gold"
msgid "Colobot rules!" msgid "Colobot rules!"
msgstr "Colobot ist wunderbar!" msgstr "Colobot ist wunderbar!"
@ -404,6 +414,9 @@ msgstr "Kopieren"
msgid "Copy (Ctrl+c)" msgid "Copy (Ctrl+c)"
msgstr "Kopieren (Ctrl+c)" msgstr "Kopieren (Ctrl+c)"
msgid "Ctrl"
msgstr "Ctrl"
msgid "Current mission saved" msgid "Current mission saved"
msgstr "Mission gespeichert" msgstr "Mission gespeichert"
@ -610,6 +623,10 @@ msgstr "Spiel\\Gameplay Einstellungen"
msgid "Gantry crane" msgid "Gantry crane"
msgstr "Träger" msgstr "Träger"
#, c-format
msgid "GetResource event num out of range: %d\n"
msgstr ""
msgid "Goto: destination occupied" msgid "Goto: destination occupied"
msgstr "Ziel ist schon besetzt" msgstr "Ziel ist schon besetzt"
@ -682,7 +699,8 @@ msgstr "Falscher Batterietyp"
msgid "Incorrect index type" msgid "Incorrect index type"
msgstr "Falscher Typ für einen Index" 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" msgstr "Von Virus infiziert, zeitweise außer Betrieb"
msgid "Information exchange post" msgid "Information exchange post"
@ -1256,6 +1274,9 @@ msgstr "Reichweite Schutzschild"
msgid "Shielder" msgid "Shielder"
msgstr "Schutzschild" msgstr "Schutzschild"
msgid "Shift"
msgstr "Shift"
msgid "Shoot (\\key action;)" msgid "Shoot (\\key action;)"
msgstr "Feuer (\\key action;)" msgstr "Feuer (\\key action;)"
@ -1565,6 +1586,9 @@ msgstr "Shooter"
msgid "Wheeled sniffer" msgid "Wheeled sniffer"
msgstr "Schnüffler" msgstr "Schnüffler"
msgid "Win"
msgstr ""
msgid "Winged grabber" msgid "Winged grabber"
msgstr "Transporter" msgstr "Transporter"
@ -1730,6 +1754,69 @@ msgstr "\\b;Liste der Roboter\n"
msgid "\\c; (none)\\n;\n" msgid "\\c; (none)\\n;\n"
msgstr "\\c; (keine)\\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" msgid "www.epsitec.com"
msgstr "www.epsitec.com" msgstr "www.epsitec.com"
@ -1739,9 +1826,6 @@ msgstr "www.epsitec.com"
#~ msgid "<--" #~ msgid "<--"
#~ msgstr "<--" #~ msgstr "<--"
#~ msgid "Alt"
#~ msgstr "Alt"
#~ msgid "Application key" #~ msgid "Application key"
#~ msgstr "Application key" #~ msgstr "Application key"
@ -1760,9 +1844,6 @@ msgstr "www.epsitec.com"
#~ msgid "Attn" #~ msgid "Attn"
#~ msgstr "Attn" #~ msgstr "Attn"
#~ msgid "Button %1"
#~ msgstr "Knopf %1"
#~ msgid "Caps Lock" #~ msgid "Caps Lock"
#~ msgstr "Caps Lock" #~ msgstr "Caps Lock"
@ -1775,9 +1856,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel" #~ msgid "CrSel"
#~ msgstr "CrSel" #~ msgstr "CrSel"
#~ msgid "Ctrl"
#~ msgstr "Ctrl"
#~ msgid "Delete Key" #~ msgid "Delete Key"
#~ msgstr "Delete" #~ msgstr "Delete"
@ -1961,9 +2039,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select" #~ msgid "Select"
#~ msgstr "Select" #~ msgstr "Select"
#~ msgid "Shift"
#~ msgstr "Shift"
#~ msgid "Space" #~ msgid "Space"
#~ msgstr "Leertaste" #~ msgstr "Leertaste"

View File

@ -1,13 +1,18 @@
# Didier Raboud <odyx@debian.org>, 2012.
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \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: 2012-12-27 14:07+0100\n"
"Last-Translator: Didier Raboud <odyx@debian.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Language: fr_FR\n" "X-Language: fr_FR\n"
"X-Source-Language: en_US\n" "X-Source-Language: en_US\n"
"X-Generator: Lokalize 1.4\n"
msgid " " msgid " "
msgstr " " msgstr " "
@ -37,7 +42,7 @@ msgid " Missions on this planet:"
msgstr " Liste des missions du chapitre :" msgstr " Liste des missions du chapitre :"
msgid " Planets:" msgid " Planets:"
msgstr " Liste des plančtes :" msgstr " Liste des planètes :"
msgid " Prototypes on this planet:" msgid " Prototypes on this planet:"
msgstr " Liste des prototypes du chapitre :" msgstr " Liste des prototypes du chapitre :"
@ -64,8 +69,11 @@ msgstr "\" ] \" attendu"
msgid "\"%s\" missing in this exercise" msgid "\"%s\" missing in this exercise"
msgstr "Il manque \"%s\" dans le programme" msgstr "Il manque \"%s\" dans le programme"
msgid "%1"
msgstr "%1"
msgid "..behind" msgid "..behind"
msgstr "..derričre" msgstr "..derrière"
msgid "..in front" msgid "..in front"
msgstr "..devant" msgstr "..devant"
@ -74,7 +82,7 @@ msgid "..power cell"
msgstr "..pile" msgstr "..pile"
msgid "1) First click on the key you want to redefine." 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." msgid "2) Then press the key you want to use instead."
msgstr "2) Appuyez ensuite sur la nouvelle touche souhaitée." 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" msgid "<< Back \\Back to the previous screen"
msgstr "<< Retour \\Retour au niveau précédent" msgstr "<< Retour \\Retour au niveau précédent"
msgid "<<< Sorry, mission failed >>>" msgid "<<< Sorry; mission failed >>>"
msgstr "<<< Désolé, mission échouée >>>" msgstr "<<< Désolé; mission échouée >>>"
msgid "<<< Well done, mission accomplished >>>" msgid "<<< Well done; mission accomplished >>>"
msgstr "<<< Bravo, mission terminée >>>" 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 "" 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\"" "un \"switch\""
msgid "A variable can not be declared twice" 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" msgstr "Abandonner\\Abandonner la mission en cours"
msgid "Access beyond array limit" msgid "Access beyond array limit"
msgstr "Accčs hors du tableau" msgstr "Accès hors du tableau"
msgid "" msgid ""
"Access to solution\\Shows the solution (detailed instructions for missions)" "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" 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" msgid "Alien Queen"
msgstr "Pondeuse" msgstr "Pondeuse"
@ -119,16 +127,19 @@ msgid "Alien Queen killed"
msgstr "Pondeuse mortellement touchée" msgstr "Pondeuse mortellement touchée"
msgid "Already carrying something" msgid "Already carrying something"
msgstr "Porte déjŕ quelque chose" msgstr "Porte déjà quelque chose"
msgid "Alt"
msgstr "Alt"
msgid "Analysis already performed" msgid "Analysis already performed"
msgstr "Analyse déjŕ effectuée" msgstr "Analyse déjà effectuée"
msgid "Analysis performed" msgid "Analysis performed"
msgstr "Analyse terminée" msgstr "Analyse terminée"
msgid "Analyzes only organic matter" msgid "Analyzes only organic matter"
msgstr "N'analyse que la matičre organique" msgstr "N'analyse que la matière organique"
msgid "Ant" msgid "Ant"
msgstr "Fourmi" msgstr "Fourmi"
@ -149,7 +160,7 @@ msgid "Assignment impossible"
msgstr "Assignation impossible" msgstr "Assignation impossible"
msgid "Autolab" msgid "Autolab"
msgstr "Laboratoire de matičres organiques" msgstr "Laboratoire de matières organiques"
msgid "Automatic indent\\When program editing" msgid "Automatic indent\\When program editing"
msgstr "Indentation automatique\\Pendant l'édition d'un programme" msgstr "Indentation automatique\\Pendant l'édition d'un programme"
@ -164,7 +175,7 @@ msgid "Backward (\\key down;)"
msgstr "Recule (\\key down;)" msgstr "Recule (\\key down;)"
msgid "Backward\\Moves backward" msgid "Backward\\Moves backward"
msgstr "Reculer\\Moteur en arričre" msgstr "Reculer\\Moteur en arrière"
msgid "Bad argument for \"new\"" msgid "Bad argument for \"new\""
msgstr "Mauvais argument pour \"new\"" msgstr "Mauvais argument pour \"new\""
@ -203,16 +214,16 @@ msgid "Build a exchange post"
msgstr "Construit une borne d'information" msgstr "Construit une borne d'information"
msgid "Build a legged grabber" 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" msgid "Build a legged orga shooter"
msgstr "Fabrique un orgaShooter ŕ pattes" msgstr "Fabrique un orgaShooter à pattes"
msgid "Build a legged shooter" msgid "Build a legged shooter"
msgstr "Fabrique un shooter ŕ pattes" msgstr "Fabrique un shooter à pattes"
msgid "Build a legged sniffer" msgid "Build a legged sniffer"
msgstr "Fabrique un renifleur ŕ pattes" msgstr "Fabrique un renifleur à pattes"
msgid "Build a lightning conductor" msgid "Build a lightning conductor"
msgstr "Construit un paratonnerre" msgstr "Construit un paratonnerre"
@ -251,28 +262,28 @@ msgid "Build a thumper"
msgstr "Fabrique un robot secoueur" msgstr "Fabrique un robot secoueur"
msgid "Build a tracked grabber" 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" msgid "Build a tracked orga shooter"
msgstr "Fabrique un orgaShooter ŕ chenilles" msgstr "Fabrique un orgaShooter à chenilles"
msgid "Build a tracked shooter" msgid "Build a tracked shooter"
msgstr "Fabrique un shooter ŕ chenilles" msgstr "Fabrique un shooter à chenilles"
msgid "Build a tracked sniffer" msgid "Build a tracked sniffer"
msgstr "Fabrique un renifleur ŕ chenilles" msgstr "Fabrique un renifleur à chenilles"
msgid "Build a wheeled grabber" 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" msgid "Build a wheeled orga shooter"
msgstr "Fabrique un orgaShooter ŕ roues" msgstr "Fabrique un orgaShooter à roues"
msgid "Build a wheeled shooter" msgid "Build a wheeled shooter"
msgstr "Fabrique un shooter ŕ roues" msgstr "Fabrique un shooter à roues"
msgid "Build a wheeled sniffer" msgid "Build a wheeled sniffer"
msgstr "Fabrique un renifleur ŕ roues" msgstr "Fabrique un renifleur à roues"
msgid "Build a winged grabber" msgid "Build a winged grabber"
msgstr "Fabrique un déménageur volant" msgstr "Fabrique un déménageur volant"
@ -298,6 +309,9 @@ msgstr "Bâtiment détruit"
msgid "Building too close" msgid "Building too close"
msgstr "Bâtiment trop proche" msgstr "Bâtiment trop proche"
msgid "Button %1"
msgstr "Bouton %1"
msgid "COLOBOT" msgid "COLOBOT"
msgstr "COLOBOT" msgstr "COLOBOT"
@ -320,13 +334,13 @@ msgid "Camera nearest"
msgstr "Caméra plus proche" msgstr "Caméra plus proche"
msgid "Camera to left" msgid "Camera to left"
msgstr "Caméra ŕ gauche" msgstr "Caméra à gauche"
msgid "Camera to right" msgid "Camera to right"
msgstr "Caméra ŕ droite" msgstr "Caméra à droite"
msgid "Can not create this, there are too many objects" msgid "Can not create this; there are too many objects"
msgstr "Création impossible, il y a trop d'objets" msgstr "Création impossible; il y a trop d'objets"
msgid "Can't open file" msgid "Can't open file"
msgstr "Ouverture du fichier impossible" msgstr "Ouverture du fichier impossible"
@ -362,10 +376,7 @@ msgid "Close"
msgstr "Fermer" msgstr "Fermer"
msgid "Closing bracket missing " msgid "Closing bracket missing "
msgstr "Il manque une parenthčse fermante" msgstr "Il manque une parenthèse fermante"
msgid "Colobot Gold"
msgstr "Colobot Gold"
msgid "Colobot rules!" msgid "Colobot rules!"
msgstr "Colobot est super!" msgstr "Colobot est super!"
@ -403,6 +414,9 @@ msgstr "Copier"
msgid "Copy (Ctrl+c)" msgid "Copy (Ctrl+c)"
msgstr "Copier (Ctrl+c)" msgstr "Copier (Ctrl+c)"
msgid "Ctrl"
msgstr "Ctrl"
msgid "Current mission saved" msgid "Current mission saved"
msgstr "Enregistrement effectué" msgstr "Enregistrement effectué"
@ -477,10 +491,10 @@ msgid "Dust\\Dust and dirt on bots and buildings"
msgstr "Salissures\\Salissures des robots et bâtiments" msgstr "Salissures\\Salissures des robots et bâtiments"
msgid "Dynamic lighting\\Mobile light sources" msgid "Dynamic lighting\\Mobile light sources"
msgstr "Lumičres dynamiques\\Eclairages mobiles" msgstr "Lumières dynamiques\\Éclairages mobiles"
msgid "Edit the selected program" msgid "Edit the selected program"
msgstr "Edite le programme sélectionné" msgstr "Édite le programme sélectionné"
msgid "Egg" msgid "Egg"
msgstr "Oeuf" msgstr "Oeuf"
@ -531,7 +545,7 @@ msgid "Filename:"
msgstr "Nom du fichier :" msgstr "Nom du fichier :"
msgid "Film sequences\\Films before and after the missions" 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" msgid "Finish"
msgstr "But" msgstr "But"
@ -553,7 +567,7 @@ msgid "Folder: %s"
msgstr "Dossier: %s" msgstr "Dossier: %s"
msgid "Font size" msgid "Font size"
msgstr "Taille des caractčres" msgstr "Taille des caractères"
msgid "Forward" msgid "Forward"
msgstr "Page suivante" 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" msgstr "Jeu libre\\Jeu libre sans but précis"
msgid "Friendly fire\\Your shooting can damage your own objects " 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" 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" msgid "Function already exists"
msgstr "Cette fonction existe déjŕ" msgstr "Cette fonction existe déjà"
msgid "Function name missing" msgid "Function name missing"
msgstr "Nom de la fonction attendu" msgstr "Nom de la fonction attendu"
@ -609,8 +623,12 @@ msgstr "Jeu\\Options de jouabilité"
msgid "Gantry crane" msgid "Gantry crane"
msgstr "Portique" msgstr "Portique"
#, c-format
msgid "GetResource event num out of range: %d\n"
msgstr ""
msgid "Goto: destination occupied" msgid "Goto: destination occupied"
msgstr "Destination occupée" msgstr "Goto: Destination occupée"
msgid "Goto: inaccessible destination" msgid "Goto: inaccessible destination"
msgstr "Chemin introuvable" msgstr "Chemin introuvable"
@ -637,7 +655,7 @@ msgid "Hair color:"
msgstr "Couleur des cheveux :" msgstr "Couleur des cheveux :"
msgid "Head\\Face and hair" msgid "Head\\Face and hair"
msgstr "Tęte\\Visage et cheveux" msgstr "Tête\\Visage et cheveux"
msgid "Help about selected object" msgid "Help about selected object"
msgstr "Instructions sur la sélection" msgstr "Instructions sur la sélection"
@ -681,8 +699,8 @@ msgstr "Pas le bon type de pile"
msgid "Incorrect index type" msgid "Incorrect index type"
msgstr "Mauvais type d'index" msgstr "Mauvais type d'index"
msgid "Infected by a virus, temporarily out of order" msgid "Infected by a virus; temporarily out of order"
msgstr "Infecté par un virus, ne fonctionne plus temporairement" msgstr "Infecté par un virus; ne fonctionne plus temporairement"
msgid "Information exchange post" msgid "Information exchange post"
msgstr "Borne d'information" msgstr "Borne d'information"
@ -703,7 +721,7 @@ msgid "Instructions (\\key help;)"
msgstr "Instructions (\\key help;)" msgstr "Instructions (\\key help;)"
msgid "Instructions after the final closing brace" 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;)" msgid "Instructions for the mission (\\key help;)"
msgstr "Instructions sur la mission (\\key help;)" msgstr "Instructions sur la mission (\\key help;)"
@ -712,7 +730,7 @@ msgid "Instructions from Houston"
msgstr "Instructions de Houston" msgstr "Instructions de Houston"
msgid "Instructions\\Shows the instructions for the current mission" msgid "Instructions\\Shows the instructions for the current mission"
msgstr "Instructions mission\\Marche ŕ suivre" msgstr "Instructions mission\\Marche à suivre"
msgid "Jet temperature" msgid "Jet temperature"
msgstr "Température du réacteur" msgstr "Température du réacteur"
@ -843,16 +861,16 @@ msgid "No energy in the subsoil"
msgstr "Pas d'énergie en sous-sol" msgstr "Pas d'énergie en sous-sol"
msgid "No flag nearby" msgid "No flag nearby"
msgstr "Aucun drapeau ŕ proximité" msgstr "Aucun drapeau à proximité"
msgid "No function running" msgid "No function running"
msgstr "Pas de fonction en exécution" msgstr "Pas de fonction en exécution"
msgid "No function with this name accepts this kind of parameter" 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" 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" msgid "No information exchange post within range"
msgstr "Pas trouvé de borne d'information" msgstr "Pas trouvé de borne d'information"
@ -876,13 +894,13 @@ msgid "No titanium around"
msgstr "Titanium inexistant" msgstr "Titanium inexistant"
msgid "No titanium ore to convert" 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" msgid "No titanium to transform"
msgstr "Pas de titanium ŕ transformer" msgstr "Pas de titanium à transformer"
msgid "No uranium to transform" msgid "No uranium to transform"
msgstr "Pas d'uranium ŕ transformer" msgstr "Pas d'uranium à transformer"
msgid "Normal size" msgid "Normal size"
msgstr "Taille normale" msgstr "Taille normale"
@ -903,16 +921,16 @@ msgid "Not yet enough energy"
msgstr "Pas encore assez d'énergie" msgstr "Pas encore assez d'énergie"
msgid "Nothing to analyze" msgid "Nothing to analyze"
msgstr "Rien ŕ analyser" msgstr "Rien à analyser"
msgid "Nothing to drop" msgid "Nothing to drop"
msgstr "Rien ŕ déposer" msgstr "Rien à déposer"
msgid "Nothing to grab" msgid "Nothing to grab"
msgstr "Rien ŕ prendre" msgstr "Rien à prendre"
msgid "Nothing to recycle" msgid "Nothing to recycle"
msgstr "Rien ŕ recycler" msgstr "Rien à recycler"
msgid "Nuclear power cell" msgid "Nuclear power cell"
msgstr "Pile nucléaire" msgstr "Pile nucléaire"
@ -933,7 +951,7 @@ msgid "Number of insects detected"
msgstr "Nombre d'insectes détectés" msgstr "Nombre d'insectes détectés"
msgid "Number of particles\\Explosions, dust, reflections, etc." 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" msgid "OK"
msgstr "D'accord" msgstr "D'accord"
@ -963,7 +981,7 @@ msgid "Opening brace missing "
msgstr "Début d'un bloc attendu" msgstr "Début d'un bloc attendu"
msgid "Opening bracket missing" msgid "Opening bracket missing"
msgstr "Il manque une parenthčse ouvrante" msgstr "Il manque une parenthèse ouvrante"
msgid "Operation impossible with value \"nan\"" msgid "Operation impossible with value \"nan\""
msgstr "Opération sur un \"nan\"" msgstr "Opération sur un \"nan\""
@ -975,13 +993,13 @@ msgid "Options\\Preferences"
msgstr "Options\\Réglages" msgstr "Options\\Réglages"
msgid "Organic matter" msgid "Organic matter"
msgstr "Matičre organique" msgstr "Matière organique"
msgid "Origin of last message\\Shows where the last message was sent from" 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" msgstr "Montrer le lieu d'un message\\Montrer le lieu du dernier message"
msgid "Parameters missing " 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" msgid "Particles in the interface\\Steam clouds and sparks in the interface"
msgstr "Particules dans l'interface\\Pluie de particules" msgstr "Particules dans l'interface\\Pluie de particules"
@ -1002,7 +1020,7 @@ msgid "Place occupied"
msgstr "Emplacement occupé" msgstr "Emplacement occupé"
msgid "Planets and stars\\Astronomical objects in the sky" 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" msgid "Plans for defense tower available"
msgstr "Construction d'une tour de défense possible" 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" msgstr "Fabrication d'un robot secoueur possible"
msgid "Plans for tracked robots available " msgid "Plans for tracked robots available "
msgstr "Fabrication d'un robot ŕ chenilles possible" msgstr "Fabrication d'un robot à chenilles possible"
msgid "Plant a flag" msgid "Plant a flag"
msgstr "Pose un drapeau de couleur" msgstr "Pose un drapeau de couleur"
@ -1086,10 +1104,10 @@ msgid "Programming exercises"
msgstr "Programmation" msgstr "Programmation"
msgid "Programming help" msgid "Programming help"
msgstr "Aide ŕ la programmation" msgstr "Aide à la programmation"
msgid "Programming help (\\key prog;)" 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" msgid "Programming help\\Gives more detailed help with programming"
msgstr "Instructions programmation\\Explication sur la programmation" msgstr "Instructions programmation\\Explication sur la programmation"
@ -1107,7 +1125,7 @@ msgid "Public required"
msgstr "Public requis" msgstr "Public requis"
msgid "Public\\Common folder" 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" msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion" msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion"
@ -1125,7 +1143,7 @@ msgid "Radar station"
msgstr "Radar" msgstr "Radar"
msgid "Read error" msgid "Read error"
msgstr "Erreur ŕ la lecture" msgstr "Erreur à la lecture"
msgid "Recorder" msgid "Recorder"
msgstr "Enregistreur" msgstr "Enregistreur"
@ -1149,7 +1167,7 @@ msgid "Remains of Apollo mission"
msgstr "Vestige d'une mission Apollo" msgstr "Vestige d'une mission Apollo"
msgid "Remove a flag" msgid "Remove a flag"
msgstr "Enlčve un drapeau" msgstr "Enlève un drapeau"
msgid "Repair center" msgid "Repair center"
msgstr "Centre de réparation" msgstr "Centre de réparation"
@ -1158,7 +1176,7 @@ msgid "Research center"
msgstr "Centre de recherches" msgstr "Centre de recherches"
msgid "Research program already performed" msgid "Research program already performed"
msgstr "Recherche déjŕ effectuée" msgstr "Recherche déjà effectuée"
msgid "Research program completed" msgid "Research program completed"
msgstr "Recherche terminée" msgstr "Recherche terminée"
@ -1258,6 +1276,9 @@ msgstr "Rayon du bouclier"
msgid "Shielder" msgid "Shielder"
msgstr "Robot bouclier" msgstr "Robot bouclier"
msgid "Shift"
msgstr "Shift"
msgid "Shoot (\\key action;)" msgid "Shoot (\\key action;)"
msgstr "Tir (\\key action;)" msgstr "Tir (\\key action;)"
@ -1350,7 +1371,7 @@ msgid "Still working ..."
msgstr "Travail en cours ..." msgstr "Travail en cours ..."
msgid "String missing" msgid "String missing"
msgstr "Une chaîne de caractčre est attendue" msgstr "Une chaîne de caractère est attendue"
msgid "Strip color:" msgid "Strip color:"
msgstr "Couleur des bandes :" 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" msgstr "Les deux opérandes ne sont pas de types compatibles"
msgid "This class already exists" msgid "This class already exists"
msgstr "Cette classe existe déjŕ" msgstr "Cette classe existe déjà"
msgid "This class does not exist" msgid "This class does not exist"
msgstr "Cette classe n'existe pas" 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)" msgstr "Trop de drapeaux de cette couleur (maximum 5)"
msgid "Too many parameters" msgid "Too many parameters"
msgstr "Trop de paramčtres" msgstr "Trop de paramètres"
msgid "Tracked grabber" msgid "Tracked grabber"
msgstr "Robot déménageur" msgstr "Robot déménageur"
@ -1480,16 +1501,16 @@ msgid "Transmitted information"
msgstr "Informations diffusées" msgstr "Informations diffusées"
msgid "Turn left (\\key left;)" msgid "Turn left (\\key left;)"
msgstr "Tourne ŕ gauche (\\key left;)" msgstr "Tourne à gauche (\\key left;)"
msgid "Turn left\\turns the bot to the 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;)" msgid "Turn right (\\key right;)"
msgstr "Tourne ŕ droite (\\key right;)" msgstr "Tourne à droite (\\key right;)"
msgid "Turn right\\turns the bot to the right" msgid "Turn right\\turns the bot to the right"
msgstr "Tourner ŕ droite\\Moteur ŕ droite" msgstr "Tourner à droite\\Moteur à droite"
msgid "Type declaration missing" msgid "Type declaration missing"
msgstr "Déclaration de type attendu" msgstr "Déclaration de type attendu"
@ -1543,7 +1564,7 @@ msgid "Violet flag"
msgstr "Drapeau violet" msgstr "Drapeau violet"
msgid "Void parameter" msgid "Void parameter"
msgstr "Paramčtre void" msgstr "Paramètre void"
msgid "Wasp" msgid "Wasp"
msgstr "Guępe" msgstr "Guępe"
@ -1566,6 +1587,9 @@ msgstr "Robot shooter"
msgid "Wheeled sniffer" msgid "Wheeled sniffer"
msgstr "Robot renifleur" msgstr "Robot renifleur"
msgid "Win"
msgstr "Gagné"
msgid "Winged grabber" msgid "Winged grabber"
msgstr "Robot déménageur" msgstr "Robot déménageur"
@ -1591,7 +1615,7 @@ msgid "Wreckage"
msgstr "Epave de robot" msgstr "Epave de robot"
msgid "Write error" msgid "Write error"
msgstr "Erreur ŕ l'écriture" msgstr "Erreur à l'écriture"
msgid "Wrong type for the assignment" msgid "Wrong type for the assignment"
msgstr "Mauvais type de résultat pour l'assignation" msgstr "Mauvais type de résultat pour l'assignation"
@ -1652,13 +1676,13 @@ msgid "\\Green flags"
msgstr "\\Drapeaux verts" msgstr "\\Drapeaux verts"
msgid "\\New player name" msgid "\\New player name"
msgstr "\\Nom du joueur ŕ créer" msgstr "\\Nom du joueur à créer"
msgid "\\No eyeglasses" msgid "\\No eyeglasses"
msgstr "\\Pas de lunettes" msgstr "\\Pas de lunettes"
msgid "\\Raise the pencil" msgid "\\Raise the pencil"
msgstr "\\Relčve le crayon" msgstr "\\Relève le crayon"
msgid "\\Red flags" msgid "\\Red flags"
msgstr "\\Drapeaux rouges" msgstr "\\Drapeaux rouges"
@ -1676,10 +1700,10 @@ msgid "\\Stop recording"
msgstr "\\Stoppe l'enregistrement" msgstr "\\Stoppe l'enregistrement"
msgid "\\Turn left" msgid "\\Turn left"
msgstr "\\Rotation ŕ gauche" msgstr "\\Rotation à gauche"
msgid "\\Turn right" msgid "\\Turn right"
msgstr "\\Rotation ŕ droite" msgstr "\\Rotation à droite"
msgid "\\Use the black pencil" msgid "\\Use the black pencil"
msgstr "\\Abaisse le crayon noir" msgstr "\\Abaisse le crayon noir"
@ -1732,6 +1756,69 @@ msgstr "\\b;Listes des robots\n"
msgid "\\c; (none)\\n;\n" msgid "\\c; (none)\\n;\n"
msgstr "\\c; (aucun)\\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" msgid "www.epsitec.com"
msgstr "www.epsitec.com" msgstr "www.epsitec.com"
@ -1741,30 +1828,24 @@ msgstr "www.epsitec.com"
#~ msgid "<--" #~ msgid "<--"
#~ msgstr "<--" #~ msgstr "<--"
#~ msgid "Alt"
#~ msgstr "Alt"
#~ msgid "Application key" #~ msgid "Application key"
#~ msgstr "Application key" #~ msgstr "Application key"
#~ msgid "Arrow down" #~ msgid "Arrow down"
#~ msgstr "Flčche Bas" #~ msgstr "Flèche Bas"
#~ msgid "Arrow left" #~ msgid "Arrow left"
#~ msgstr "Flčche Gauche" #~ msgstr "Flèche Gauche"
#~ msgid "Arrow right" #~ msgid "Arrow right"
#~ msgstr "Flčche Droite" #~ msgstr "Flèche Droite"
#~ msgid "Arrow up" #~ msgid "Arrow up"
#~ msgstr "Flčche Haut" #~ msgstr "Flèche Haut"
#~ msgid "Attn" #~ msgid "Attn"
#~ msgstr "Attn" #~ msgstr "Attn"
#~ msgid "Button %1"
#~ msgstr "Bouton %1"
#~ msgid "Caps Lock" #~ msgid "Caps Lock"
#~ msgstr "Caps Lock" #~ msgstr "Caps Lock"
@ -1777,9 +1858,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel" #~ msgid "CrSel"
#~ msgstr "CrSel" #~ msgstr "CrSel"
#~ msgid "Ctrl"
#~ msgstr "Ctrl"
#~ msgid "Delete Key" #~ msgid "Delete Key"
#~ msgstr "Delete" #~ msgstr "Delete"
@ -1963,9 +2041,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select" #~ msgid "Select"
#~ msgstr "Select" #~ msgstr "Select"
#~ msgid "Shift"
#~ msgstr "Shift"
#~ msgid "Space" #~ msgid "Space"
#~ msgstr "Espace" #~ msgstr "Espace"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -65,6 +65,9 @@ msgstr "Brak \" ] \""
msgid "\"%s\" missing in this exercise" msgid "\"%s\" missing in this exercise"
msgstr "It misses \"%s\" in this exercise" msgstr "It misses \"%s\" in this exercise"
msgid "%1"
msgstr ""
msgid "..behind" msgid "..behind"
msgstr "..za" msgstr "..za"
@ -86,13 +89,16 @@ msgstr "Dźwięk 3D\\Przestrzenne pozycjonowanie dźwięków"
msgid "<< Back \\Back to the previous screen" msgid "<< Back \\Back to the previous screen"
msgstr "<< Wstecz \\Wraca do poprzedniego ekranu" msgstr "<< Wstecz \\Wraca do poprzedniego ekranu"
msgid "<<< Sorry, mission failed >>>" #, fuzzy
msgid "<<< Sorry; mission failed >>>"
msgstr "<<< Niestety, misja nie powiodła się >>>" msgstr "<<< Niestety, misja nie powiodła się >>>"
msgid "<<< Well done, mission accomplished >>>" #, fuzzy
msgid "<<< Well done; mission accomplished >>>"
msgstr "<<< Dobra robota, misja wypełniona >>>" 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\"" msgstr "Po etykiecie musi wystąpić \"for\", \"while\", \"do\" lub \"switch\""
msgid "A variable can not be declared twice" msgid "A variable can not be declared twice"
@ -122,6 +128,9 @@ msgstr "Królowa Obcych została zabita"
msgid "Already carrying something" msgid "Already carrying something"
msgstr "Nie można nieść więcej przedmiotów" msgstr "Nie można nieść więcej przedmiotów"
msgid "Alt"
msgstr "Alt"
msgid "Analysis already performed" msgid "Analysis already performed"
msgstr "Analiza została już wykonana" msgstr "Analiza została już wykonana"
@ -301,6 +310,9 @@ msgstr "Budynek zniszczony"
msgid "Building too close" msgid "Building too close"
msgstr "Budynek za blisko" msgstr "Budynek za blisko"
msgid "Button %1"
msgstr "Przycisk %1"
msgid "COLOBOT" msgid "COLOBOT"
msgstr "COLOBOT" msgstr "COLOBOT"
@ -328,7 +340,8 @@ msgstr "Camera to left"
msgid "Camera to right" msgid "Camera to right"
msgstr "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" msgstr "Nie można tego utworzyć, za dużo obiektów"
msgid "Can't open file" msgid "Can't open file"
@ -367,9 +380,6 @@ msgstr "Zamknij"
msgid "Closing bracket missing " msgid "Closing bracket missing "
msgstr "Brak nawiasu zamykającego" msgstr "Brak nawiasu zamykającego"
msgid "Colobot Gold"
msgstr "Colobot Gold"
msgid "Colobot rules!" msgid "Colobot rules!"
msgstr "Colobot rządzi!" msgstr "Colobot rządzi!"
@ -406,6 +416,9 @@ msgstr "Kopiuj"
msgid "Copy (Ctrl+c)" msgid "Copy (Ctrl+c)"
msgstr "Kopiuj (Ctrl+C)" msgstr "Kopiuj (Ctrl+C)"
msgid "Ctrl"
msgstr "Ctrl"
msgid "Current mission saved" msgid "Current mission saved"
msgstr "Bieżąca misja zapisana" msgstr "Bieżąca misja zapisana"
@ -612,6 +625,10 @@ msgstr "Gra\\Ustawienia gry"
msgid "Gantry crane" msgid "Gantry crane"
msgstr "Żuraw przesuwalny" msgstr "Żuraw przesuwalny"
#, c-format
msgid "GetResource event num out of range: %d\n"
msgstr ""
msgid "Goto: destination occupied" msgid "Goto: destination occupied"
msgstr "Goto: miejsce docelowe zajęte" msgstr "Goto: miejsce docelowe zajęte"
@ -685,7 +702,8 @@ msgstr "Nieodpowiedni rodzaj ogniw"
msgid "Incorrect index type" msgid "Incorrect index type"
msgstr "Nieprawidłowy typ indeksu" 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" msgstr "Zainfekowane wirusem, chwilowo niesprawne"
msgid "Information exchange post" msgid "Information exchange post"
@ -1264,6 +1282,9 @@ msgstr "Zasięg osłony"
msgid "Shielder" msgid "Shielder"
msgstr "Osłaniacz" msgstr "Osłaniacz"
msgid "Shift"
msgstr "Shift"
msgid "Shoot (\\key action;)" msgid "Shoot (\\key action;)"
msgstr "Strzelaj (\\key action;)" msgstr "Strzelaj (\\key action;)"
@ -1575,6 +1596,9 @@ msgstr "Działo na kołach"
msgid "Wheeled sniffer" msgid "Wheeled sniffer"
msgstr "Szperacz na kołach" msgstr "Szperacz na kołach"
msgid "Win"
msgstr ""
msgid "Winged grabber" msgid "Winged grabber"
msgstr "Transporter latający" msgstr "Transporter latający"
@ -1740,6 +1764,69 @@ msgstr "\\b;Roboty\n"
msgid "\\c; (none)\\n;\n" msgid "\\c; (none)\\n;\n"
msgstr "\\c; (brak)\\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" msgid "www.epsitec.com"
msgstr "www.epsitec.com" msgstr "www.epsitec.com"
@ -1749,9 +1836,6 @@ msgstr "www.epsitec.com"
#~ msgid "<--" #~ msgid "<--"
#~ msgstr "<--" #~ msgstr "<--"
#~ msgid "Alt"
#~ msgstr "Alt"
#~ msgid "Application key" #~ msgid "Application key"
#~ msgstr "Klawisz menu kontekstowego" #~ msgstr "Klawisz menu kontekstowego"
@ -1770,9 +1854,6 @@ msgstr "www.epsitec.com"
#~ msgid "Attn" #~ msgid "Attn"
#~ msgstr "Attn" #~ msgstr "Attn"
#~ msgid "Button %1"
#~ msgstr "Przycisk %1"
#~ msgid "Caps Lock" #~ msgid "Caps Lock"
#~ msgstr "Caps Lock" #~ msgstr "Caps Lock"
@ -1785,9 +1866,6 @@ msgstr "www.epsitec.com"
#~ msgid "CrSel" #~ msgid "CrSel"
#~ msgstr "CrSel" #~ msgstr "CrSel"
#~ msgid "Ctrl"
#~ msgstr "Ctrl"
#~ msgid "Delete Key" #~ msgid "Delete Key"
#~ msgstr "Delete" #~ msgstr "Delete"
@ -1971,9 +2049,6 @@ msgstr "www.epsitec.com"
#~ msgid "Select" #~ msgid "Select"
#~ msgstr "Zaznacz" #~ msgstr "Zaznacz"
#~ msgid "Shift"
#~ msgstr "Shift"
#~ msgid "Space" #~ msgid "Space"
#~ msgstr "Spacja" #~ msgstr "Spacja"

View File

@ -2753,9 +2753,14 @@ void CScript::InitFonctions()
CScript::~CScript() CScript::~CScript()
{ {
delete m_botProg; delete m_botProg;
m_botProg = nullptr;
delete m_primaryTask; delete m_primaryTask;
delete m_script; m_primaryTask = nullptr;
m_script = 0;
delete[] m_script;
m_script = nullptr;
m_len = 0; m_len = 0;
m_iMan->DeleteInstance(CLASS_SCRIPT, this); m_iMan->DeleteInstance(CLASS_SCRIPT, this);
@ -2766,7 +2771,7 @@ CScript::~CScript()
void CScript::PutScript(Ui::CEdit* edit, const char* name) void CScript::PutScript(Ui::CEdit* edit, const char* name)
{ {
if ( m_script == 0 ) if ( m_script == nullptr )
{ {
New(edit, name); New(edit, name);
} }
@ -2785,11 +2790,11 @@ bool CScript::GetScript(Ui::CEdit* edit)
{ {
int len; int len;
delete m_script; delete[] m_script;
m_script = 0; m_script = nullptr;
len = edit->GetTextLength(); 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->GetText(m_script, len+1);
edit->GetCursor(m_cursor2, m_cursor1); edit->GetCursor(m_cursor2, m_cursor1);
@ -2997,7 +3002,7 @@ void CScript::SetStepMode(bool bStep)
bool CScript::Run() bool CScript::Run()
{ {
if( m_botProg == 0 ) return false; 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; if ( !m_botProg->Start(m_title) ) return false;
@ -3475,9 +3480,9 @@ bool CScript::IntroduceVirus()
start = found[i+1]; start = found[i+1];
i = found[i+0]; 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); strcpy(newScript, m_script);
delete m_script; delete[] m_script;
m_script = newScript; m_script = newScript;
DeleteToken(m_script, start, strlen(names[i])); 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) bool CScript::SendScript(char* text)
{ {
m_len = strlen(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); strcpy(m_script, text);
if ( !CheckToken() ) return false; if ( !CheckToken() ) return false;
if ( !Compile() ) return false; if ( !Compile() ) return false;
@ -3669,8 +3674,8 @@ bool CScript::ReadScript(const char* filename)
if ( file == NULL ) return false; if ( file == NULL ) return false;
fclose(file); fclose(file);
delete m_script; delete[] m_script;
m_script = 0; m_script = nullptr;
edit = m_interface->CreateEdit(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 0, EVENT_EDIT9); edit = m_interface->CreateEdit(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 0, EVENT_EDIT9);
edit->SetMaxChar(Ui::EDITSTUDIOMAX); edit->SetMaxChar(Ui::EDITSTUDIOMAX);
@ -3697,7 +3702,7 @@ bool CScript::WriteScript(const char* filename)
name = filename; name = filename;
} }
if ( m_script == 0 ) if ( m_script == nullptr )
{ {
remove(filename); remove(filename);
return false; return false;

View File

@ -297,6 +297,8 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc
return -1; return -1;
} }
GetLogger()->Trace("ALSound::Play sound: %d volume: %f frequency: %f\n", sound, amplitude, frequency);
int channel; int channel;
bool bAlreadyLoaded; bool bAlreadyLoaded;
if (!SearchFreeBuffer(sound, channel, bAlreadyLoaded)) if (!SearchFreeBuffer(sound, channel, bAlreadyLoaded))
@ -308,12 +310,12 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc
Position(channel, pos); Position(channel, pos);
// setting initial values // setting initial values
mChannels[channel]->SetStartAmplitude(amplitude); mChannels[channel]->SetStartAmplitude(mAudioVolume);
mChannels[channel]->SetStartFrequency(frequency); mChannels[channel]->SetStartFrequency(frequency);
mChannels[channel]->SetChangeFrequency(1.0f); mChannels[channel]->SetChangeFrequency(1.0f);
mChannels[channel]->ResetOper(); mChannels[channel]->ResetOper();
mChannels[channel]->AdjustFrequency(frequency); mChannels[channel]->AdjustFrequency(frequency);
mChannels[channel]->AdjustVolume(mAudioVolume); mChannels[channel]->AdjustVolume(amplitude * mAudioVolume);
mChannels[channel]->Play(); mChannels[channel]->Play();
return channel; return channel;
} }
@ -451,17 +453,17 @@ void ALSound::FrameMove(float delta)
it.second->AdjustVolume(volume * mAudioVolume); it.second->AdjustVolume(volume * mAudioVolume);
// setting frequency // 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); it.second->AdjustFrequency(frequency);
if (it.second->GetEnvelope().totalTime <= it.second->GetCurrentTime()) { if (it.second->GetEnvelope().totalTime <= it.second->GetCurrentTime()) {
if (oper.nextOper == SOPER_LOOP) { 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->SetCurrentTime(0.0f);
it.second->Play(); it.second->Play();
} else { } else {
GetLogger()->Trace("Sound oper: next.\n"); GetLogger()->Trace("ALSound::FrameMove oper: next.\n");
it.second->SetStartAmplitude(oper.finalAmplitude); it.second->SetStartAmplitude(oper.finalAmplitude);
it.second->SetStartFrequency(oper.finalFrequency); it.second->SetStartFrequency(oper.finalFrequency);
it.second->PopEnvelope(); it.second->PopEnvelope();

View File

@ -39,7 +39,7 @@ Channel::~Channel() {
alSourcei(mSource, AL_BUFFER, 0); alSourcei(mSource, AL_BUFFER, 0);
alDeleteSources(1, &mSource); alDeleteSources(1, &mSource);
if (alCheck()) 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); alSourcePlay(mSource);
if (alCheck()) 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; return true;
} }
@ -61,7 +61,7 @@ bool Channel::SetPosition(Math::Vector pos) {
alSource3f(mSource, AL_POSITION, pos.x, pos.y, pos.z); alSource3f(mSource, AL_POSITION, pos.x, pos.y, pos.z);
if (alCheck()) { 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 false;
} }
return true; return true;
@ -75,7 +75,7 @@ bool Channel::SetFrequency(float freq)
alSourcef(mSource, AL_PITCH, freq); alSourcef(mSource, AL_PITCH, freq);
if (alCheck()) { 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 false;
} }
return true; return true;
@ -90,7 +90,7 @@ float Channel::GetFrequency()
alGetSourcef(mSource, AL_PITCH, &freq); alGetSourcef(mSource, AL_PITCH, &freq);
if (alCheck()) { 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; return 0;
} }
@ -105,7 +105,7 @@ bool Channel::SetVolume(float vol)
alSourcef(mSource, AL_GAIN, vol / MAXVOLUME); alSourcef(mSource, AL_GAIN, vol / MAXVOLUME);
if (alCheck()) { 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 false;
} }
return true; return true;
@ -120,7 +120,7 @@ float Channel::GetVolume()
alGetSourcef(mSource, AL_GAIN, &vol); alGetSourcef(mSource, AL_GAIN, &vol);
if (alCheck()) { 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; return 0;
} }
@ -213,7 +213,7 @@ bool Channel::SetBuffer(Buffer *buffer) {
mBuffer = buffer; mBuffer = buffer;
alSourcei(mSource, AL_BUFFER, buffer->GetBuffer()); alSourcei(mSource, AL_BUFFER, buffer->GetBuffer());
if (alCheck()) { 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; return false;
} }
mInitFrequency = GetFrequency(); mInitFrequency = GetFrequency();
@ -237,7 +237,7 @@ bool Channel::IsPlaying() {
alGetSourcei(mSource, AL_SOURCE_STATE, &status); alGetSourcei(mSource, AL_SOURCE_STATE, &status);
if (alCheck()) { 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; return false;
} }
@ -253,7 +253,7 @@ bool Channel::IsReady() {
bool Channel::Stop() { bool Channel::Stop() {
alSourceStop(mSource); alSourceStop(mSource);
if (alCheck()) { 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 false;
} }
return true; return true;
@ -265,7 +265,7 @@ float Channel::GetCurrentTime()
ALfloat current; ALfloat current;
alGetSourcef(mSource, AL_SEC_OFFSET, &current); alGetSourcef(mSource, AL_SEC_OFFSET, &current);
if (alCheck()) { 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 0.0f;
} }
return current; return current;
@ -276,7 +276,7 @@ void Channel::SetCurrentTime(float current)
{ {
alSourcef(mSource, AL_SEC_OFFSET, current); alSourcef(mSource, AL_SEC_OFFSET, current);
if (alCheck()) 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());
} }

View File

@ -168,7 +168,7 @@ class CSoundInterface
* Function calls \link CSoundInterface::Cache() \endlink for each file * Function calls \link CSoundInterface::Cache() \endlink for each file
*/ */
inline void CacheAll(std::string path) { inline void CacheAll(std::string path) {
for ( int i = 1; i < 69; i++ ) { for ( int i = 1; i <= 81; i++ ) {
std::stringstream filename; std::stringstream filename;
filename << path << "/sound" << std::setfill('0') << std::setw(3) << i << ".wav"; filename << path << "/sound" << std::setfill('0') << std::setw(3) << i << ".wav";
if ( !Cache(static_cast<Sound>(i), filename.str()) ) if ( !Cache(static_cast<Sound>(i), filename.str()) )

View File

@ -243,7 +243,7 @@ bool CEdit::EventProcess(const Event &event)
Scroll(m_lineFirst-3, true); Scroll(m_lineFirst-3, true);
return true; return true;
} }
if (event.type == EVENT_KEY_DOWN && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_DOWN && event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mousePos) ) 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); m_scroll->EventProcess(event);
@ -2172,11 +2172,11 @@ void CEdit::Scroll()
{ {
float value; float value;
if ( m_scroll != 0 ) if ( m_scroll != nullptr )
{ {
value = m_scroll->GetVisibleValue(); value = m_scroll->GetVisibleValue();
value *= m_lineTotal-m_lineVisible; value *= m_lineTotal - m_lineVisible;
Scroll(static_cast<int>(value+0.5f), true); Scroll(static_cast<int>(value + 0.5f), true);
} }
} }
@ -3048,7 +3048,7 @@ bool CEdit::MinMaj(bool bMaj)
void CEdit::Justif() void CEdit::Justif()
{ {
float width, value, size, indentLength; float width, size, indentLength;
int i, j, line, indent; int i, j, line, indent;
bool bDual, bString, bRem; bool bDual, bString, bRem;
@ -3176,26 +3176,7 @@ void CEdit::Justif()
m_lineFirst = 0; m_lineFirst = 0;
} }
if ( m_scroll != 0 ) UpdateScroll();
{
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);
}
}
m_timeBlink = 0.0f; // lights the cursor immediately m_timeBlink = 0.0f; // lights the cursor immediately
} }
@ -3326,5 +3307,30 @@ bool CEdit::SetFormat(int cursor1, int cursor2, int format)
return true; 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);
}
}
}
} }

View File

@ -235,6 +235,8 @@ protected:
void UndoMemorize(OperUndo oper); void UndoMemorize(OperUndo oper);
bool UndoRecall(); bool UndoRecall();
void UpdateScroll();
protected: protected:
CScroll* m_scroll; // vertical scrollbar on the right CScroll* m_scroll; // vertical scrollbar on the right

View File

@ -4305,8 +4305,8 @@ void CMainDialog::IOReadName()
} }
} }
// TODO: language letters // TODO: Fallback to an non-localized entry
sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/ ); sprintf(op, "Title.%c", m_app->GetLanguageChar() );
if ( Cmd(line, op) ) if ( Cmd(line, op) )
{ {
OpString(line, "resume", resume); OpString(line, "resume", resume);
@ -4701,8 +4701,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
} }
} }
/* TODO: language letters */ // TODO: Fallback to an non-localized entry
sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/); sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) ) if ( Cmd(line, op) )
{ {
OpString(line, "text", name); OpString(line, "text", name);
@ -4748,8 +4748,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
} }
} }
// TODO: language letters // TODO: Fallback to an non-localized entry
sprintf(op, "Title.%c", 'E'/*GetLanguageLetter()*/); sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) ) if ( Cmd(line, op) )
{ {
OpString(line, "text", name); OpString(line, "text", name);
@ -4851,8 +4851,8 @@ void CMainDialog::UpdateSceneList(int chap, int &sel)
} }
} }
// TODO: language letters // TODO: Fallback to an non-localized entry
sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/); sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) ) if ( Cmd(line, op) )
{ {
OpString(line, "text", name); OpString(line, "text", name);
@ -4996,8 +4996,8 @@ void CMainDialog::UpdateSceneResume(int rank)
} }
} }
// TODO: language letters // TODO: Fallback to an non-localized entry
sprintf(op, "Resume.%c", 'E' /*MAX_FNAME()*/); sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) ) if ( Cmd(line, op) )
{ {
OpString(line, "text", name); OpString(line, "text", name);