mirror of
https://github.com/blupi-games/planetblupi
synced 2024-12-30 10:15:36 +01:00
Merge remote-tracking branch 'origin/master' into wip/android
This commit is contained in:
commit
4fdaf201e7
@ -4,6 +4,7 @@ cmake_minimum_required (VERSION 3.2)
|
||||
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
||||
set (CMAKE_CXX_STANDARD 11)
|
||||
|
||||
include (GNUInstallDirs)
|
||||
include (${CMAKE_ROOT}/Modules/ExternalProject.cmake)
|
||||
|
||||
include_directories (${CMAKE_INSTALL_PREFIX}/include)
|
||||
@ -12,12 +13,16 @@ list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_INSTALL_PREFIX}") # This is required w
|
||||
|
||||
project (planetblupi)
|
||||
set (PB_VERSION_MAJOR 1)
|
||||
set (PB_VERSION_MINOR 9)
|
||||
set (PB_VERSION_PATCH 1)
|
||||
set (PB_VERSION_MINOR 11)
|
||||
set (PB_VERSION_PATCH 0)
|
||||
set (PB_VERSION_EXTRA "")
|
||||
set (PB_PRODUCT_NAME "Planet Blupi")
|
||||
set (PB_PACKAGE_NAME "planetblupi")
|
||||
set (PB_DESCRIPTION "Planet Blupi - A delerious spell-binding game")
|
||||
set (PB_EXEC "planetblupi")
|
||||
set (PB_ICON_REF "blupi")
|
||||
set (PB_DESCRIPTION "Planet Blupi - A delirious spell-binding game")
|
||||
|
||||
option (PB_HTTP_VERSION_CHECK "Run a version check over HTTP (with CURL)" OFF)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-Wno-error=c++11-narrowing ${CMAKE_CXX_FLAGS}") # TODO: FIXME in fog.cxx
|
||||
|
||||
@ -37,6 +42,14 @@ if (APPIMAGE_APPRUN_PROGRAM AND APPIMAGE_ASSISTANT_PROGRAM)
|
||||
set (USE_APPIMAGE ON)
|
||||
endif ()
|
||||
|
||||
if (NOT USE_APPIMAGE)
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/resources/linux/application.desktop.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${PB_PACKAGE_NAME}.desktop"
|
||||
@ONLY
|
||||
)
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 -L${CMAKE_INSTALL_PREFIX}/lib")
|
||||
endif ()
|
||||
@ -45,10 +58,6 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND "${STATIC_BUILD}")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
|
||||
endif ()
|
||||
|
||||
if (NOT "${STATIC_BUILD}")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "-lpthread")
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||
endif ()
|
||||
@ -124,7 +133,10 @@ find_package (PkgConfig REQUIRED)
|
||||
pkg_search_module (SDL2 REQUIRED sdl2)
|
||||
pkg_search_module (SDL2_MIXER REQUIRED SDL2_mixer)
|
||||
pkg_search_module (SDL2_IMAGE REQUIRED SDL2_image)
|
||||
pkg_search_module (CURL REQUIRED libcurl)
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
pkg_search_module (CURL REQUIRED libcurl)
|
||||
add_definitions (-DUSE_CURL)
|
||||
endif ()
|
||||
|
||||
if ("${STATIC_BUILD}")
|
||||
pkg_search_module (PNG REQUIRED libpng)
|
||||
@ -140,7 +152,9 @@ if ("${STATIC_BUILD}")
|
||||
pkg_search_module (PULSE REQUIRED libpulse)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURL_STATICLIB")
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURL_STATICLIB")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
###########################
|
||||
@ -160,7 +174,6 @@ if ("${STATIC_BUILD}")
|
||||
${SDL2_STATIC_LIBRARIES}
|
||||
${SDL2_MIXER_STATIC_LIBRARIES}
|
||||
${SDL2_IMAGE_STATIC_LIBRARIES}
|
||||
${CURL_STATIC_LIBRARIES}
|
||||
${SDLKitchensink_STATIC_LIBRARIES}
|
||||
${PNG_STATIC_LIBRARIES}
|
||||
${AVCODEC_STATIC_LIBRARIES}
|
||||
@ -170,6 +183,12 @@ if ("${STATIC_BUILD}")
|
||||
${SWRESAMPLE_STATIC_LIBRARIES}
|
||||
)
|
||||
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
list (APPEND planetblupi_DEPS
|
||||
${CURL_STATIC_LIBRARIES}
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (UNIX AND NOT APPLE AND NOT ANDROID)
|
||||
list (APPEND planetblupi_DEPS
|
||||
${ALSA_STATIC_LIBRARIES}
|
||||
@ -184,7 +203,14 @@ else ()
|
||||
${SDL2_IMAGE_LIBRARIES}
|
||||
${CURL_LIBRARIES}
|
||||
${SDLKitchensink_LIBRARIES}
|
||||
pthread
|
||||
)
|
||||
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
list (APPEND planetblupi_DEPS
|
||||
${CURL_LIBRARIES}
|
||||
)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
target_link_libraries (planetblupi PUBLIC ${planetblupi_DEPS})
|
||||
@ -231,8 +257,10 @@ endforeach (file)
|
||||
##############
|
||||
|
||||
install (TARGETS planetblupi
|
||||
RUNTIME DESTINATION bin
|
||||
ARCHIVE DESTINATION lib
|
||||
# TODO: merge conflict
|
||||
#RUNTIME DESTINATION bin
|
||||
#ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
install (
|
||||
@ -256,6 +284,13 @@ if (UNIX AND NOT APPLE)
|
||||
install (DIRECTORY resources/icon/hicolor DESTINATION share/icons)
|
||||
endif ()
|
||||
|
||||
if (NOT USE_APPIMAGE)
|
||||
install (
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PB_PACKAGE_NAME}.desktop
|
||||
DESTINATION share/applications
|
||||
)
|
||||
endif ()
|
||||
|
||||
# Copy libwinpthread-1.dll which seems not be linkable statically
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND MINGW)
|
||||
execute_process (COMMAND cygpath.exe --windows /mingw64 OUTPUT_VARIABLE MINGW64_PATH)
|
||||
@ -283,7 +318,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND "${STATIC_BUILD}")
|
||||
if (USE_APPIMAGE)
|
||||
include (LinuxAppImageBuild)
|
||||
set (CMAKE_PACKAGED_OUTPUT_PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||
APPIMAGE_PACKAGE (planetblupi ${PB_PACKAGE_NAME} ${PB_PRODUCT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/resources/linux" "${CMAKE_BINARY_DIR}/share" "" "" "blupi")
|
||||
APPIMAGE_PACKAGE (planetblupi ${PB_PACKAGE_NAME} ${PB_PRODUCT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/resources/linux" "${CMAKE_BINARY_DIR}/share" "" "" ${PB_ICON_REF})
|
||||
elseif (MINGW)
|
||||
set (INSTALLER_FILE_NAME "${PB_PACKAGE_NAME}-${PB_VERSION_MAJOR}.${PB_VERSION_MINOR}.${PB_VERSION_PATCH}${PB_VERSION_EXTRA}")
|
||||
set (CPACK_PACKAGE_FILE_NAME "${INSTALLER_FILE_NAME}")
|
||||
|
@ -8,10 +8,10 @@ to construct your own missions.
|
||||
|
||||
| Category | Description |
|
||||
| -------- | ----------- |
|
||||
| OS | At least GNU/Linux 2.6.32, macOS 10.7 or Microsoft Windows Vista |
|
||||
| VIDEO | An 3D accelerated video card is highly recommended |
|
||||
| SOUND | Any sound card supported by ALSA, sndio, macOS or DirectSound |
|
||||
| INPUT | Keyboard and mouse |
|
||||
| OS | At least GNU/Linux 2.6.32, macOS 10.9 or Microsoft Windows Vista |
|
||||
| VIDEO | An 3D accelerated video card is highly recommended |
|
||||
| SOUND | Any sound card supported by ALSA, PulseAudio, macOS or DirectSound |
|
||||
| INPUT | Keyboard and mouse |
|
||||
|
||||
## Screen problems
|
||||
|
||||
@ -19,10 +19,10 @@ What ever your screen resolution is, the game "Planet Blupi" always runs in
|
||||
640x480 on full screen. If your screen does not support this mode, you may run
|
||||
the game by default in windowed mode. Proceed as follows:
|
||||
|
||||
- 1. Quit the game _Planet Blupi_.
|
||||
- 2. Open the file `<INSTALLDIR>/data/config.json` with a text editor.
|
||||
- 3. Replace `fullscreen: true` by `fullscreen: false`.
|
||||
- 4. Save and restart the game.
|
||||
1. Quit the game _Planet Blupi_.
|
||||
2. Open the file `<INSTALLDIR>/data/config.json` with a text editor.
|
||||
3. Replace `fullscreen: true` by `fullscreen: false`.
|
||||
4. Save and restart the game.
|
||||
|
||||
In this mode the screen is no more scrolled if the mouse touches the window
|
||||
border. Use the Keyboard arrows instead.
|
||||
@ -32,9 +32,9 @@ border. Use the Keyboard arrows instead.
|
||||
Left button:
|
||||
This button is always used in three steps:
|
||||
|
||||
- 1. Select a Blupi.
|
||||
- 2. Click where you want him to act.
|
||||
- 3. Click the button corresponding to the required operation.
|
||||
1. Select a Blupi.
|
||||
2. Click where you want him to act.
|
||||
3. Click the button corresponding to the required operation.
|
||||
|
||||
If the chosen Blupi is already selected (blue or red circle around him),
|
||||
step 1) is not necessary.
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"fullscreen": true,
|
||||
"zoom": 1,
|
||||
"speedrate": 1
|
||||
}
|
||||
|
1116
resources/data/it/stories.blp
Normal file
1116
resources/data/it/stories.blp
Normal file
File diff suppressed because it is too large
Load Diff
1100
resources/data/pl/stories.blp
Normal file
1100
resources/data/pl/stories.blp
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.2 KiB |
@ -3,8 +3,8 @@ Version=1.0
|
||||
Type=Application
|
||||
Name=@PB_PRODUCT_NAME@
|
||||
GenericName=Video Game
|
||||
Comment=@CPACK_PACKAGE_DESCRIPTION_SUMMARY@
|
||||
Exec=@APPIMAGE_EXEC@
|
||||
StartupWMClass=@APPIMAGE_EXEC_WM@
|
||||
Comment=@PB_DESCRIPTION@
|
||||
Exec=@PB_EXEC@
|
||||
StartupWMClass=@PB_EXEC@
|
||||
Icon=@APPIMAGE_ICON_REF@
|
||||
Categories=Game;
|
||||
Categories=Game;StrategyGame;
|
||||
|
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-09 09:13+0200\n"
|
||||
"PO-Revision-Date: 2017-09-09 09:13+0200\n"
|
||||
"POT-Creation-Date: 2017-09-15 18:34+0200\n"
|
||||
"PO-Revision-Date: 2017-10-04 23:30+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
@ -548,6 +548,9 @@ msgstr "Auswahl der Musik"
|
||||
msgid "Music number 1"
|
||||
msgstr "Musik Nummer 1"
|
||||
|
||||
msgid "Music number 10"
|
||||
msgstr "Musik Nummer 10"
|
||||
|
||||
msgid "Music number 2"
|
||||
msgstr "Musik Nummer 2"
|
||||
|
||||
@ -908,7 +911,7 @@ msgid "free slot"
|
||||
msgstr "frei"
|
||||
|
||||
msgid "http://www.blupi.org info@blupi.org"
|
||||
msgstr ""
|
||||
msgstr "http://www.blupi.org info@blupi.org"
|
||||
|
||||
#, c-format
|
||||
msgid "mission %d, time %d"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-09 09:13+0200\n"
|
||||
"POT-Creation-Date: 2017-09-15 18:34+0200\n"
|
||||
"PO-Revision-Date: 2017-02-27 21:28+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -491,6 +491,9 @@ msgstr ""
|
||||
msgid "Music number 1"
|
||||
msgstr ""
|
||||
|
||||
msgid "Music number 10"
|
||||
msgstr ""
|
||||
|
||||
msgid "Music number 2"
|
||||
msgstr ""
|
||||
|
||||
|
@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-09 09:13+0200\n"
|
||||
"PO-Revision-Date: 2017-09-09 09:13+0200\n"
|
||||
"POT-Creation-Date: 2017-09-15 18:34+0200\n"
|
||||
"PO-Revision-Date: 2017-10-04 23:29+0200\n"
|
||||
"Last-Translator: Mathieu Schroeter <mathieu@schroetersa.ch>\n"
|
||||
"Language-Team: French <kde-i18n-doc@kde.org>\n"
|
||||
"Language: fr\n"
|
||||
@ -543,6 +543,9 @@ msgstr "Choix de la musique"
|
||||
msgid "Music number 1"
|
||||
msgstr "Musique numéro 1"
|
||||
|
||||
msgid "Music number 10"
|
||||
msgstr "Musique numéro 10"
|
||||
|
||||
msgid "Music number 2"
|
||||
msgstr "Musique numéro 2"
|
||||
|
||||
@ -900,7 +903,7 @@ msgid "free slot"
|
||||
msgstr "libre"
|
||||
|
||||
msgid "http://www.blupi.org info@blupi.org"
|
||||
msgstr ""
|
||||
msgstr "http://www.blupi.org info@blupi.org"
|
||||
|
||||
#, c-format
|
||||
msgid "mission %d, time %d"
|
||||
|
917
resources/po/it.po
Normal file
917
resources/po/it.po
Normal file
@ -0,0 +1,917 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-29 10:21+0200\n"
|
||||
"PO-Revision-Date: 2017-10-04 17:30+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid " - FFmpeg (LGPLv2.1)"
|
||||
msgstr " - FFmpeg (LGPLv2.1)"
|
||||
|
||||
msgid " - GNU/gettext and GNU/libiconv (GPLv3)"
|
||||
msgstr " - GNU/gettext e GNU/libiconv (GPLv3)"
|
||||
|
||||
msgid " - SDL2, SDL2_image and SDL2_mixer (zlib license)"
|
||||
msgstr " - SDL2, SDL2_image e SDL2_mixer (zlib licensa)"
|
||||
|
||||
msgid " - SDL_kitchensink (MIT)"
|
||||
msgstr " - SDL_kitchensink (MIT)"
|
||||
|
||||
msgid " - argagg (MIT)"
|
||||
msgstr " - argagg (MIT)"
|
||||
|
||||
msgid " - libasound (LGPLv2.1)"
|
||||
msgstr " - libasound (LGPLv2.1)"
|
||||
|
||||
msgid " - libcurl (MIT/X derivate)"
|
||||
msgstr " - libcurl (MIT/X derivata)"
|
||||
|
||||
msgid " - libpng (own license)"
|
||||
msgstr " - libpng (licensa personale)"
|
||||
|
||||
msgid " - libpulse (LGPLv2.1)"
|
||||
msgstr " - libpulse (LGPLv2.1)"
|
||||
|
||||
msgid " - zlib (own license)"
|
||||
msgstr " - zlib (licensa personale)"
|
||||
|
||||
msgid "(isolated tower)"
|
||||
msgstr "(torre isolata)"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Build a bridge"
|
||||
msgstr ""
|
||||
"1: Abbatti un albero \n"
|
||||
"2: Costruisci un ponte"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Make a boat"
|
||||
msgstr ""
|
||||
"1: Abbatti un albero \n"
|
||||
"2: Costruisci una barca"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Make a palisade"
|
||||
msgstr ""
|
||||
"1: Abbatti un albero \n"
|
||||
"2: Costruisci una palizzata"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make a Jeep"
|
||||
msgstr ""
|
||||
"1: Estrai del ferro\n"
|
||||
"2: Costruisci una Jeep"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make a bomb"
|
||||
msgstr ""
|
||||
"1: Estrai del ferro\n"
|
||||
"2: Costruisci una bomba"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make an armour"
|
||||
msgstr ""
|
||||
"1: Estrai del ferro\n"
|
||||
"2: Costruisci un'armatura"
|
||||
|
||||
msgid ""
|
||||
"1: Grow tomatoes\n"
|
||||
"2: Eat"
|
||||
msgstr ""
|
||||
"1: Coltiva...\n"
|
||||
"2: Mangia"
|
||||
|
||||
msgid ""
|
||||
"1: Make a bunch\n"
|
||||
"2: Transform"
|
||||
msgstr ""
|
||||
"1: Fai un mazzo\n"
|
||||
"2: Trasforma"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Build a bridge"
|
||||
msgstr ""
|
||||
"1: Prendi\n"
|
||||
"2: Costruisci un ponte"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Build palisade"
|
||||
msgstr ""
|
||||
"1: Prendi\n"
|
||||
"2: Costruisci una palizzata"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Make a boat"
|
||||
msgstr ""
|
||||
"1: Prendi\n"
|
||||
"2: Costruisci una barca"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Transform"
|
||||
msgstr ""
|
||||
"1: Prendi\n"
|
||||
"2: Trasforma"
|
||||
|
||||
msgid ""
|
||||
"1|Drop planks on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Posa delle assi \n"
|
||||
"1|sulle lastre tratteggiate."
|
||||
|
||||
msgid ""
|
||||
"1|Drop platinium on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Posa del platinium sulle \n"
|
||||
"1|lastre tratteggiate."
|
||||
|
||||
msgid ""
|
||||
"1|Drop tomatoes on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Posa dei pomodori sulle \n"
|
||||
"1|lastre tratteggiate."
|
||||
|
||||
msgid ""
|
||||
"1|Each Blupi in\n"
|
||||
"1|his house."
|
||||
msgstr ""
|
||||
"1|Ogni Blupi nella\n"
|
||||
"1|sua casa."
|
||||
|
||||
msgid ""
|
||||
"1|Go on striped\n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Andare sulle lastre\n"
|
||||
"1|tratteggiate."
|
||||
|
||||
msgid "1|Goal :"
|
||||
msgstr "1|Obbiettivo :"
|
||||
|
||||
msgid ""
|
||||
"1|Kill all\n"
|
||||
"1|enemies !"
|
||||
msgstr ""
|
||||
"1|Eliminare\n"
|
||||
"1|tutti i nemici !"
|
||||
|
||||
msgid ""
|
||||
"1|Resist until\n"
|
||||
"1|fire extinction ..."
|
||||
msgstr ""
|
||||
"1|Resistere sino allo\n"
|
||||
"1|spegnimento del fuoco ..."
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"1|The Blupi population must\n"
|
||||
"1|be of at least %d Blupi."
|
||||
msgstr ""
|
||||
"1|La popolazione deve\n"
|
||||
"1|essere di almeno %d Blupi."
|
||||
|
||||
msgid ""
|
||||
"1|The robot must reach\n"
|
||||
"1|the striped paving stones."
|
||||
msgstr ""
|
||||
"1|Il robot deve raggiungere\n"
|
||||
"1|le lastre tratteggiate."
|
||||
|
||||
msgid "All licenses are available under share/doc/planetblupi/copyright"
|
||||
msgstr "Tutte le license sono disponibili in share/doc/planetblupi/copyright"
|
||||
|
||||
msgid "Already two teleporters"
|
||||
msgstr "Esistono già due teletrasporti"
|
||||
|
||||
msgid "Another mistake..."
|
||||
msgstr "Ahimè, hai sbagliato un'altra volta..."
|
||||
|
||||
msgid "Armour"
|
||||
msgstr "Armatura"
|
||||
|
||||
msgid "Available buttons"
|
||||
msgstr "Pulsanti disponibili"
|
||||
|
||||
msgid "Bang, failed again !"
|
||||
msgstr "Bang, hai sbagliato ancora !"
|
||||
|
||||
msgid "Bank"
|
||||
msgstr "Riva"
|
||||
|
||||
msgid "Blow up"
|
||||
msgstr "Espoldi"
|
||||
|
||||
msgid "Blupi"
|
||||
msgstr "Blupi"
|
||||
|
||||
msgid "Blupi in house"
|
||||
msgstr "Blupi nella sua casa"
|
||||
|
||||
msgid "Blupi on striped paving stones"
|
||||
msgstr "Blupi su lastre tratteggiate"
|
||||
|
||||
msgid "Blupi's energy"
|
||||
msgstr "Energia di Blupi"
|
||||
|
||||
msgid "Blupi's house"
|
||||
msgstr "Casa di Blupi"
|
||||
|
||||
msgid "Boat"
|
||||
msgstr "Barca"
|
||||
|
||||
msgid "Bouncing bomb"
|
||||
msgstr "Bomba salterina"
|
||||
|
||||
msgid "Bridge"
|
||||
msgstr "Ponte"
|
||||
|
||||
msgid "Bridge finished"
|
||||
msgstr "Ponte finito"
|
||||
|
||||
msgid "Buildings"
|
||||
msgstr "Edifici"
|
||||
|
||||
msgid "Bulldozer"
|
||||
msgstr "Bulldozer"
|
||||
|
||||
msgid "Bunch of flowers"
|
||||
msgstr "Mazzo di fiori"
|
||||
|
||||
msgid "Burnt ground"
|
||||
msgstr "Terreno bruciato"
|
||||
|
||||
msgid "Cancel last operation"
|
||||
msgstr "Annullare l'ultima operazione"
|
||||
|
||||
msgid "Carve a rock"
|
||||
msgstr "Spacca una roccia"
|
||||
|
||||
msgid "Carve rocks"
|
||||
msgstr "Spacca delle roccie"
|
||||
|
||||
msgid ""
|
||||
"Change the\n"
|
||||
"window size"
|
||||
msgstr ""
|
||||
"Cambiare la\n"
|
||||
"dimensione\n"
|
||||
"della finestra"
|
||||
|
||||
msgid "Construct this game"
|
||||
msgstr "Costruire questa partita"
|
||||
|
||||
msgid "Construction"
|
||||
msgstr "Costruzione"
|
||||
|
||||
msgid "Construction number"
|
||||
msgstr "Costruzione numero"
|
||||
|
||||
msgid "Continue this game"
|
||||
msgstr "Continua la partita"
|
||||
|
||||
msgid "Cut down a tree"
|
||||
msgstr "Abbatti un albero"
|
||||
|
||||
msgid "Cut down trees"
|
||||
msgstr "Abbatti degli alberi"
|
||||
|
||||
msgid "Decorative plants"
|
||||
msgstr "Piante ornamentali"
|
||||
|
||||
msgid "Delete figure"
|
||||
msgstr "Elimina personaggio"
|
||||
|
||||
msgid "Delete fire"
|
||||
msgstr "Elimina il fuoco"
|
||||
|
||||
msgid "Delete item"
|
||||
msgstr "Elimina oggetto"
|
||||
|
||||
msgid "Demo"
|
||||
msgstr "Demo"
|
||||
|
||||
msgid "Desert"
|
||||
msgstr "Deserto"
|
||||
|
||||
msgid "Difficult"
|
||||
msgstr "Difficile"
|
||||
|
||||
msgid "Drink"
|
||||
msgstr "Bevi"
|
||||
|
||||
msgid "Drop"
|
||||
msgstr "Posa"
|
||||
|
||||
msgid "Dynamite"
|
||||
msgstr "Dinamite"
|
||||
|
||||
msgid "E"
|
||||
msgstr "E"
|
||||
|
||||
msgid "Easy"
|
||||
msgstr "Facile"
|
||||
|
||||
msgid "Eat"
|
||||
msgstr "Mangia"
|
||||
|
||||
msgid "Eggs"
|
||||
msgstr "Uova"
|
||||
|
||||
msgid "Electrocutor"
|
||||
msgstr "Folgoratore"
|
||||
|
||||
msgid "Ending conditions"
|
||||
msgstr ""
|
||||
"Condizioni per\n"
|
||||
"concludere\n"
|
||||
"la missione"
|
||||
|
||||
msgid "Enemy barrier"
|
||||
msgstr "Barriera nemica"
|
||||
|
||||
msgid "Enemy buildings"
|
||||
msgstr "Edifici nemici"
|
||||
|
||||
msgid "Enemy construction"
|
||||
msgstr "Costruzione nemica"
|
||||
|
||||
msgid "Enemy ground"
|
||||
msgstr "Terreno nemico"
|
||||
|
||||
msgid "Enemy rocket"
|
||||
msgstr "Razzo nemico"
|
||||
|
||||
msgid "Excellent..."
|
||||
msgstr "Eccellente..."
|
||||
|
||||
msgid "Extract iron"
|
||||
msgstr "Estrai del ferro"
|
||||
|
||||
msgid "Faster"
|
||||
msgstr "Veloce"
|
||||
|
||||
msgid "Finish"
|
||||
msgstr "Terminare"
|
||||
|
||||
msgid "Fire"
|
||||
msgstr "Fuoco"
|
||||
|
||||
msgid "Fire out"
|
||||
msgstr "Fuoco fermato"
|
||||
|
||||
msgid "Flag"
|
||||
msgstr "Bandiera"
|
||||
|
||||
msgid "Flowers"
|
||||
msgstr "Fiori"
|
||||
|
||||
msgid "Forest"
|
||||
msgstr "Foresta"
|
||||
|
||||
msgid "Forest under snow"
|
||||
msgstr "Foresta innevata"
|
||||
|
||||
msgid "Fullscreen"
|
||||
msgstr "Schermata intera"
|
||||
|
||||
msgid "Game paused"
|
||||
msgstr "Partita interrotta"
|
||||
|
||||
msgid "Garden shed"
|
||||
msgstr "Capanno"
|
||||
|
||||
msgid ""
|
||||
"Global game\n"
|
||||
"speed"
|
||||
msgstr ""
|
||||
"Velocità\n"
|
||||
"del gioco"
|
||||
|
||||
msgid "Global settings"
|
||||
msgstr "Configurazione globale"
|
||||
|
||||
msgid "Go"
|
||||
msgstr "Va"
|
||||
|
||||
msgid "Grow tomatoes"
|
||||
msgstr "Coltiva pomodori"
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Aiuto"
|
||||
|
||||
msgid "Help number"
|
||||
msgstr "Aiuto numero"
|
||||
|
||||
msgid "Helper robot"
|
||||
msgstr "Robot aiutante"
|
||||
|
||||
msgid "Ice"
|
||||
msgstr "Ghiaccio"
|
||||
|
||||
msgid "Impossible"
|
||||
msgstr "Impossibile"
|
||||
|
||||
#, c-format
|
||||
msgid "Impossible to win if less than %d Blupi"
|
||||
msgstr "Impossibile vincere se meno di %d Blupi"
|
||||
|
||||
msgid "Inadequate ground"
|
||||
msgstr "Terreno non adatto"
|
||||
|
||||
msgid "Increase volume"
|
||||
msgstr "Alza il volume"
|
||||
|
||||
msgid "Increase window size"
|
||||
msgstr "Aumentare la dimensione della finestra"
|
||||
|
||||
msgid "Incubator"
|
||||
msgstr "Incubatrice"
|
||||
|
||||
msgid "Incubator or teleporter"
|
||||
msgstr "Incubatrice o teletrasporto"
|
||||
|
||||
msgid "Inflammable ground"
|
||||
msgstr "Terreno infiammabile"
|
||||
|
||||
msgid "Insert CD-Rom Planet Blupi and wait a few seconds..."
|
||||
msgstr "Inserire il CD-Rom Planet Blupi e attendere qualche secondo ..."
|
||||
|
||||
msgid ""
|
||||
"Interface language\n"
|
||||
"and sounds"
|
||||
msgstr ""
|
||||
"Lingua\n"
|
||||
"dell'interfaccia\n"
|
||||
"e dei suoni"
|
||||
|
||||
msgid "Interrupt"
|
||||
msgstr "Interrompere"
|
||||
|
||||
msgid "Iron"
|
||||
msgstr "Ferro"
|
||||
|
||||
msgid "Items"
|
||||
msgstr "Oggetti"
|
||||
|
||||
msgid "Jeep"
|
||||
msgstr "Jeep"
|
||||
|
||||
msgid "Laboratory"
|
||||
msgstr "Laboratorio"
|
||||
|
||||
msgid "Last construction resolved !"
|
||||
msgstr "Ultima costruzione risolta !"
|
||||
|
||||
msgid "Leave Jeep"
|
||||
msgstr "Lascia la Jeep"
|
||||
|
||||
#, c-format
|
||||
msgid "Lost if less than %d Blupi"
|
||||
msgstr "Perso se meno di %d Blupi"
|
||||
|
||||
msgid "Make a Jeep"
|
||||
msgstr "Costruisci una Jeep"
|
||||
|
||||
msgid "Make a helper robot"
|
||||
msgstr "Costruisci un robot aiutante"
|
||||
|
||||
msgid "Make a time bomb"
|
||||
msgstr "Costruisci una bomba"
|
||||
|
||||
msgid "Make armour"
|
||||
msgstr "Costruisci un'armatura"
|
||||
|
||||
msgid "Make bunch of flowers"
|
||||
msgstr "Fai un mazzo di fiori"
|
||||
|
||||
msgid "Make bunches of flowers"
|
||||
msgstr "Fai dei mazzi di fiori"
|
||||
|
||||
msgid "Master robot"
|
||||
msgstr "Robot-capo"
|
||||
|
||||
msgid "Medical potion"
|
||||
msgstr "Pozione"
|
||||
|
||||
msgid "Mine"
|
||||
msgstr "Miniera"
|
||||
|
||||
msgid "Miscellaneous ground"
|
||||
msgstr "Terreno misto"
|
||||
|
||||
msgid "Mission number"
|
||||
msgstr "Missione numero"
|
||||
|
||||
msgid "Mission over..."
|
||||
msgstr "Missione compiuta..."
|
||||
|
||||
msgid "Missions"
|
||||
msgstr "Missioni"
|
||||
|
||||
msgid ""
|
||||
"Music\n"
|
||||
"volume"
|
||||
msgstr ""
|
||||
"Volume\n"
|
||||
"della musica"
|
||||
|
||||
msgid "Music choice"
|
||||
msgstr "Scelta della musica"
|
||||
|
||||
msgid "Music number 1"
|
||||
msgstr "Musica numero 1"
|
||||
|
||||
msgid "Music number 10"
|
||||
msgstr "Musica numero 10"
|
||||
|
||||
msgid "Music number 2"
|
||||
msgstr "Musica numero 2"
|
||||
|
||||
msgid "Music number 3"
|
||||
msgstr "Musica numero 3"
|
||||
|
||||
msgid "Music number 4"
|
||||
msgstr "Musica numero 4"
|
||||
|
||||
msgid "Music number 5"
|
||||
msgstr "Musica numero 5"
|
||||
|
||||
msgid "Music number 6"
|
||||
msgstr "Musica numero 6"
|
||||
|
||||
msgid "Music number 7"
|
||||
msgstr "Musica numero 7"
|
||||
|
||||
msgid "Music number 8"
|
||||
msgstr "Musica numero 8"
|
||||
|
||||
msgid "Music number 9"
|
||||
msgstr "Musica numero 9"
|
||||
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
#, c-format
|
||||
msgid "New version available for download on www.blupi.org (v%s)"
|
||||
msgstr "Nuova versione disponibile su www.blupi.org (v%s)"
|
||||
|
||||
msgid "Next game"
|
||||
msgstr "Partita successiva"
|
||||
|
||||
msgid "Next language"
|
||||
msgstr "Prossima lingua"
|
||||
|
||||
msgid "Next page"
|
||||
msgstr "Pagina successiva"
|
||||
|
||||
msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
msgid "No more enemies"
|
||||
msgstr "Nemici eliminati"
|
||||
|
||||
msgid "No music"
|
||||
msgstr "Nessuna musica"
|
||||
|
||||
msgid "No video"
|
||||
msgstr "Nessun video"
|
||||
|
||||
msgid "No, not that way !"
|
||||
msgstr "Ma no, non così !"
|
||||
|
||||
msgid "No, wrong way ..."
|
||||
msgstr "Eh no, non è così ..."
|
||||
|
||||
msgid "None"
|
||||
msgstr "Nessuno"
|
||||
|
||||
msgid "Normal ground"
|
||||
msgstr "Terreno normale"
|
||||
|
||||
msgid "Not enough energy"
|
||||
msgstr "Energia limitata"
|
||||
|
||||
msgid "Now go on mission."
|
||||
msgstr "Ora passa alle missioni."
|
||||
|
||||
msgid "Occupied ground"
|
||||
msgstr "Terreno occupato"
|
||||
|
||||
msgid "Open another game"
|
||||
msgstr "Apri un'altra partita"
|
||||
|
||||
msgid "Opposite bank no good"
|
||||
msgstr "Riva opposta non ok"
|
||||
|
||||
msgid "Palisade"
|
||||
msgstr "Palizzata"
|
||||
|
||||
msgid "Paving stones"
|
||||
msgstr "Lastre"
|
||||
|
||||
msgid "Planet Blupi"
|
||||
msgstr "Planet Blupi"
|
||||
|
||||
msgid "Planet Blupi -- stop"
|
||||
msgstr "Planet Blupi -- stop"
|
||||
|
||||
msgid "Planks"
|
||||
msgstr "Assi"
|
||||
|
||||
msgid "Planks on striped paving stones"
|
||||
msgstr "Assi su lastre tratteggiate"
|
||||
|
||||
msgid "Platinium"
|
||||
msgstr "Platinium"
|
||||
|
||||
msgid "Platinium on striped paving stones"
|
||||
msgstr "Platinium su lastre trattegiate"
|
||||
|
||||
msgid "Play this game"
|
||||
msgstr "Giocare questa partita"
|
||||
|
||||
msgid "Poison"
|
||||
msgstr "Veleno"
|
||||
|
||||
msgid "Prairie"
|
||||
msgstr "Prateria"
|
||||
|
||||
msgid "Previous game"
|
||||
msgstr "Partita precedente"
|
||||
|
||||
msgid "Previous language"
|
||||
msgstr "Lingua precedente"
|
||||
|
||||
msgid "Previous page"
|
||||
msgstr "Pagina precedente"
|
||||
|
||||
msgid "Prospect for iron"
|
||||
msgstr "Cerca del ferro"
|
||||
|
||||
msgid "Protection tower"
|
||||
msgstr "Torre di protezione"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr "Lascia"
|
||||
|
||||
msgid "Quit Planet Blupi"
|
||||
msgstr "Lasciare Planet Blupi"
|
||||
|
||||
msgid "Quit construction"
|
||||
msgstr "Terminare la costruzione"
|
||||
|
||||
msgid "Quit this game"
|
||||
msgstr "Lasciare la partita"
|
||||
|
||||
msgid "REC"
|
||||
msgstr "REC"
|
||||
|
||||
msgid "Reduce volume"
|
||||
msgstr "Abbassa il volume"
|
||||
|
||||
msgid "Reduce window size"
|
||||
msgstr "Ridurre la dimesione della finestra"
|
||||
|
||||
msgid "Repeat"
|
||||
msgstr "Ripeti"
|
||||
|
||||
msgid "Restart this game"
|
||||
msgstr "Ricomincia la partita"
|
||||
|
||||
msgid "Robot on striped paving stones"
|
||||
msgstr "Robot su lastre tratteggiate"
|
||||
|
||||
msgid "Rocks"
|
||||
msgstr "Rocce"
|
||||
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Salvare"
|
||||
|
||||
msgid "Save this game"
|
||||
msgstr "Salvare questa partita"
|
||||
|
||||
msgid "Scenery choice"
|
||||
msgstr "Scelta degli scenari"
|
||||
|
||||
msgid ""
|
||||
"Scroll speed\n"
|
||||
"with mouse"
|
||||
msgstr ""
|
||||
"Velocità\n"
|
||||
"del mouse"
|
||||
|
||||
msgid ""
|
||||
"Select the\n"
|
||||
"window mode"
|
||||
msgstr ""
|
||||
"Selezionare il\n"
|
||||
"modo finestra"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Configurazione"
|
||||
|
||||
msgid "Show videos"
|
||||
msgstr "Mostra i video"
|
||||
|
||||
msgid "Sick Blupi"
|
||||
msgstr "Blupi ammalato"
|
||||
|
||||
msgid "Skill level"
|
||||
msgstr "Livello di difficoltà"
|
||||
|
||||
msgid "Slower"
|
||||
msgstr "Lento"
|
||||
|
||||
msgid ""
|
||||
"Sound effect\n"
|
||||
"volume"
|
||||
msgstr ""
|
||||
"Volume\n"
|
||||
"degli effetti"
|
||||
|
||||
msgid "Special pavings"
|
||||
msgstr "Lastre speciali"
|
||||
|
||||
msgid "Spider"
|
||||
msgstr "Ragno"
|
||||
|
||||
msgid "Starting fire"
|
||||
msgstr "Inizio d'incendio"
|
||||
|
||||
msgid "Sterile ground"
|
||||
msgstr "Terreno sterile"
|
||||
|
||||
msgid "Sticky trap"
|
||||
msgstr "Trappola collosa"
|
||||
|
||||
msgid "Stones"
|
||||
msgstr "Pietre"
|
||||
|
||||
msgid "Stop"
|
||||
msgstr "Stop"
|
||||
|
||||
msgid "Striped paving stones"
|
||||
msgstr "Lastre tratteggiate"
|
||||
|
||||
msgid "Take"
|
||||
msgstr "Prendi"
|
||||
|
||||
msgid "Teleporter"
|
||||
msgstr "Teletrasporto"
|
||||
|
||||
msgid ""
|
||||
"This game is an original creation of Epsitec SA, CH-1400 Yverdon-les-Bains"
|
||||
msgstr ""
|
||||
"Questo gioco è una realizzazione originale di Epsitec SA, CH-1400 Yverdon-"
|
||||
"les-Bains"
|
||||
|
||||
msgid "This game uses statically linked free and open-source libraries:"
|
||||
msgstr "Questo gioco utilizza delle librerie open-source:"
|
||||
|
||||
msgid "Time bomb"
|
||||
msgstr "Bomba a tempo"
|
||||
|
||||
msgid "Tired Blupi"
|
||||
msgstr "Blupi stanco"
|
||||
|
||||
msgid "Tomatoes"
|
||||
msgstr "Pomodori"
|
||||
|
||||
msgid "Tomatoes on striped paving stones"
|
||||
msgstr "Pomodori su lastre tratteggiate"
|
||||
|
||||
msgid "Too close to water"
|
||||
msgstr "Troppo vicino all'acqua"
|
||||
|
||||
msgid "Training"
|
||||
msgstr "Allenamento"
|
||||
|
||||
msgid "Training number"
|
||||
msgstr "Allenamento numero"
|
||||
|
||||
msgid "Transform"
|
||||
msgstr "Trasforma"
|
||||
|
||||
msgid "Transport"
|
||||
msgstr "Mezzi di trasporto"
|
||||
|
||||
msgid "Trapped enemy"
|
||||
msgstr "Nemico intrappolato"
|
||||
|
||||
msgid "Tree"
|
||||
msgstr "Alberi"
|
||||
|
||||
msgid "Tree trunks"
|
||||
msgstr "Tronchi"
|
||||
|
||||
msgid "Version"
|
||||
msgstr "Versione"
|
||||
|
||||
msgid "Very good, success on all missions !"
|
||||
msgstr "Splendido, hai concluso il gioco !"
|
||||
|
||||
msgid "Very good."
|
||||
msgstr "Molto bene."
|
||||
|
||||
msgid ""
|
||||
"Video\n"
|
||||
"sequences"
|
||||
msgstr ""
|
||||
"Sequenze\n"
|
||||
"video"
|
||||
|
||||
msgid "Virus"
|
||||
msgstr "Virus"
|
||||
|
||||
msgid "W"
|
||||
msgstr "O"
|
||||
|
||||
msgid "Wall"
|
||||
msgstr "Muro"
|
||||
|
||||
msgid "Wall or palisade"
|
||||
msgstr "Muro o Palizzata"
|
||||
|
||||
msgid "Water"
|
||||
msgstr "Acqua"
|
||||
|
||||
msgid "We hope you have had as much fun playing the game as we had making it !"
|
||||
msgstr ""
|
||||
"Speriamo che ti sia divertito con questo gioco almeno quanto noi ci siamo "
|
||||
"zzarlo !"
|
||||
|
||||
msgid "Weapons"
|
||||
msgstr "Armi"
|
||||
|
||||
msgid "Well done !"
|
||||
msgstr "Bravo, ce l'hai fatta !"
|
||||
|
||||
msgid "Windowed"
|
||||
msgstr "Finestra"
|
||||
|
||||
msgid "Work done"
|
||||
msgstr "Lavoro in corso"
|
||||
|
||||
msgid "Workshop"
|
||||
msgstr "Fabbrica"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Si"
|
||||
|
||||
msgid "Yes, great ..."
|
||||
msgstr "Si, fantastico ..."
|
||||
|
||||
msgid "You have failed, try again..."
|
||||
msgstr "Hai sbagliato, riprova..."
|
||||
|
||||
msgid "You have played Planet Blupi."
|
||||
msgstr "Hai giocato con Planet Blupi."
|
||||
|
||||
#, c-format
|
||||
msgid "construction %d, time %d"
|
||||
msgstr "Costruzione %d, tempo %d"
|
||||
|
||||
msgid "en"
|
||||
msgstr "it"
|
||||
|
||||
msgid "free slot"
|
||||
msgstr "libero"
|
||||
|
||||
msgid "http://www.blupi.org info@blupi.org"
|
||||
msgstr "http://www.blupi.org info@blupi.org"
|
||||
|
||||
#, c-format
|
||||
msgid "mission %d, time %d"
|
||||
msgstr "missione %d, tempo %d"
|
||||
|
||||
#, c-format
|
||||
msgid "training %d, time %d"
|
||||
msgstr "allenamento %d, tempo %d"
|
914
resources/po/pl.po
Normal file
914
resources/po/pl.po
Normal file
@ -0,0 +1,914 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-10-04 07:04+0200\n"
|
||||
"PO-Revision-Date: 2017-09-12 20:10+0200\n"
|
||||
"Last-Translator: tomangelo <tomangelo@wp.pl>\n"
|
||||
"Language-Team: TerranovaTeam <contact@colobot.info>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
msgid " - FFmpeg (LGPLv2.1)"
|
||||
msgstr " - FFmpeg (LGPLv2.1)"
|
||||
|
||||
msgid " - GNU/gettext and GNU/libiconv (GPLv3)"
|
||||
msgstr " - GNU/gettext and GNU/libiconv (GPLv3)"
|
||||
|
||||
msgid " - SDL2, SDL2_image and SDL2_mixer (zlib license)"
|
||||
msgstr " - SDL2, SDL2_image and SDL2_mixer (licencja zlib)"
|
||||
|
||||
msgid " - SDL_kitchensink (MIT)"
|
||||
msgstr " - SDL_kitchensink (MIT)"
|
||||
|
||||
msgid " - argagg (MIT)"
|
||||
msgstr " - argagg (MIT)"
|
||||
|
||||
msgid " - libasound (LGPLv2.1)"
|
||||
msgstr " - libasound (LGPLv2.1)"
|
||||
|
||||
msgid " - libcurl (MIT/X derivate)"
|
||||
msgstr " - libcurl (MIT/X derivate)"
|
||||
|
||||
msgid " - libpng (own license)"
|
||||
msgstr " - libpng (własna licencja)"
|
||||
|
||||
msgid " - libpulse (LGPLv2.1)"
|
||||
msgstr " - libpulse (LGPLv2.1)"
|
||||
|
||||
msgid " - zlib (own license)"
|
||||
msgstr " - zlib (własna licencja)"
|
||||
|
||||
msgid "(isolated tower)"
|
||||
msgstr "(samotna wieża)"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Build a bridge"
|
||||
msgstr ""
|
||||
"1: Zetnij drzewo\n"
|
||||
"2: Zbuduj most"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Make a boat"
|
||||
msgstr ""
|
||||
"1: Zetnij drzewo\n"
|
||||
"2: Zbuduj łódź"
|
||||
|
||||
msgid ""
|
||||
"1: Cut down a tree \n"
|
||||
"2: Make a palisade"
|
||||
msgstr ""
|
||||
"1: Zetnij drzewo\n"
|
||||
"2: Zbuduj palisadę"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make a Jeep"
|
||||
msgstr ""
|
||||
"1: Wykop żelazo\n"
|
||||
"2: Stwórz Jeepa"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make a bomb"
|
||||
msgstr ""
|
||||
"1: Wykop żelazo\n"
|
||||
"2: Stwórz bombę"
|
||||
|
||||
msgid ""
|
||||
"1: Extract iron\n"
|
||||
"2: Make an armour"
|
||||
msgstr ""
|
||||
"1: Wykop żelazo\n"
|
||||
"2: Stwórz zbroję"
|
||||
|
||||
msgid ""
|
||||
"1: Grow tomatoes\n"
|
||||
"2: Eat"
|
||||
msgstr ""
|
||||
"1: Zasadź pomidory\n"
|
||||
"2: Zjedz"
|
||||
|
||||
msgid ""
|
||||
"1: Make a bunch\n"
|
||||
"2: Transform"
|
||||
msgstr ""
|
||||
"1: Zbierz wiele\n"
|
||||
"2: Przetwórz"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Build a bridge"
|
||||
msgstr ""
|
||||
"1: Weź\n"
|
||||
"2: Zbuduj most"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Build palisade"
|
||||
msgstr ""
|
||||
"1: Weź\n"
|
||||
"2: Zbuduj palisadę"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Make a boat"
|
||||
msgstr ""
|
||||
"1: Weź\n"
|
||||
"2: Zbuduj łódź"
|
||||
|
||||
msgid ""
|
||||
"1: Take\n"
|
||||
"2: Transform"
|
||||
msgstr ""
|
||||
"1: Weź\n"
|
||||
"2: Przetwórz"
|
||||
|
||||
msgid ""
|
||||
"1|Drop planks on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Połóż deski na\n"
|
||||
"1|nawierzchni docelowej."
|
||||
|
||||
msgid ""
|
||||
"1|Drop platinium on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Połóż platynę na\n"
|
||||
"1|nawierzchni docelowej."
|
||||
|
||||
msgid ""
|
||||
"1|Drop tomatoes on striped \n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Połóż pomidory na\n"
|
||||
"1|nawierzchni docelowej."
|
||||
|
||||
msgid ""
|
||||
"1|Each Blupi in\n"
|
||||
"1|his house."
|
||||
msgstr ""
|
||||
"1|Każdy Blupi we\n"
|
||||
"1|własnym domu."
|
||||
|
||||
msgid ""
|
||||
"1|Go on striped\n"
|
||||
"1|paving stones."
|
||||
msgstr ""
|
||||
"1|Idź na\n"
|
||||
"1|nawierzchnię docelową."
|
||||
|
||||
msgid "1|Goal :"
|
||||
msgstr "1|Zadanie :"
|
||||
|
||||
msgid ""
|
||||
"1|Kill all\n"
|
||||
"1|enemies !"
|
||||
msgstr ""
|
||||
"1|Wyeliminuj wszystkich\n"
|
||||
"1|przeciwników!"
|
||||
|
||||
msgid ""
|
||||
"1|Resist until\n"
|
||||
"1|fire extinction ..."
|
||||
msgstr ""
|
||||
"1|Wytrzymaj dopóki\n"
|
||||
"1|pożar nie wygaśnie ..."
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"1|The Blupi population must\n"
|
||||
"1|be of at least %d Blupi."
|
||||
msgstr ""
|
||||
"1|Populacja Blupich musi\n"
|
||||
"1|wynosić minimum %d Blupich."
|
||||
|
||||
msgid ""
|
||||
"1|The robot must reach\n"
|
||||
"1|the striped paving stones."
|
||||
msgstr ""
|
||||
"1|Robot musi dotrzeć do\n"
|
||||
"1|nawierzchni docelowej."
|
||||
|
||||
msgid "All licenses are available under share/doc/planetblupi/copyright"
|
||||
msgstr "Wszystkie licencje dostępne są w share/doc/planetblupi/copyright"
|
||||
|
||||
msgid "Already two teleporters"
|
||||
msgstr "Już istnieją 2 teleportery"
|
||||
|
||||
msgid "Another mistake..."
|
||||
msgstr "Znowu pomyłka..."
|
||||
|
||||
msgid "Armour"
|
||||
msgstr "Zbroja"
|
||||
|
||||
msgid "Available buttons"
|
||||
msgstr "Dostępne przyciski"
|
||||
|
||||
msgid "Bang, failed again !"
|
||||
msgstr "Motyla noga, znowu porażka!"
|
||||
|
||||
msgid "Bank"
|
||||
msgstr "Brzeg"
|
||||
|
||||
msgid "Blow up"
|
||||
msgstr "Wysadź w powietrze"
|
||||
|
||||
msgid "Blupi"
|
||||
msgstr "Blupi"
|
||||
|
||||
msgid "Blupi in house"
|
||||
msgstr "Blupi w domu"
|
||||
|
||||
msgid "Blupi on striped paving stones"
|
||||
msgstr "Blupi na nawierzchni docelowej"
|
||||
|
||||
msgid "Blupi's energy"
|
||||
msgstr "Siła Blupiego"
|
||||
|
||||
msgid "Blupi's house"
|
||||
msgstr "Domek Blupiego"
|
||||
|
||||
msgid "Boat"
|
||||
msgstr "Łódź"
|
||||
|
||||
msgid "Bouncing bomb"
|
||||
msgstr "Skacząca bomba"
|
||||
|
||||
msgid "Bridge"
|
||||
msgstr "Most"
|
||||
|
||||
msgid "Bridge finished"
|
||||
msgstr "Most skończony"
|
||||
|
||||
msgid "Buildings"
|
||||
msgstr "Budynki"
|
||||
|
||||
msgid "Bulldozer"
|
||||
msgstr "Buldożer"
|
||||
|
||||
msgid "Bunch of flowers"
|
||||
msgstr "Bukiet kwiatów"
|
||||
|
||||
msgid "Burnt ground"
|
||||
msgstr "Wypalona ziemia"
|
||||
|
||||
msgid "Cancel last operation"
|
||||
msgstr "Cofnij ostatnią operację"
|
||||
|
||||
msgid "Carve a rock"
|
||||
msgstr "Wyłup skałę"
|
||||
|
||||
msgid "Carve rocks"
|
||||
msgstr "Wyłup skały"
|
||||
|
||||
msgid ""
|
||||
"Change the\n"
|
||||
"window size"
|
||||
msgstr ""
|
||||
"Zmień rozmiar\n"
|
||||
"okna"
|
||||
|
||||
msgid "Construct this game"
|
||||
msgstr "Edytuj poziom"
|
||||
|
||||
msgid "Construction"
|
||||
msgstr "Konstrukcja"
|
||||
|
||||
msgid "Construction number"
|
||||
msgstr "Konstrukcja numer"
|
||||
|
||||
msgid "Continue this game"
|
||||
msgstr "Kontynuuj"
|
||||
|
||||
msgid "Cut down a tree"
|
||||
msgstr "Zetnij drzewo"
|
||||
|
||||
msgid "Cut down trees"
|
||||
msgstr "Zetnij drzewa"
|
||||
|
||||
msgid "Decorative plants"
|
||||
msgstr "Rośliny ozdobne"
|
||||
|
||||
msgid "Delete figure"
|
||||
msgstr "Usuń postać"
|
||||
|
||||
msgid "Delete fire"
|
||||
msgstr "Usuń ogień"
|
||||
|
||||
msgid "Delete item"
|
||||
msgstr "Usuń przedmiot"
|
||||
|
||||
msgid "Demo"
|
||||
msgstr "Demonstracja"
|
||||
|
||||
msgid "Desert"
|
||||
msgstr "Pustynia"
|
||||
|
||||
msgid "Difficult"
|
||||
msgstr "Trudny"
|
||||
|
||||
msgid "Drink"
|
||||
msgstr "Wypij"
|
||||
|
||||
msgid "Drop"
|
||||
msgstr "Upuść"
|
||||
|
||||
msgid "Dynamite"
|
||||
msgstr "Dynamit"
|
||||
|
||||
msgid "E"
|
||||
msgstr "Ws"
|
||||
|
||||
msgid "Easy"
|
||||
msgstr "Prosty"
|
||||
|
||||
msgid "Eat"
|
||||
msgstr "Jedz"
|
||||
|
||||
msgid "Eggs"
|
||||
msgstr "Jaja"
|
||||
|
||||
msgid "Electrocutor"
|
||||
msgstr "Paralizator"
|
||||
|
||||
msgid "Ending conditions"
|
||||
msgstr "Warunki zwycięstwa"
|
||||
|
||||
msgid "Enemy barrier"
|
||||
msgstr "Wroga bariera"
|
||||
|
||||
msgid "Enemy buildings"
|
||||
msgstr "Wrogie budynki"
|
||||
|
||||
msgid "Enemy construction"
|
||||
msgstr "Wroga konstrukcja"
|
||||
|
||||
msgid "Enemy ground"
|
||||
msgstr "Wroga ziemia"
|
||||
|
||||
msgid "Enemy rocket"
|
||||
msgstr "Wroga rakieta"
|
||||
|
||||
msgid "Excellent..."
|
||||
msgstr "Doskonale..."
|
||||
|
||||
msgid "Extract iron"
|
||||
msgstr "Wykop żelazo"
|
||||
|
||||
msgid "Faster"
|
||||
msgstr "Szybciej"
|
||||
|
||||
msgid "Finish"
|
||||
msgstr "Zakończ"
|
||||
|
||||
msgid "Fire"
|
||||
msgstr "Ogień"
|
||||
|
||||
msgid "Fire out"
|
||||
msgstr "Ugaszony pożar"
|
||||
|
||||
msgid "Flag"
|
||||
msgstr "Flaga"
|
||||
|
||||
msgid "Flowers"
|
||||
msgstr "Kwiaty"
|
||||
|
||||
msgid "Forest"
|
||||
msgstr "Las"
|
||||
|
||||
msgid "Forest under snow"
|
||||
msgstr "Las pokryty śniegiem"
|
||||
|
||||
msgid "Fullscreen"
|
||||
msgstr "Pełny ekran"
|
||||
|
||||
msgid "Game paused"
|
||||
msgstr "Gra zapauzowana"
|
||||
|
||||
msgid "Garden shed"
|
||||
msgstr "Szopka ogrodowa"
|
||||
|
||||
msgid ""
|
||||
"Global game\n"
|
||||
"speed"
|
||||
msgstr ""
|
||||
"Prędkość\n"
|
||||
"gry"
|
||||
|
||||
msgid "Global settings"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
msgid "Go"
|
||||
msgstr "Idź"
|
||||
|
||||
msgid "Grow tomatoes"
|
||||
msgstr "Sadź pomidory"
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Pomoc"
|
||||
|
||||
msgid "Help number"
|
||||
msgstr "Pomoc numer"
|
||||
|
||||
msgid "Helper robot"
|
||||
msgstr "Robot-pomocnik"
|
||||
|
||||
msgid "Ice"
|
||||
msgstr "Lód"
|
||||
|
||||
msgid "Impossible"
|
||||
msgstr "Niemożliwe"
|
||||
|
||||
#, c-format
|
||||
msgid "Impossible to win if less than %d Blupi"
|
||||
msgstr "Niemożliwe do wygrania jeśli mniej niż %d Blupich"
|
||||
|
||||
msgid "Inadequate ground"
|
||||
msgstr "Nieodpowiedni teren"
|
||||
|
||||
msgid "Increase volume"
|
||||
msgstr "Zwiększ głośność"
|
||||
|
||||
msgid "Increase window size"
|
||||
msgstr "Zwiększ rozmiar okna"
|
||||
|
||||
msgid "Incubator"
|
||||
msgstr "Wylęgarka"
|
||||
|
||||
msgid "Incubator or teleporter"
|
||||
msgstr "Inkubator lub teleporter"
|
||||
|
||||
msgid "Inflammable ground"
|
||||
msgstr "Łatwopalna ziemia"
|
||||
|
||||
msgid "Insert CD-Rom Planet Blupi and wait a few seconds..."
|
||||
msgstr ""
|
||||
"Włóż płytę CD-ROM z grą Planet Blupi do napędu optycznego i poczekaj kilka "
|
||||
"sekund"
|
||||
|
||||
msgid ""
|
||||
"Interface language\n"
|
||||
"and sounds"
|
||||
msgstr ""
|
||||
"Język interfejsu\n"
|
||||
"oraz dźwięków"
|
||||
|
||||
msgid "Interrupt"
|
||||
msgstr "Przerwij"
|
||||
|
||||
msgid "Iron"
|
||||
msgstr "Żelazo"
|
||||
|
||||
msgid "Items"
|
||||
msgstr "Przedmioty"
|
||||
|
||||
msgid "Jeep"
|
||||
msgstr "Jeep"
|
||||
|
||||
msgid "Laboratory"
|
||||
msgstr "Laboratorium"
|
||||
|
||||
msgid "Last construction resolved !"
|
||||
msgstr "Ostatnia łamigłówka rozwiązana!"
|
||||
|
||||
msgid "Leave Jeep"
|
||||
msgstr "Opuść Jeepa"
|
||||
|
||||
#, c-format
|
||||
msgid "Lost if less than %d Blupi"
|
||||
msgstr "Przegrana jeśli mniej niż %d Blupich"
|
||||
|
||||
msgid "Make a Jeep"
|
||||
msgstr "Stwórz Jeepa"
|
||||
|
||||
msgid "Make a helper robot"
|
||||
msgstr "Stwórz robota-pomocnika"
|
||||
|
||||
msgid "Make a time bomb"
|
||||
msgstr "Stwórz bombę zegarową"
|
||||
|
||||
msgid "Make armour"
|
||||
msgstr "Stwórz zbroję"
|
||||
|
||||
msgid "Make bunch of flowers"
|
||||
msgstr "Ułóż bukiet kwiatów"
|
||||
|
||||
msgid "Make bunches of flowers"
|
||||
msgstr "Ułóż bukiety kwiatów"
|
||||
|
||||
msgid "Master robot"
|
||||
msgstr "Mistrz robotów"
|
||||
|
||||
msgid "Medical potion"
|
||||
msgstr "Lekarstwo"
|
||||
|
||||
msgid "Mine"
|
||||
msgstr "Kopalnia"
|
||||
|
||||
msgid "Miscellaneous ground"
|
||||
msgstr "Mieszana ziemia"
|
||||
|
||||
msgid "Mission number"
|
||||
msgstr "Misja numer"
|
||||
|
||||
msgid "Mission over..."
|
||||
msgstr "Koniec zadania..."
|
||||
|
||||
msgid "Missions"
|
||||
msgstr "Misje"
|
||||
|
||||
msgid ""
|
||||
"Music\n"
|
||||
"volume"
|
||||
msgstr ""
|
||||
"Głośność\n"
|
||||
"muzyki"
|
||||
|
||||
msgid "Music choice"
|
||||
msgstr "Wybór muzyki"
|
||||
|
||||
msgid "Music number 1"
|
||||
msgstr "Muzyka numer 1"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Music number 10"
|
||||
msgstr "Muzyka numer 1"
|
||||
|
||||
msgid "Music number 2"
|
||||
msgstr "Muzyka numer 2"
|
||||
|
||||
msgid "Music number 3"
|
||||
msgstr "Muzyka numer 3"
|
||||
|
||||
msgid "Music number 4"
|
||||
msgstr "Muzyka numer 4"
|
||||
|
||||
msgid "Music number 5"
|
||||
msgstr "Muzyka numer 5"
|
||||
|
||||
msgid "Music number 6"
|
||||
msgstr "Muzyka numer 6"
|
||||
|
||||
msgid "Music number 7"
|
||||
msgstr "Muzyka numer 7"
|
||||
|
||||
msgid "Music number 8"
|
||||
msgstr "Muzyka numer 8"
|
||||
|
||||
msgid "Music number 9"
|
||||
msgstr "Muzyka numer 9"
|
||||
|
||||
msgid "N"
|
||||
msgstr "Pn"
|
||||
|
||||
#, c-format
|
||||
msgid "New version available for download on www.blupi.org (v%s)"
|
||||
msgstr "Nowa wersja dostępna do pobrania na www.blupi.org (v%s)"
|
||||
|
||||
msgid "Next game"
|
||||
msgstr "Następne zadanie"
|
||||
|
||||
msgid "Next language"
|
||||
msgstr "Następny język"
|
||||
|
||||
msgid "Next page"
|
||||
msgstr "Następna strona"
|
||||
|
||||
msgid "No"
|
||||
msgstr "Nie"
|
||||
|
||||
msgid "No more enemies"
|
||||
msgstr "Brak przeciwników"
|
||||
|
||||
msgid "No music"
|
||||
msgstr "Brak muzyki"
|
||||
|
||||
msgid "No video"
|
||||
msgstr "Brak wstawek filmowych"
|
||||
|
||||
msgid "No, not that way !"
|
||||
msgstr "Nie, nie w ten sposób!"
|
||||
|
||||
msgid "No, wrong way ..."
|
||||
msgstr "Nie, nie tak..."
|
||||
|
||||
msgid "None"
|
||||
msgstr "Brak"
|
||||
|
||||
msgid "Normal ground"
|
||||
msgstr "Zwykła ziemia"
|
||||
|
||||
msgid "Not enough energy"
|
||||
msgstr "Za mało siły"
|
||||
|
||||
msgid "Now go on mission."
|
||||
msgstr "Teraz spróbuj swoich sił w misjach"
|
||||
|
||||
msgid "Occupied ground"
|
||||
msgstr "Teren zajęty"
|
||||
|
||||
msgid "Open another game"
|
||||
msgstr "Otwórz poprzednią grę"
|
||||
|
||||
msgid "Opposite bank no good"
|
||||
msgstr "Brzeg nie jest odpowiedni"
|
||||
|
||||
msgid "Palisade"
|
||||
msgstr "Palisada"
|
||||
|
||||
msgid "Paving stones"
|
||||
msgstr "Kostka brukowa"
|
||||
|
||||
msgid "Planet Blupi"
|
||||
msgstr "Planet Blupi"
|
||||
|
||||
msgid "Planet Blupi -- stop"
|
||||
msgstr "Planet Blupi -- zatrzymano"
|
||||
|
||||
msgid "Planks"
|
||||
msgstr "Deski"
|
||||
|
||||
msgid "Planks on striped paving stones"
|
||||
msgstr "Deski na nawierzchni docelowej"
|
||||
|
||||
msgid "Platinium"
|
||||
msgstr "Platyna"
|
||||
|
||||
msgid "Platinium on striped paving stones"
|
||||
msgstr "Platyna na nawierzchni docelowej"
|
||||
|
||||
msgid "Play this game"
|
||||
msgstr "Zagraj"
|
||||
|
||||
msgid "Poison"
|
||||
msgstr "Trucizna"
|
||||
|
||||
msgid "Prairie"
|
||||
msgstr "Preria"
|
||||
|
||||
msgid "Previous game"
|
||||
msgstr "Poprzednie zadanie"
|
||||
|
||||
msgid "Previous language"
|
||||
msgstr "Poprzedni język"
|
||||
|
||||
msgid "Previous page"
|
||||
msgstr "Poprzednia strona"
|
||||
|
||||
msgid "Prospect for iron"
|
||||
msgstr "Szukaj żelaza"
|
||||
|
||||
msgid "Protection tower"
|
||||
msgstr "Wieża obronna"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr "Wyjdź"
|
||||
|
||||
msgid "Quit Planet Blupi"
|
||||
msgstr "Wyjdź z Planet Blupi"
|
||||
|
||||
msgid "Quit construction"
|
||||
msgstr "Zakończ tworzenie"
|
||||
|
||||
msgid "Quit this game"
|
||||
msgstr "Opuść tą grę"
|
||||
|
||||
msgid "REC"
|
||||
msgstr "Nagrywanie"
|
||||
|
||||
msgid "Reduce volume"
|
||||
msgstr "Zmniejsz głośność"
|
||||
|
||||
msgid "Reduce window size"
|
||||
msgstr "Zmniejsz rozmiar okna"
|
||||
|
||||
msgid "Repeat"
|
||||
msgstr "Powtórz"
|
||||
|
||||
msgid "Restart this game"
|
||||
msgstr "Uruchom grę ponownie"
|
||||
|
||||
msgid "Robot on striped paving stones"
|
||||
msgstr "Roboty na nawierzchni docelowej"
|
||||
|
||||
msgid "Rocks"
|
||||
msgstr "Skały"
|
||||
|
||||
msgid "S"
|
||||
msgstr "Pd"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Zapisz"
|
||||
|
||||
msgid "Save this game"
|
||||
msgstr "Zapisz tą grę"
|
||||
|
||||
msgid "Scenery choice"
|
||||
msgstr "Wybór scenerii"
|
||||
|
||||
msgid ""
|
||||
"Scroll speed\n"
|
||||
"with mouse"
|
||||
msgstr ""
|
||||
"Prędkość przewijania\n"
|
||||
"myszą"
|
||||
|
||||
msgid ""
|
||||
"Select the\n"
|
||||
"window mode"
|
||||
msgstr ""
|
||||
"Wybierz\n"
|
||||
"tryb okienkowy"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Opcje"
|
||||
|
||||
msgid "Show videos"
|
||||
msgstr "Pokaż wstawki filmowe"
|
||||
|
||||
msgid "Sick Blupi"
|
||||
msgstr "Zarażony Blupi"
|
||||
|
||||
msgid "Skill level"
|
||||
msgstr "Poziom trudności"
|
||||
|
||||
msgid "Slower"
|
||||
msgstr "Wolniej"
|
||||
|
||||
msgid ""
|
||||
"Sound effect\n"
|
||||
"volume"
|
||||
msgstr ""
|
||||
"Głośność\n"
|
||||
"efektów"
|
||||
|
||||
msgid "Special pavings"
|
||||
msgstr "Specjalne nawierzchnie"
|
||||
|
||||
msgid "Spider"
|
||||
msgstr "Pająk"
|
||||
|
||||
msgid "Starting fire"
|
||||
msgstr "Początek pożaru"
|
||||
|
||||
msgid "Sterile ground"
|
||||
msgstr "Jałowa ziemia"
|
||||
|
||||
msgid "Sticky trap"
|
||||
msgstr "Klejąca pułapka"
|
||||
|
||||
msgid "Stones"
|
||||
msgstr "Kamienie"
|
||||
|
||||
msgid "Stop"
|
||||
msgstr "Przerwij"
|
||||
|
||||
msgid "Striped paving stones"
|
||||
msgstr "Nawierzchnia docelowa"
|
||||
|
||||
msgid "Take"
|
||||
msgstr "Weź"
|
||||
|
||||
msgid "Teleporter"
|
||||
msgstr "Teleporter"
|
||||
|
||||
msgid ""
|
||||
"This game is an original creation of Epsitec SA, CH-1400 Yverdon-les-Bains"
|
||||
msgstr "Ta gra to oryginalne dzieło Epsitec SA, CH-1400 Yverdon-les-Bains"
|
||||
|
||||
msgid "This game uses statically linked free and open-source libraries:"
|
||||
msgstr ""
|
||||
"Ta gra używa statystycznie linkowanych wolnych i otwartoźródłowych "
|
||||
"bibliotek: "
|
||||
|
||||
msgid "Time bomb"
|
||||
msgstr "Bomba zegarowa"
|
||||
|
||||
msgid "Tired Blupi"
|
||||
msgstr "Zmęczony Blupi"
|
||||
|
||||
msgid "Tomatoes"
|
||||
msgstr "Pomidory"
|
||||
|
||||
msgid "Tomatoes on striped paving stones"
|
||||
msgstr "Pomidory na nawierzchni docelowej"
|
||||
|
||||
msgid "Too close to water"
|
||||
msgstr "Za blisko wody"
|
||||
|
||||
msgid "Training"
|
||||
msgstr "Trening"
|
||||
|
||||
msgid "Training number"
|
||||
msgstr "Trening numer"
|
||||
|
||||
msgid "Transform"
|
||||
msgstr "Przetwórz"
|
||||
|
||||
msgid "Transport"
|
||||
msgstr "Środki transportu"
|
||||
|
||||
msgid "Trapped enemy"
|
||||
msgstr "Przyklejony przeciwnik"
|
||||
|
||||
msgid "Tree"
|
||||
msgstr "Drzewo"
|
||||
|
||||
msgid "Tree trunks"
|
||||
msgstr "Pnie drzew"
|
||||
|
||||
msgid "Version"
|
||||
msgstr "Wersja"
|
||||
|
||||
msgid "Very good, success on all missions !"
|
||||
msgstr "Bardzo dobrze, suksesów we wszystkich misjach"
|
||||
|
||||
msgid "Very good."
|
||||
msgstr "Bardzo dobrze."
|
||||
|
||||
msgid ""
|
||||
"Video\n"
|
||||
"sequences"
|
||||
msgstr ""
|
||||
"Wstawki\n"
|
||||
"filmowe"
|
||||
|
||||
msgid "Virus"
|
||||
msgstr "Wirus"
|
||||
|
||||
msgid "W"
|
||||
msgstr "Za"
|
||||
|
||||
msgid "Wall"
|
||||
msgstr "Mur"
|
||||
|
||||
msgid "Wall or palisade"
|
||||
msgstr "Mur lub palisada"
|
||||
|
||||
msgid "Water"
|
||||
msgstr "Woda"
|
||||
|
||||
msgid "We hope you have had as much fun playing the game as we had making it !"
|
||||
msgstr ""
|
||||
"Mamy nadzieję że miałeś tak dużo frajdy z gry jak my gdy ją tworzyliśmy!"
|
||||
|
||||
msgid "Weapons"
|
||||
msgstr "Bronie"
|
||||
|
||||
msgid "Well done !"
|
||||
msgstr "Dobra robota!"
|
||||
|
||||
msgid "Windowed"
|
||||
msgstr "Tryb okienkowy"
|
||||
|
||||
msgid "Work done"
|
||||
msgstr "Zadanie skończone"
|
||||
|
||||
msgid "Workshop"
|
||||
msgstr "Warsztat"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Tak"
|
||||
|
||||
msgid "Yes, great ..."
|
||||
msgstr "Tak, wspaniale ..."
|
||||
|
||||
msgid "You have failed, try again..."
|
||||
msgstr "Przegrałeś, spróbuj ponownie..."
|
||||
|
||||
msgid "You have played Planet Blupi."
|
||||
msgstr "Grałeś w Planet Blupi"
|
||||
|
||||
#, c-format
|
||||
msgid "construction %d, time %d"
|
||||
msgstr "Budowanie %d, czas %d"
|
||||
|
||||
msgid "en"
|
||||
msgstr "pl"
|
||||
|
||||
msgid "free slot"
|
||||
msgstr "Wolny slot"
|
||||
|
||||
msgid "http://www.blupi.org info@blupi.org"
|
||||
msgstr "http://www.blupi.org info@blupi.org"
|
||||
|
||||
#, c-format
|
||||
msgid "mission %d, time %d"
|
||||
msgstr "Misja %d, czas %d"
|
||||
|
||||
#, c-format
|
||||
msgid "training %d, time %d"
|
||||
msgstr "Trenowanie %d, czas %d"
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-09 09:13+0200\n"
|
||||
"POT-Creation-Date: 2017-10-04 07:04+0200\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"
|
||||
@ -518,6 +518,9 @@ msgstr ""
|
||||
msgid "Music number 9"
|
||||
msgstr ""
|
||||
|
||||
msgid "Music number 10"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prairie"
|
||||
msgstr ""
|
||||
|
||||
|
BIN
resources/sound/it/sound002.wav
Normal file
BIN
resources/sound/it/sound002.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound003.wav
Normal file
BIN
resources/sound/it/sound003.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound004.wav
Normal file
BIN
resources/sound/it/sound004.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound005.wav
Normal file
BIN
resources/sound/it/sound005.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound006.wav
Normal file
BIN
resources/sound/it/sound006.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound007.wav
Normal file
BIN
resources/sound/it/sound007.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound008.wav
Normal file
BIN
resources/sound/it/sound008.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound009.wav
Normal file
BIN
resources/sound/it/sound009.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound010.wav
Normal file
BIN
resources/sound/it/sound010.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound014.wav
Normal file
BIN
resources/sound/it/sound014.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound017.wav
Normal file
BIN
resources/sound/it/sound017.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound018.wav
Normal file
BIN
resources/sound/it/sound018.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound019.wav
Normal file
BIN
resources/sound/it/sound019.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound027.wav
Normal file
BIN
resources/sound/it/sound027.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound033.wav
Normal file
BIN
resources/sound/it/sound033.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound037.wav
Normal file
BIN
resources/sound/it/sound037.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound056.wav
Normal file
BIN
resources/sound/it/sound056.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound057.wav
Normal file
BIN
resources/sound/it/sound057.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound058.wav
Normal file
BIN
resources/sound/it/sound058.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound059.wav
Normal file
BIN
resources/sound/it/sound059.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound060.wav
Normal file
BIN
resources/sound/it/sound060.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound061.wav
Normal file
BIN
resources/sound/it/sound061.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound062.wav
Normal file
BIN
resources/sound/it/sound062.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound063.wav
Normal file
BIN
resources/sound/it/sound063.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound064.wav
Normal file
BIN
resources/sound/it/sound064.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound065.wav
Normal file
BIN
resources/sound/it/sound065.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound066.wav
Normal file
BIN
resources/sound/it/sound066.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound067.wav
Normal file
BIN
resources/sound/it/sound067.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound068.wav
Normal file
BIN
resources/sound/it/sound068.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound069.wav
Normal file
BIN
resources/sound/it/sound069.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound070.wav
Normal file
BIN
resources/sound/it/sound070.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound071.wav
Normal file
BIN
resources/sound/it/sound071.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound072.wav
Normal file
BIN
resources/sound/it/sound072.wav
Normal file
Binary file not shown.
BIN
resources/sound/it/sound073.wav
Normal file
BIN
resources/sound/it/sound073.wav
Normal file
Binary file not shown.
@ -1764,7 +1764,7 @@ static const DescAction action_table[] =
|
||||
{0},
|
||||
},
|
||||
{
|
||||
ACTION_D_PICKAXE,
|
||||
ACTION_D_SAW,
|
||||
CHBLUPI,
|
||||
{
|
||||
{1, 290}, // e
|
||||
@ -1839,7 +1839,7 @@ static const DescAction action_table[] =
|
||||
{0},
|
||||
},
|
||||
{
|
||||
ACTION_D_SAW,
|
||||
ACTION_D_PICKAXE,
|
||||
CHBLUPI,
|
||||
{
|
||||
{8, 290, 290, 304, 304, 290, 290, 292, 292}, // e
|
||||
|
100
src/blupi.cxx
100
src/blupi.cxx
@ -30,7 +30,9 @@
|
||||
|
||||
#include <SDL2/SDL_image.h>
|
||||
#include <argagg/argagg.hpp>
|
||||
#ifdef USE_CURL
|
||||
#include <curl/curl.h>
|
||||
#endif /* USE_CURL */
|
||||
|
||||
#include "json/json.hpp"
|
||||
|
||||
@ -59,6 +61,7 @@ CDecor * g_pDecor = nullptr;
|
||||
std::thread * g_updateThread = nullptr;
|
||||
|
||||
bool g_bFullScreen = false; // false si mode de test
|
||||
Uint8 g_windowScale = 1;
|
||||
Sint32 g_speedRate = 1;
|
||||
Sint32 g_timerInterval = 50; // inverval = 50ms
|
||||
int g_rendererType = 0;
|
||||
@ -71,6 +74,7 @@ enum Settings {
|
||||
SETTING_SPEEDRATE = 1 << 1,
|
||||
SETTING_TIMERINTERVAL = 1 << 2,
|
||||
SETTING_RENDERER = 1 << 3,
|
||||
SETTING_ZOOM = 1 << 4,
|
||||
};
|
||||
|
||||
static int g_settingsOverload = 0;
|
||||
@ -79,11 +83,13 @@ bool g_bTermInit = false; // initialisation en cours
|
||||
Uint32 g_lastPhase = 999;
|
||||
static bool g_pause;
|
||||
|
||||
#ifdef USE_CURL
|
||||
struct url_data {
|
||||
CURLcode status;
|
||||
char * buffer;
|
||||
size_t size;
|
||||
};
|
||||
#endif
|
||||
|
||||
template <typename Out>
|
||||
static void
|
||||
@ -92,7 +98,7 @@ split (const std::string & s, char delim, Out result)
|
||||
std::stringstream ss;
|
||||
ss.str (s);
|
||||
std::string item;
|
||||
while (std::getline (ss, item, delim).good ())
|
||||
while (std::getline (ss, item, delim))
|
||||
*(result++) = item;
|
||||
}
|
||||
|
||||
@ -114,7 +120,10 @@ ReadConfig ()
|
||||
{
|
||||
const auto config = GetBaseDir () + "data/config.json";
|
||||
|
||||
std::ifstream file (config, std::ifstream::in);
|
||||
std::ifstream file (config, std::ifstream::in);
|
||||
if (!file)
|
||||
return false;
|
||||
|
||||
nlohmann::json j;
|
||||
file >> j;
|
||||
|
||||
@ -149,6 +158,13 @@ ReadConfig ()
|
||||
g_bFullScreen = 1;
|
||||
}
|
||||
|
||||
if (!(g_settingsOverload & SETTING_ZOOM) && j.find ("zoom") != j.end ())
|
||||
{
|
||||
g_windowScale = j["zoom"].get<Uint8> ();
|
||||
if (g_windowScale != 1 && g_windowScale != 2)
|
||||
g_windowScale = 1;
|
||||
}
|
||||
|
||||
if (
|
||||
!(g_settingsOverload & SETTING_RENDERER) && j.find ("renderer") != j.end ())
|
||||
{
|
||||
@ -164,13 +180,14 @@ ReadConfig ()
|
||||
/**
|
||||
* \brief Main frame update.
|
||||
*/
|
||||
static void
|
||||
static bool
|
||||
UpdateFrame (void)
|
||||
{
|
||||
Rect clip, rcRect;
|
||||
Uint32 phase;
|
||||
Point posMouse;
|
||||
Sint32 i, term, speed;
|
||||
bool display = true;
|
||||
|
||||
posMouse = g_pEvent->GetLastMousePos ();
|
||||
|
||||
@ -195,27 +212,22 @@ UpdateFrame (void)
|
||||
clip.bottom = POSDRAWY + DIMDRAWY;
|
||||
|
||||
if (g_pEvent->IsShift ()) // screen shifting
|
||||
{
|
||||
g_pEvent->DecorAutoShift ();
|
||||
g_pDecor->Build (clip, posMouse); // build the environment
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!g_pEvent->GetPause ())
|
||||
{
|
||||
speed = g_pEvent->GetSpeed () * g_speedRate;
|
||||
for (i = 0; i < speed; i++)
|
||||
{
|
||||
g_pDecor->BlupiStep (i == 0); // move all blupi
|
||||
g_pDecor->MoveStep (i == 0); // move the environment
|
||||
g_pEvent->DemoStep (); // forward the recording or demo playing
|
||||
}
|
||||
}
|
||||
|
||||
g_pEvent->DecorAutoShift ();
|
||||
g_pDecor->Build (clip, posMouse); // build the environment
|
||||
g_pDecor->NextPhase (1); // rebuild the map sometimes
|
||||
if (!g_pEvent->GetPause ())
|
||||
{
|
||||
speed = g_pEvent->GetSpeed () * g_speedRate;
|
||||
for (i = 0; i < speed; i++)
|
||||
{
|
||||
g_pDecor->BlupiStep (i == 0); // move all blupi
|
||||
g_pDecor->MoveStep (i == 0); // move the environment
|
||||
g_pEvent->DemoStep (); // forward the recording or demo playing
|
||||
}
|
||||
}
|
||||
|
||||
g_pEvent->DecorAutoShift ();
|
||||
g_pDecor->Build (clip, posMouse); // build the environment
|
||||
g_pDecor->NextPhase (1); // rebuild the map sometimes
|
||||
}
|
||||
|
||||
if (phase == EV_PHASE_BUILD)
|
||||
@ -243,7 +255,7 @@ UpdateFrame (void)
|
||||
phase == EV_PHASE_H2MOVIE || phase == EV_PHASE_PLAYMOVIE ||
|
||||
phase == EV_PHASE_WINMOVIE)
|
||||
{
|
||||
g_pEvent->MovieToStart (); // start a movie if necessary
|
||||
display = g_pEvent->MovieToStart (); // start a movie if necessary
|
||||
}
|
||||
|
||||
if (phase == EV_PHASE_INSERT)
|
||||
@ -257,6 +269,8 @@ UpdateFrame (void)
|
||||
if (term == 2)
|
||||
g_pEvent->ChangePhase (EV_PHASE_WINMOVIE); // win
|
||||
}
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -371,10 +385,12 @@ HandleEvent (const SDL_Event & event)
|
||||
case EV_UPDATE:
|
||||
if (!g_pEvent->IsMovie ()) // pas de film en cours ?
|
||||
{
|
||||
if (!g_pause)
|
||||
UpdateFrame ();
|
||||
bool display = true;
|
||||
|
||||
if (!g_pEvent->IsMovie ())
|
||||
if (!g_pause)
|
||||
display = UpdateFrame ();
|
||||
|
||||
if (!g_pEvent->IsMovie () && display)
|
||||
g_pPixmap->Display ();
|
||||
}
|
||||
break;
|
||||
@ -446,6 +462,7 @@ InitFail (const char * msg)
|
||||
FinishObjects ();
|
||||
}
|
||||
|
||||
#ifdef USE_CURL
|
||||
static size_t
|
||||
updateCallback (void * ptr, size_t size, size_t nmemb, void * data)
|
||||
{
|
||||
@ -463,10 +480,12 @@ updateCallback (void * ptr, size_t size, size_t nmemb, void * data)
|
||||
|
||||
return realsize;
|
||||
}
|
||||
#endif /* USE_CURL */
|
||||
|
||||
static void
|
||||
CheckForUpdates ()
|
||||
{
|
||||
#ifdef USE_CURL
|
||||
url_data chunk;
|
||||
|
||||
chunk.buffer = nullptr; /* we expect realloc(NULL, size) to work */
|
||||
@ -503,6 +522,7 @@ CheckForUpdates ()
|
||||
free (chunk.buffer);
|
||||
|
||||
curl_easy_cleanup (curl);
|
||||
#endif /* USE_CURL */
|
||||
}
|
||||
|
||||
static int
|
||||
@ -523,6 +543,10 @@ parseArgs (int argc, char * argv[], bool & exit)
|
||||
{"-f", "--fullscreen"},
|
||||
"load in fullscreen [on;off] (default: on)",
|
||||
1},
|
||||
{"zoom",
|
||||
{"-z", "--zoom"},
|
||||
"change the window scale (only if fullscreen is off) [1;2] (default: 1)",
|
||||
1},
|
||||
{"renderer",
|
||||
{"-r", "--renderer"},
|
||||
"set a renderer [auto;software;accelerated] (default: auto)",
|
||||
@ -584,6 +608,12 @@ parseArgs (int argc, char * argv[], bool & exit)
|
||||
g_settingsOverload |= SETTING_FULLSCREEN;
|
||||
}
|
||||
|
||||
if (args["zoom"])
|
||||
{
|
||||
g_windowScale = args["zoom"];
|
||||
g_settingsOverload |= SETTING_ZOOM;
|
||||
}
|
||||
|
||||
if (args["renderer"])
|
||||
{
|
||||
if (args["renderer"].as<std::string> () == "auto")
|
||||
@ -622,6 +652,12 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
|
||||
bOK = ReadConfig (); // lit le fichier config.json
|
||||
|
||||
if (!bOK) // Something wrong with config.json file?
|
||||
{
|
||||
InitFail ("Game not correctly installed");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
auto res = SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER);
|
||||
if (res < 0)
|
||||
return EXIT_FAILURE;
|
||||
@ -652,12 +688,6 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!bOK) // Something wrong with config.json file?
|
||||
{
|
||||
InitFail ("Game not correctly installed");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
SDL_RenderSetLogicalSize (g_renderer, LXIMAGE, LYIMAGE);
|
||||
|
||||
const auto renders = SDL_GetNumRenderDrivers ();
|
||||
@ -825,7 +855,7 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
}
|
||||
|
||||
totalDim.x = DIMTEXTX * 16;
|
||||
totalDim.y = DIMTEXTY * 8 * 3;
|
||||
totalDim.y = DIMTEXTY * 9 * 3;
|
||||
iconDim.x = DIMTEXTX;
|
||||
iconDim.y = DIMTEXTY;
|
||||
if (!g_pPixmap->Cache (CHTEXT, "image/text.png", totalDim, iconDim))
|
||||
@ -835,7 +865,7 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
}
|
||||
|
||||
totalDim.x = DIMLITTLEX * 16;
|
||||
totalDim.y = DIMLITTLEY * 8;
|
||||
totalDim.y = DIMLITTLEY * 9;
|
||||
iconDim.x = DIMLITTLEX;
|
||||
iconDim.y = DIMLITTLEY;
|
||||
if (!g_pPixmap->Cache (CHLITTLE, "image/little.png", totalDim, iconDim))
|
||||
@ -855,7 +885,7 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
}
|
||||
|
||||
// Load all cursors
|
||||
g_pPixmap->LoadCursors ();
|
||||
g_pPixmap->LoadCursors (g_windowScale);
|
||||
g_pPixmap->ChangeSprite (SPRITE_WAIT); // met le sablier maison
|
||||
|
||||
// Create the sound manager.
|
||||
@ -902,6 +932,8 @@ DoInit (int argc, char * argv[], bool & exit)
|
||||
g_pEvent->Create (g_pPixmap, g_pDecor, g_pSound, g_pMovie);
|
||||
g_updateThread = new std::thread (CheckForUpdates);
|
||||
g_pEvent->SetFullScreen (g_bFullScreen);
|
||||
if (!g_bFullScreen)
|
||||
g_pEvent->SetWindowSize (g_windowScale);
|
||||
g_pEvent->ChangePhase (EV_PHASE_INTRO1);
|
||||
|
||||
g_bTermInit = true;
|
||||
|
@ -155,7 +155,7 @@ CButton::Draw ()
|
||||
rect.right = m_pos.x + m_dim.x;
|
||||
rect.top = m_pos.y;
|
||||
rect.bottom = m_pos.y + m_dim.y;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, m_pos, rect, 1); // dessine le fond
|
||||
m_pPixmap->DrawPart (-1, CHBACK, m_pos, rect); // dessine le fond
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ protected:
|
||||
bool m_bEnable; // true si bouton actif
|
||||
bool m_bHide; // true si bouton caché
|
||||
Uint32 m_message; // message envoyé si bouton actionné
|
||||
Point m_pos; // coin sup/gauche
|
||||
Point m_pos; // up/left corner
|
||||
Point m_dim; // dimensions
|
||||
Sint32 m_state; // 0=relâché, 1=pressé, +2=survollé
|
||||
Sint32 m_mouseState; // 0=relâché, 1=pressé, +2=survollé
|
||||
|
@ -728,13 +728,18 @@ CDecor::BlupiInitAction (Sint32 rank, Sint32 action, Sint32 direct)
|
||||
if (m_blupi[rank].action == ACTION_STOP)
|
||||
m_blupi[rank].action = ACTION_D_STOP;
|
||||
|
||||
if (m_blupi[rank].action == ACTION_PICKAXE)
|
||||
if (
|
||||
m_blupi[rank].action == ACTION_PICKAXE ||
|
||||
m_blupi[rank].action == ACTION_BUILDSEC)
|
||||
m_blupi[rank].action = ACTION_D_PICKAXE;
|
||||
|
||||
if (m_blupi[rank].action == ACTION_BUILD)
|
||||
m_blupi[rank].action = ACTION_D_BUILD;
|
||||
|
||||
if (m_blupi[rank].action == ACTION_SAW)
|
||||
if (
|
||||
m_blupi[rank].action == ACTION_SAW ||
|
||||
m_blupi[rank].action == ACTION_BUILDSOURD ||
|
||||
m_blupi[rank].action == ACTION_PIOCHESOURD)
|
||||
m_blupi[rank].action = ACTION_D_SAW;
|
||||
|
||||
if (m_blupi[rank].action == ACTION_TCHAO)
|
||||
@ -2008,7 +2013,7 @@ CDecor::GoalNextOp (Sint32 rank, Sint16 * pTable)
|
||||
m_blupi[rank].cel = cel;
|
||||
BlupiPushFog (rank);
|
||||
if (m_blupi[rank].bHili)
|
||||
SetCoin (cel, true);
|
||||
SetCorner (cel, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2487,6 +2492,29 @@ CDecor::BlupiNextAction (Sint32 rank)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Prevent Blupi to take a trap when an enemy is already captured. */
|
||||
if (m_blupi[rank].perso == 0 && m_blupi[rank].action == ACTION_CARRY)
|
||||
{
|
||||
Sint32 ch, icon;
|
||||
|
||||
auto exists = this->GetObject (m_blupi[rank].goalHili, ch, icon);
|
||||
if (exists && ch == CHOBJECT)
|
||||
{
|
||||
switch (icon)
|
||||
{
|
||||
case 96: // spider in trap
|
||||
case 97: // track in trap
|
||||
case 98: // robot in trap
|
||||
BlupiInitAction (rank, ACTION_STOP);
|
||||
GoalStop (rank, true);
|
||||
return false;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_blupi[rank].clicDelay > 0)
|
||||
@ -3991,7 +4019,7 @@ CDecor::BlupiGoal (Sint32 rank, Buttons button, Point cel, Point cMem)
|
||||
|
||||
if (direct == DIRECT_S)
|
||||
action = EV_ACTION_BOATS;
|
||||
if (direct == DIRECT_O)
|
||||
if (direct == DIRECT_W)
|
||||
action = EV_ACTION_BOATO;
|
||||
if (direct == DIRECT_N)
|
||||
action = EV_ACTION_BOATN;
|
||||
|
160
src/decgoal.cxx
160
src/decgoal.cxx
@ -640,7 +640,7 @@ static Sint16 table_goal_build1[] =
|
||||
GOAL_ACTION, ACTION_BUILDSEC, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, +1, true,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -2, true,
|
||||
GOAL_GOBLUPI, -2, 0, true,
|
||||
GOAL_ACTION, ACTION_SAW, DIRECT_S,
|
||||
@ -648,11 +648,11 @@ static Sint16 table_goal_build1[] =
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
// maison
|
||||
GOAL_BUILDOBJECT, -2, 0, CHOBJECT, 61, -1, -1, DIMOBJY / 10, 20, 10 * 100,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_ACTION, ACTION_BUILDSEC, DIRECT_S,
|
||||
@ -723,11 +723,11 @@ static Sint16 table_goal_build3[] =
|
||||
GOAL_ACTION, ACTION_BUILDSEC, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_FINISHMOVE,
|
||||
@ -752,7 +752,7 @@ static Sint16 table_goal_build4[] =
|
||||
GOAL_ACTION, ACTION_SAW, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -2, true,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_ACTION, ACTION_SAW, DIRECT_S,
|
||||
@ -760,11 +760,11 @@ static Sint16 table_goal_build4[] =
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
// mine
|
||||
GOAL_BUILDOBJECT, -2, 0, CHOBJECT, 122, -1, -1, DIMOBJY / 10, 20, 10 * 100,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_ACTION, ACTION_BUILDSEC, DIRECT_S,
|
||||
@ -801,11 +801,11 @@ static Sint16 table_goal_build5[] =
|
||||
GOAL_ACTION, ACTION_BUILDSEC, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDSOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_FINISHMOVE,
|
||||
@ -876,16 +876,16 @@ static Sint16 table_goal_mur[] =
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_S,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_S,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_TCHAO, DIRECT_E,
|
||||
GOAL_FINISHMOVE,
|
||||
@ -911,16 +911,16 @@ static Sint16 table_goal_tour[] =
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_PUTOBJECT, -1, 0, -1, -1, // enlève les pierres
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_PIOCHEPIERRE, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_BUILDBREF, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_S,
|
||||
GOAL_FINISHMOVE,
|
||||
GOAL_ARRANGEOBJECT, -1, -1,
|
||||
@ -1317,7 +1317,7 @@ static Sint16 table_goal_labo[] =
|
||||
GOAL_ADDMOVES, -1, -1, 10, // secoue
|
||||
GOAL_CACHE, true, false,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_LABO,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
@ -1785,7 +1785,7 @@ static Sint16 table_goal_pontol[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_BUILDOBJECT, -10, -10, CHOBJECT, 72, -1, -1, DIMOBJY, 1, -1 * 100,
|
||||
GOAL_ADDMOVES, -10, -10, 7, // pont vers l'ouest
|
||||
GOAL_ACTION, ACTION_BRIDGE, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BRIDGE, DIRECT_W,
|
||||
GOAL_GROUP, 4,
|
||||
GOAL_FINISHMOVE,
|
||||
GOAL_PUTOBJECT, -10, -10, -1, -1,
|
||||
@ -1798,7 +1798,7 @@ static Sint16 table_goal_pontol[] =
|
||||
GOAL_PUTFLOOR, -10, -10, CHFLOOR, -2, // vIcon
|
||||
GOAL_SOUND, SOUND_PLOUF,
|
||||
//? GOAL_GOBLUPI, 0,-1, true,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_TERM,
|
||||
0
|
||||
};
|
||||
@ -1982,7 +1982,7 @@ static Sint16 table_goal_bateauo[] =
|
||||
GOAL_GROUP, 2,
|
||||
GOAL_BUILDOBJECT, -1, 0, CHOBJECT, 117, -1, -1, DIMOBJY, 1, -1 * 100,
|
||||
GOAL_ADDMOVES, -1, 0, 7, // bateau vers l'ouest
|
||||
GOAL_ACTION, ACTION_BRIDGE, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_BRIDGE, DIRECT_W,
|
||||
GOAL_GROUP, 4,
|
||||
GOAL_FINISHMOVE,
|
||||
GOAL_PUTOBJECT, -1, 0, -1, -1,
|
||||
@ -2227,7 +2227,7 @@ static Sint16 table_goal_r_build1[] =
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_E,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_E,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
@ -2235,7 +2235,7 @@ static Sint16 table_goal_r_build1[] =
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_E,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_S,
|
||||
GOAL_FINISHMOVE,
|
||||
GOAL_TERM,
|
||||
@ -2265,7 +2265,7 @@ static Sint16 table_goal_r_build2[] =
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_E,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
@ -2273,7 +2273,7 @@ static Sint16 table_goal_r_build2[] =
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_S,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_S,
|
||||
GOAL_FINISHMOVE,
|
||||
GOAL_TERM,
|
||||
@ -2301,7 +2301,7 @@ static Sint16 table_goal_r_build3[] =
|
||||
GOAL_BUILDOBJECT, -1, -1, CHOBJECT, 102, -1, -1, DIMOBJY / 4, 20, 4 * 100,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_E,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_N,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
@ -2341,7 +2341,7 @@ static Sint16 table_goal_r_build4[] =
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
@ -2379,7 +2379,7 @@ static Sint16 table_goal_r_build5[] =
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
@ -2417,7 +2417,7 @@ static Sint16 table_goal_r_build6[] =
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, +1, 0, true,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_APLAT, DIRECT_W,
|
||||
GOAL_GOBLUPI, 0, +1, true,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_S,
|
||||
GOAL_GOBLUPI, 0, -1, true,
|
||||
@ -2440,17 +2440,17 @@ static Sint16 table_goal_r_make1[] =
|
||||
GOAL_GROUP, 2,
|
||||
GOAL_USINEFREE, -1, -1,
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_LOAD, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_BUILD, DIRECT_W,
|
||||
GOAL_TERM,
|
||||
0
|
||||
};
|
||||
@ -2465,11 +2465,11 @@ static Sint16 table_goal_r_make2[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_PUTOBJECT, -2, -1, CHOBJECT, 101, // ouvre la porte
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_GROUP, 2,
|
||||
@ -2530,11 +2530,11 @@ static Sint16 table_goal_r_make3[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_PUTOBJECT, -2, -1, CHOBJECT, 103, // ouvre la porte
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_GROUP, 2,
|
||||
@ -2594,11 +2594,11 @@ static Sint16 table_goal_r_make4[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_PUTOBJECT, -2, -1, CHOBJECT, 105, // ouvre la porte
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_GROUP, 2,
|
||||
@ -2658,11 +2658,11 @@ static Sint16 table_goal_r_make5[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_PUTOBJECT, -2, -1, CHOBJECT, 116, // ouvre la porte
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_GROUP, 2,
|
||||
@ -2722,11 +2722,11 @@ static Sint16 table_goal_r_make6[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_PUTOBJECT, -2, -1, CHOBJECT, 18, // ouvre la porte
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_ACTION, ACTION_R_STOP, DIRECT_W,
|
||||
GOAL_GOBLUPI, -1, 0, true,
|
||||
GOAL_SOUND, SOUND_DOOR,
|
||||
GOAL_GROUP, 2,
|
||||
@ -2940,7 +2940,7 @@ static Sint16 table_goal_drapeau3[] =
|
||||
GOAL_INTERRUPT, 0, // prioritaire
|
||||
GOAL_WORK, 0, -1,
|
||||
GOAL_BUILDOBJECT, 0, -1, CHOBJECT, 124, -1, -1, DIMOBJY / 10, 8, 10 * 100,
|
||||
GOAL_ACTION, ACTION_PIOCHESOURD, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_PIOCHESOURD, DIRECT_W,
|
||||
GOAL_GOBLUPI, +1, -1, true,
|
||||
GOAL_ACTION, ACTION_PIOCHESOURD, DIRECT_E,
|
||||
GOAL_ADDDRAPEAU, -1, 0,
|
||||
@ -2968,7 +2968,7 @@ static Sint16 table_goal_extrait[] =
|
||||
GOAL_ADDMOVES, -1, -1, 11, // secoue
|
||||
GOAL_CACHE, true, false,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_MINE,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_GROUP, 2,
|
||||
@ -3015,7 +3015,7 @@ static Sint16 table_goal_fabjeep[] =
|
||||
GOAL_ADDMOVES, -1, -1, 12, // secoue
|
||||
GOAL_CACHE, true, false,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_USINE,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_GROUP, 2,
|
||||
@ -3058,7 +3058,7 @@ static Sint16 table_goal_fabarmure[] =
|
||||
GOAL_ADDMOVES, -1, -1, 12, // secoue
|
||||
GOAL_CACHE, true, false,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_USINE,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_GROUP, 2,
|
||||
@ -3101,7 +3101,7 @@ static Sint16 table_goal_fabmine[] =
|
||||
GOAL_ADDMOVES, -1, -1, 12, // secoue
|
||||
GOAL_CACHE, true, false,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_USINE,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_GROUP, 2,
|
||||
@ -3150,7 +3150,7 @@ static Sint16 table_goal_fabdisc[] =
|
||||
GOAL_BUILDOBJECT, 0, -1, CHOBJECT, 119, -1, -1, DIMOBJY, 1, -1 * 100,
|
||||
GOAL_ADDMOVES, 0, -1, 12, // secoue
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_E,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_O,
|
||||
GOAL_ACTION, ACTION_STOP, DIRECT_W,
|
||||
GOAL_SOUND, SOUND_USINE,
|
||||
GOAL_ACTION, ACTION_LABO, DIRECT_E,
|
||||
GOAL_GROUP, 2,
|
||||
|
@ -136,7 +136,7 @@ CDecor::Write (Sint32 rank, bool bUser, Sint32 world, Sint32 time, Sint32 total)
|
||||
|
||||
pBuffer->majRev = 1;
|
||||
pBuffer->minRev = 5;
|
||||
pBuffer->celCoin = m_celCoin;
|
||||
pBuffer->celCoin = m_celCorner;
|
||||
pBuffer->world = world;
|
||||
pBuffer->time = time;
|
||||
pBuffer->totalTime = total;
|
||||
@ -255,7 +255,7 @@ CDecor::Read (
|
||||
goto error;
|
||||
}
|
||||
|
||||
SetCoin (pBuffer->celCoin);
|
||||
SetCorner (pBuffer->celCoin);
|
||||
if (bUser)
|
||||
{
|
||||
world = pBuffer->world;
|
||||
@ -511,7 +511,7 @@ CDecor::Flush ()
|
||||
|
||||
m_celHome.x = 90;
|
||||
m_celHome.y = 98;
|
||||
SetCoin (m_celHome);
|
||||
SetCorner (m_celHome);
|
||||
InitAfterBuild ();
|
||||
LoadImages ();
|
||||
}
|
||||
|
@ -114,8 +114,8 @@ CDecor::ConvCelToMap (Point cel)
|
||||
{
|
||||
Point pos;
|
||||
|
||||
pos.x = (cel.x - m_celCoin.x) - (cel.y - m_celCoin.y);
|
||||
pos.y = ((cel.x - m_celCoin.x) + (cel.y - m_celCoin.y)) / 2;
|
||||
pos.x = (cel.x - m_celCorner.x) - (cel.y - m_celCorner.y);
|
||||
pos.y = ((cel.x - m_celCorner.x) + (cel.y - m_celCorner.y)) / 2;
|
||||
|
||||
pos.x += (DIMMAPX - MAPCADREX) / 2;
|
||||
pos.y += (DIMMAPY - MAPCADREY) / 2;
|
||||
@ -136,8 +136,8 @@ CDecor::ConvMapToCel (Point pos)
|
||||
cel.x = pos.y + pos.x / 2;
|
||||
cel.y = pos.y - pos.x / 2;
|
||||
|
||||
cel.x += m_celCoin.x;
|
||||
cel.y += m_celCoin.y;
|
||||
cel.x += m_celCorner.x;
|
||||
cel.y += m_celCorner.y;
|
||||
|
||||
return cel;
|
||||
}
|
||||
@ -158,7 +158,7 @@ CDecor::MapMove (Point pos)
|
||||
cel = ConvMapToCel (pos);
|
||||
cel.x = cel.x - 10;
|
||||
cel.y = cel.y;
|
||||
SetCoin (cel);
|
||||
SetCorner (cel);
|
||||
NextPhase (0); // faudra refaire la carte tout de suite
|
||||
return true;
|
||||
}
|
||||
@ -533,6 +533,16 @@ CDecor::GenerateMap ()
|
||||
if (m_blupi[rank].bExist)
|
||||
{
|
||||
pos = ConvCelToMap (m_blupi[rank].cel);
|
||||
|
||||
if (this->GetSkill () >= 1 && !m_bBuild)
|
||||
{
|
||||
auto fogCel = m_blupi[rank].cel;
|
||||
fogCel.x = (fogCel.x / 4) * 4;
|
||||
fogCel.y = (fogCel.y / 4) * 4;
|
||||
if (m_decor[fogCel.x / 2][fogCel.y / 2].fog == FOGHIDE) // hidden?
|
||||
continue;
|
||||
}
|
||||
|
||||
if (
|
||||
pos.x >= 0 && pos.x < DIMMAPX - 1 && pos.y >= 0 && pos.y < DIMMAPY - 1)
|
||||
{
|
||||
@ -550,7 +560,7 @@ CDecor::GenerateMap ()
|
||||
}
|
||||
|
||||
// Dessine le cadre.
|
||||
cel = m_celCoin;
|
||||
cel = m_celCorner;
|
||||
pos = ConvCelToMap (cel);
|
||||
|
||||
for (i = pos.x; i < pos.x + MAPCADREX; i++)
|
||||
|
@ -90,14 +90,14 @@ GetVector (Sint32 direct)
|
||||
case DIRECT_S:
|
||||
vector.y = +1;
|
||||
break;
|
||||
case DIRECT_SO:
|
||||
case DIRECT_SW:
|
||||
vector.x = -1;
|
||||
vector.y = +1;
|
||||
break;
|
||||
case DIRECT_O:
|
||||
case DIRECT_W:
|
||||
vector.x = -1;
|
||||
break;
|
||||
case DIRECT_NO:
|
||||
case DIRECT_NW:
|
||||
vector.x = -1;
|
||||
vector.y = -1;
|
||||
break;
|
||||
@ -119,8 +119,8 @@ CDecor::CDecor ()
|
||||
m_pSound = nullptr;
|
||||
m_pUndoDecor = nullptr;
|
||||
|
||||
m_celCoin.x = 90;
|
||||
m_celCoin.y = 98;
|
||||
m_celCorner.x = 90;
|
||||
m_celCorner.y = 98;
|
||||
|
||||
m_celHili.x = -1;
|
||||
m_celOutline1.x = -1;
|
||||
@ -465,8 +465,8 @@ CDecor::ConvCelToPos (Point cel)
|
||||
{
|
||||
Point pos;
|
||||
|
||||
pos.x = ((cel.x - m_celCoin.x) - (cel.y - m_celCoin.y)) * (DIMCELX / 2);
|
||||
pos.y = ((cel.x - m_celCoin.x) + (cel.y - m_celCoin.y)) * (DIMCELY / 2);
|
||||
pos.x = ((cel.x - m_celCorner.x) - (cel.y - m_celCorner.y)) * (DIMCELX / 2);
|
||||
pos.y = ((cel.x - m_celCorner.x) + (cel.y - m_celCorner.y)) * (DIMCELY / 2);
|
||||
|
||||
pos.x += POSDRAWX + m_shiftOffset.x;
|
||||
pos.y += POSDRAWY + m_shiftOffset.y;
|
||||
@ -500,8 +500,8 @@ CDecor::ConvPosToCel (Point pos, bool bMap)
|
||||
cel.y -= (DIMCELX * DIMCELY);
|
||||
cel.y /= (DIMCELX * DIMCELY);
|
||||
|
||||
cel.x += m_celCoin.x;
|
||||
cel.y += m_celCoin.y;
|
||||
cel.x += m_celCorner.x;
|
||||
cel.y += m_celCorner.y;
|
||||
|
||||
return cel;
|
||||
}
|
||||
@ -516,19 +516,19 @@ CDecor::ConvPosToCel2 (Point pos)
|
||||
pos.x -= POSDRAWX + DIMCELX / 2;
|
||||
pos.y -= POSDRAWY;
|
||||
|
||||
if (m_celCoin.x % 2 != 0 && m_celCoin.y % 2 == 0)
|
||||
if (m_celCorner.x % 2 != 0 && m_celCorner.y % 2 == 0)
|
||||
{
|
||||
pos.x += DIMCELX / 2;
|
||||
pos.y += DIMCELY / 2;
|
||||
}
|
||||
|
||||
if (m_celCoin.x % 2 == 0 && m_celCoin.y % 2 != 0)
|
||||
if (m_celCorner.x % 2 == 0 && m_celCorner.y % 2 != 0)
|
||||
{
|
||||
pos.x -= DIMCELX / 2;
|
||||
pos.y += DIMCELY / 2;
|
||||
}
|
||||
|
||||
if (m_celCoin.x % 2 != 0 && m_celCoin.y % 2 != 0)
|
||||
if (m_celCorner.x % 2 != 0 && m_celCorner.y % 2 != 0)
|
||||
pos.y += DIMCELY;
|
||||
|
||||
cel.x =
|
||||
@ -539,8 +539,8 @@ CDecor::ConvPosToCel2 (Point pos)
|
||||
cel.y -= (DIMCELX * 2 * DIMCELY * 2);
|
||||
cel.y /= (DIMCELX * 2 * DIMCELY * 2);
|
||||
|
||||
cel.x = (cel.x * 2 + m_celCoin.x) / 2 * 2;
|
||||
cel.y = (cel.y * 2 + m_celCoin.y) / 2 * 2;
|
||||
cel.x = (cel.x * 2 + m_celCorner.x) / 2 * 2;
|
||||
cel.y = (cel.y * 2 + m_celCorner.y) / 2 * 2;
|
||||
|
||||
return cel;
|
||||
}
|
||||
@ -684,7 +684,7 @@ CDecor::BuildMoveFloor (Sint32 x, Sint32 y, Point pos, Sint32 rank)
|
||||
m_move[rank].maskChannel, icon, m_move[rank].channel, m_move[rank].icon,
|
||||
0);
|
||||
|
||||
m_pPixmap->DrawIcon (-1, m_move[rank].channel, 0, pos, true);
|
||||
m_pPixmap->DrawIcon (-1, m_move[rank].channel, 0, pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2985,8 +2985,8 @@ CDecor::GetResHili (Point posMouse)
|
||||
{
|
||||
Sint32 icon;
|
||||
|
||||
// Les valeurs `corner == true` correspondent aux objets placés
|
||||
// au coin inf/droit de la cellule.
|
||||
// The `corner == true` values are corresponding to the objects
|
||||
// positionned at the bottom/right corner of the cell.
|
||||
struct object_t {
|
||||
bool corner;
|
||||
const char * text;
|
||||
@ -3261,33 +3261,33 @@ CDecor::HideTooltips (bool bHide)
|
||||
// Modifie l'origine supérieure/gauche du décor.
|
||||
|
||||
void
|
||||
CDecor::SetCoin (Point coin, bool bCenter)
|
||||
CDecor::SetCorner (Point corner, bool bCenter)
|
||||
{
|
||||
if (bCenter)
|
||||
{
|
||||
coin.x -= 10;
|
||||
coin.y -= 2;
|
||||
corner.x -= 10;
|
||||
corner.y -= 2;
|
||||
}
|
||||
|
||||
if (coin.x < -8)
|
||||
coin.x = -8;
|
||||
if (coin.x > MAXCELX - 12)
|
||||
coin.x = MAXCELX - 12;
|
||||
if (coin.y < -2)
|
||||
coin.y = -2;
|
||||
if (coin.y > MAXCELY - 4)
|
||||
coin.y = MAXCELY - 4;
|
||||
if (corner.x < -8)
|
||||
corner.x = -8;
|
||||
if (corner.x > MAXCELX - 12)
|
||||
corner.x = MAXCELX - 12;
|
||||
if (corner.y < -2)
|
||||
corner.y = -2;
|
||||
if (corner.y > MAXCELY - 4)
|
||||
corner.y = MAXCELY - 4;
|
||||
|
||||
m_celCoin = coin;
|
||||
m_celCorner = corner;
|
||||
m_bGroundRedraw = true; // faudra redessiner les sols
|
||||
m_celHili.x = -1;
|
||||
m_textLastPos.x = -1; // tooltips plus lavable !
|
||||
}
|
||||
|
||||
Point
|
||||
CDecor::GetCoin ()
|
||||
CDecor::GetCorner ()
|
||||
{
|
||||
return m_celCoin;
|
||||
return m_celCorner;
|
||||
}
|
||||
|
||||
Point
|
||||
@ -3312,7 +3312,7 @@ CDecor::MemoPos (Sint32 rank, bool bRecord)
|
||||
if (bRecord)
|
||||
{
|
||||
m_pSound->PlayImage (SOUND_CLOSE, pos);
|
||||
m_memoPos[rank] = m_celCoin;
|
||||
m_memoPos[rank] = m_celCorner;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3321,7 +3321,7 @@ CDecor::MemoPos (Sint32 rank, bool bRecord)
|
||||
else
|
||||
{
|
||||
m_pSound->PlayImage (SOUND_GOAL, pos);
|
||||
SetCoin (m_memoPos[rank], false);
|
||||
SetCorner (m_memoPos[rank], false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -406,8 +406,8 @@ public:
|
||||
bool GetObject (Point cel, Sint32 & channel, Sint32 & icon);
|
||||
bool SetFire (Point cel, bool bFire);
|
||||
|
||||
void SetCoin (Point coin, bool bCenter = false);
|
||||
Point GetCoin ();
|
||||
void SetCorner (Point corner, bool bCenter = false);
|
||||
Point GetCorner ();
|
||||
Point GetHome ();
|
||||
void MemoPos (Sint32 rank, bool bRecord);
|
||||
|
||||
@ -467,7 +467,7 @@ protected:
|
||||
Sint16 m_rankBlupi[MAXCELX][MAXCELY];
|
||||
Blupi m_blupi[MAXBLUPI];
|
||||
Move m_move[MAXMOVE];
|
||||
Point m_celCoin; // cellule sup/gauche
|
||||
Point m_celCorner; // cellule sup/gauche
|
||||
Point m_celHome; // pour touche Home
|
||||
Point m_celHili;
|
||||
Point m_celOutline1;
|
||||
|
@ -472,9 +472,22 @@ CDecor::StatisticUpdate ()
|
||||
}
|
||||
if (m_blupi[rank].perso == 8) // disciple ?
|
||||
table_statistic[STATDISCIPLE].nb++;
|
||||
|
||||
// Hide enemies from the stat when hidden by the fog
|
||||
bool hide = false;
|
||||
if (this->GetSkill () >= 1 && this->m_bFog)
|
||||
{
|
||||
auto fogCel = m_blupi[rank].cel;
|
||||
fogCel.x = (fogCel.x / 4) * 4;
|
||||
fogCel.y = (fogCel.y / 4) * 4;
|
||||
if (m_decor[fogCel.x / 2][fogCel.y / 2].fog == FOGHIDE) // hidden?
|
||||
hide = true;
|
||||
}
|
||||
|
||||
if (m_blupi[rank].perso == 4) // robot ?
|
||||
{
|
||||
table_statistic[STATROBOT].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATROBOT].nb++;
|
||||
m_nbStatRobots++;
|
||||
x = (m_blupi[rank].cel.x / 2) * 2;
|
||||
y = (m_blupi[rank].cel.y / 2) * 2;
|
||||
@ -485,27 +498,32 @@ CDecor::StatisticUpdate ()
|
||||
}
|
||||
if (m_blupi[rank].perso == 3) // tracks ?
|
||||
{
|
||||
table_statistic[STATTRACKS].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATTRACKS].nb++;
|
||||
if (!m_term.bHachRobot) // pas robot sur hachures ?
|
||||
m_nbStatRobots++;
|
||||
}
|
||||
if (m_blupi[rank].perso == 1) // araignée ?
|
||||
{
|
||||
table_statistic[STATARAIGNEE].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATARAIGNEE].nb++;
|
||||
if (!m_term.bHachRobot) // pas robot sur hachures ?
|
||||
m_nbStatRobots++;
|
||||
}
|
||||
if (m_blupi[rank].perso == 2) // virus ?
|
||||
table_statistic[STATVIRUS].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATVIRUS].nb++;
|
||||
if (m_blupi[rank].perso == 5) // bombe ?
|
||||
{
|
||||
table_statistic[STATBOMBE].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATBOMBE].nb++;
|
||||
if (!m_term.bHachRobot) // pas robot sur hachures ?
|
||||
m_nbStatRobots++;
|
||||
}
|
||||
if (m_blupi[rank].perso == 7) // électro ?
|
||||
{
|
||||
table_statistic[STATELECTRO].nb++;
|
||||
if (!hide)
|
||||
table_statistic[STATELECTRO].nb++;
|
||||
if (!m_term.bHachRobot) // pas robot sur hachures ?
|
||||
m_nbStatRobots++;
|
||||
}
|
||||
@ -675,7 +693,7 @@ CDecor::StatisticDraw ()
|
||||
rect.top = pos.y;
|
||||
rect.bottom = pos.y + DIMSTATY;
|
||||
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1); // dessine le fond
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect); // dessine le fond
|
||||
|
||||
if (rank == 0 && m_bStatUp)
|
||||
{
|
||||
@ -750,7 +768,7 @@ CDecor::StatisticDraw ()
|
||||
rect.right = pos.x + POSDRAWX;
|
||||
rect.top = pos.y;
|
||||
rect.bottom = pos.y + 16;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1); // dessine le fond
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect); // dessine le fond
|
||||
|
||||
if (strlen (textRes))
|
||||
{
|
||||
@ -956,7 +974,7 @@ CDecor::StatisticDown (Point pos)
|
||||
return false;
|
||||
|
||||
select:
|
||||
SetCoin (cel, true);
|
||||
SetCorner (cel, true);
|
||||
NextPhase (0); // faudra refaire la carte tout de suite
|
||||
return true;
|
||||
}
|
||||
@ -1009,6 +1027,14 @@ CDecor::StatisticDetect (Point pos)
|
||||
if (rank >= STATNB)
|
||||
return -1;
|
||||
|
||||
auto pStatistic = StatisticGet (rank);
|
||||
if (
|
||||
this->GetSkill () >= 1 && pStatistic->perso >= 0 &&
|
||||
(pStatistic->perso != 0 && pStatistic->perso != 8))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return rank;
|
||||
}
|
||||
|
||||
|
38
src/def.h
38
src/def.h
@ -23,50 +23,50 @@
|
||||
#include <SDL2/SDL_stdinc.h>
|
||||
|
||||
// clang-format off
|
||||
#define _INTRO true // true si images d'introduction
|
||||
#define _INTRO true // true for init screen
|
||||
|
||||
|
||||
#define LXIMAGE 640 // dimensions de la fenêtre de jeu
|
||||
#define SCRFACTOR 4 / 3
|
||||
#define LXIMAGE (480 * SCRFACTOR + (480 * SCRFACTOR) % 2) // window size
|
||||
#define LYIMAGE 480
|
||||
|
||||
#define POSDRAWX 144 // surface de dessin
|
||||
#define POSDRAWX 144 // draw surface
|
||||
#define POSDRAWY 15
|
||||
#define DIMDRAWX 480
|
||||
#define DIMDRAWX (LXIMAGE - (640 - 480))
|
||||
#define DIMDRAWY 450
|
||||
|
||||
#define POSMAPX 8 // surface pour la carte
|
||||
#define POSMAPX 8 // map surface
|
||||
#define POSMAPY 15
|
||||
#define DIMMAPX 128
|
||||
#define DIMMAPY 128
|
||||
|
||||
#define MAXCELX 200 // nb max de cellules d'un monde
|
||||
#define MAXCELX 200 // max cells for a world
|
||||
#define MAXCELY 200
|
||||
|
||||
#define DIMCELX 60 // dimensions d'une cellule (décor)
|
||||
#define DIMCELX 60 // cell size (decor)
|
||||
#define DIMCELY 30
|
||||
|
||||
#define DIMOBJX 120 // dimensions d'un objet
|
||||
#define DIMOBJX 120 // object size
|
||||
#define DIMOBJY 120
|
||||
|
||||
#define DIMBLUPIX 60 // dimensions de blupi
|
||||
#define DIMBLUPIX 60 // Blupi size
|
||||
#define DIMBLUPIY 60
|
||||
#define SHIFTBLUPIY 5 // petit décalage vers le haut
|
||||
#define SHIFTBLUPIY 5 // shift on top
|
||||
|
||||
#define DIMBUTTONX 40 // dimensions d'un button
|
||||
#define DIMBUTTONX 40 // button size
|
||||
#define DIMBUTTONY 40
|
||||
|
||||
#define DIMJAUGEX 124 // dimensions de la jauge
|
||||
#define DIMJAUGEX 124 // progress size
|
||||
#define DIMJAUGEY 22
|
||||
|
||||
#define POSSTATX 12 // statistiques
|
||||
#define POSSTATX 12 // statistics
|
||||
#define POSSTATY 220
|
||||
#define DIMSTATX 60
|
||||
#define DIMSTATY 30
|
||||
|
||||
#define DIMTEXTX 16 // dimensions max d'un caractère
|
||||
#define DIMTEXTX 16 // max char size
|
||||
#define DIMTEXTY 16
|
||||
|
||||
#define DIMLITTLEX 16 // dimensions max d'un petit caractère
|
||||
#define DIMLITTLEX 16 // max small char size
|
||||
#define DIMLITTLEY 12
|
||||
|
||||
#define CHBACK 0
|
||||
@ -94,9 +94,9 @@ enum Directions {
|
||||
DIRECT_E = (0 * 16), // east
|
||||
DIRECT_SE = (1 * 16), // south-east
|
||||
DIRECT_S = (2 * 16), // south
|
||||
DIRECT_SO = (3 * 16), // south-west
|
||||
DIRECT_O = (4 * 16), // west
|
||||
DIRECT_NO = (5 * 16), // north-west
|
||||
DIRECT_SW = (3 * 16), // south-west
|
||||
DIRECT_W = (4 * 16), // west
|
||||
DIRECT_NW = (5 * 16), // north-west
|
||||
DIRECT_N = (6 * 16), // north
|
||||
DIRECT_NE = (7 * 16), // north-east
|
||||
};
|
||||
|
363
src/event.cxx
363
src/event.cxx
@ -1259,63 +1259,69 @@ static Phase table[] =
|
||||
{
|
||||
EV_BUTTON1,
|
||||
0, {1, 40},
|
||||
170 + 42 * 0, 30 + 42 * 0,
|
||||
170 + 42 * 1, 30 + 42 * 0,
|
||||
{ translate ("No music") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON2,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 1,
|
||||
170 + 42 * 0, 30 + 42 * 0,
|
||||
{ translate ("Music number 1") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON3,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 2,
|
||||
170 + 42 * 0, 30 + 42 * 1,
|
||||
{ translate ("Music number 2") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON4,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 3,
|
||||
170 + 42 * 0, 30 + 42 * 2,
|
||||
{ translate ("Music number 3") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON5,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 4,
|
||||
170 + 42 * 0, 30 + 42 * 3,
|
||||
{ translate ("Music number 4") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON6,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 5,
|
||||
170 + 42 * 0, 30 + 42 * 4,
|
||||
{ translate ("Music number 5") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON7,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 6,
|
||||
170 + 42 * 0, 30 + 42 * 5,
|
||||
{ translate ("Music number 6") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON8,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 7,
|
||||
170 + 42 * 0, 30 + 42 * 6,
|
||||
{ translate ("Music number 7") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON9,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 8,
|
||||
170 + 42 * 0, 30 + 42 * 7,
|
||||
{ translate ("Music number 8") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON10,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 9,
|
||||
170 + 42 * 0, 30 + 42 * 8,
|
||||
{ translate ("Music number 9") },
|
||||
},
|
||||
{
|
||||
EV_BUTTON11,
|
||||
0, {1, 44},
|
||||
170 + 42 * 0, 30 + 42 * 9,
|
||||
{ translate ("Music number 10") },
|
||||
},
|
||||
{
|
||||
EV_PHASE_BUILD,
|
||||
0, {1, 50},
|
||||
@ -1546,7 +1552,6 @@ CEvent::CEvent ()
|
||||
m_bSpeed = false;
|
||||
m_bHelp = false;
|
||||
m_bAllMissions = false;
|
||||
m_bChangeCheat = false;
|
||||
m_scrollSpeed = 1;
|
||||
m_bPause = false;
|
||||
m_bShift = false;
|
||||
@ -1588,6 +1593,8 @@ CEvent::CEvent ()
|
||||
m_Languages.push_back (Language::en_US);
|
||||
m_Languages.push_back (Language::fr);
|
||||
m_Languages.push_back (Language::de);
|
||||
m_Languages.push_back (Language::it);
|
||||
m_Languages.push_back (Language::pl);
|
||||
|
||||
this->m_LangStart = GetLocale ();
|
||||
|
||||
@ -1597,6 +1604,10 @@ CEvent::CEvent ()
|
||||
m_Lang = m_Languages.begin () + 2;
|
||||
else if (this->m_LangStart == "de")
|
||||
m_Lang = m_Languages.begin () + 3;
|
||||
else if (this->m_LangStart == "it")
|
||||
m_Lang = m_Languages.begin () + 4;
|
||||
else if (this->m_LangStart == "pl")
|
||||
m_Lang = m_Languages.begin () + 5;
|
||||
else
|
||||
m_Lang = m_Languages.begin ();
|
||||
|
||||
@ -1648,6 +1659,7 @@ CEvent::SetFullScreen (bool bFullScreen)
|
||||
SDL_SetWindowPosition (
|
||||
g_window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
|
||||
|
||||
m_pPixmap->LoadCursors (m_WindowScale);
|
||||
m_pPixmap->ReloadTargetTextures ();
|
||||
|
||||
/* Force this update before otherwise the coordinates retrieved with
|
||||
@ -1661,6 +1673,33 @@ CEvent::SetFullScreen (bool bFullScreen)
|
||||
CEvent::PushUserEvent (EV_WARPMOUSE, coord);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Change the size of the window.
|
||||
*
|
||||
* We use an integer scale to be sure that the pixels are always well formed.
|
||||
*
|
||||
* \param[in] newScale - The new scale.
|
||||
*/
|
||||
void
|
||||
CEvent::SetWindowSize (Uint8 newScale)
|
||||
{
|
||||
if (newScale == m_WindowScale)
|
||||
return;
|
||||
|
||||
auto scale = m_WindowScale;
|
||||
m_WindowScale = newScale;
|
||||
switch (newScale)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
SetWindowSize (scale, m_WindowScale);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Change the size of the window.
|
||||
*
|
||||
@ -1679,6 +1718,7 @@ CEvent::SetWindowSize (Uint8 prevScale, Uint8 newScale)
|
||||
SDL_SetWindowPosition (
|
||||
g_window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
|
||||
|
||||
m_pPixmap->LoadCursors (newScale);
|
||||
m_pPixmap->ReloadTargetTextures ();
|
||||
|
||||
/* Force this update before otherwise the coordinates retrieved with
|
||||
@ -1930,12 +1970,10 @@ CEvent::DrawButtons ()
|
||||
bool bEnable;
|
||||
|
||||
if (
|
||||
(m_phase == EV_PHASE_PLAY && m_bChangeCheat) ||
|
||||
(m_phase == EV_PHASE_PLAY) ||
|
||||
(m_phase != EV_PHASE_PLAY && m_phase != EV_PHASE_INSERT &&
|
||||
m_phase != EV_PHASE_INTRO1 && m_phase != EV_PHASE_BYE))
|
||||
{
|
||||
m_bChangeCheat = false;
|
||||
|
||||
text[0] = 0;
|
||||
if (m_bAllMissions)
|
||||
AddCheatCode (text, cheat_code[3]);
|
||||
@ -1947,14 +1985,17 @@ CEvent::DrawButtons ()
|
||||
AddCheatCode (text, cheat_code[6]);
|
||||
if (m_pDecor->GetSuper ())
|
||||
AddCheatCode (text, cheat_code[7]);
|
||||
pos.x = 2;
|
||||
pos.y = 2;
|
||||
rect.left = pos.x;
|
||||
rect.right = pos.x + 300;
|
||||
rect.top = pos.y;
|
||||
rect.bottom = pos.y + DIMLITTLEY;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1); // dessine le fond
|
||||
DrawText (m_pPixmap, pos, text, FONTLITTLE);
|
||||
|
||||
if (text[0])
|
||||
{
|
||||
pos.x = 2;
|
||||
pos.y = 2;
|
||||
rect.left = pos.x;
|
||||
rect.right = pos.x + 300;
|
||||
rect.top = pos.y;
|
||||
rect.bottom = pos.y + DIMLITTLEY;
|
||||
DrawText (m_pPixmap, pos, text, FONTLITTLE);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_phase == EV_PHASE_INIT)
|
||||
@ -2110,7 +2151,7 @@ CEvent::DrawButtons ()
|
||||
rect.right = pos.x + 20;
|
||||
rect.top = pos.y;
|
||||
rect.bottom = pos.y + 15;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1); // dessine le fond
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect); // dessine le fond
|
||||
if (m_speed > 1)
|
||||
{
|
||||
snprintf (res, sizeof (res), "x%d", m_speed);
|
||||
@ -2128,7 +2169,7 @@ CEvent::DrawButtons ()
|
||||
rect.right = POSDRAWX + DIMDRAWX;
|
||||
rect.top = 0;
|
||||
rect.bottom = lg;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1);
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect);
|
||||
|
||||
pos.x = POSDRAWX;
|
||||
pos.y = lg;
|
||||
@ -2136,7 +2177,7 @@ CEvent::DrawButtons ()
|
||||
rect.right = POSDRAWX + DIMDRAWX;
|
||||
rect.top = 0;
|
||||
rect.bottom = POSDRAWY;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect, 1);
|
||||
m_pPixmap->DrawPart (-1, CHBACK, pos, rect);
|
||||
|
||||
pos.x = POSDRAWX + 20;
|
||||
pos.y = POSDRAWY + 4;
|
||||
@ -2423,7 +2464,7 @@ CEvent::DrawButtons ()
|
||||
DrawText (m_pPixmap, pos, list[GetWorld () % 5]);
|
||||
}
|
||||
|
||||
// Affiche le texte lorsque c'est fini.
|
||||
// Show the ending text when the game is finished.
|
||||
if (m_phase == EV_PHASE_LASTWIN)
|
||||
{
|
||||
char * text;
|
||||
@ -2440,7 +2481,7 @@ CEvent::DrawButtons ()
|
||||
DrawText (m_pPixmap, pos, text);
|
||||
}
|
||||
|
||||
// Dessine les réglages.
|
||||
// Draw the game settings.
|
||||
if (m_phase == EV_PHASE_SETUP || m_phase == EV_PHASE_SETUPp)
|
||||
{
|
||||
DrawTextCenter (gettext ("Global game\nspeed"), 54 + 40, 80);
|
||||
@ -2502,6 +2543,10 @@ CEvent::DrawButtons ()
|
||||
lang = "Français";
|
||||
else if (locale == "de")
|
||||
lang = "Deutsch";
|
||||
else if (locale == "it")
|
||||
lang = "Italiano";
|
||||
else if (locale == "pl")
|
||||
lang = "Polski";
|
||||
|
||||
lg = GetTextWidth (lang.c_str ());
|
||||
pos.x = (54 + 40) - lg / 2;
|
||||
@ -2580,7 +2625,7 @@ CEvent::DrawButtons ()
|
||||
DrawText (m_pPixmap, pos, text);
|
||||
}
|
||||
|
||||
// Affiche le texte lorsqu'il faut insérer le CD-Rom.
|
||||
// Show the text when the CD-Rom must be inserted (deprecated).
|
||||
if (m_phase == EV_PHASE_INSERT)
|
||||
DrawTextCenter (
|
||||
gettext ("Insert CD-Rom Planet Blupi and wait a few seconds..."),
|
||||
@ -2589,15 +2634,19 @@ CEvent::DrawButtons ()
|
||||
if (m_phase == EV_PHASE_BUILD)
|
||||
SetEnable (EV_PHASE_UNDO, m_pDecor->IsUndo ());
|
||||
|
||||
// Dessine les tool tips (info bulle).
|
||||
// Draw the tooltips.
|
||||
if (m_textToolTips[0] != 0)
|
||||
DrawText (m_pPixmap, m_posToolTips, m_textToolTips);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Retourne le lutin à utiliser à une position donnée.
|
||||
|
||||
/**
|
||||
* \brief Return the mouse sprite to use for a position.
|
||||
*
|
||||
* \param[in] pos - The position.
|
||||
* \return the sprite.
|
||||
*/
|
||||
MouseSprites
|
||||
CEvent::MousePosToSprite (Point pos)
|
||||
{
|
||||
@ -2668,8 +2717,11 @@ CEvent::MousePosToSprite (Point pos)
|
||||
return sprite;
|
||||
}
|
||||
|
||||
// Gère le lutin de la souris.
|
||||
|
||||
/**
|
||||
* \brief Main mouse sprite handling.
|
||||
*
|
||||
* \param[in] pos - The position.
|
||||
*/
|
||||
void
|
||||
CEvent::MouseSprite (Point pos)
|
||||
{
|
||||
@ -2677,8 +2729,11 @@ CEvent::MouseSprite (Point pos)
|
||||
m_pPixmap->ChangeSprite (m_mouseSprite);
|
||||
}
|
||||
|
||||
// Met ou enlève le sablier de la souris.
|
||||
|
||||
/**
|
||||
* \brief Set or remove the waiting mouse sprite.
|
||||
*
|
||||
* \param[in] bWait - If waiting.
|
||||
*/
|
||||
void
|
||||
CEvent::WaitMouse (bool bWait)
|
||||
{
|
||||
@ -2692,8 +2747,11 @@ CEvent::WaitMouse (bool bWait)
|
||||
m_pPixmap->ChangeSprite (m_mouseSprite);
|
||||
}
|
||||
|
||||
// Cache ou montre la souris.
|
||||
|
||||
/**
|
||||
* \brief Hide or show the mouse.
|
||||
*
|
||||
* \param[in] bHide - If hide.
|
||||
*/
|
||||
void
|
||||
CEvent::HideMouse (bool bHide)
|
||||
{
|
||||
@ -2714,8 +2772,13 @@ CEvent::HideMouse (bool bHide)
|
||||
m_pPixmap->ChangeSprite (m_mouseSprite);
|
||||
}
|
||||
|
||||
// Traite les événements pour tous les boutons.
|
||||
|
||||
/**
|
||||
* \brief Handle events for buttons.
|
||||
*
|
||||
* \param[in] event - The SDL event.
|
||||
* \param[in] pos - The position.
|
||||
* \return true if the event is handled.
|
||||
*/
|
||||
bool
|
||||
CEvent::EventButtons (const SDL_Event & event, Point pos)
|
||||
{
|
||||
@ -2805,7 +2868,7 @@ CEvent::EventButtons (const SDL_Event & event, Point pos)
|
||||
(event.button.button == SDL_BUTTON_LEFT ||
|
||||
event.button.button == SDL_BUTTON_RIGHT))
|
||||
{
|
||||
// Montre ou cache les infos tout en haut.
|
||||
// Show or hide the informations at the top.
|
||||
m_pDecor->SetInfoMode (!m_pDecor->GetInfoMode ());
|
||||
}
|
||||
}
|
||||
@ -2828,7 +2891,7 @@ CEvent::EventButtons (const SDL_Event & event, Point pos)
|
||||
(event.button.button == SDL_BUTTON_LEFT ||
|
||||
event.button.button == SDL_BUTTON_RIGHT))
|
||||
{
|
||||
// Inverse le mode aide dans les infos.
|
||||
// Reverse the help mode in the informations.
|
||||
m_bInfoHelp = !m_bInfoHelp;
|
||||
|
||||
if (m_bInfoHelp)
|
||||
@ -2846,7 +2909,7 @@ CEvent::EventButtons (const SDL_Event & event, Point pos)
|
||||
(event.button.button == SDL_BUTTON_LEFT ||
|
||||
event.button.button == SDL_BUTTON_RIGHT))
|
||||
{
|
||||
m_pDecor->HideTooltips (true); // plus de tooltips pour décor
|
||||
m_pDecor->HideTooltips (true); // Remove tooltips for the decor.
|
||||
}
|
||||
if (
|
||||
event.type == SDL_MOUSEBUTTONUP &&
|
||||
@ -2875,8 +2938,12 @@ CEvent::EventButtons (const SDL_Event & event, Point pos)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Indique si la souris est sur un bouton.
|
||||
|
||||
/**
|
||||
* \brief Notify if the mouse is on a button.
|
||||
*
|
||||
* \param[in] pos - The mouse position.
|
||||
* \return true if the mouse is on a button.
|
||||
*/
|
||||
bool
|
||||
CEvent::MouseOnButton (Point pos)
|
||||
{
|
||||
@ -2896,8 +2963,12 @@ CEvent::MouseOnButton (Point pos)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Retourne l'index dans table pour une phase donnée.
|
||||
|
||||
/**
|
||||
* \brief Return the table index for a specific phase.
|
||||
*
|
||||
* \param[in] phase - The phase.
|
||||
* \return the index in `table`.
|
||||
*/
|
||||
Sint32
|
||||
CEvent::SearchPhase (Uint32 phase)
|
||||
{
|
||||
@ -2913,8 +2984,11 @@ CEvent::SearchPhase (Uint32 phase)
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Donne le numéro du monde.
|
||||
|
||||
/**
|
||||
* \brief Return the world number.
|
||||
*
|
||||
* \return the number.
|
||||
*/
|
||||
Sint32
|
||||
CEvent::GetWorld ()
|
||||
{
|
||||
@ -2926,8 +3000,13 @@ CEvent::GetWorld ()
|
||||
return m_mission;
|
||||
}
|
||||
|
||||
// Donne le numéro physique du monde.
|
||||
|
||||
/**
|
||||
* \brief Return the physical world number.
|
||||
*
|
||||
* This number should be the same as the filename.
|
||||
*
|
||||
* \return the number.
|
||||
*/
|
||||
Sint32
|
||||
CEvent::GetPhysicalWorld ()
|
||||
{
|
||||
@ -2950,8 +3029,11 @@ CEvent::GetImageWorld ()
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Indique si l'aide est disponible.
|
||||
|
||||
/**
|
||||
* Notify if the help is available.
|
||||
*
|
||||
* \return true if available.
|
||||
*/
|
||||
bool
|
||||
CEvent::IsHelpHide ()
|
||||
{
|
||||
@ -2961,14 +3043,18 @@ CEvent::IsHelpHide ()
|
||||
bHide = false;
|
||||
if (m_bSchool || m_bPrivate)
|
||||
{
|
||||
bHide = true; // pas d'aide pour les exercices
|
||||
bHide = true; // No help for the exercises.
|
||||
}
|
||||
|
||||
return bHide;
|
||||
}
|
||||
|
||||
// Change de phase.
|
||||
|
||||
/**
|
||||
* \brief Change the phase.
|
||||
*
|
||||
* \param[in] phase - The new phase.
|
||||
* \return true if the phase has changed.
|
||||
*/
|
||||
bool
|
||||
CEvent::ChangePhase (Uint32 phase)
|
||||
{
|
||||
@ -3037,11 +3123,11 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
m_pSound->StopAllSounds (false, &except);
|
||||
}
|
||||
|
||||
m_phase = phase; // change de phase
|
||||
m_phase = phase; // change phase
|
||||
m_index = index;
|
||||
|
||||
filename = table[m_index].backName;
|
||||
if (filename.find ("%.3d") != std::string::npos) // "%.3d" dans le nom ?
|
||||
if (filename.find ("%.3d") != std::string::npos)
|
||||
filename = string_format (table[m_index].backName, GetImageWorld ());
|
||||
totalDim.x = LXIMAGE;
|
||||
totalDim.y = LYIMAGE;
|
||||
@ -3049,10 +3135,10 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
iconDim.y = 0;
|
||||
if (!m_pPixmap->Cache (CHBACK, filename, totalDim, iconDim))
|
||||
{
|
||||
WaitMouse (false); // enlève le sablier
|
||||
WaitMouse (false);
|
||||
m_tryInsertCount = 40;
|
||||
m_tryPhase = m_phase;
|
||||
return ChangePhase (EV_PHASE_INSERT); // insérez le CD-Rom ...
|
||||
return ChangePhase (EV_PHASE_INSERT); // insert the CD-Rom ...
|
||||
}
|
||||
|
||||
if (
|
||||
@ -3077,13 +3163,13 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
{
|
||||
if (
|
||||
!m_pDecor->Read (
|
||||
GetPhysicalWorld (), false, world, time, total) && // lit le monde
|
||||
GetPhysicalWorld (), false, world, time, total) && // read the world
|
||||
!m_bAccessBuild &&
|
||||
!m_bPrivate)
|
||||
{
|
||||
m_tryInsertCount = 40;
|
||||
m_tryPhase = m_phase;
|
||||
return ChangePhase (EV_PHASE_INSERT); // insérez le CD-Rom ...
|
||||
return ChangePhase (EV_PHASE_INSERT); // insert the CD-Rom ...
|
||||
}
|
||||
m_pDecor->SetTime (0);
|
||||
m_pDecor->SetTotalTime (0);
|
||||
@ -3119,7 +3205,7 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
|
||||
if (m_phase == EV_PHASE_TESTCD)
|
||||
{
|
||||
if (m_pDecor->Read (0, false, world, time, total)) // lit un monde
|
||||
if (m_pDecor->Read (0, false, world, time, total)) // read the world
|
||||
{
|
||||
return ChangePhase (EV_PHASE_INIT); // ok
|
||||
}
|
||||
@ -3127,44 +3213,43 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
{
|
||||
m_tryInsertCount = 40;
|
||||
m_tryPhase = m_phase;
|
||||
return ChangePhase (EV_PHASE_INSERT); // insérez le CD-Rom ...
|
||||
return ChangePhase (EV_PHASE_INSERT); // insert the CD-Rom ...
|
||||
}
|
||||
}
|
||||
|
||||
m_jauges[0].SetHide (true); // cache les jauges
|
||||
m_jauges[0].SetHide (true);
|
||||
m_jauges[1].SetHide (true);
|
||||
CreateButtons (); // crée les boutons selon la phase
|
||||
CreateButtons (); // create the buttons accordingly to the phase
|
||||
m_bMenu = false;
|
||||
m_pDecor->HideTooltips (false);
|
||||
m_menu.Delete ();
|
||||
m_pDecor->BlupiSetArrow (0, false); // enlève toutes les flèches
|
||||
m_pDecor->ResetHili (); // enlève les mises en évidence
|
||||
m_pDecor->BlupiSetArrow (0, false); // remove all arrows
|
||||
m_pDecor->ResetHili (); // remove all highlights
|
||||
|
||||
if (m_phase == EV_PHASE_PLAY)
|
||||
{
|
||||
m_pDecor->LoadImages ();
|
||||
m_pDecor->SetBuild (false);
|
||||
m_pDecor->EnableFog (true);
|
||||
m_pDecor->NextPhase (0); // refait la carte tout de suite
|
||||
m_pDecor->NextPhase (0); // rebuild the map immediatly
|
||||
m_pDecor->StatisticInit ();
|
||||
m_pDecor->TerminatedInit ();
|
||||
m_bChangeCheat = true; // affiche les cheat-codes
|
||||
}
|
||||
|
||||
if (m_phase == EV_PHASE_BUILD)
|
||||
{
|
||||
m_bBuildModify = true;
|
||||
SetState (EV_DECOR1, 1);
|
||||
SetMenu (EV_DECOR1, 0); // herbe
|
||||
SetMenu (EV_DECOR2, 2); // arbre
|
||||
SetMenu (EV_DECOR3, 1); // maison
|
||||
SetMenu (EV_DECOR4, 2); // blupi fort
|
||||
SetMenu (EV_DECOR5, 1); // feu
|
||||
SetMenu (EV_DECOR1, 0); // grass
|
||||
SetMenu (EV_DECOR2, 2); // tree
|
||||
SetMenu (EV_DECOR3, 1); // house
|
||||
SetMenu (EV_DECOR4, 2); // strong blupi
|
||||
SetMenu (EV_DECOR5, 1); // fire
|
||||
m_pDecor->LoadImages ();
|
||||
m_pDecor->SetBuild (true);
|
||||
m_pDecor->EnableFog (false);
|
||||
m_pDecor->BlupiDeselect ();
|
||||
m_pDecor->NextPhase (0); // refait la carte tout de suite
|
||||
m_pDecor->NextPhase (0); // rebuild the map immediatly
|
||||
}
|
||||
|
||||
if (m_phase == EV_PHASE_INFO)
|
||||
@ -3250,7 +3335,7 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
{
|
||||
music = m_pDecor->GetMusic ();
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
for (i = 0; i < 11; i++)
|
||||
SetState (EV_BUTTON1 + i, music == i ? 1 : 0);
|
||||
}
|
||||
|
||||
@ -3266,7 +3351,7 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
{
|
||||
if (m_pSound->IsPlayingMusic ())
|
||||
{
|
||||
m_pSound->AdaptVolumeMusic (); // adapte le volume
|
||||
m_pSound->AdaptVolumeMusic ();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3316,20 +3401,24 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
m_phaseAfterMovie = EV_PHASE_LASTWIN;
|
||||
}
|
||||
|
||||
WaitMouse (false); // enlève le sablier
|
||||
WaitMouse (false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Retourne la phase en cours.
|
||||
|
||||
/**
|
||||
* \brief Return the current phase.
|
||||
*
|
||||
* \return the phase number.
|
||||
*/
|
||||
Uint32
|
||||
CEvent::GetPhase ()
|
||||
{
|
||||
return m_phase;
|
||||
}
|
||||
|
||||
// Essaye de lire le CD-Rom.
|
||||
|
||||
/**
|
||||
* \brief Try to read the CD-Rom.
|
||||
*/
|
||||
void
|
||||
CEvent::TryInsert ()
|
||||
{
|
||||
@ -3339,47 +3428,57 @@ CEvent::TryInsert ()
|
||||
m_tryInsertCount--;
|
||||
}
|
||||
|
||||
// Fait démarrer un film si nécessaire.
|
||||
|
||||
void
|
||||
/**
|
||||
* \brief Start a movie if necessary.
|
||||
*
|
||||
* \return true if the movie has started.
|
||||
*/
|
||||
bool
|
||||
CEvent::MovieToStart ()
|
||||
{
|
||||
if (m_movieToStart[0] != 0) // y a-t-il un film à démarrer ?
|
||||
{
|
||||
HideMouse (true); // cache la souris
|
||||
bool movie = false;
|
||||
|
||||
if (m_movieToStart[0] != 0) // is movie available?
|
||||
{
|
||||
if (StartMovie (m_movieToStart))
|
||||
{
|
||||
m_phase = m_phaseAfterMovie; // prochaine phase normale
|
||||
movie = true;
|
||||
m_phase = m_phaseAfterMovie; // the next normal phase
|
||||
}
|
||||
else
|
||||
ChangePhase (m_phaseAfterMovie);
|
||||
|
||||
m_movieToStart[0] = 0;
|
||||
}
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
// Décale le décor.
|
||||
|
||||
/**
|
||||
* \brief Shift the decor.
|
||||
*
|
||||
* \param[in] dx - Delta x.
|
||||
* \param[in] dy - Delta y.
|
||||
*/
|
||||
void
|
||||
CEvent::DecorShift (Sint32 dx, Sint32 dy)
|
||||
{
|
||||
Point coin;
|
||||
Point corner;
|
||||
|
||||
if (m_phase != EV_PHASE_PLAY && m_phase != EV_PHASE_BUILD)
|
||||
return;
|
||||
|
||||
coin = m_pDecor->GetCoin ();
|
||||
corner = m_pDecor->GetCorner ();
|
||||
|
||||
coin.x += dx;
|
||||
coin.y += dy;
|
||||
corner.x += dx;
|
||||
corner.y += dy;
|
||||
|
||||
m_pDecor->SetCoin (coin);
|
||||
//? m_pDecor->NextPhase(0); // faudra refaire la carte tout de suite
|
||||
m_pDecor->SetCorner (corner);
|
||||
}
|
||||
|
||||
// Décale le décor lorsque la souris touche un bord.
|
||||
|
||||
/**
|
||||
* \brief Shift the decor when the mouse is on the sides.
|
||||
*/
|
||||
void
|
||||
CEvent::DecorAutoShift ()
|
||||
{
|
||||
@ -3395,7 +3494,7 @@ CEvent::DecorAutoShift ()
|
||||
|
||||
if (m_phase == EV_PHASE_PLAY || m_phase == EV_PHASE_BUILD)
|
||||
{
|
||||
if (m_shiftPhase == 0) // début du shift ?
|
||||
if (m_shiftPhase == 0) // start shift ?
|
||||
{
|
||||
switch (m_mouseSprite)
|
||||
{
|
||||
@ -3476,7 +3575,7 @@ CEvent::DecorAutoShift ()
|
||||
offset.y = m_shiftOffset.y * (max - m_shiftPhase) * (DIMCELY / 2 / max);
|
||||
m_pDecor->SetShiftOffset (offset);
|
||||
|
||||
if (m_shiftPhase == 0) // dernière phase ?
|
||||
if (m_shiftPhase == 0) // last phase ?
|
||||
{
|
||||
offset.x = 0;
|
||||
offset.y = 0;
|
||||
@ -3487,8 +3586,11 @@ CEvent::DecorAutoShift ()
|
||||
}
|
||||
}
|
||||
|
||||
// Indique su un shift est en cours.
|
||||
|
||||
/**
|
||||
* \brief Notify if a shift is doing.
|
||||
*
|
||||
* \return true of the shift is doing.
|
||||
*/
|
||||
bool
|
||||
CEvent::IsShift ()
|
||||
{
|
||||
@ -3547,7 +3649,7 @@ CEvent::PlayDown (Point pos, const SDL_Event & event)
|
||||
|
||||
if (bMap)
|
||||
{
|
||||
m_pDecor->SetCoin (cel, true);
|
||||
m_pDecor->SetCorner (cel, true);
|
||||
m_pDecor->NextPhase (0); // faudra refaire la carte tout de suite
|
||||
return true;
|
||||
}
|
||||
@ -3649,6 +3751,10 @@ CEvent::GetStartLanguage ()
|
||||
return Language::fr;
|
||||
if (this->m_LangStart == "de")
|
||||
return Language::de;
|
||||
if (this->m_LangStart == "it")
|
||||
return Language::it;
|
||||
if (this->m_LangStart == "pl")
|
||||
return Language::pl;
|
||||
return Language::en;
|
||||
}
|
||||
|
||||
@ -3683,6 +3789,12 @@ CEvent::SetLanguage (Language lang)
|
||||
case Language::de:
|
||||
slang = "de";
|
||||
break;
|
||||
case Language::it:
|
||||
slang = "it";
|
||||
break;
|
||||
case Language::pl:
|
||||
slang = "pl";
|
||||
break;
|
||||
}
|
||||
|
||||
snprintf (env, sizeof (env), "LANGUAGE=%s", slang);
|
||||
@ -4196,8 +4308,6 @@ CEvent::BuildMove (Point pos, Uint16 mod, const SDL_Event & event)
|
||||
bool
|
||||
CEvent::StartMovie (const std::string & pFilename)
|
||||
{
|
||||
Rect rect;
|
||||
|
||||
if (!m_pMovie->GetEnable ())
|
||||
return false;
|
||||
if (!m_bMovie)
|
||||
@ -4206,15 +4316,12 @@ CEvent::StartMovie (const std::string & pFilename)
|
||||
if (!m_pMovie->IsExist (pFilename))
|
||||
return false;
|
||||
|
||||
rect.left = 1; // mystère: plante avec 0,0,LXIMAGE,LYIMAGE !!!
|
||||
rect.top = 1;
|
||||
rect.right = LXIMAGE - 2;
|
||||
rect.bottom = LYIMAGE - 2;
|
||||
|
||||
HideMouse (true);
|
||||
m_pSound->StopMusic ();
|
||||
|
||||
if (!m_pMovie->Play (rect, pFilename))
|
||||
if (!m_pMovie->Play (pFilename))
|
||||
return false;
|
||||
|
||||
m_bRunMovie = true;
|
||||
return true;
|
||||
}
|
||||
@ -4512,6 +4619,8 @@ CEvent::ReadInfo ()
|
||||
if (file == nullptr)
|
||||
goto error;
|
||||
|
||||
SDL_memset (&info, 0, sizeof (info));
|
||||
|
||||
nb = fread (&info, sizeof (DescInfo), 1, file);
|
||||
if (nb < 1)
|
||||
goto error;
|
||||
@ -4531,7 +4640,11 @@ CEvent::ReadInfo ()
|
||||
m_pSound->SetMidiVolume (info.midiVolume);
|
||||
|
||||
if ((info.majRev == 1 && info.minRev >= 1) || info.majRev >= 2)
|
||||
{
|
||||
if (info.language >= static_cast<int> (Language::end))
|
||||
info.language = 0;
|
||||
this->SetLanguage (static_cast<Language> (info.language));
|
||||
}
|
||||
|
||||
fclose (file);
|
||||
return true;
|
||||
@ -5066,42 +5179,36 @@ CEvent::TreatEventBase (const SDL_Event & event)
|
||||
{
|
||||
m_bAllMissions = !m_bAllMissions;
|
||||
bEnable = m_bAllMissions;
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
case 4: // quick ?
|
||||
{
|
||||
m_bSpeed = !m_bSpeed;
|
||||
bEnable = m_bSpeed;
|
||||
m_bChangeCheat = true;
|
||||
m_bSpeed = !m_bSpeed;
|
||||
bEnable = m_bSpeed;
|
||||
break;
|
||||
}
|
||||
case 5: // helpme ?
|
||||
{
|
||||
m_bHelp = !m_bHelp;
|
||||
bEnable = m_bHelp;
|
||||
m_bChangeCheat = true;
|
||||
m_bHelp = !m_bHelp;
|
||||
bEnable = m_bHelp;
|
||||
break;
|
||||
}
|
||||
case 6: // invincible ?
|
||||
{
|
||||
m_pDecor->SetInvincible (!m_pDecor->GetInvincible ());
|
||||
bEnable = m_pDecor->GetInvincible ();
|
||||
m_bChangeCheat = true;
|
||||
bEnable = m_pDecor->GetInvincible ();
|
||||
break;
|
||||
}
|
||||
case 7: // superblupi ?
|
||||
{
|
||||
m_pDecor->SetSuper (!m_pDecor->GetSuper ());
|
||||
bEnable = m_pDecor->GetSuper ();
|
||||
m_bChangeCheat = true;
|
||||
bEnable = m_pDecor->GetSuper ();
|
||||
break;
|
||||
}
|
||||
case 8: // construire ?
|
||||
{
|
||||
m_bAccessBuild = !m_bAccessBuild;
|
||||
bEnable = m_bAccessBuild;
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -5165,6 +5272,9 @@ CEvent::TreatEventBase (const SDL_Event & event)
|
||||
return true;
|
||||
|
||||
case EV_PHASE_STOP:
|
||||
ChangePhase (EV_PHASE_PLAY);
|
||||
return true;
|
||||
|
||||
case EV_PHASE_LOST:
|
||||
case EV_PHASE_BUILD:
|
||||
ChangePhase (EV_PHASE_INFO);
|
||||
@ -5258,7 +5368,7 @@ CEvent::TreatEventBase (const SDL_Event & event)
|
||||
}
|
||||
case SDLK_HOME:
|
||||
pos = m_pDecor->GetHome ();
|
||||
m_pDecor->SetCoin (pos);
|
||||
m_pDecor->SetCorner (pos);
|
||||
return true;
|
||||
case SDLK_SPACE:
|
||||
if (m_bRunMovie)
|
||||
@ -5270,6 +5380,9 @@ CEvent::TreatEventBase (const SDL_Event & event)
|
||||
m_pDecor->FlipOutline ();
|
||||
return true;
|
||||
case SDLK_PAUSE:
|
||||
if (this->m_pDecor->GetSkill () >= 1)
|
||||
return true;
|
||||
|
||||
m_bPause = !m_bPause;
|
||||
if (m_phase == EV_PHASE_PLAY)
|
||||
{
|
||||
|
@ -81,6 +81,9 @@ enum class Language {
|
||||
en_US = 1,
|
||||
fr = 2,
|
||||
de = 3,
|
||||
it = 4,
|
||||
pl = 5,
|
||||
end,
|
||||
};
|
||||
|
||||
class CEvent
|
||||
@ -98,7 +101,7 @@ public:
|
||||
Sint32 GetImageWorld ();
|
||||
bool IsHelpHide ();
|
||||
bool ChangePhase (Uint32 phase);
|
||||
void MovieToStart ();
|
||||
bool MovieToStart ();
|
||||
Uint32 GetPhase ();
|
||||
void TryInsert ();
|
||||
|
||||
@ -140,6 +143,7 @@ public:
|
||||
void IntroStep ();
|
||||
|
||||
Uint8 GetWindowScale ();
|
||||
void SetWindowSize (Uint8 newScale);
|
||||
void SetUpdateVersion (const std::string & version);
|
||||
|
||||
static void PushUserEvent (Sint32 code, void * data = nullptr);
|
||||
@ -236,7 +240,6 @@ protected:
|
||||
bool m_bSpeed;
|
||||
bool m_bHelp;
|
||||
bool m_bAllMissions;
|
||||
bool m_bChangeCheat;
|
||||
Sint32 m_scrollSpeed;
|
||||
bool m_bPause;
|
||||
bool m_bShift;
|
||||
|
119
src/fix.cxx
119
src/fix.cxx
@ -628,76 +628,77 @@ CDecor::ArrangeObject (Point cel)
|
||||
}
|
||||
}
|
||||
|
||||
// Arrange les rayons entre les tours.
|
||||
if (
|
||||
m_decor[cel.x / 2][cel.y / 2].objectIcon == 27 || // tour ?
|
||||
m_decor[cel.x / 2][cel.y / 2].objectIcon == -1) // rien ?
|
||||
g_restoreBugs &&
|
||||
(m_decor[cel.x / 2][cel.y / 2].objectIcon != 27 && // not a tower?
|
||||
m_decor[cel.x / 2][cel.y / 2].objectIcon != -1))
|
||||
return;
|
||||
|
||||
// Arrange les rayons entre les tours.
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
vector = GetVector (i * 2 * 16);
|
||||
test = cel;
|
||||
|
||||
bTour = false;
|
||||
j = 0;
|
||||
while (true)
|
||||
{
|
||||
vector = GetVector (i * 2 * 16);
|
||||
test = cel;
|
||||
test.x += vector.x * 2;
|
||||
test.y += vector.y * 2;
|
||||
|
||||
if (m_decor[test.x / 2][test.y / 2].objectIcon == 27) // tour ?
|
||||
{
|
||||
bTour = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon != -1 &&
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon != 10001 - i % 2)
|
||||
break;
|
||||
|
||||
j++;
|
||||
if (j >= 2 + 1)
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_decor[cel.x / 2][cel.y / 2].objectIcon != 27) // pas tour ?
|
||||
bTour = false;
|
||||
j = 0;
|
||||
while (true)
|
||||
{
|
||||
test.x += vector.x * 2;
|
||||
test.y += vector.y * 2;
|
||||
|
||||
if (m_decor[test.x / 2][test.y / 2].objectIcon == 27) // tour ?
|
||||
test = cel;
|
||||
for (k = 0; k < j; k++)
|
||||
{
|
||||
test.x += vector.x * 2;
|
||||
test.y += vector.y * 2;
|
||||
|
||||
if (bTour)
|
||||
{
|
||||
channel = CHOBJECT;
|
||||
icon = 10001 - i % 2; // rayon e-o (10001) ou n-s (10000)
|
||||
}
|
||||
else
|
||||
{
|
||||
channel = -1;
|
||||
icon = -1;
|
||||
}
|
||||
m_decor[test.x / 2][test.y / 2].objectChannel = channel;
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon = icon;
|
||||
|
||||
if (!m_bBuild && bTour)
|
||||
{
|
||||
if (MoveCreate (
|
||||
test, -1, false, CHOBJECT, -1, -1, -1, 9999, 1, 0, true))
|
||||
{
|
||||
bTour = true;
|
||||
break;
|
||||
MoveAddIcons (test, 5 - i % 2, true); // éclairs
|
||||
}
|
||||
|
||||
if (
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon != -1 &&
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon != 10001 - i % 2)
|
||||
break;
|
||||
|
||||
j++;
|
||||
if (j >= 2 + 1)
|
||||
break;
|
||||
pos = ConvCelToPos (test);
|
||||
m_pSound->PlayImage (SOUND_RAYON1, pos);
|
||||
}
|
||||
|
||||
if (m_decor[cel.x / 2][cel.y / 2].objectIcon != 27) // pas tour ?
|
||||
bTour = false;
|
||||
|
||||
test = cel;
|
||||
for (k = 0; k < j; k++)
|
||||
{
|
||||
test.x += vector.x * 2;
|
||||
test.y += vector.y * 2;
|
||||
|
||||
if (bTour)
|
||||
{
|
||||
channel = CHOBJECT;
|
||||
icon = 10001 - i % 2; // rayon e-o (10001) ou n-s (10000)
|
||||
}
|
||||
else
|
||||
{
|
||||
channel = -1;
|
||||
icon = -1;
|
||||
}
|
||||
m_decor[test.x / 2][test.y / 2].objectChannel = channel;
|
||||
m_decor[test.x / 2][test.y / 2].objectIcon = icon;
|
||||
|
||||
if (!m_bBuild && bTour)
|
||||
{
|
||||
if (MoveCreate (
|
||||
test, -1, false, CHOBJECT, -1, -1, -1, 9999, 1, 0, true))
|
||||
{
|
||||
MoveAddIcons (test, 5 - i % 2, true); // éclairs
|
||||
}
|
||||
|
||||
pos = ConvCelToPos (test);
|
||||
m_pSound->PlayImage (SOUND_RAYON1, pos);
|
||||
}
|
||||
|
||||
if (!m_bBuild && !bTour)
|
||||
MoveFinish (test);
|
||||
}
|
||||
if (!m_bBuild && !bTour)
|
||||
MoveFinish (test);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ GetFogIcon (char * pBits)
|
||||
// Table donnant la "vision" d'un blupi dans le
|
||||
// brouillard.
|
||||
// clang-format off
|
||||
static char table_fog[17 * 17] =
|
||||
static Sint8 table_fog[17 * 17] =
|
||||
{
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
|
@ -60,7 +60,7 @@ protected:
|
||||
CDecor * m_pDecor;
|
||||
CSound * m_pSound;
|
||||
CEvent * m_pEvent;
|
||||
Point m_pos; // coin sup/gauche
|
||||
Point m_pos; // up/left corner
|
||||
Point m_dim; // dimensions
|
||||
Sint32 m_nbButtons;
|
||||
Point m_nbCel;
|
||||
|
@ -90,7 +90,7 @@ CMovie::fileCloseMovie ()
|
||||
// Sets <m_fMovieOpen> on success.
|
||||
|
||||
bool
|
||||
CMovie::fileOpenMovie (Rect rect, const std::string & pFilename)
|
||||
CMovie::fileOpenMovie (const std::string & pFilename)
|
||||
{
|
||||
const auto path = GetBaseDir () + pFilename;
|
||||
|
||||
@ -108,21 +108,22 @@ CMovie::fileOpenMovie (Rect rect, const std::string & pFilename)
|
||||
if (m_player == nullptr)
|
||||
return false;
|
||||
|
||||
pinfo = new Kit_PlayerInfo;
|
||||
Kit_GetPlayerInfo (m_player, pinfo);
|
||||
Kit_PlayerInfo info;
|
||||
Kit_GetPlayerInfo (m_player, &info);
|
||||
|
||||
SDL_AudioSpec wanted_spec, audio_spec;
|
||||
|
||||
SDL_memset (&wanted_spec, 0, sizeof (wanted_spec));
|
||||
wanted_spec.freq = pinfo->audio.samplerate;
|
||||
wanted_spec.format = pinfo->audio.format;
|
||||
wanted_spec.channels = pinfo->audio.channels;
|
||||
wanted_spec.freq = info.audio.samplerate;
|
||||
wanted_spec.format = info.audio.format;
|
||||
wanted_spec.channels = info.audio.channels;
|
||||
m_audioDev = SDL_OpenAudioDevice (nullptr, 0, &wanted_spec, &audio_spec, 0);
|
||||
SDL_PauseAudioDevice (m_audioDev, 0);
|
||||
|
||||
m_videoTex = SDL_CreateTexture (
|
||||
g_renderer, pinfo->video.format, SDL_TEXTUREACCESS_STATIC,
|
||||
pinfo->video.width, pinfo->video.height);
|
||||
g_renderer, info.video.format, SDL_TEXTUREACCESS_TARGET, info.video.width,
|
||||
info.video.height);
|
||||
|
||||
if (m_videoTex == nullptr)
|
||||
return false;
|
||||
|
||||
@ -145,7 +146,10 @@ CMovie::playMovie ()
|
||||
|
||||
// play/pause the AVI movie
|
||||
if (m_fPlaying)
|
||||
{
|
||||
this->starting = true;
|
||||
Kit_PlayerPlay (m_player);
|
||||
}
|
||||
else
|
||||
Kit_PlayerPause (m_player);
|
||||
}
|
||||
@ -159,7 +163,6 @@ CMovie::CMovie ()
|
||||
m_movie = nullptr;
|
||||
m_player = nullptr;
|
||||
m_videoTex = nullptr;
|
||||
pinfo = nullptr;
|
||||
|
||||
memset (m_audiobuf, 0, sizeof (m_audiobuf));
|
||||
|
||||
@ -207,11 +210,12 @@ CMovie::IsExist (const std::string & pFilename)
|
||||
// Montre un film avi.
|
||||
|
||||
bool
|
||||
CMovie::Play (Rect rect, const std::string & pFilename)
|
||||
CMovie::Play (const std::string & pFilename)
|
||||
{
|
||||
if (!m_bEnable)
|
||||
return false;
|
||||
if (!fileOpenMovie (rect, pFilename))
|
||||
|
||||
if (!fileOpenMovie (pFilename))
|
||||
return false;
|
||||
|
||||
playMovie ();
|
||||
@ -289,6 +293,15 @@ CMovie::Render ()
|
||||
SDL_SetRenderDrawColor (g_renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear (g_renderer);
|
||||
|
||||
if (this->starting)
|
||||
{
|
||||
SDL_SetRenderTarget (g_renderer, m_videoTex);
|
||||
SDL_SetRenderDrawColor (g_renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear (g_renderer);
|
||||
SDL_SetRenderTarget (g_renderer, nullptr);
|
||||
this->starting = false;
|
||||
}
|
||||
|
||||
// Refresh videotexture and render it
|
||||
Kit_GetVideoData (m_player, m_videoTex);
|
||||
SDL_RenderCopy (g_renderer, m_videoTex, nullptr, nullptr);
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
bool Create ();
|
||||
bool GetEnable ();
|
||||
bool IsExist (const std::string & pFilename);
|
||||
bool Play (Rect rect, const std::string & pFilename);
|
||||
bool Play (const std::string & pFilename);
|
||||
void Stop ();
|
||||
void Pause ();
|
||||
void Resume ();
|
||||
@ -46,13 +46,12 @@ public:
|
||||
|
||||
protected:
|
||||
void playMovie ();
|
||||
bool fileOpenMovie (Rect rect, const std::string & pFilename);
|
||||
bool fileOpenMovie (const std::string & pFilename);
|
||||
void fileCloseMovie ();
|
||||
void termAVI ();
|
||||
bool initAVI ();
|
||||
|
||||
protected:
|
||||
Kit_PlayerInfo * pinfo;
|
||||
Kit_Source * m_movie;
|
||||
Kit_Player * m_player;
|
||||
SDL_Texture * m_videoTex;
|
||||
@ -61,6 +60,7 @@ protected:
|
||||
|
||||
char m_audiobuf[AUDIOBUFFER_SIZE];
|
||||
bool m_bEnable;
|
||||
bool starting;
|
||||
bool m_fPlaying; // Play flag: true == playing, false == paused
|
||||
bool m_fMovieOpen; // Open flag: true == movie open, false = none
|
||||
};
|
||||
|
@ -2228,17 +2228,17 @@ CDecor::DirectSearch (Point cel, Point goal)
|
||||
{
|
||||
if (dir.y > 0)
|
||||
{
|
||||
direct = DIRECT_SO;
|
||||
direct = DIRECT_SW;
|
||||
if (tan < 41)
|
||||
direct = DIRECT_O;
|
||||
direct = DIRECT_W;
|
||||
if (tan > 241)
|
||||
direct = DIRECT_S;
|
||||
}
|
||||
else
|
||||
{
|
||||
direct = DIRECT_NO;
|
||||
direct = DIRECT_NW;
|
||||
if (tan < 41)
|
||||
direct = DIRECT_O;
|
||||
direct = DIRECT_W;
|
||||
if (tan > 241)
|
||||
direct = DIRECT_N;
|
||||
}
|
||||
@ -3724,7 +3724,7 @@ CDecor::IsBuildBateau (Point cel, Sint32 & direct)
|
||||
fChannel == CHFLOOR && fIcon == 4 && // rivage ?
|
||||
oChannel == -1 && oIcon == -1)
|
||||
{
|
||||
direct = DIRECT_O;
|
||||
direct = DIRECT_W;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -373,8 +373,7 @@ CPixmap::IsIconPixel (size_t channel, Sint32 rank, Point pos)
|
||||
// Les modes sont 0=transparent, 1=opaque.
|
||||
|
||||
bool
|
||||
CPixmap::DrawIcon (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, bool bMask)
|
||||
CPixmap::DrawIcon (Sint32 chDst, size_t channel, Sint32 rank, Point pos)
|
||||
{
|
||||
Sint32 nbx, nby;
|
||||
Rect rect;
|
||||
@ -411,8 +410,7 @@ CPixmap::DrawIcon (
|
||||
// 33,48 35,49
|
||||
|
||||
bool
|
||||
CPixmap::DrawIconDemi (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, bool bMask)
|
||||
CPixmap::DrawIconDemi (Sint32 chDst, size_t channel, Sint32 rank, Point pos)
|
||||
{
|
||||
Sint32 nbx, nby;
|
||||
Rect rect;
|
||||
@ -445,7 +443,7 @@ CPixmap::DrawIconDemi (
|
||||
bool
|
||||
CPixmap::DrawIconPart (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, Sint32 startY,
|
||||
Sint32 endY, bool bMask)
|
||||
Sint32 endY)
|
||||
{
|
||||
Sint32 nbx, nby;
|
||||
Rect rect;
|
||||
@ -477,8 +475,7 @@ CPixmap::DrawIconPart (
|
||||
// Dessine une partie d'image n'importe o�.
|
||||
|
||||
bool
|
||||
CPixmap::DrawPart (
|
||||
Sint32 chDst, size_t channel, Point dest, Rect rect, bool bMask)
|
||||
CPixmap::DrawPart (Sint32 chDst, size_t channel, Point dest, Rect rect)
|
||||
{
|
||||
if (m_SDLTextureInfo.find (channel) == m_SDLTextureInfo.end ())
|
||||
return false;
|
||||
@ -770,7 +767,7 @@ CPixmap::GetCursorRect (MouseSprites sprite)
|
||||
}
|
||||
|
||||
void
|
||||
CPixmap::LoadCursors ()
|
||||
CPixmap::LoadCursors (Uint8 scale)
|
||||
{
|
||||
Uint32 rmask, gmask, bmask, amask;
|
||||
|
||||
@ -791,16 +788,20 @@ on the endianness (byte order) of the machine */
|
||||
for (int i = SPRITE_BEGIN; i <= SPRITE_END; ++i)
|
||||
{
|
||||
MouseSprites sprite = static_cast<MouseSprites> (i);
|
||||
|
||||
if (m_lpSDLCursors[sprite - 1])
|
||||
SDL_FreeCursor (m_lpSDLCursors[sprite - 1]);
|
||||
|
||||
SDL_Point hotspot = this->GetCursorHotSpot (sprite);
|
||||
SDL_Rect rect = this->GetCursorRect (sprite);
|
||||
|
||||
SDL_Surface * surface =
|
||||
SDL_CreateRGBSurface (0, rect.w, rect.h, 32, rmask, gmask, bmask, amask);
|
||||
SDL_BlitSurface (m_lpSDLBlupi, &rect, surface, nullptr);
|
||||
SDL_Surface * surface = SDL_CreateRGBSurface (
|
||||
0, rect.w * scale, rect.h * scale, 32, rmask, gmask, bmask, amask);
|
||||
SDL_BlitScaled (m_lpSDLBlupi, &rect, surface, nullptr);
|
||||
|
||||
// FIXME: change cursor first value to 0
|
||||
m_lpSDLCursors[sprite - 1] =
|
||||
SDL_CreateColorCursor (surface, hotspot.x, hotspot.y);
|
||||
SDL_CreateColorCursor (surface, hotspot.x * scale, hotspot.y * scale);
|
||||
SDL_FreeSurface (surface);
|
||||
}
|
||||
}
|
||||
|
13
src/pixmap.h
13
src/pixmap.h
@ -66,15 +66,12 @@ public:
|
||||
|
||||
bool IsIconPixel (size_t channel, Sint32 rank, Point pos);
|
||||
|
||||
bool DrawIcon (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, bool bMask = false);
|
||||
bool DrawIconDemi (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, bool bMask = false);
|
||||
bool DrawIcon (Sint32 chDst, size_t channel, Sint32 rank, Point pos);
|
||||
bool DrawIconDemi (Sint32 chDst, size_t channel, Sint32 rank, Point pos);
|
||||
bool DrawIconPart (
|
||||
Sint32 chDst, size_t channel, Sint32 rank, Point pos, Sint32 startY,
|
||||
Sint32 endY, bool bMask = false);
|
||||
bool DrawPart (
|
||||
Sint32 chDst, size_t channel, Point dest, Rect rect, bool bMask = false);
|
||||
Sint32 endY);
|
||||
bool DrawPart (Sint32 chDst, size_t channel, Point dest, Rect rect);
|
||||
bool DrawImage (Sint32 chDst, size_t channel, Rect rect);
|
||||
|
||||
bool BuildIconMask (
|
||||
@ -85,7 +82,7 @@ public:
|
||||
|
||||
void SetMouseSprite (MouseSprites sprite);
|
||||
void MouseShow (bool bShow);
|
||||
void LoadCursors ();
|
||||
void LoadCursors (Uint8 scale);
|
||||
void ChangeSprite (MouseSprites sprite);
|
||||
|
||||
protected:
|
||||
|
@ -72,7 +72,7 @@ CJauge::Draw ()
|
||||
rect.right = m_pos.x + m_dim.x;
|
||||
rect.top = m_pos.y;
|
||||
rect.bottom = m_pos.y + m_dim.y;
|
||||
m_pPixmap->DrawPart (-1, CHBACK, m_pos, rect, 1); // dessine le fond
|
||||
m_pPixmap->DrawPart (-1, CHBACK, m_pos, rect); // dessine le fond
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ protected:
|
||||
CDecor * m_pDecor;
|
||||
CSound * m_pSound;
|
||||
bool m_bHide; // true si bouton caché
|
||||
Point m_pos; // coin sup/gauche
|
||||
Point m_pos; // up/left corner
|
||||
Point m_dim; // dimensions
|
||||
Sint32 m_type;
|
||||
Sint32 m_level;
|
||||
|
57
src/text.cxx
57
src/text.cxx
@ -22,35 +22,62 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "def.h"
|
||||
#include "misc.h"
|
||||
#include "pixmap.h"
|
||||
#include "text.h"
|
||||
|
||||
/**
|
||||
* \brief Return the character offset for the sprite.
|
||||
*
|
||||
* \param[in] c - The character (incremented if 0xC3 UTF-8).
|
||||
* \param[in] c - The character (incremented if 0xC3 or 0xC4 or 0xC5 UTF-8).
|
||||
* \returns the offset.
|
||||
*/
|
||||
static Sint32
|
||||
GetOffset (const char *& c)
|
||||
{
|
||||
/* clang-format off */
|
||||
static const unsigned char table_accents[] = {
|
||||
/* ü à â é è ë ê ï */
|
||||
/* 0xFC, 0xE0, 0xE2, 0xE9, 0xE8, 0xEB, 0xEA, 0xEF, // CP1252 */
|
||||
0xBC, 0xA0, 0xA2, 0xA9, 0xA8, 0xAB, 0xAA, 0xAF, // UTF-8
|
||||
/* î ô ù û ä ö ç */
|
||||
/* 0xEE, 0xF4, 0xF9, 0xFB, 0xE4, 0xF6, 0xE7, // CP1252 */
|
||||
0xAE, 0xB4, 0xB9, 0xBB, 0xA4, 0xB6, 0xA7, // UTF-8
|
||||
/* ü à â é è ë ê ï */
|
||||
0xBC, 0xA0, 0xA2, 0xA9, 0xA8, 0xAB, 0xAA, 0xAF, /* UTF-8 */
|
||||
/* î ô ù û ä ö ç */
|
||||
0xAE, 0xB4, 0xB9, 0xBB, 0xA4, 0xB6, 0xA7, /* UTF-8 */
|
||||
};
|
||||
|
||||
static const unsigned char table_extended[] = {
|
||||
/* Italian */
|
||||
/* ò ì */
|
||||
0xB2, 0xAC, /* UTF-8 */
|
||||
/* Polish */
|
||||
/* ń ó ę ć ź ż */
|
||||
0x84, 0xB3, 0x99, 0x87, 0xBA, 0xBC, /* UTF-8 */
|
||||
/* ą ł ś */
|
||||
0x85, 0x82, 0x9B, /* UTF-8 */
|
||||
};
|
||||
/* clang-format on */
|
||||
|
||||
if (static_cast<unsigned char> (*c) == 0xC3)
|
||||
c++;
|
||||
if (static_cast<unsigned char> (*c) == 0xC4)
|
||||
c++;
|
||||
if (static_cast<unsigned char> (*c) == 0xC5)
|
||||
c++;
|
||||
|
||||
for (unsigned int i = 0; i < countof (table_accents); ++i)
|
||||
if (GetLocale () != "pl")
|
||||
{
|
||||
if ((unsigned char) *c == table_accents[i])
|
||||
return 15 + i;
|
||||
// Do not use the 'standard' accents table with Polish locale
|
||||
// This is required because we check only last byte of UTF-8 and some
|
||||
// characters overlap
|
||||
// TODO: In the future, this ugly hack should be replaced with proper UTF-8
|
||||
// parsing
|
||||
for (unsigned int i = 0; i < countof (table_accents); ++i)
|
||||
if ((unsigned char) *c == table_accents[i])
|
||||
return 15 + i;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < countof (table_extended); ++i)
|
||||
if ((unsigned char) *c == table_extended[i])
|
||||
return 127 + i;
|
||||
|
||||
if (*c < 0)
|
||||
return 1; // square
|
||||
|
||||
@ -77,7 +104,8 @@ GetCharWidth (const char *& c, Sint32 font)
|
||||
12, 8, 9, 9, 9, 8, 8, 8, 9, 4, 8, 9, 8, 10, 9, 9,
|
||||
8, 9, 8, 9, 10, 8, 9, 11, 9, 8, 10, 7, 10, 7, 13, 13,
|
||||
9, 9, 8, 8, 8, 8, 6, 8, 8, 4, 6, 8, 4, 12, 8, 8,
|
||||
8, 8, 7, 6, 7, 8, 8, 10, 8, 8, 7, 6, 6, 6, 10, 0,
|
||||
8, 8, 7, 6, 7, 8, 8, 10, 8, 8, 7, 6, 6, 6, 10, 8,
|
||||
5, 8, 8, 8, 8, 8, 7, 9, 6, 7
|
||||
};
|
||||
|
||||
static const unsigned char table_width_little[] =
|
||||
@ -89,7 +117,8 @@ GetCharWidth (const char *& c, Sint32 font)
|
||||
9, 8, 6, 7, 7, 5, 5, 8, 7, 2, 4, 7, 5, 10, 7, 8,
|
||||
6, 8, 7, 6, 6, 6, 8, 12, 7, 6, 6, 3, 5, 3, 6, 8,
|
||||
4, 6, 6, 6, 6, 6, 4, 6, 6, 2, 3, 5, 2, 10, 6, 6,
|
||||
6, 6, 3, 5, 3, 6, 6, 8, 6, 6, 5, 4, 6, 4, 7, 0,
|
||||
6, 6, 3, 5, 3, 6, 6, 8, 6, 6, 5, 4, 6, 4, 7, 6,
|
||||
3, 6, 6, 6, 5, 5, 5, 7, 4, 5
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@ -118,7 +147,7 @@ DrawText (CPixmap * pPixmap, Point pos, const char * pText, Sint32 font)
|
||||
|
||||
if (font != FONTLITTLE)
|
||||
{
|
||||
rank += 128 * font;
|
||||
rank += (128 + 16) * font;
|
||||
pPixmap->DrawIcon (-1, CHTEXT, rank, pos);
|
||||
}
|
||||
else
|
||||
@ -142,7 +171,7 @@ DrawTextPente (
|
||||
while (*pText != 0)
|
||||
{
|
||||
rank = GetOffset (pText);
|
||||
rank += 128 * font;
|
||||
rank += (128 + 16) * font;
|
||||
pPixmap->DrawIcon (-1, CHTEXT, rank, pos);
|
||||
|
||||
lg = GetCharWidth (pText, font);
|
||||
|
Loading…
x
Reference in New Issue
Block a user