mirror of
https://github.com/blupi-games/planetblupi
synced 2024-12-30 10:15:36 +01:00
Merge remote-tracking branch 'origin/master' into HEAD
This commit is contained in:
commit
b96741b45f
143
CMakeLists.txt
143
CMakeLists.txt
@ -11,12 +11,16 @@ link_directories (${CMAKE_INSTALL_PREFIX}/lib)
|
||||
|
||||
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)
|
||||
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/src/config.h.in"
|
||||
@ -32,11 +36,19 @@ 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 ()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND "${STATIC_BUILD}")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
|
||||
endif ()
|
||||
|
||||
@ -94,32 +106,50 @@ endif (MINGW)
|
||||
|
||||
# Dependencies
|
||||
|
||||
set (CMAKE_INCLUDE_PATH ${CMAKE_INSTALL_PREFIX}/include)
|
||||
set (CMAKE_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
if ("${STATIC_BUILD}")
|
||||
set (CMAKE_INCLUDE_PATH ${CMAKE_INSTALL_PREFIX}/include)
|
||||
set (CMAKE_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
endif ()
|
||||
|
||||
find_package (Intl REQUIRED)
|
||||
include_directories (${Intl_INCLUDE_DIRS})
|
||||
|
||||
find_package (Iconv REQUIRED)
|
||||
include_directories (${Iconv_INCLUDE_DIRS})
|
||||
|
||||
find_package (Argagg REQUIRED)
|
||||
include_directories (${Argagg_INCLUDE_DIRS})
|
||||
|
||||
find_package (SDLKitchensink REQUIRED)
|
||||
include_directories (${SDLKitchensink_INCLUDE_DIRS})
|
||||
|
||||
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)
|
||||
# Static dependencies for SDL_kitchensink
|
||||
pkg_search_module (PNG REQUIRED libpng)
|
||||
pkg_search_module (AVCODEC REQUIRED libavcodec)
|
||||
pkg_search_module (AVFORMAT REQUIRED libavformat)
|
||||
pkg_search_module (AVUTIL REQUIRED libavutil)
|
||||
pkg_search_module (SWSCALE REQUIRED libswscale)
|
||||
pkg_search_module (SWRESAMPLE REQUIRED libswresample)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
pkg_search_module (ALSA REQUIRED alsa)
|
||||
pkg_search_module (PULSE REQUIRED libpulse)
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
pkg_search_module (CURL REQUIRED libcurl)
|
||||
add_definitions (-DUSE_CURL)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURL_STATICLIB")
|
||||
if ("${STATIC_BUILD}")
|
||||
pkg_search_module (PNG REQUIRED libpng)
|
||||
# Static dependencies for SDL_kitchensink
|
||||
pkg_search_module (AVCODEC REQUIRED libavcodec)
|
||||
pkg_search_module (AVFORMAT REQUIRED libavformat)
|
||||
pkg_search_module (AVUTIL REQUIRED libavutil)
|
||||
pkg_search_module (SWSCALE REQUIRED libswscale)
|
||||
pkg_search_module (SWRESAMPLE REQUIRED libswresample)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
pkg_search_module (ALSA REQUIRED alsa)
|
||||
pkg_search_module (PULSE REQUIRED libpulse)
|
||||
endif ()
|
||||
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURL_STATICLIB")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
###########################
|
||||
## Main binary dependencies
|
||||
@ -127,28 +157,50 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURL_STATICLIB")
|
||||
|
||||
add_executable (planetblupi ${sources})
|
||||
|
||||
set (planetblupi_DEPS
|
||||
${Intl_LIBRARIES}
|
||||
${Iconv_LIBRARIES}
|
||||
${SDL2_STATIC_LIBRARIES}
|
||||
${SDL2_MIXER_STATIC_LIBRARIES}
|
||||
${SDL2_IMAGE_STATIC_LIBRARIES}
|
||||
${CURL_STATIC_LIBRARIES}
|
||||
${SDLKitchensink_STATIC_LIBRARIES}
|
||||
${PNG_STATIC_LIBRARIES}
|
||||
${AVCODEC_STATIC_LIBRARIES}
|
||||
${AVFORMAT_STATIC_LIBRARIES}
|
||||
${AVUTIL_STATIC_LIBRARIES}
|
||||
${SWSCALE_STATIC_LIBRARIES}
|
||||
${SWRESAMPLE_STATIC_LIBRARIES}
|
||||
)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
list (APPEND planetblupi_DEPS
|
||||
${ALSA_STATIC_LIBRARIES}
|
||||
${PULSE_STATIC_LIBRARIES}
|
||||
if ("${STATIC_BUILD}")
|
||||
set (planetblupi_DEPS
|
||||
${Intl_LIBRARIES}
|
||||
${Iconv_LIBRARIES}
|
||||
${SDL2_STATIC_LIBRARIES}
|
||||
${SDL2_MIXER_STATIC_LIBRARIES}
|
||||
${SDL2_IMAGE_STATIC_LIBRARIES}
|
||||
${SDLKitchensink_STATIC_LIBRARIES}
|
||||
${PNG_STATIC_LIBRARIES}
|
||||
${AVCODEC_STATIC_LIBRARIES}
|
||||
${AVFORMAT_STATIC_LIBRARIES}
|
||||
${AVUTIL_STATIC_LIBRARIES}
|
||||
${SWSCALE_STATIC_LIBRARIES}
|
||||
${SWRESAMPLE_STATIC_LIBRARIES}
|
||||
)
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_INSTALL_PREFIX}/lib/pulseaudio")
|
||||
|
||||
if (${PB_HTTP_VERSION_CHECK})
|
||||
list (APPEND planetblupi_DEPS
|
||||
${CURL_STATIC_LIBRARIES}
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
list (APPEND planetblupi_DEPS
|
||||
${ALSA_STATIC_LIBRARIES}
|
||||
${PULSE_STATIC_LIBRARIES}
|
||||
)
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_INSTALL_PREFIX}/lib/pulseaudio")
|
||||
endif ()
|
||||
else ()
|
||||
set (planetblupi_DEPS
|
||||
${SDL2_LIBRARIES}
|
||||
${SDL2_MIXER_LIBRARIES}
|
||||
${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})
|
||||
@ -219,6 +271,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)
|
||||
@ -231,7 +290,7 @@ endif ()
|
||||
## Deploy
|
||||
#########
|
||||
|
||||
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
||||
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND "${STATIC_BUILD}")
|
||||
# set (CPACK_STRIP_FILES TRUE)
|
||||
set (CPACK_PACKAGE_NAME ${PB_PACKAGE_NAME})
|
||||
set (CPACK_PACKAGE_VENDOR "blupi.org")
|
||||
@ -246,7 +305,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
||||
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
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: 2.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 34 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"
|
1820
resources/po/pl.po
1820
resources/po/pl.po
File diff suppressed because it is too large
Load Diff
@ -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.
@ -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 ();
|
||||
|
||||
@ -243,7 +260,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 +274,8 @@ UpdateFrame (void)
|
||||
if (term == 2)
|
||||
g_pEvent->ChangePhase (EV_PHASE_WINMOVIE); // win
|
||||
}
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -371,10 +390,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 +467,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 +485,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 +527,7 @@ CheckForUpdates ()
|
||||
free (chunk.buffer);
|
||||
|
||||
curl_easy_cleanup (curl);
|
||||
#endif /* USE_CURL */
|
||||
}
|
||||
|
||||
static int
|
||||
@ -523,6 +548,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 +613,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,19 +657,20 @@ 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;
|
||||
|
||||
// Create a window.
|
||||
if (g_bFullScreen)
|
||||
g_window = SDL_CreateWindow (
|
||||
gettext ("Planet Blupi"), 0, 0, LXIMAGE, LYIMAGE,
|
||||
SDL_WINDOW_FULLSCREEN | SDL_WINDOW_BORDERLESS | SDL_WINDOW_INPUT_GRABBED);
|
||||
else
|
||||
g_window = SDL_CreateWindow (
|
||||
gettext ("Planet Blupi"), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
||||
LXIMAGE, LYIMAGE, 0);
|
||||
g_window = SDL_CreateWindow (
|
||||
gettext ("Planet Blupi"), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
||||
LXIMAGE, LYIMAGE, 0);
|
||||
|
||||
if (!g_window)
|
||||
{
|
||||
@ -657,12 +693,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 ();
|
||||
@ -830,26 +860,20 @@ 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;
|
||||
std::string text_filename = "image/text.png";
|
||||
if (GetLocale() == "pl")
|
||||
text_filename = "image/text_pl.png"; // TODO: Merge into one texture, or use TTF fonts instead?
|
||||
if (!g_pPixmap->Cache (CHTEXT, text_filename, totalDim, iconDim))
|
||||
if (!g_pPixmap->Cache (CHTEXT, "image/text.png", totalDim, iconDim))
|
||||
{
|
||||
InitFail ("Cache text.png");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
totalDim.x = DIMLITTLEX * 16;
|
||||
totalDim.y = DIMLITTLEY * 8;
|
||||
totalDim.y = DIMLITTLEY * 9;
|
||||
iconDim.x = DIMLITTLEX;
|
||||
iconDim.y = DIMLITTLEY;
|
||||
std::string little_filename = "image/little.png";
|
||||
if (GetLocale() == "pl")
|
||||
little_filename = "image/little_pl.png"; // TODO: Merge into one texture, or use TTF fonts instead?
|
||||
if (!g_pPixmap->Cache (CHLITTLE, little_filename, totalDim, iconDim))
|
||||
if (!g_pPixmap->Cache (CHLITTLE, "image/little.png", totalDim, iconDim))
|
||||
{
|
||||
InitFail ("Cache little.png");
|
||||
return EXIT_FAILURE;
|
||||
@ -866,7 +890,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.
|
||||
@ -913,6 +937,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;
|
||||
}
|
||||
|
||||
|
@ -2487,6 +2487,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 +4014,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,
|
||||
|
@ -120,7 +120,10 @@ CDecor::Write (Sint32 rank, bool bUser, Sint32 world, Sint32 time, Sint32 total)
|
||||
AddUserPath (filename);
|
||||
}
|
||||
else
|
||||
filename = string_format (GetBaseDir () + "data/world%.3d.blp", rank);
|
||||
{
|
||||
filename = string_format ("data/world%.3d.blp", rank);
|
||||
AddUserPath (filename);
|
||||
}
|
||||
|
||||
file = fopen (filename.c_str (), "wb");
|
||||
if (file == nullptr)
|
||||
@ -207,6 +210,11 @@ CDecor::Read (
|
||||
filename = string_format ("data/user%.3d.blp", rank);
|
||||
AddUserPath (filename);
|
||||
}
|
||||
else if (rank >= 200)
|
||||
{
|
||||
filename = string_format ("data/world%.3d.blp", rank);
|
||||
AddUserPath (filename);
|
||||
}
|
||||
else
|
||||
filename = string_format (GetBaseDir () + "data/world%.3d.blp", rank);
|
||||
|
||||
@ -343,6 +351,11 @@ CDecor::FileExist (
|
||||
filename = string_format ("data/user%.3d.blp", rank);
|
||||
AddUserPath (filename);
|
||||
}
|
||||
else if (rank >= 200)
|
||||
{
|
||||
filename = string_format ("data/world%.3d.blp", rank);
|
||||
AddUserPath (filename);
|
||||
}
|
||||
else
|
||||
filename = string_format (GetBaseDir () + "data/world%.3d.blp", rank);
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
@ -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
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
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))
|
||||
{
|
||||
@ -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
|
||||
};
|
||||
|
167
src/event.cxx
167
src/event.cxx
@ -20,6 +20,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctime>
|
||||
#include <set>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unordered_map>
|
||||
@ -1258,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},
|
||||
@ -1518,7 +1525,7 @@ CEvent::CEvent ()
|
||||
{
|
||||
Sint32 i;
|
||||
|
||||
m_bFullScreen = g_bFullScreen;
|
||||
m_bFullScreen = false;
|
||||
m_WindowScale = 1;
|
||||
m_exercice = 0;
|
||||
m_mission = 0;
|
||||
@ -1545,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;
|
||||
@ -1587,6 +1593,7 @@ 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,8 +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 == "pl")
|
||||
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 ();
|
||||
|
||||
@ -1650,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
|
||||
@ -1663,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.
|
||||
*
|
||||
@ -1681,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
|
||||
@ -1932,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]);
|
||||
@ -1949,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)
|
||||
@ -2112,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);
|
||||
@ -2130,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;
|
||||
@ -2138,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;
|
||||
@ -2504,8 +2543,10 @@ CEvent::DrawButtons ()
|
||||
lang = "Français";
|
||||
else if (locale == "de")
|
||||
lang = "Deutsch";
|
||||
else if (locale == "it")
|
||||
lang = "Italiano";
|
||||
else if (locale == "pl")
|
||||
lang = "Polish";
|
||||
lang = "Polski";
|
||||
|
||||
lg = GetTextWidth (lang.c_str ());
|
||||
pos.x = (54 + 40) - lg / 2;
|
||||
@ -3036,7 +3077,10 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
|
||||
// FIXME: pause is better if the game is not stop but just interrupted
|
||||
if (m_phase == EV_PHASE_PLAY && m_phase != phase)
|
||||
m_pSound->StopAllSounds (false);
|
||||
{
|
||||
static const std::set<Sint32> except = {SOUND_WIN, SOUND_LOST};
|
||||
m_pSound->StopAllSounds (false, &except);
|
||||
}
|
||||
|
||||
m_phase = phase; // change de phase
|
||||
m_index = index;
|
||||
@ -3149,7 +3193,6 @@ CEvent::ChangePhase (Uint32 phase)
|
||||
m_pDecor->NextPhase (0); // refait la carte tout de suite
|
||||
m_pDecor->StatisticInit ();
|
||||
m_pDecor->TerminatedInit ();
|
||||
m_bChangeCheat = true; // affiche les cheat-codes
|
||||
}
|
||||
|
||||
if (m_phase == EV_PHASE_BUILD)
|
||||
@ -3251,7 +3294,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);
|
||||
}
|
||||
|
||||
@ -3342,15 +3385,16 @@ CEvent::TryInsert ()
|
||||
|
||||
// Fait démarrer un film si nécessaire.
|
||||
|
||||
void
|
||||
bool
|
||||
CEvent::MovieToStart ()
|
||||
{
|
||||
bool movie = false;
|
||||
|
||||
if (m_movieToStart[0] != 0) // y a-t-il un film à démarrer ?
|
||||
{
|
||||
HideMouse (true); // cache la souris
|
||||
|
||||
if (StartMovie (m_movieToStart))
|
||||
{
|
||||
movie = true;
|
||||
m_phase = m_phaseAfterMovie; // prochaine phase normale
|
||||
}
|
||||
else
|
||||
@ -3358,6 +3402,8 @@ CEvent::MovieToStart ()
|
||||
|
||||
m_movieToStart[0] = 0;
|
||||
}
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
// Décale le décor.
|
||||
@ -3650,6 +3696,8 @@ 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;
|
||||
@ -3686,6 +3734,9 @@ CEvent::SetLanguage (Language lang)
|
||||
case Language::de:
|
||||
slang = "de";
|
||||
break;
|
||||
case Language::it:
|
||||
slang = "it";
|
||||
break;
|
||||
case Language::pl:
|
||||
slang = "pl";
|
||||
break;
|
||||
@ -3702,31 +3753,6 @@ CEvent::SetLanguage (Language lang)
|
||||
SDL_SetWindowTitle (g_window, gettext ("Planet Blupi"));
|
||||
|
||||
m_pSound->CacheAll ();
|
||||
|
||||
Point totalDim, iconDim;
|
||||
totalDim.x = DIMTEXTX * 16;
|
||||
totalDim.y = DIMTEXTY * 8 * 3;
|
||||
iconDim.x = DIMTEXTX;
|
||||
iconDim.y = DIMTEXTY;
|
||||
std::string text_filename = "image/text.png";
|
||||
if (GetLocale() == "pl")
|
||||
text_filename = "image/text_pl.png";
|
||||
if (!m_pPixmap->Cache (CHTEXT, text_filename, totalDim, iconDim))
|
||||
{
|
||||
printf ("Error (Cache text.png)");
|
||||
}
|
||||
|
||||
totalDim.x = DIMLITTLEX * 16;
|
||||
totalDim.y = DIMLITTLEY * 8;
|
||||
iconDim.x = DIMLITTLEX;
|
||||
iconDim.y = DIMLITTLEY;
|
||||
std::string little_filename = "image/little.png";
|
||||
if (GetLocale() == "pl")
|
||||
little_filename = "image/little_pl.png";
|
||||
if (!m_pPixmap->Cache (CHLITTLE, little_filename, totalDim, iconDim))
|
||||
{
|
||||
printf ("Error (Cache little.png)");
|
||||
}
|
||||
}
|
||||
|
||||
// Clic dans un bouton.
|
||||
@ -4227,8 +4253,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)
|
||||
@ -4237,15 +4261,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;
|
||||
}
|
||||
@ -5097,42 +5118,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;
|
||||
break;
|
||||
}
|
||||
case 5: // helpme ?
|
||||
{
|
||||
m_bHelp = !m_bHelp;
|
||||
bEnable = m_bHelp;
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
case 6: // invincible ?
|
||||
{
|
||||
m_pDecor->SetInvincible (!m_pDecor->GetInvincible ());
|
||||
bEnable = m_pDecor->GetInvincible ();
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
case 7: // superblupi ?
|
||||
{
|
||||
m_pDecor->SetSuper (!m_pDecor->GetSuper ());
|
||||
bEnable = m_pDecor->GetSuper ();
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
case 8: // construire ?
|
||||
{
|
||||
m_bAccessBuild = !m_bAccessBuild;
|
||||
bEnable = m_bAccessBuild;
|
||||
m_bChangeCheat = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -5196,6 +5211,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);
|
||||
@ -5301,6 +5319,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,7 +81,9 @@ enum class Language {
|
||||
en_US = 1,
|
||||
fr = 2,
|
||||
de = 3,
|
||||
pl = 4,
|
||||
it = 4,
|
||||
// Left some space for Korean and Hebrew as I think original translations should be first, see issue #23
|
||||
pl = 7,
|
||||
};
|
||||
|
||||
class CEvent
|
||||
@ -99,7 +101,7 @@ public:
|
||||
Sint32 GetImageWorld ();
|
||||
bool IsHelpHide ();
|
||||
bool ChangePhase (Uint32 phase);
|
||||
void MovieToStart ();
|
||||
bool MovieToStart ();
|
||||
Uint32 GetPhase ();
|
||||
void TryInsert ();
|
||||
|
||||
@ -141,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);
|
||||
@ -237,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -28,13 +28,16 @@
|
||||
// Stops all sounds.
|
||||
|
||||
bool
|
||||
CSound::StopAllSounds (bool immediat)
|
||||
CSound::StopAllSounds (bool immediat, const std::set<Sint32> * except)
|
||||
{
|
||||
for (Sint32 i = 0; i < MAXSOUND; i++)
|
||||
{
|
||||
if (!m_lpSDL[i])
|
||||
continue;
|
||||
|
||||
if (except && except->find (i) != except->end ())
|
||||
continue;
|
||||
|
||||
if (Mix_Playing (i + 1) == SDL_TRUE)
|
||||
{
|
||||
if (immediat)
|
||||
|
@ -20,11 +20,13 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <SDL2/SDL_mixer.h>
|
||||
#include <set>
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <SDL2/SDL_mixer.h>
|
||||
|
||||
#include "blupi.h"
|
||||
|
||||
#define MAXSOUND 100
|
||||
@ -63,7 +65,7 @@ public:
|
||||
bool IsStoppedOnDemand ();
|
||||
void AdaptVolumeMusic ();
|
||||
void SetSuspendSkip (Sint32 nb);
|
||||
bool StopAllSounds (bool immediat);
|
||||
bool StopAllSounds (bool immediat, const std::set<Sint32> * except = nullptr);
|
||||
|
||||
protected:
|
||||
bool m_bState;
|
||||
@ -78,5 +80,3 @@ protected:
|
||||
Sint32 m_lastMidiVolume;
|
||||
Sint32 m_nbSuspendSkip;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
56
src/text.cxx
56
src/text.cxx
@ -35,22 +35,25 @@
|
||||
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_accents_pl[] = {
|
||||
/* Polish */
|
||||
/* ń * ó ę * ć * * */
|
||||
0x84, 0xFF, 0xB3, 0x99, 0xFF, 0x87, 0xFF, 0xFF, // UTF-8
|
||||
/* ź ż * * ą ł ś */
|
||||
0xBA, 0xBC, 0xFF, 0xFF, 0x85, 0x82, 0x9B, // 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++;
|
||||
@ -59,21 +62,20 @@ GetOffset (const char *& c)
|
||||
if (static_cast<unsigned char> (*c) == 0xC5)
|
||||
c++;
|
||||
|
||||
if(GetLocale() == "pl") {
|
||||
for (unsigned int i = 0; i < countof (table_accents_pl); ++i)
|
||||
{
|
||||
if ((unsigned char) *c == table_accents_pl[i])
|
||||
return 15 + i;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (GetLocale() != "pl")
|
||||
{
|
||||
// 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
|
||||
|
||||
@ -100,7 +102,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[] =
|
||||
@ -112,7 +115,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, 5, 5, 5, 5, 4, 4, 6, 3, 4
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@ -141,7 +145,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
|
||||
@ -165,7 +169,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