diff options
author | Didier Raboud <odyx@debian.org> | 2019-02-24 15:01:47 +0100 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2019-02-24 15:01:47 +0100 |
commit | 79b111dee86d6440debd4694b57cc0be6fd1e58f (patch) | |
tree | 0d19aa6b589708126460c9bd4af058412c410358 | |
parent | fddbb44d340ab917df694d04c82733500bff68a4 (diff) | |
parent | a8c7c83494c86457091dc1b1ac8b1aa5b7d03a9c (diff) |
Merge tag 'upstream/1.14.0' into debian/experimental
79 files changed, 7396 insertions, 785 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 192e9bf..55246d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,8 @@ link_directories (${CMAKE_INSTALL_PREFIX}/lib) project (planetblupi) set (PB_VERSION_MAJOR 1) -set (PB_VERSION_MINOR 13) -set (PB_VERSION_PATCH 2) +set (PB_VERSION_MINOR 14) +set (PB_VERSION_PATCH 0) set (PB_VERSION_EXTRA "") set (PB_PRODUCT_NAME "Planet Blupi") set (PB_PACKAGE_NAME "planetblupi") @@ -93,10 +93,13 @@ else () ) endif () file (COPY resources/image DESTINATION share/planetblupi) -file (COPY resources/movie DESTINATION share/planetblupi) +if (NOT BUILD_JS) + file (COPY resources/movie DESTINATION share/planetblupi) +endif () file (COPY resources/sound DESTINATION share/planetblupi) file (COPY resources/music DESTINATION share/planetblupi) file (COPY LICENSE.all DESTINATION share/doc/planetblupi) +file (COPY COPYING DESTINATION share/doc/planetblupi) file (RENAME "${CMAKE_BINARY_DIR}/share/doc/planetblupi/LICENSE.all" "${CMAKE_BINARY_DIR}/share/doc/planetblupi/copyright") @@ -306,9 +309,14 @@ if (NOT BUILD_JS) install (DIRECTORY resources/sound DESTINATION share/planetblupi) install (DIRECTORY resources/music DESTINATION share/planetblupi) install (FILES LICENSE.all DESTINATION share/doc/planetblupi RENAME copyright) + install (FILES COPYING DESTINATION share/doc/planetblupi) if (UNIX AND NOT APPLE) install (DIRECTORY resources/icon/hicolor DESTINATION share/icons) + install ( + FILES resources/linux/${PB_PACKAGE_NAME}.appdata.xml + DESTINATION share/metainfo + ) endif () if (NOT USE_APPIMAGE) @@ -0,0 +1,29 @@ +# Copying + +| Years | People | +| --------- | ---------------------------------------------------------------- | +| | **Developers** | +| 1997 | Daniel Roux and Denis Dumoulin | +| 2017-2019 | Mathieu Schroeter | +| | | +| | **Voices** | +| 1997 | Daniel Roux, David Besuchet, Michael Walz and Garry Goodman | +| | | +| | **Translators** | +| 1997 | Christian Alleyn, Michael Walz, David Besuchet, Cedric Freeman, | +| | Adrienne Magnin and Wendy de Pauli | +| 2005 | Rodolfo Andrade de Oliveira and Vanessa Alexandre Vieira | +| 2017 | Catia Guidi and Mateusz Lis | +| 2019 | punctdan _(@github)_ and TheShwarma _(@twitter)_ | +| | | +| | **Missions** | +| 1997 | Daniel Roux, Adrien Roux and Denis Dumoulin | +| | | +| | **Testers** | +| 1997 | Denis Dumoulin, Adrien Roux, Michael Walz, René Beuchat, | +| | Pierre Arnaud, Michèle Cottler, Arnaud Cottler, Daniel Durussel, | +| | Audrey Durussel, Laurianne Durussel, Philippe Menu, | +| | Michael Bloch, Florian Stutzmann, Fabrice Bodmer, | +| | Rachel Besuchet, Pauline Rochat, Antoine Richoy, | +| | Fabrice Marquis, Steve Guex, Simon Lopez, David Piot, | +| | Yves Burgos and Jeremy Kull | diff --git a/README-user.md b/README-user.md deleted file mode 100644 index 7543bd4..0000000 --- a/README-user.md +++ /dev/null @@ -1,107 +0,0 @@ - -# Planet Blupi - -This version contains over 30 missions and a built in editor, which enables you -to construct your own missions. - -## Configuration - -| Category | Description | -| -------- | ----------- | -| 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 - -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 `share/planetblupi/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. - -> It's possible to start the game with `--fullscreen off` instead of editing -> the `config.json` file. - -If the problem persists, maybe you should try to start the game with the software -renderer. Edit the `config.json` file and add `"renderer": "software"` or start -the game with `--renderer software`. - -On Windows, an other possibility exists. You can try to change the driver used -by the software renderer. By default it uses `"direct3d"`, you can change by -`"opengl"` with `"driver": "opengl"` with the `config.json` file or -`--driver opengl` by command line argument. - -## Mouse - -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. - -If the chosen Blupi is already selected (blue or red circle around him), -step 1) is not necessary. - -You may select several Blupis by maintaining the Shift button pressed. - -Right button: -The right button is a shortcut. It orders the selected Blupi to do the most -useful operation on the selected spot. - -## Keyboard - -| Keys | Description | -| ------------ | ----------- | -| <kbd>Arrows</kbd> | Scrolls the visible part of the scene. | -| <kbd>Spacebar</kbd> | Shows or hides items. | -| <kbd>F1</kbd> | Describes the goal without interrupting the game. | -| <kbd>F5</kbd> | Normal speed (x1). | -| <kbd>F6</kbd> | Double speed (x2). | -| <kbd>Home</kbd> | Returns to place of mission departure | -| <kbd>Ctrl</kbd>+<kbd>F9</kbd>..<kbd>F12</kbd> | Bookmarks a spot. | -| <kbd>F9</kbd>..<kbd>F12</kbd> | Returns to the corresponding bookmarked spot. | -| <kbd>Pause</kbd> | Temporarily suspends the game. | - -When you switch to an other application, the game is automatically paused. - -## Music - -The music is provided in OGG and MIDI formats. The OGG variant is prefered -because the render is the same for all platforms. For purist fanboys, it's -possible to enforce the MIDI variant by starting the game with the -`--restore-midi` command line argument. Note that in this case, it's possible -to lose some instruments, it depends of your system. - -> You can edit the `share/planetblupi/data/config.json` file and add an entry -> `"restoremidi": true`, or simply use the new settings available in the global -> settings screen in the game. - -If you want, you can overload all musics with yours by providing OGG or MIDI -music files in your user directory. - -On Windows, type `%APPDATA%\Epsitec SA\Planet Blupi` in the file browser, -on macOS, look at `~/Library/Application Support/Epsitec SA/Planet Blupi`, and -on Linux, look at `~/.local/share/Epsitec SA/Planet Blupi`. - -You can create a `music` sub-directory with your music. For example: -`%LOCALAPPDATA%\Epsitec SA\Planet Blupi\music\music000.ogg`. - -Only 10 musics are supported: `music000` to `music009`. - -## Epsitec SA - -_Planet Blupi_ is an original creation of [Epsitec SA][1]. - -http://www.blupi.org -info@blupi.org - -[1]: http://www.epsitec.ch @@ -1,9 +1,12 @@ - # Planet Blupi +![blupi](blupi.png) + Please, do not use this repository directly for development but refer to the bundle located at <https://github.com/blupi-games/planetblupi-dev.git>. +See the [manpage](planetblupi.6.ronn) for a user README. + ## Original versions (1997) You can find "mostly" the original source code from previous versions (v1.7 and diff --git a/README.voices.md b/README.voices.md new file mode 100644 index 0000000..bba64d6 --- /dev/null +++ b/README.voices.md @@ -0,0 +1,38 @@ +# Blupi voices + +| File | Context | en | en_US | fr | de | it | pl (proposal) | +| -------- | ---------------------------------- | --------------------- | ----------------------- | ----------------------- | ------------------- | ----------------- | --------------------- | +| sound056 | Blupi can't do what is asked for | I can't do that | I can't do it | J'y arrive pas | **?** | **?** | Nie mogę tego zrobić | +| sound057 | " | Impossible | Impossible | Impossible | **?** | **?** | Niemożliwe | +| sound058 | " | Oh no | No way | Mais non | Nein nein | **?** | Nie ma mowy | +| sound002 | Blupi is selected | Yes? | Yes? | Oui ? | Ja? | Si? | Tak? | +| sound003 | " | Hi! | Hi! | Ohé | **?** | **?** | Cześć! | +| sound004 | " | Master? | Yes Master! | Maître ? | Meister? | **?** | Tak szefie? | +| sound059 | " | What's the news? | What do you want? | C'est à quel sujet ? | **?** | **?** | W czym mogę pomóc? | +| sound060 | " | Hello boss | Hey boss | A vos ordres ! | **?** | **?** | Cześć szefie! | +| sound061 | " | What's up? | What's up? | Qu'est-ce qu'y y'a ? | Was ist los? | **?** | Co tam? | +| sound062 | Blupi is selected when he is tired | Not again | Not again | Ouaip ! | **?** | **?** | Tylko nie to | +| sound063 | " | I beg your pardon? | Pardon me? | J'vous demande pardon ? | Was ist los?! | **?** | Przepraszam? | +| sound064 | " | Now what? | Now what? | Quoi encore ! | Jaa! | **?** | I co teraz? | +| sound065 | Blupi is selected too many times | I'm fed up | I'm fed up | Ca suffit maint'nant. | **?** | **?** | Mam już dosyć | +| sound066 | " | Leave me alone | Leave me alone | Laissez-moi tranquille. | **?** | **?** | Zostaw mnie w spokoju | +| sound067 | " | You're driving me mad | You're driving me crazy | J'vais m'fâcher ! | **?** | **?** | Denerwujesz mnie | +| sound005 | Blupi begins an action | It won't be long | Okay | D'accord ! | Okay | Okay | Okej | +| sound006 | " | Let's go! | Let's go! | J'y vais | **?** | **?** | Idziemy! | +| sound007 | " | Just a sec | Just a sec | Un instant | **?** | Un momento | Chwilunia | +| sound068 | " ... if multiple selection | You're the boss | You're the boss | C'est vous l'patron | In Ordnung | **?** | Ty jesteś tu szefem | +| sound069 | " ... " | Why not? | Why not? | C'est d'accord | Alles klar | **?** | Czemu nie? | +| sound070 | " ... " | Right! | Alright! | Entendu | **?** | **?** | Jasne! | +| sound008 | Blupi has finished an action | There you are | There you are | Et voilà | **?** | **?** | I gotowe | +| sound009 | " | Done that | All done | J'y suis | Fertig | **?** | Wszystko zrobione | +| sound010 | " | Finish! | Finished! | Terminé! | Ich bin fertig | Finito! | Już! | +| sound071 | " | It's done | It's done | C'est fait | **?** | **?** | Zrobione | +| sound072 | " | It's finished | It's finished | C'est fini | Fertig | **?** | Skończone | +| sound073 | " | I've finished | I've finished | J'ai fini | Ich bin fertig | **?** | Skończyłem | +| sound014 | Blupi takes his momentum to jump | Hop! | Ha! | Hop! | Hop! | Boal! | Hop! | +| sound017 | Blupi is burning | Aaaouch! | AAAAaaaaahh! | Aaaaaaaahhhh... | Aouaah-aouahh | Aaaaaaaahhhh... | Ałłłć! | +| sound018 | Blupi dies of exhaustion | Chiuu...[pssst...] | Haaa...[pssst...] | Pffff...[hennnn...] | **?** | Haaa...[pffff...] | Fiu...[pssst...] | +| sound019 | Blupi eats tomatoes | Yummy-yummy | Yumm-yumm | Miam-miam | Mjam-mjam | **?** | Mniam-mniam | +| sound027 | Blupi catches a virus | A-tissue! | A-chu! | A-tchou! | **?** | **?** | A-psik! | +| sound033 | Blupi picks flowers | La-la-lalalala... ♪♫ | Laa-lalala... ♪♫ | Lalalalala... ♪♫ | Laa-lalalalaa... ♪♫ | **?** | TROLOLOLOLO... ♪♫ | +| sound037 | Blupi is crushed by a bulldozer | Au-aaa...! | AAAAa! | Aie | Aouuuu...! | **?** | Ajjj! | diff --git a/blupi.png b/blupi.png Binary files differnew file mode 100644 index 0000000..0924020 --- /dev/null +++ b/blupi.png diff --git a/planetblupi.6.ronn b/planetblupi.6.ronn index cf237a6..d87626e 100644 --- a/planetblupi.6.ronn +++ b/planetblupi.6.ronn @@ -45,7 +45,7 @@ borders. Use the keyboard arrows instead. It's possible to start the game with `--fullscreen off` instead of editing the `config.json` file. -An other way is to start the game in legacy mode. With this mode, the game +Another way is to start the game in legacy mode. With this mode, the game runs with the original 640x480 resolution. Use `--legacy` on the command line. @@ -53,7 +53,7 @@ If the problem persists, maybe you should try to start the game with the software renderer. Edit the `config.json` file and add `"renderer": "software"` or start the game with `--renderer software`. -An other possibility exists. You can try to change the driver used by the +Another possibility exists. You can try to change the driver used by the accelerated renderer. By default it uses `"direct3d"`, you can change by `"opengl"` with `"driver": "opengl"` with the `config.json` file or `--driver opengl` by command line argument. @@ -104,11 +104,11 @@ useful operation on the selected spot. * <kbd>Pause</kbd>: Temporarily suspends the game (excepted with the hard difficulty). -When you switch to an other application, the game is automatically paused. +When you switch to another application, the game is automatically paused. ## MUSIC -The music is provided in *OGG* and *MIDI* formats. The *OGG* variant is prefered +The music is provided in *OGG* and *MIDI* formats. The *OGG* variant is preferred because the render is the same for all platforms. For purist fanboys, it's possible to enforce the *MIDI* variant by starting the game with the `--restore-midi` command line argument. Note that in this case, it's possible diff --git a/resources/data/de/stories.blp b/resources/data/de/stories.blp index 896dd6b..049ded8 100644 --- a/resources/data/de/stories.blp +++ b/resources/data/de/stories.blp @@ -47,7 +47,7 @@ schwieriger: 2| blau = voll in Form -Trick : +Trick: Wenn du das Sichtfenster verschieben willst, bringe entweder den Mauszeiger @@ -65,7 +65,7 @@ $3 -Trick : +Trick: Wenn Du besonders schnell sein willst, dann halte die Maus mit der rechten @@ -73,7 +73,7 @@ Hand und drücke auf die Pfeiltasten mit der linken Hand (oder umgekehrt). $4 -1|Ziel : +1|Ziel: 1| 1|Alle vier Blupis müssen die Häuser 1|auf den Inseln im Norden erreichen. @@ -83,12 +83,12 @@ $4 2|zu haben. $5 -1|Ziel : +1|Ziel: 1| 1|Lege zwei Tomatenhaufen auf die 1|gestreiften Quadrate. 1| -1|Gehe folgendermassen vor : +1|Gehe folgendermassen vor: 1| 1|1) Fälle einen Baum @@ -101,7 +101,7 @@ $5 2| die Tomaten nicht essen). $6 -1|Ziel : +1|Ziel: 1| 1|Alle Blupis müssen eines der Häuser 1|auf einer kleinen Insel erreichen. @@ -166,7 +166,7 @@ ist bedroht ! -2|Trick : +2|Trick: 2| 2|Wenn Blupi von einem Baum ver- 2|deckt ist, kannst Du die Bäume @@ -176,7 +176,7 @@ ist bedroht ! @1 -1|Lösung : +1|Lösung: 1| 1|Befehle einem Blupi Bäume zu 1|fällen, und befehle den zwei @@ -198,12 +198,12 @@ ist bedroht ! 2| essen und suche das Dorf. 2| 2| -2|Achtung : +2|Achtung: 2|Ein unvorhergesehenes Ereignis 2|wird eintreten. @2 -1|Hinweise : +1|Hinweise: 1| 1|Baue zwei Palisaden, um die 1|Spinne daran zu hindern, die @@ -213,20 +213,20 @@ ist bedroht ! 2|im Osten. #3 -1|Ziel : +1|Ziel: 1| 1|Verhindere, dass die zwei 1|Blupis verbrennen, indem Du 1|eine Mauer baust. -2|Achtung : +2|Achtung: 2| 2|Der Moosuntergrund brennt 2|sehr gut... @3 -1|Lösung : +1|Lösung: 1| 1|1) Bearbeite einen Felsen 1| @@ -241,13 +241,13 @@ ist bedroht ! #4 -1|Ziel : +1|Ziel: 1| 1|Alle vier Blupis müssen die 1|gestreiften Quadrate erreichen. @4 -1|Lösung : +1|Lösung: 1| 1|1) Fälle einen Baum. 1| @@ -262,13 +262,13 @@ ist bedroht ! 2|nun die Brücke überqueren. #5 -1|Die Falle : +1|Die Falle: 1|Achtung, der Boden wo die Blupis 1|gefangen sind ist brennbar, und 1|die Feuersbrunst kommt immer 1|näher. 1| -1|Ziel : +1|Ziel: 1|Alle Blupis müssen überleben, bis 1|das Feuer ausgegangen ist. @@ -277,7 +277,7 @@ ist bedroht ! 2|anstrengend, dass der Blupi 2|danach stirbt ! -Trick : +Trick: Wenn Du das Spiel zu langsam findest, kannst Du es schneller machen indem Du auf die Taste @@ -285,7 +285,7 @@ F6 drückst. Mit F5 wird das Spiel dann wieder langsamer. @5 -1|Hinweise : +1|Hinweise: 1| 1|Du musst vier Mauern auf den 1|grauen Platten bauen. Dazu @@ -299,7 +299,7 @@ Spiel dann wieder langsamer. 2|ausgegangen ist. #6 -1|Ziel : +1|Ziel: 1| 1|Beschütze das Lager so schnell 1|wie möglich mit vier Wachtürmen. @@ -308,14 +308,14 @@ Spiel dann wieder langsamer. 1|Quadrate im Osten erreichen. -2|Trick : +2|Trick: 2|Du kannst mehrere Blupis auf 2|einmal auswählen, indem Du die 2|Umschalt Taste drückst, während 2|Du auf die Blupis klickst. @6 -1|Lösung : +1|Lösung: 1| 1|Befehle vier Blupis Felsen zu 1|bearbeiten (bei kleine Felsen @@ -333,7 +333,7 @@ Spiel dann wieder langsamer. 2|Quadrate im Osten erreichen. #7 -1|Ziel : +1|Ziel: 1| 1|Die vier Blupis müssen die 1|gestreiften Quadrate erreichen: @@ -343,13 +343,13 @@ Spiel dann wieder langsamer. -2|Achtung : +2|Achtung: 2| 2|Du kannst hier leider kein 2|Gartenhäuschen bauen. @7 -1|Lösung : +1|Lösung: 1| 1|Befehle einem der Blupis die 1|Tomaten zu nehmen, um diese @@ -367,7 +367,7 @@ Spiel dann wieder langsamer. 2|genügend Kraft um zu gehen. #8 -Ziel : +Ziel: 1|Vermeide die Ansteckung von 1|einem oder zwei Blupis, und finde @@ -378,12 +378,12 @@ Ziel : 1|Haus gelangen. -2|Hinweis : +2|Hinweis: 2| 2|Baue ein Labor... @8 -1|Hinweise : +1|Hinweise: 1| 1|Aus Steinen kannst Du ein Labor 1|bauen. Im Labor kannst Du dann @@ -398,7 +398,7 @@ Ziel : #9 -1|Ziel : +1|Ziel: 1| 1|Finde heraus, wie Du die Eisbahn 1|überqueren kannst. @@ -410,7 +410,7 @@ Ziel : 2|Kraft ! @9 -1|Hinweise : +1|Hinweise: 1| 1|Baue zwei Wachtürme, um die 1|Spinnen abzuhalten. @@ -425,7 +425,7 @@ Ziel : 2|der Eisbahn verspeisen. #10 -1|Ziel : +1|Ziel: 1| 1|Erreiche die Insel im Westen und 1|sprenge die Palisade. @@ -434,7 +434,7 @@ Ziel : 2|gestreiften Quadrate. @10 -1|Hinweise : +1|Hinweise: 1| 1|Baue eine Brücke zu den vier 1|gefangenen Blupis. Bearbeite @@ -448,14 +448,14 @@ Ziel : #11 -1|Ziel : +1|Ziel: 1| 1|Erreiche die Häuser im Norden. 1|Pass aber auf, denn sie sind 1|sehr gut bewacht. @11 -1|Hinweise : +1|Hinweise: 1| 1|Baue eine Brücke zu der Insel 1|im Nordwesten, und fabriziere @@ -468,7 +468,7 @@ Ziel : #12 -1|Ziel : +1|Ziel: 1| 1|Drei Blupis müssen zu dem ver- 1|lassenen Blupi auf der Insel @@ -476,7 +476,7 @@ Ziel : 1| @12 -1|Hinweise : +1|Hinweise: 1| 1|Baue ein Gartenhäuschen und 1|pflanze Tomaten an. @@ -490,7 +490,7 @@ Ziel : #13 -1|Ziel : +1|Ziel: 1| 1|Entledige Dich der sechs Spinnen. 1|Die vier ersten sind einfache, aber @@ -499,14 +499,14 @@ Ziel : -2|Trick : +2|Trick: 2| 2|Finde heraus wie Du Gift im Labor 2|herstellen kannst. @13 -1|Hinweise : +1|Hinweise: 1| 1|Die vier ersten Spinnen kannst 1|Du fangen, indem Du mit Hilfe @@ -525,13 +525,13 @@ Ziel : #14 -1|Ziel : +1|Ziel: 1| 1|Blupi muss nur zu seinem Haus 1|zurückfinden. @14 -1|Hinweise : +1|Hinweise: 1| 1|Untersuche den Untergrund, da 1|wo sich die Kieselsteine @@ -551,7 +551,7 @@ Ziel : #15 -1|Ziel : +1|Ziel: 1| 1|Ein einziger Blupi muss das Haus 1|im Norden erreichen. @@ -561,7 +561,7 @@ Ziel : 2|vernichten. @15 -1|Hinweise : +1|Hinweise: 1| 1|Baue ein Gartenhäuschen und 1|zwei Wachtürme auf den grauen @@ -588,7 +588,7 @@ Ziel : @16 -1|Hinweise : +1|Hinweise: 1| 1|Im Nordosten befindet sich ein 1|Bergwerk. Baue eine Werkstatt @@ -606,7 +606,7 @@ Ziel : 2|und baue eine Beammaschine. #17 -1|Ziel : +1|Ziel: 1| 1|Alle fünf Blupis müssen ein 1|Haus erreichen. @@ -615,7 +615,7 @@ Ziel : 2|sich hinter dem feindlichen Lager. -Trick : +Trick: Du kannst mehrere Blupis auf einmal auswählen, indem Du die @@ -652,7 +652,7 @@ Du auf die Blupis klickst. 2|finden. @18 -1|Hinweise : +1|Hinweise: 1| 1|Baue ein Boot am Ufer des Sees 1|im Westen und lande auf der @@ -672,7 +672,7 @@ Du auf die Blupis klickst. @19 -1|Hinweise : +1|Hinweise: 1| 1|Baue Eisen ab und baue eine 1|Rüstung. Die Rüstung schützt @@ -694,13 +694,13 @@ Du auf die Blupis klickst. 2|Planierraupen in die Luft sprengen #20 -1|Ziel : +1|Ziel: 1| 1|Zerstöre alle feindliche Gebäude. 1| @20 -1|Hinweise : +1|Hinweise: 1| 1|Produziere ein Maximum an 1|Dynamit, Fallen, usw. und @@ -717,7 +717,7 @@ Du auf die Blupis klickst. 2|Haus wiederfinden. @21 -1|Hinweise : +1|Hinweise: 1| 1|Lege das Dynamit in die Nähe 1|des Durchgangs durch die Felsen. @@ -736,7 +736,7 @@ Du auf die Blupis klickst. 2|ganz im Osten zu zerstören. #22 -1|Ziel : +1|Ziel: 1| 1|1) Baue Boote. 1| @@ -746,7 +746,7 @@ Du auf die Blupis klickst. 2| Feindeinrichtungen. @22 -1|Hinweise : +1|Hinweise: 1| 1|Auf der Insel im Nordwesten gibt 1|es Eisenvorkommen. @@ -766,7 +766,7 @@ Du auf die Blupis klickst. @23 -1|Hinweise : +1|Hinweise: 1| 1|Der isolierte Blupi muss sich 1|vom Roboter entfernen und zum @@ -789,12 +789,12 @@ Du auf die Blupis klickst. 1| 1| 2| -2|Ziel : +2|Ziel: 2| 2|Zerstöre alle Feinde. @24 -1|Hinweise : +1|Hinweise: 1| 1|Lauf schnell nach rechts und 1|baue ein Boot. @@ -812,7 +812,7 @@ Du auf die Blupis klickst. 1|Blupi die Existenz eines 1|geheimnisvollen Elements, 1|das von dem Roboter mitge- -1|bracht worden ist : +1|bracht worden ist: 1| 1| das Platinium 1| @@ -821,14 +821,14 @@ Du auf die Blupis klickst. 1|logischen Fortschritt. -2|Ziel : +2|Ziel: 2| 2|Lege das Platinium auf die 2|gestreiften Quadrate. Es 2|befindet sich neben der Rakete. @25 -1|Hinweise : +1|Hinweise: 1| 1|Neutralisiere die beiden Planier- 1|raupen mit Klebefallen. @@ -850,13 +850,13 @@ Du auf die Blupis klickst. 1|Weise. -2|Ziel : +2|Ziel: 2| 2|Hilf Blupi sein Haus 2|wiederzufinden. @26 -1|Hinweise : +1|Hinweise: 1| 1|Mit dem Platiniumwürfel kannst 1|Du in der Werkstatt einen @@ -872,21 +872,21 @@ Du auf die Blupis klickst. 2|die Eisbahn. #27 -1|Situation : +1|Situation: 1| 1|Der Roboter besitzt die Unver- 1|schämtheit, seine Basis direkt 1|neben Blupis Dorf zu bauen. -2|Ziel : +2|Ziel: 2| 2|Erreiche das Feindliche Lager 2|und sprenge alles in 2|die Luft. @27 -1|Hinweise : +1|Hinweise: 1| 1|Baue so schnell wie möglich 1|eine Beammaschine, mit der Du @@ -902,26 +902,26 @@ Du auf die Blupis klickst. 2| 2|Du kannst das feindliche Lager 2|im Norden auf zwei verschiedene -2|Weisen erreichen : +2|Weisen erreichen: 2| 2|1) mit Booten 2|2) mit einer Brücke #28 -1|Situation : +1|Situation: 1| 1|Blupi hat versehentlich eine 1|Mauer rund um sein Haus gebaut. -2|Ziel : +2|Ziel: 2| 2|Blupi muss (nur ?) in sein 2|Haus gelangen. @28 -1|Hinweise : +1|Hinweise: 1| 1|Auf der kleinen Insel im Norden 1|gibt es Eier. @@ -935,14 +935,14 @@ Du auf die Blupis klickst. #29 -1|Situation : +1|Situation: 1| 1|Blupis Lebensraum wird mehr und 1|mehr durch den Roboter und seine 1|Schergen bedroht. -2|Ziel : +2|Ziel: 2| 2|Blupi muss zuerst ein gut 2|befestigtes Dorf bauen, um @@ -950,7 +950,7 @@ Du auf die Blupis klickst. 2|und alle Feinde zu vernichten. @29 -1|Hinweise : +1|Hinweise: 1| 1|Beschütze das Dorf mit Wach- 1|türmen. @@ -968,7 +968,7 @@ Du auf die Blupis klickst. 2|Rüstungen herstellen. #30 -1|Situation : +1|Situation: 1| 1|Der Krieg hat nun lange genug 1|gedauert. Blupi hat mit dem @@ -981,7 +981,7 @@ Du auf die Blupis klickst. 1|immer zu verlassen. -2|Ziel : +2|Ziel: 2| 2|Bereite den Weg vor, so dass der 2|Roboter seine Rakete erreichen. @@ -991,7 +991,7 @@ Du auf die Blupis klickst. 2|fertig ist. @30 -1|Hinweise : +1|Hinweise: 1| 1|Die Rakete befindet sich im 1|Südosten. diff --git a/resources/data/en/stories.blp b/resources/data/en/stories.blp index 3d1e2a7..4f96ebc 100644 --- a/resources/data/en/stories.blp +++ b/resources/data/en/stories.blp @@ -1,5 +1,5 @@ $1 -1|Goal : +1|Goal: 1| 1|Each Blupi must enter a house. To 1|do so, always use the left button of @@ -29,7 +29,7 @@ $1 $2 Here is a second exercise a bit more -complicated : +complicated: 1|Transport both piles of planks on 1|the striped paving stones on @@ -47,7 +47,7 @@ complicated : -Clue : +Clue: To scroll your screen, you may draw your mouse to the side of the screen or use the keyboard @@ -65,14 +65,14 @@ $3 -Clue : +Clue: It is more efficient to use the mouse in one hand and use the other hand for the keyboard arrows. $4 -1|Goal : +1|Goal: 1| 1|The four Blupis must reach the 1|houses on the northern islands. @@ -81,7 +81,7 @@ $4 2|enough strength to jump. $5 -1|Goal : +1|Goal: 1| 1|Drop two batches of tomatoes 1|on the striped paving stones. @@ -93,7 +93,7 @@ $5 2|stones (do not eat them). $6 -1|Goal : +1|Goal: 1| 1|Each Blupi must reach a house on 1|a small island. @@ -138,10 +138,10 @@ The spaceship crash has set fire to the forest. Blupi' village is now threatened. -1|Goal : +1|Goal: 1| 1|Prevent the village from burning. -1|To do so, there is only one way : +1|To do so, there is only one way: 1|Cut some trees down on the left. @@ -149,7 +149,7 @@ now threatened. -2|Clue : +2|Clue: 2| 2|If a Blupi is hidden by trees, 2|press space bar. Doing so will @@ -157,7 +157,7 @@ now threatened. 2|transparent. @1 -1|Solution : +1|Solution: 1| 1|Order the Blupi on the left to 1|cut several trees down. The @@ -165,7 +165,7 @@ now threatened. 1|the planks away. #2 -1|Situation : +1|Situation: 1| 1|Blupi is far away from his village 1|and lost. He must organize himself @@ -182,14 +182,14 @@ now threatened. 2| -2|Watch out : +2|Watch out: 2| 2|Something unusual is going to 2|happen. @2 -1|Clues : +1|Clues: 1| 1|First of, all you must build 1|two palisades in the north @@ -203,7 +203,7 @@ now threatened. #3 -1|Goal : +1|Goal: 1| 1|Prevent the four lost Blupis from 1|burning. @@ -213,13 +213,13 @@ now threatened. -2|Watch out : +2|Watch out: 2| 2|The ground is made of moss 2|which burns very easily. @3 -1|Solution : +1|Solution: 1| 1|1) Carve a rock. 1| Smaller rocks are quicker to @@ -231,13 +231,13 @@ now threatened. 2|3) Wait for the fire to stop. #4 -1|Goal : +1|Goal: 1| 1|Make the four Blupis reach the 1|striped paving stones. @4 -1|Solution : +1|Solution: 1| 1|1) Cut a tree down 1| @@ -255,30 +255,30 @@ now threatened. 2|the striped paving stones. #5 -1|The trap : +1|The trap: 1|Careful, the ground where the 1|Blupis are prisoners can easily 1|burn and fire is approaching. 1| -1|Goal : +1|Goal: 1|Resist until the fire has 1|burnt out. -2|Watch out : +2|Watch out: 2|Building a wall is a very 2|exhausting job for Blupi. Once 2|finished, he will die ! -Clue : +Clue: If the game does not run fast enough for you, press key F6 to speed it up. F5 runs the game at it's normal speed. @5 -1|Clues : +1|Clues: 1| 1|You must build four walls on 1|the gray paving stones. You @@ -291,7 +291,7 @@ game at it's normal speed. 2|the fire comes and stops. #6 -1|Goal : +1|Goal: 1| 1|A danger is present: protect 1|the camp as fast as possible @@ -309,7 +309,7 @@ game at it's normal speed. -Clue : +Clue: You may select several Blupis at the same time by maintaining @@ -318,7 +318,7 @@ clicking on each Blupi. @6 -1|Solution : +1|Solution: 1| 1|You must ask four Blupis to 1|quickly carve a rock each. @@ -339,7 +339,7 @@ clicking on each Blupi. 2|south-east. #7 -1|Goal : +1|Goal: 1| 1|The four Blupis must reach 1|the striped paving stones. @@ -350,13 +350,13 @@ clicking on each Blupi. -2|Watch out : +2|Watch out: 2| 2|The ground is inappropriate 2|for building a garden shed. @7 -1|Solution : +1|Solution: 1| 1|Ask a Blupi to remove the 1|tomatoes so that the spiders @@ -372,7 +372,7 @@ clicking on each Blupi. 2|he can eat them. #8 -1|Goal : +1|Goal: 1| 1|Avoid one or two Blupis from 1|being contaminated and find a @@ -387,12 +387,12 @@ clicking on each Blupi. -2|Clue : +2|Clue: 2| 2|Construct a laboratory. @8 -1|Clues : +1|Clues: 1| 1|A laboratory must be made of 1|stones. It will enable you to @@ -407,7 +407,7 @@ clicking on each Blupi. 2|The houses are in the south-east. #9 -1|Goal : +1|Goal: 1| 1|Find a way to cross the ice rink. 1| @@ -417,14 +417,14 @@ clicking on each Blupi. -2|Note : +2|Note: 2| 2|Blupi can walk on ice. However 2|the ice being slippery, he will 2|loose a lot of strength. @9 -1|Clues : +1|Clues: 1| 1|Two towers will have to be built 1|to protect the Blupis from the @@ -440,7 +440,7 @@ clicking on each Blupi. 2|tomatoes before he crosses. #10 -1|Goal : +1|Goal: 1| 1|Reach the island in the 1|north-east and blow the @@ -451,7 +451,7 @@ clicking on each Blupi. 2|striped paving stones. @10 -1|Clues : +1|Clues: 1| 1|Build a bridge in the direction of 1|the four prisoners. This enables @@ -473,14 +473,14 @@ clicking on each Blupi. 2|protect them from the explosion. #11 -1|Goal : +1|Goal: 1| 1|Reach the houses in the 1|north-east. Be careful, 1|they are well guarded. @11 -1|Clues : +1|Clues: 1| 1|Build a bridge towards the 1|north-west island and then @@ -497,14 +497,14 @@ clicking on each Blupi. 2|bulldozers. #12 -1|Goal : +1|Goal: 1| 1|Three Blupis must join the 1|isolated Blupi on an island 1|in the north-west. @12 -1|Clues : +1|Clues: 1| 1|Build a garden shed and grow 1|tomatoes. @@ -520,7 +520,7 @@ clicking on each Blupi. 2|hides two viruses. #13 -1|Goal : +1|Goal: 1| 1|Get rid of the six spiders. 1| @@ -533,13 +533,13 @@ clicking on each Blupi. -2|Clue : +2|Clue: 2| 2|Find out how to produce poison 2|in the laboratory. @13 -1|Clues : +1|Clues: 1| 1|The first four spiders will be 1|caught with traps made from @@ -558,13 +558,13 @@ clicking on each Blupi. 2|the tomatoes to the laboratory. #14 -1|Goal : +1|Goal: 1| 1|Blupi must simply go home. 1| @14 -1|Clues : +1|Clues: 1| 1|Prospect for iron under the 1|small pebbles. Drop the planks @@ -586,7 +586,7 @@ clicking on each Blupi. 2|into the jeep and buzz off. #15 -1|Goal : +1|Goal: 1| 1|Only one Blupi must reach 1|the house in the north-east. @@ -596,7 +596,7 @@ clicking on each Blupi. 2|installations. @15 -1|Clues : +1|Clues: 1| 1|Build a garden shed and two 1|protection towers on the gray @@ -619,7 +619,7 @@ clicking on each Blupi. 2|east to destroy the enemy camp. #16 -1|Situation : +1|Situation: 1| 1|Blupi is lost in an arid part of 1|his planet with no trees. @@ -627,13 +627,13 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|The two Blupis must go back 2|home to their village. @16 -1|Clues : +1|Clues: 1| 1|Find the mine in the north-east, 1|carve a rock to build a @@ -649,7 +649,7 @@ clicking on each Blupi. 2|tree and make a teleporter. #17 -1|Goal : +1|Goal: 1| 1|The five Blupis must reach 1|a house. @@ -668,7 +668,7 @@ clicking on each Blupi. -Clue : +Clue: You may select several Blupis at the same time by maintaining @@ -676,7 +676,7 @@ the Shift key pressed while clicking on each Blupi. @17 -1|Clues : +1|Clues: 1| 1|A Blupi can now go to the house 1|on the western side of the island. @@ -694,7 +694,7 @@ clicking on each Blupi. 2|witha time bomb. #18 -1|Situation : +1|Situation: 1| 1|While Blupi was collecting 1|flowers, he did not realize @@ -706,13 +706,13 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Blupi must flee and find a 2|way of getting home. @18 -1|Clues : +1|Clues: 1| 1|Find the water stretch to the 1|west. Make a boat. Be careful, @@ -728,7 +728,7 @@ clicking on each Blupi. 2|bulldozers. #19 -1|Situation : +1|Situation: 1| 1|Four bulldozers are threatening 1|Blupi's village. @@ -737,12 +737,12 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Destroy the bulldozers @19 -1|Clues : +1|Clues: 1| 1|Ask a Blupi to extract iron 1|and build an armour. It will @@ -763,13 +763,13 @@ clicking on each Blupi. 2|the bulldozers. #20 -1|Goal : +1|Goal: 1| 1|Destroy all enemy installations. 1| @20 -1|Clues : +1|Clues: 1| 1|Produce as much dynamite, 1|traps, etc. as possible before @@ -777,7 +777,7 @@ clicking on each Blupi. 1|protect the enemy camp. #21 -1|Situation : +1|Situation: 1| 1|Blupi has been captured by 1|a nasty robot. He is held @@ -787,13 +787,13 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Blupi must escape and find 2|his house. @21 -1|Clues : +1|Clues: 1| 1|Take the dynamite from the 1|northeast. Place it next to a @@ -813,7 +813,7 @@ clicking on each Blupi. 2|the blue barrier in the east. #22 -1|Goals : +1|Goals: 1| 1|1) Make boats. 1| @@ -822,7 +822,7 @@ clicking on each Blupi. 1|3) Destroy all enemy installations. @22 -1|Clues : +1|Clues: 1| 1|The island in the north-east 1|has a lot of iron. @@ -832,7 +832,7 @@ clicking on each Blupi. 2|dynamite and sticky traps. #23 -1|Situation : +1|Situation: 1| 1|Blupi is very curious: after 1|having observed the robot @@ -843,14 +843,14 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Bring in support and destroy 2|the enemy ! @23 -1|Clues : +1|Clues: 1| 1|The isolated Blupi must go 1|away from the robot and go @@ -871,19 +871,19 @@ clicking on each Blupi. 2|Blupi. #24 -1|Situation : +1|Situation: 1| 1|The region is full of enemies. 1| -2|Goal : +2|Goal: 2| 2|Destroy all enemies. @24 -1|Clues : +1|Clues: 1| 1|Go south-east to avoid the 1|fire and make a boat with @@ -899,7 +899,7 @@ clicking on each Blupi. 1|Blupi has been suspecting 1|that the robot brought 1|something strange on his -1|planet : +1|planet: 1| 1| Platinium.... 1| @@ -910,12 +910,12 @@ clicking on each Blupi. 2| -2|Goal : +2|Goal: 2|Bring a cube of platinum onto 2|the striped paving stones. @25 -1|Clues : +1|Clues: 1| 1|Destroy the two bulldozers with 1|the sticky traps. Make a boat in @@ -943,12 +943,12 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Help Blupi find his house. @26 -1|Clues : +1|Clues: 1| 1|Make a helping robot with the 1|cube of platinum in the factory @@ -966,7 +966,7 @@ clicking on each Blupi. 2|the first jump. #27 -1|Situation : +1|Situation: 1| 1|The robot has had the cheek 1|to install his village nearby @@ -975,13 +975,13 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Reach enemy camp and 2|destroy everything. @27 -1|Clues : +1|Clues: 1| 1|Make a teleporter as fast as 1|possible so that you reach @@ -1002,22 +1002,22 @@ clicking on each Blupi. 2|Up to you to choose ! #28 -1|Situation : +1|Situation: 1| 1|Whilst building his house, -1|Blupi made a mistake : +1|Blupi made a mistake: 1|he built a wall around it. -2|Goal : +2|Goal: 2| 2|Blupi must simply go home. @28 -1|Clues : +1|Clues: 1| 1|A small island in the north 1|has a lot of eggs. @@ -1038,7 +1038,7 @@ clicking on each Blupi. 2|protection wall. #29 -1|Situation : +1|Situation: 1| 1|The free space is being more 1|and more occupied by the robot @@ -1048,7 +1048,7 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Blupi must build his village 2|and work out good defense @@ -1058,7 +1058,7 @@ clicking on each Blupi. 2|eliminate all of his enemies. @29 -1|Clues : +1|Clues: 1| 1|He must build protection towers 1|on the north-west side, on the @@ -1078,11 +1078,11 @@ clicking on each Blupi. 2|and make bombs and armours. #30 -1|Situation : +1|Situation: 1| 1|This war can no longer last. 1|Blupi and the last robot have -1|come to an agreement : +1|come to an agreement: 1|He will help the robot back to 1|his rocket and, in return, 1|the robot will definitively @@ -1091,7 +1091,7 @@ clicking on each Blupi. -2|Goal : +2|Goal: 2| 2|Prepare the path to the rocket 2|so that the robot can leave @@ -1101,7 +1101,7 @@ clicking on each Blupi. 2|path is finished. @30 -1|Clues : +1|Clues: 1| 1|Carve a rock in the southeast. 1|Cut a tree down and make a diff --git a/resources/data/he/stories.blp b/resources/data/he/stories.blp new file mode 100644 index 0000000..49fdaa0 --- /dev/null +++ b/resources/data/he/stories.blp @@ -0,0 +1,1113 @@ +$1 +1|מטרה: +1| +1|כל בלופי חייב להכנס לבית. כדי +1|לעשות זאת, תמיד השתמשו בלחצן +1|השמאלי של העכבר + +2|)1 לחצו על בלופי +2| טבעת כחולה תופיעה מסביבו +2| ותעיד כי הוא הדמות הנבחרת. +2| +2|)2 לחצו על הבית שלו +2| +2|)3 לחצו על כפתור "המשך" +2| +2|)4 חזרו על הפעולה עבור +2| הבלופי השני. + + + + + + + + + + לאחר שקראתם את ההוראות הללו + לחצו על הקוביות שבתחתית. + +$2 +הנה עוד תרגיל, מעט יותר +מסובך: + +1|העבירו את שתי ערימות הקרשים +1|למרצפות המפוספסות שנמצאות +1|בצד ימין +1| +1|בלופי חייב לאכול עגבניות כדי +1|לאגור מספיק כח לביצוע +1|הפעולה הזאת. זיכרו שכאשר +2|הוא אוכל, הטבעת האדומה שעל +2|רגלו הופכת לכחולה. הדבר +2|מעיד על רמת האנרגיה שלו. +2| +2| אדום = עייף +2| כחול = בכושר מלא + + + +רמז: +לגלילת המסך, אתם יכולים +למשוך את העכבר לצידי המסך או +להשתמש בחיצי המקלדת. + + +$3 +1|מצאו את הביצים... +1| +1|על ידי הנחתם על המדגרה, +1|ארבעה בלופים חדשים +1|יבקעו. + + + + + + +רמז: +יהיה יותר יעיל להשתמש +בעכבר ביד אחד, ובחיצי +המקלדת ביד השניה. + + +$4 +1|מטרה: +1| +1|ארבעת הבלופים חייבים להגיע +1|לבתים באיים הצפוניים. + +2|כל בלופי חייב לאכול על מנת +2|שיהיה לו כח לקפוץ. + +$5 +1|מטרה: +1| +1|עליכם להפיל שתי קבוצות של עגבניות +1|על המרצפות המחוספסות. + +2|כדי להצליח, עליכם לכרות את העצים +2|לבנות צריף, לגדל עגבניות, +2|לשים שתי קבוצות של עגבניות +2|על המרצפות המחוספסות. +2|(לא לאכול אותם). + +$6 +1|מטרה: +1| +1|כל בלופי חייב להגיע לבית שנמצא על +1|אי קטן. +1|לצערינו, אין מספיק +1|אוכל עבור בלופי אחד. +2|אתם תצטרכו למצוא דרך +2|לייצר מספיק אוכל עבור +2|כולם. +2| +2|למזלנו, יש באי +2|הרבה עצים. + +#h1 +בלופי חי לו בשלווה באי שלו +כאשר מטאור מוזר נפל לו +באיזור צחיח. +רק מאוחר יותר, בלופי הבין +שהיבול שלו תמיד מושמד על ידי +עכביש ענקי. + +למרות שהמצב הגופני של בלופי +מצויין, עכשיו הוא מתעטש +והוא נדבק במחלה נדירה. + +#h2 +מה קורה? + +למעשה, המטאור המוזר הוא +ספינת החלל הנושאת בתוכה +רובוט מיוחד. +הרובוט הזה בונה בתי חרושת +שמייצרים אוייבים. + +בלופי חייב לנצל את כל המשאבים +הטבעיים כדי להיפטר +מהמפריעים. + +#1 +ספינת החלל שהתרסקה, הציתה +שריפה בכל היער. הכפר של +בלופי נמצא עכשיו בסכנה. + +1|מטרה: +1| +1|למנוע מהשריפה להגיע לכפר. +1|יש רק דרך אחת להצליח בפעולה: +1|לכרת כמה עצים משמאל. + + + + + + +2|רמז: +2| +2|אם בלופי חבוי בין העצים +2|לחץ על מקש הרווח, וכך יהפכו +2|העצים לשקופים באופן +2|זמני. + +@1 +1|פתרון: +1| +1|הורה לבלופי השמאלי לכרת +1|מספר עצים. שני הבלופים +1|הנותרים יעבירו את +1|הקרשים הרחק מהשריפה. + +#2 +1|המצב: +1| +1|בלופי נאבד, ונמצא רחוק מהכפר שלו +1|הוא חייב לארגן את עצמו לפני +1|שיתחיל לחפש את הכפר שלו. +1| +1|)1 לבנות צריף ולגדל +1| עגבניות + +2|)2 לבנות מדגרה כדי להשיג +2| הספקה. +2| +2|)3 להאכיל את ארבעת הבלופים +2| ולמצוא את הכפר. +2| + + +2|זהירות: +2| +2|משהו יוצא דופן עומד +2|להתרחש. + + +@2 +1|רמזים: +1| +1|בתחילה, עליכם לבנות +1|בצפון שתי גדרות +1|שימנעו מהעכביש להגיע. +1|רק אז תהיה אפשרות לבנות +2|בשלווה צריף, ולגדל +2|עגבניות. +2| +2|כדי להגיע לארבעת הבתים +2|אתם חייבים ללכת מזרחה. + + +#3 +1|מטרה: +1| +1|למנוע את הישרפותם של ארבעת +1|הבלופים. +1| +1|לסיים את החומה. + + + + +2|זהירות: +2| +2|הקרקע עשויה טחב, +2|חומר שנישרף בקלות. + +@3 +1|פתרון: +1| +1|)1 חיצבו בסלע. +1| סלעים קטנים, קל +1| יותר לחצוב. + +2|)2 בנו חומה בין שתי החומות +2| שכבר קיימות. +2| +2|)3 חכו שהשריפה תיפסק. + +#4 +1|מטרה: +1| +1|לעזור לארבעת הבלופים +1|להגיע למרצפות המפוספסות. + +@4 +1|פתרון: +1| +1|)1 כרתו עץ אחד. +1| +1|)2 העבר את הקרשים +1| לשפת המים. +1| +1|)3 בנה גשר לעבר שני +1| הבלופים העייפים. + +2|)4 חזרו על פעולה זו +2| שלוש פעמים. +2| +2|הבלופים העייפים יוכלו כעת +2|לחצות את הגשר ולהגיע +2|למרצפות המפוספסות. + +#5 +1|המלכודת: +1|זהירות, הקרקע שבה כלואים +1|הבלופים, יכולה בקלות להישרף, +1|והאש מתקרבת. +1| +1|מטרה: +1|התנגדו לאש עד +1|שתחלש. + +2|זהירות: +2|בניית חומה היא עבודה מאוד +2|מתישה עבור בלופי. ברגע +2|שיסיים, הוא ימות! + + + +רמז: +אם המשחק איטי מדי בשבילכם, +לחצו על מקש 6f כדי להגביר +את המהירות. מקש 5f מחזיר +את המשחק למהירות הנורמלית. + +@5 +1|רמזים: +1| +1|אתם חייבים לבנות ארבע חומות +1|על המרצפות האפורות. תצטרכו +1|לכרת שני עצים כדי לבנות +1|צריף ומדגרה. +1| + +2|כאשר החומות תהינה גמורות. +2|תצטרכו לחכות עד שהאש תגיע +2|ותיפסק. + +#6 +1|מטרה: +1| +1|קיימת סכנה: צריך להגן על המחנה +1|במהירות האפשרית בעזרת +1|ארבעה מגדלים. + +2|הגיעו אל המרצפות +2|המפוספסות שנמצאות +2|בדרום מזרח. + + + + + + + + + +רמז: + +ישנה אפשרות לבחור מספר בלופים +בו זמנית על ידי לחיצה רצופה על +המקש tfihs ועל כל אחד +מהבלופים. + + +@6 +1|פתרון: +1| +1|עליכם לתת לארבעת הבלופים +1|לחצוב בסלע במהירות. סלעים +1|קטנים קל יותר לחצוב +1| +1| +1|העבירו את ארבעת ערימות הסלעים +1|למרצפות האפורות, והתחילו +1|לבנות הגנה על המגדלים. +1| + +2|חכו להגעת הוירוס +2|ולמותו על ידי הזרם. +2| +2|ארבעת הבלופים האחרים +2|יכולים ללכת בשקט +2|למרצפות המפוספסות +2|שנמצאות בדרום מזרח. + +#7 +1|מטרה: +1| +1|ארבעת הבלופים צריכים להגיע +1|למרצפות המפוספסות. +1|יהיה עליכם לשמור על +1|על הבלופי הרחוק ביותר. + + + + +2|הזהרו: +2| +2|האדמה לא מתאימה כדי +2|לבנות עליה צריף. + +@7 +1|פתרון: +1| +1|בקש מבלופי להזיז את +1|העגבניות כדי שהעכבישים +1|לא יאכלו אותם. +1| +1|בעזרת בלופי אחר, קפוץ לאי +1|המזרחי, ובנה גשר שיחבר +1|את האי עם המרצפות המפוספסות. +1| + +2|קחו את העגבניות לעבר +2|הבלופי העייף, כדי +2|שיאכל אותם. + +#8 +1|מטרה: +1| +1|מנעו מבלופי אחד או שניים +1|להידבק במחלה, ומצאו תרופה עבור +1|אלו שכבר נידבקו. +1| +1|בסוף, כל בלופי חייב להכנס לתוך +1|ביתו. + + + + + + + +2|רמז: +2| +2|הרכיבו מעבדה. + +@8 +1|רמזים: +1| +1|על המעבדה להיות עשויה מסלעים. +1|הדבר יאפשר לכם להפוך את הפרחים +1|הצהובים לתרופה עבור +1|הבלופים החולים. +1| + +2|עליכם לבנות גשר כדי +2|להביא את התרופה לבלופים +2|החולים. +2| +2|הבתים נמצאים בדרום מזרח. + +#9 +1|מטרה: +1| +1|מצאו את הדרך לחצות את +1|רחבת הקרח. +1|ולהגיע אל המרצפות המפוספסות. + + + + + + +2|הערה: +2| +2|בלופי יכול ללכת על הקרח, אבל +2|הקרח מאוד חלק, ובלופי יאבד +2|הרבה מכוחו. +@9 +1|רמזים: +1| +1|צריך לבנות שני מגדלים כדי +1|להגן על הבלופים מפני העכבישים. +1| +1| +1|תצטרכו לבנות צריף ומדגרה כדי +1|שהביצים יוכלו לבקוע. +1| + +2|בלופי מאבד הרבה כח כאשר +2|הוא חוצה את רחבת הקרח. לכן, +2|צריך לתת לו עגבניות לפני +2|שהוא חוצה את הרחבה. + +#10 +1|מטרה: +1| +1|להגיע אל האי שנמצא בצפון +1|מזרח, ושם לפוצץ את הגדר. +1| + +2|כל מה שצריך לעשות עכשיו זה +2|להגיע עם ארבעת הבלופים +2|על המרצפות המפוספסות. + +@10 +1|רמזים: +1| +1|צריך לבנות גשר בכיוון ארבעת +1|האסירים הבלופים. הדבר יעזור לכם +1|לחצוב בסלע, שאותו תיקח מאוחר +1|יותר כדי לבנות מעבדה. +1| +1| +1|הפרחים הכחולים נמצאים +1|בדרום מזרח. בזכות המעבדה +1|הם יהפכו לחומר נפץ. +1| + +2|היעזרו בחומר הנפץ כדי להרוס +2|את הגדר שלוכדת בתוכה את +2|ארבעת האסירים הבלופים. +2| +2|בתחילה יש צורך להוציא את +2|האסירים ובכך, להגן עליהם +2|מפני התפוצצות. + +#11 +1|מטרה: +1| +1|להגיע אל הבתים שבצפון +1|מזרח. הזהרו! הבתים הללו +1|מוגנים כהלכה. + +@11 +1|רמזים: +1| +1|צריך לבנות גשר לעבר האי +1|שנמצא בצפון מערב. ואז +1|להכין לפחות ארבע חבילות +1|של חומר נפץ. + +2|הורידו את חומר הנפץ בצפון, +2|באיזור של הדחפורים. +2| +2| +2|כל עוד חומר הנפץ אינו מוכן, +2|הימנעו מלהגיע לאיזור הצפון, +2|אחרת תתוקפו על ידי הדחפורים. +2| + +#12 +1|מטרה: +1| +1|שלושת הבלופים צריכים להצטרף +1|לבלופי המבודד שנמצא על האי +1|בכיוון צפון מערב. + +@12 +1|רמזים: +1| +1|צריך לבנות צריף ולגדל +1|עגבניות. +1| +1|יצירת חומר נפץ נעשית מפרחים +1|כחולים שאותם ניתן למצוא +1|בצפון מזרח. + +2|העבירו את חומר הנפץ אל האי +2|שממוקם במערב. +2| +2|היזהרו! בדרך מסתתרים +2|שני וירוסים. + +#13 +1|מטרה: +1| +1|להיפטר משישה עכבישים. +1| +1|ארבעת הראשונים יהיו קלים. +1|השניים הנותרים יהיו יותר +1|קשים. + + + + + + +2|רמז: +2| +2|מיצאו איך מכינים רעל +2|במעבדה. + +@13 +1|רמזים: +1| +1|ארבעת העכבישים הראשונים יתפסו +1|על ידי מלכודות שהוכנו מפרחים +1|ירוקים במעבדה. +1| +1| +1|את המלכודות צריך למקם קרוב +1|לעכבישים. + +2|שני האחרונים יורעלו מעגבניות +2|ששונו במעבדה. +2| +2| +2| +2|צריך לבנות גשר כדי להעביר את +2|העגבניות למעבדה. + +#14 +1|מטרה: +1| +1|בלופי פשוט צריך להגיע הביתה. +1| + +@14 +1|רמז: +1| +1|חפשו ברזל באזור האבנים הקטנות +1|הורידו את הקרשים על הדגל שתמצאו +1|ובנו מכרה. +1| +1|חיצבו בסלע כדי לבנות בית מלאכה. +1|שם תוכלו להשתמש בברזל. +1| + +2|קחו את הפצצה, קיפצו אל תוך הג'יפ +2|וסעו מזרחה. הג'יפ יגן עליכם +2|מהדחפורים. +2| +2| +2|כאשר תשיגו את הגדר, תהיו חייבים +2|לעזוב את הג'יפ במהירות, להוריד +2|את פצצת הזמן, להפעיל אותה, +2|לחזור אל הג'יפ ולהתרחק מהפצצה. +2| + +#15 +1|מטרה: +1| +1|על בלופי אחד בלבד להגיע +1|אל הבית שבצפון מזרחה. + +2|כדי לפעול כך, עליכם להרוס +2|את מתקני האוייב. +2| + +@15 +1|רמזים: +1| +1|צריך לבנות צריף ושני מגדלי +1|שמירה על המרצפות האפורות. +1| +1| +1|צריך לבנות גשר כדי לחבר את האי +1|במזרח. בחרו סוג אחר של פרחים +1|והביאו אותם בחזרה למחנה. +1| + +2|צריך לבנות מעבדה, צרו חומרי נפץ +2|ומלכודות דביקות. הגנת המחנה +2|מתבצעת על ידי הנחת מלכודות +2|דביקות בתוך המחנה, והנחת חומרי +2|נפץ מחוצה לו. +2| +2|כאשר יהיו לכם מספיק חומרי נפץ +2|ומלכודות, שילחו בלופי אחד +2|לכיוון צפון מזרחה כדי להרוס +2|מחנה האוייב. + +#16 +1|המצב: +1| +1|בלופי אבד באיזור צחיח +1|ללא עצים. + + + + +2|מטרה: +2| +2|שני הבלופים חייבים לחזור +2|הביתה לכפר שלהם. + +@16 +1|רמזים: +1| +1|מיצאו את המכרה שבצפון מערב. +1|חיצבו בסלע כדי לבנות בית - +1|מלאכה, הכינו פצצת זמן, שני +1|ג'יפים וחפשו את מחנה האוייב +1|בדרום מערב. + +2|פוצצו את המחסומים שמגנים +2|על מחנה האוייב. נסו לפוצץ +2|גם את הדחפורים. +2| +2|לכו דרומה, חפשו עץ +2|ובנו ממנו משגר. + +#17 +1|מטרה: +1| +1|חמשת הבלופים חייבים +1|להגיע הביתה. + +2|זהירות! אחד מהבתים נמצא +2|מאחורי מחנה האוייב. + + + + + + + + + + + + +רמז: + +ישנה אפשרות לבחור מספר בלופים +בו זמנית על ידי לחיצה רצופה על +המקש tfihs ועל כל אחד +מהבלופים. + +@17 +1|רמזים: +1| +1|בלופי יכול עכשיו ללכת לבית שנמצא +1|בצד המערבי של האי. +1|הארבעה האחרים חייבים לעזוב +1|במהירות בגלל הדחפורים. +1|הבלופים חייבים ללכת צפון מזרחה. + +2|בהמשך, בצפון מזרח, אתם תמצאו +2|מחנה שמוקף בחומות. +2| +2|מצפון לכפר יש הרבה +2|ברזל. +2| +2|הכינו סירה, ושוטו איתה לצפון מזרח +2|עם פצצת זמן. + +#18 +1|המצב: +1| +1|בזמן שבלופי אסף פרחים +1|הוא לא תאר לעצמו שהוא +1|נמצא רחוק מהבית שלו. +1|עכשיו הוא אבוד באיזור +1|מלא באויבים. + + + + + +2|מטרה: +2| +2|בלופי חייב להימלט +2|ולמצוא את דרכו הביתה. + +@18 +1|רמזים: +1| +|1מצאו את את פלג המים במערב. +1|בנו סירה. היזהרו, +1|הרבה וירוסים מסתובבים +1|בסביבה. + +|2בעזרת הסירה, תוכלו לעבור +2|את החומה ולרדת מהסירה +2|בגדת הנהר. +2| +2|הבית כבר לא רחוק עכשיו. +2|היזהרו! אתם חייבים להימנע +2|ממפגש עם הדחפורים. + +#19 +1|המצב: +1| +1|ארבעה דחפורים מאיימים +1|על הכפר של בלופי. + + + + + +2|מטרה: +2| +2|להשמיד את הדחפורים. + +@19 +1|רמזים: +1| +1|בקשו מבלופי לחלץ ברזל, +1|ולהכין ממנו מגן. זה +1|יגן עליו מהאש. +1| +1|לכו מזרחה ובנו סירה. עלו על +1|הסירה וחפשו אי שעליו יש עץ. +1|כירתו את העץ ושימו אותו על +1|אי גדול יותר. הכינו משגר. +2|המשגר יביא אתכם לסדנת נשק. +2| +2| +2| +2|שימו קצת חומר נפץ ליד +2|החומה ופוצצו אותה. +2|בשאר חומרי הנפץ אתם +2|יכולים להשמיד את +2|הדחפורים. + +#20 +1|מטרה: +1| +1|השמדת מיתקני האוייב. +1| + +@20 +1|רמזים: +1| +1|יצרו כמה שיותר חומר נפץ +1|ומלכודות לפני שאתם מפוצצים +1|את המחסומים שמגינים על מחנה +1|האוייב. + +#21 +1|המצב: +1| +1|בלופי נלכד על ידי רובוט. +1|הוא מוחזק כאסיר בתחנה +1|של הרובוט במחנה. +1| + + + + +2|מטרה: +2| +2|בלופי חייב לברוח ולמצוא +2|את ביתו. +@21 +1|רמזים: +1| +1|קחו את חומר הנפץ מצפון מזרח. +1|מקמו אותו בסמוך למחסום הכחול, +1|מול הרווח בין הסלעים. הדחפורים +1|יגיעו, ויגרמו לחומר הנפץ להתפוצץ. +1|ההתפוצצות תשמיד את המחסום. +1| + +2|ברחו למזרח עד שתגיעו לנהר. +2|הכינו לכם סירה בעזרת הקרשים. +2|אתם תיזדקקו לערימת הקרשים +2|השניה כדי לבנות סירה מאוחר יותר. +2|אך לפני כן, עליכם לתפוס "מחשמל" +|2בעזרת המלכודות הדביקות, וליצור +2|פצצת זמן שתשמיד את המחסום +2|הכחול שנמצא במזרח. +2| + +#22 +1|מטרות: +1| +1|)1 הכנת סירות. +1| +1|)2 חקירת כל האיים. +1| +1|)3 השמדת כל מתקני האוייב. + +@22 +1|רמזים: +1| +1|באי שבצפון מזרח +1|יש הרבה ברזל. + +2|באי שבמזרח יש את כל +2|הדרוש כדי להכין חומר +2|נפץ ומלכודות דביקות. + +#23 +1|המצב: +1| +1|בלופי מאוד סקרן: לאחר +1|שהתבונן ברובוט זמן רב +1|בלופי הבין שגם הוא +1|אבוד בעצמו. + + + + + +2|מטרה: +2| +2|להכניס הספקה ולהשמיד +2|את האוייב. + + +@23 +1|רמזים: +1| +1|הבלופי המבודד חייב להתרחק +1|מהרובוט וללכת לכיוון מזרח. +1|בלופי חייב לחצוב בסלע, כך +1|שיוכל להגיע אל העצים, ושם +1|להכין משגר. +1| + +2|עם קבוצה נוספת של בלופים, +2|אתם צריכים להכין סירה, +2|למצוא את הפצצה בצפון מזרח, +2|ולפוצץ את המחסום בדרום. +2|פעולות אלו יאפשרו לכם +2|להביא את העצים אל האי +2|העזוב כדי להכין משגר. +2|זה יעזור לכם להצטרף ולעזור +2|לבלופי האבוד. +2| + +#24 +1|המצב: +1| +1|האיזור מלא באוייבים. +1| + + + +2|מטרה: +2| +2|השמדת כל האוייבים. + +@24 +1|רמזים: +1| +1|לכו צפון מזרחה כדי להימנע +1|ממגע עם האש, והכינו סירה +1|עם העץ האחרון שנשאר. +1| +1|במחנה אתם תמצאו +1|ברזל. +2|מצפון למחנה, תמצאו +2|ארבעה ביצים. + +#25 +1|בלופי חושד שהרובוט +1|הביא משהו מוזר לעולם +1|שלו: +1| +1| +1| פלטינה... +1| +1|הפלטינה, מונחת לצד הטיל. +2|תוכלו בעזרתה להשיג גישה +2|לטכנולוגיה של האוייב. +2| +2| + + +2|מטרה: +2|להביא קוביה של פלטינה +2|אל המרצפות המפוספסות. + +@25 +1|רמזים: +1| +1|צריך להרוס שני דחפורים בעזרת +1|מלכודות דביקות. להכין סירה +1|מצפון למחנה הראשון של האוייב, +1|ואז לעלות לסירה עם פצצת זמן +1|ולשוט מזרחה. +1| +1|חפשו נתיב בין סלעים אשר +1|נע דרומה. מחנה האוייב +2|נמצא רחוק במזרח. +2|שם תצטרכו לפוצץ את המחסום +2|כדי להגיע אל הפלטינה. +2| +2| +2| +2|החזירו את הפלטינה בחזרה +2|למחנה. + +#26 +1|קוביית הפלטינה תשיג עבורכם +1|גישה לטנולוגיה של האוייב. +1|השתמשו בה בצורה נכונה. + + + + + +2|מטרה: +2| +2|עיזרו לבלופי למצוא את ביתו. + +@26 +1|רמזים: +1| +1|הרכיבו מקובית הפלטינה רובוט +1|שיעזור לכם והכינו פצצת +1|זמן. +1| +1|קחו את הרובוט והפצצה. +1|הרובוט יכול לחצות את המחנה +1|המערבי של האוייב בלי שיבחינו +2|בו. פוצצו את המחסום שנמצא +2|בצפון, וקחו את העגבניות +2|כדי להאכיל את הבלופים +2|שנמצאים במחנה. +2| +2|הניחו את העגבניות +2|לפני הקפיצה הראשונה. + +#27 +1|המצב: +1| +1|לרובוט יש את החוצפה למקם +1|את הכפר שלו בסמוך לכפר +1|של הבלופים. + + + + +2|מטרה: +2| +2|להגיע אל מחנה האוייב +2|ולהשמיד הכל. + +@27 +1|רמזים: +1| +1|הכינו משגר במהירות האפשרית +1|כך שתוכלו להגיע אל האי +1|עם הביצים. +1|בנו שני מגדלי שמירה במקום +1|שנמצאות ערימות אבנים. +1|בנו גדר מצד שמאל, ומצד +1|ימין של כל מגדל שמירה. +1| + +2|עכשיו אתם יכולים להרגע! +2| +2|יש לכם שתי דרכים להגיע אל +2|מחנה האוייב שבצפון. +2|על ידי סירה או על ידי +2|בניית גשר. +2| +2|זה נתון לבחירתך! + +#28 +1|המצב: +1| +1|בזמן שבלופי בנה את ביתו +1|הוא עשה טעות: +1|הוא בנה חומה מסביב. + + + + + +2|מטרה: +2| +2|בלופי צריך פשוט להגיע הביתה. + +@28 +1|רמזים: +1| +1|באי קטן שנמצא בצפון +1|יש הרבה ביצים. +1| +1|עליכם לחצות את מחנה +1|האוייב במהירות כדי +1|להימנע ממגע עם הדחפורים +1|שמגיעים מהצפון ומהדרום, +1|כך שתוכלו לקטוף +2|פרחים כחולים. +2| +2|בלופי אחר יוכל לקחת אותם +2|ולייצר מהם חומר נפץ. +2| +2|הסלעים היחידים שתוכלו להשתמש +2|בהם, נמצאים מדרום למחנה האוייב, +2|ממש מחוץ לחומת ההגנה. +2| + +#29 +1|המצב: +1| +1|השטח הפנוי נכבש אט אט +1|על ידי הרובוט +1|ועוזריו. + + + + + +2|מטרה: +2| +2|בלופי חייב לבנות את הכפר שלו +2|ולפתח טקטיקות הגנה +2|טובות. +2| +2|אז הוא יוכל לתקוף +2|ולחסל את כל אוייביו. + +@29 +1|רמזים: +1| +1|בלופי חייב לבנות מגדלי שמירה +1|בצד הצפון מערבי, בצד הצפון +1|מזרחי, ובצד הדרום מזרחי. +1|כל הסלעים נמצאים +1|בצפון מערב. +1| +1|אל תכרתו את העצים שנמצאים +1|ליד הגדר. הם יוכלו להיות מועילים +1|כנגד הפצצה הקפיצית. + +2|הפרחים הירוקים שבמערב +2|מאפשרים לכם לייצר מלכודות +2|דביקות כדי להגן על הכפר. +2| +2|חלצו ברזל מדרום מערב, והכינו +2|ממנו פצצות ומגינים. + +#30 +1|המצב: +1| +1|המלחמה הזאת לא יכולה להמשך. +1|בלופי והרובוט האחרון הגיעו +1|להסכמה: +1|בלופי יעזור לרובוט לחזור +1|לטיל שלו, ובתמורה הרובוט +1|יעזוב את העולם של בלופי +1|לתמיד! + + + + +2|מטרה: +2| +2|להכין את נתיב הדרך לטיל +2|כדי שהרובוט יוכל לעזוב את +2|הפלנטה. הרובוט כועס על כך +2|שהפסיד בקרב ולכן הוא מסרב +2|לעבור עד שנתיב הדרך +2|יהיה מוכן. + +@30 +1|רמזים: +1| +1|חיצבו בסלע שבדרום מזרח. +1|כירתו עץ, והכינו ממנו סירה. +1|בעזרת הסירה, חפשו אי בצפון +1|מזרח, חפשו שם ברזל, והקימו +1|שם מכרה ומפעל. +1|צריך לייצר פצצה שתאפשר לכם +2|לפוצץ את המחסומים שנמצאים +2|בסביבת הרובוט. +2| +2| +2|כל מה שצריך לעשות, זה לבנות גשר +2|כדי שהרובוט יוכל לחזור +2|אל הטיל שלו. diff --git a/resources/data/it/stories.blp b/resources/data/it/stories.blp index 887ae52..1209664 100644 --- a/resources/data/it/stories.blp +++ b/resources/data/it/stories.blp @@ -1,5 +1,5 @@ $1 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Ogni Blupi deve entrare in una casa. 1|Per fare ciò, utilizza il pulsante @@ -30,7 +30,7 @@ $1 $2 Ecco un altro esercizio un pochino più -difficile : +difficile: 1|E' sufficiente trasportare due cumuli 1|di legno sulle lastre tratteggiate @@ -41,14 +41,14 @@ difficile : 2|necessaria. Ti accorgerai che quando 2|mangia l'anello rosso ai suoi piedi 2|diventa blu. Questo anello indica il -2|suo livello d'energia : +2|suo livello d'energia: 2| 2| rosso = stanco 2| blu = in piena forma -Trucco : +Trucco: Per far scorrere la parte visibile puoi portare il mouse sul bordo dello schermo, oppure utilizzare i tasti freccia della @@ -65,14 +65,14 @@ $3 -Trucco : +Trucco: Potrai ottenere migliori risultati tenendo il mouse con la mano destra, e azionando i tasti freccia della tastiera con la mano sinistra ! $4 -1|Obbiettivo : +1|Obbiettivo: 1| 1|I quattro Blupi devono raggiungere 1|le case che si trovano su altre isole @@ -82,11 +82,11 @@ $4 2|la forza di saltare ! $5 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Deporre due lotti di pomodori sulle 1|lastre tratteggiate. Per fare ciò è -1|necessario : +1|necessario: 1| 1|1) Abbattere il boschetto. @@ -98,7 +98,7 @@ $5 2| lastre tratteggiate (senza mangiarli). $6 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Ogni Blupi deve raggiungere una 1|casa su una piccola isola. @@ -149,7 +149,7 @@ la foresta, in lontananza. Il villaggio di Blupi è in pericolo ! -1|Obbiettivo : +1|Obbiettivo: 1| 1|Impedire che le case del villaggio 1|brucino. Per fare ciò vi è un solo @@ -161,7 +161,7 @@ Il villaggio di Blupi è in pericolo ! -2|Trucco : +2|Trucco: 2| 2|Se un Blupi è nascosto tra gli 2|alberi, premi la barra spaziatrice @@ -169,7 +169,7 @@ Il villaggio di Blupi è in pericolo ! 2|alberi trasparenti. @1 -1|Soluzione : +1|Soluzione: 1| 1|Ordinare al Blupi di sinistra di 1|abbattere degli alberi poco più @@ -181,7 +181,7 @@ Il villaggio di Blupi è in pericolo ! 2|dal fuoco ! #2 -1|Situazione : +1|Situazione: 1| 1|Blupi si è perso in una radura 1|distante dal suo villaggio. Deve @@ -199,13 +199,13 @@ Il villaggio di Blupi è in pericolo ! 2| -2|Attenzione : +2|Attenzione: 2| 2|Qualche cosa di strano sta per 2|accadere ! @2 -1|Indizi : +1|Indizi: 1| 1|E' prima di tutto necessario 1|costruire due palizzate a nord, @@ -218,7 +218,7 @@ Il villaggio di Blupi è in pericolo ! 2|bisogna cercare in direzione est. #3 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Impedire che i quattro Blupi 1|smarriti nella foresta muoiano @@ -230,14 +230,14 @@ Il villaggio di Blupi è in pericolo ! -2|Attenzione : +2|Attenzione: 2| 2|Quando il terreno è costituito 2|da muschio, brucia 2|meravigliosamente bene ... @3 -1|Soluzione : +1|Soluzione: 1| 1|1) Spaccare una roccia. 1| Le rocce più piccole si spaccano @@ -250,13 +250,13 @@ Il villaggio di Blupi è in pericolo ! 2| spenga ... #4 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Consentire ai quattro Blupi di 1|raggiungere le lastre tratteggiate. @4 -1|Soluzione : +1|Soluzione: 1| 1|1) Abbattere un albero. 1| @@ -273,22 +273,22 @@ Il villaggio di Blupi è in pericolo ! 2|le lastre tratteggiate. #5 -1|La trappola : +1|La trappola: 1|Attenzione, il terreno dove sono 1|prigionieri i Blupi è molto 1|infiammabile e l'incendio avanza ... 1| -1|Obbiettivo : +1|Obbiettivo: 1|Resistere sino a che l'incendio non 1|è stato domato. -2|Attenzione : +2|Attenzione: 2|La costruzione di un muro è un 2|lavoro massacrante. E' inevitabile 2|che Blupi muoia una volta 2|concluso un muro ! -Trucco : +Trucco: Se il gioco si svolge troppo lentamente per i tuoi gusti, premi il tasto F6 per accelerarlo. @@ -296,7 +296,7 @@ Premendo il tasto F5 potrai ristabilire la velocità normale. @5 -1|Indizi : +1|Indizi: 1| 1|E' necessario costruire quattro 1|muri sulle lastre grigie. Per @@ -311,7 +311,7 @@ ristabilire la velocità normale. 2|sua estinzione ... #6 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Proteggi il più rapidamente 1|possibile il campo trincerato @@ -326,7 +326,7 @@ ristabilire la velocità normale. -Trucco : +Trucco: E' possibile selezionare diversi Blupi contemporaneamente mantenendo premuto il tasto @@ -334,7 +334,7 @@ Maiuscolo e cliccando al tempo stesso su ogni Blupi. @6 -1|Soluzione : +1|Soluzione: 1| 1|Bisogna chiedere in fretta ai 1|quattro Blupi di spaccare ognuno @@ -355,20 +355,20 @@ stesso su ogni Blupi. 2|tratteggiate a sud-est. #7 -1|Obbiettivo : +1|Obbiettivo: 1| 1|I quattro Blupi devono raggiungere 1|le lastre tratteggiate. 1|Sarà necessario prendersi cura del 1|povero Blupi più lontano ... -2|Attenzione : +2|Attenzione: 2| 2|Il terreno non consente di costruire 2|un capanno da giardino ! @7 -1|Soluzione : +1|Soluzione: 1| 1|Chiedere ad un Blupi di prendere 1|dei pomodori per salvarli dai @@ -383,7 +383,7 @@ stesso su ogni Blupi. 2|possa nutrire prima di spostarsi. #8 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Cerca di evitare che uno o due 1|Blupi vengano contaminati, poi @@ -395,12 +395,12 @@ stesso su ogni Blupi. -2|Indizio : +2|Indizio: 2| 2|Costruisci un laboratorio ... @8 -1|Indizi : +1|Indizi: 1| 1|E' necessario costruire un 1|laboratorio usando delle pietre. @@ -415,7 +415,7 @@ stesso su ogni Blupi. 2|Le case si trovano a sud-est ... #9 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Trova il modo per passare oltre 1|la pista di pattinaggio ... @@ -423,7 +423,7 @@ stesso su ogni Blupi. -2|Nota : +2|Nota: 2| 2|Blupi può camminare sul ghiaccio. 2|L'unico inconveniente è che Blupi @@ -431,7 +431,7 @@ stesso su ogni Blupi. 2|facendo perde molte forze ! @9 -1|Indizi : +1|Indizi: 1| 1|E' necessario costruire due torri 1|per proteggersi dai ragni. @@ -450,7 +450,7 @@ stesso su ogni Blupi. 2|prima di attraversarla ! #10 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Raggiungere l'isola a nord-est, 1|poi saltare la palizzata. @@ -460,7 +460,7 @@ stesso su ogni Blupi. 2|tratteggiate ... @10 -1|Indizi : +1|Indizi: 1| 1|E' necessario costruire un ponte in 1|direzione dei quattro prigionieri. @@ -482,14 +482,14 @@ stesso su ogni Blupi. 2|proteggerli dall'esplosione ... #11 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Raggiungere le case a nord-est. 1|Ma attenzione, sono ben 1|custodite ... @11 -1|Indizi : +1|Indizi: 1| 1|Costruisci un ponte verso l'isola 1|situata a nord-ovest, poi produci @@ -507,14 +507,14 @@ stesso su ogni Blupi. 2|bulldozer ... #12 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Tre Blupi devono raggiungere 1|il Blupi isolato su un'isola lontana 1|in direzione nord-ovest. @12 -1|Indizi : +1|Indizi: 1| 1|Costruisci un capanno da giardino 1|e coltiva pomodori. @@ -532,7 +532,7 @@ stesso su ogni Blupi. 2|pericolosi ... #13 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Sbarazzarsi dei sei ragni. 1| @@ -541,13 +541,13 @@ stesso su ogni Blupi. 1|ultimi due, dovrai ricorrere a dei 1|trucchi ... -2|Trucco : +2|Trucco: 2| 2|Trova il modo di produrre del 2|veleno nel laboratorio. @13 -1|Indizi : +1|Indizi: 1| 1|I primi quattro ragni vengono 1|catturati con delle trappole @@ -567,13 +567,13 @@ stesso su ogni Blupi. 2|al laboratorio. #14 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Blupi deve semplicemente tornare 1|nella sua casa ... @14 -1|Indizi : +1|Indizi: 1| 1|Sonda il terreno costituito da 1|piccoli sassi alla ricerca di ferro. @@ -596,7 +596,7 @@ stesso su ogni Blupi. 2|e allontanarti ... #15 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Un solo Blupi deve raggiungere 1|la casa situata a nord-est. @@ -606,7 +606,7 @@ stesso su ogni Blupi. 2|postazioni nemiche. @15 -1|Indizi : +1|Indizi: 1| 1|Costruisci un capanno da giardino 1|e due torri di protezione sulle @@ -629,19 +629,19 @@ stesso su ogni Blupi. 2|il campo nemico ... #16 -1|Situazione : +1|Situazione: 1| 1|Blupi si è smarrito in una regione 1|arida e priva di alberi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|I due Blupi devono rientrare 2|al villaggio nelle loro case ... @16 -1|Indizi : +1|Indizi: 1| 1|Trova la miniera di ferro a 1|nord-est poi taglia una roccia @@ -662,7 +662,7 @@ stesso su ogni Blupi. 2|teletrasporto ... #17 -1|Obbiettivo : +1|Obbiettivo: 1| 1|I cinque Blupi devono raggiungere 1|ognuno una casa. @@ -671,7 +671,7 @@ stesso su ogni Blupi. 2|dietro il campo nemico ! -Trucco : +Trucco: E' possibile selezionare diversi Blupi contemporaneamente mantenendo premuto il tasto @@ -679,7 +679,7 @@ Maiuscolo e cliccando al tempo stesso sui Blupi. @17 -1|Indizi : +1|Indizi: 1| 1|Un Blupi può immediatamente 1|raggiungere la casa sull'isola @@ -700,7 +700,7 @@ stesso sui Blupi. 2|scoppio ritardato ... #18 -1|Situazione : +1|Situazione: 1| 1|Mentre Blupi coglieva 1|tranquillamente dei fiori, @@ -713,13 +713,13 @@ stesso sui Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Blupi deve fuggire e trovare un 2|modo per tornare a casa sua. @18 -1|Indizi : +1|Indizi: 1| 1|Trova la distesa d'acqua che si 1|trova a ovest e costruisci @@ -738,18 +738,18 @@ stesso sui Blupi. 2|bulldozer ! #19 -1|Situazione : +1|Situazione: 1| 1|Quattro bulldozer terrorizzano 1|il villaggio di Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Eliminare i bulldozer ... @19 -1|Indizi : +1|Indizi: 1| 1|Chiedi a un Blupi di estrarre 1|del ferro e di costruire poi una @@ -772,13 +772,13 @@ stesso sui Blupi. 2|bulldozer ! #20 -1|Obbiettivo : +1|Obbiettivo: 1| 1|Distruggere tutte le postazioni 1|nemiche. @20 -1|Indizi : +1|Indizi: 1| 1|Produrre più dinamite possibile, 1|più trappole possibili, ecc ... @@ -786,7 +786,7 @@ stesso sui Blupi. 1|che circonda il campo nemico ... #21 -1|Situazione : +1|Situazione: 1| 1|Blupi è stato catturato dal 1|robot cattivo. @@ -795,13 +795,13 @@ stesso sui Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Blupi deve fuggire ... 2|e tornare a casa sua. @21 -1|Indizi : +1|Indizi: 1| 1|Prendi la dinamite a nord-est. 1|Posizionala in seguito contro una @@ -822,7 +822,7 @@ stesso sui Blupi. 2|la barriera blu a est. #22 -1|Obbiettivo : +1|Obbiettivo: 1| 1|1) Costruire delle barche. 1| @@ -832,7 +832,7 @@ stesso sui Blupi. 2| postazioni nemiche. @22 -1|Indizi : +1|Indizi: 1| 1|L'isola a nord-est contiene del 1|minerale di ferro. @@ -842,7 +842,7 @@ stesso sui Blupi. 2|dinamite e delle trappole collose. #23 -1|Situazione : +1|Situazione: 1| 1|Blupi è un gran curiosone: dopo 1|avere osservato il robot, per lungo @@ -850,13 +850,13 @@ stesso sui Blupi. 1|smarrito ... -2|Obbiettivo : +2|Obbiettivo: 2| 2|Far arrivare dei rinforzi poi 2|distruggere tutti i nemici ! @23 -1|Indizi : +1|Indizi: 1| 1|Il Blupi isolato deve allontanarsi 1|dal robot e andare verso ovest. @@ -876,18 +876,18 @@ stesso sui Blupi. 2|e aiutare il Blupi smarrito ... #24 -1|Situazione : +1|Situazione: 1| 1|La regione è infestata dai nemici. 1| -2|Obbiettivo : +2|Obbiettivo: 2| 2|Eliminare tutti i nemici ... @24 -1|Indizi : +1|Indizi: 1| 1|Fuggi verso sud-est per evitare 1|l'incendio, poi costruisci una barca @@ -904,7 +904,7 @@ stesso sui Blupi. 1|Da qualche tempo Blupi sospetta 1|dell'esistenza di uno strano 1|materiale portato sul suo -1|pianeta dal robot : +1|pianeta dal robot: 1| 1| il Platinium ... 1| @@ -914,13 +914,13 @@ stesso sui Blupi. 2|tecnologia nemica. 2| -2|Obbiettivo : +2|Obbiettivo: 2| 2|Riporta un cubo di Platinium 2|sulle lastre tratteggiate. @25 -1|Indizi : +1|Indizi: 1| 1|Elimina i due bulldozer con le 1|trappole collose. Costruisci una @@ -943,13 +943,13 @@ stesso sui Blupi. 1|l'accesso alla tecnologia nemica 1|se utilizzato correttamente. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Aiuta Blupi a ritrovare la sua 2|casa ... @26 -1|Indizi : +1|Indizi: 1| 1|Costruisci un robot-aiutante con 1|il cubo di Platinium in fabbrica. @@ -968,7 +968,7 @@ stesso sui Blupi. 2|del primo salto. #27 -1|Situazione : +1|Situazione: 1| 1|Con gran faccia tosta, il robot 1|ha posto la sua base proprio @@ -976,13 +976,13 @@ stesso sui Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Raggiungere il campo nemico 2|poi distruggere tutto ... @27 -1|Indizi : +1|Indizi: 1| 1|Costruisci il più rapidamente 1|che puoi un teletrasporto, al fine @@ -996,7 +996,7 @@ stesso sui Blupi. 2|sollievo ! 2| 2|Hai due possibilità per raggiungere -2|il campo nemico a nord : +2|il campo nemico a nord: 2| 2|1) delle barche 2|2) un ponte @@ -1004,7 +1004,7 @@ stesso sui Blupi. 2|A te la scelta ... #28 -1|Situazione : +1|Situazione: 1| 1|Blupi è un gran distratto. 1|Infatti ha costruito un muro @@ -1012,13 +1012,13 @@ stesso sui Blupi. 1|sbaglio ... -2|Obbiettivo : +2|Obbiettivo: 2| 2|Blupi deve semplicemente 2|rientrare a casa ... @28 -1|Indizi : +1|Indizi: 1| 1|In un'isoletta a nord si trovano 1|molte uova. @@ -1037,7 +1037,7 @@ stesso sui Blupi. 2|di cinta. #29 -1|Situazione : +1|Situazione: 1| 1|Lo spazio libero è sempre più 1|occupato dal robot e dai suoi @@ -1046,7 +1046,7 @@ stesso sui Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Blupi deve costruire il suo villaggio 2|prevedendo delle difese efficaci. @@ -1055,7 +1055,7 @@ stesso sui Blupi. 2|nemici ... @29 -1|Indizi : +1|Indizi: 1| 1|Costruire delle torri a nord-est, 1|a nord-ovest e a sud-est. @@ -1076,7 +1076,7 @@ stesso sui Blupi. 2|armature ... #30 -1|Situazione : +1|Situazione: 1| 1|Questa guerra non può più durare. 1|Un accordo è stato concluso con @@ -1089,7 +1089,7 @@ stesso sui Blupi. -2|Obbiettivo : +2|Obbiettivo: 2| 2|Preparare il cammino affinché il 2|robot possa raggiungere il suo @@ -1099,7 +1099,7 @@ stesso sui Blupi. 2|terminato ! @30 -1|Indizi : +1|Indizi: 1| 1|Spaccare della roccia a sud-est. 1|Abbattere un albero e costruire diff --git a/resources/data/pl/stories.blp b/resources/data/pl/stories.blp index e69574f..d2ac7ba 100644 --- a/resources/data/pl/stories.blp +++ b/resources/data/pl/stories.blp @@ -194,7 +194,8 @@ Blupich jest zagrożona. 1| 1|Na początek musisz zbudować 1|dwie palisady na północy -1|by powstrzymać pająka przed przyjściem. +1|by powstrzymać pająka przed +1|przyjściem. 1|Dopiero wtedy wybuduj 2|szopkę ogrodową i sadź 2|pomidory w spokoju. @@ -365,7 +366,8 @@ każdego Blupiego. 1|Jeden z Blupich musi 1|przeskoczyć na wschodnią 1|wyspę i wybudować most -1|prowadzący do nawierzchni docelowej. +1|prowadzący do nawierzchni +1|docelowej. 2|Przynieś pomidory do 2|zmęczonego Blupiego, żeby @@ -458,8 +460,9 @@ każdego Blupiego. 1| 1|Niebieskie kwiaty są na 1|południowym wschodzie. -1|W laboratorium można wykorzystać -1|je do produkcji dynamitu. +1|W laboratorium można +1|wykorzystać je do produkcji +1|dynamitu. 2|Użyj dynamitu by zniszczyć 2|palisadę blokującą drogę @@ -634,7 +637,8 @@ każdego Blupiego. 1|i 2 Jeepy i znajdź przeciwny obóz 1|na południowym zachodzie. -2|Wysadź barierę chroniącą wrogi obóz. +2|Wysadź barierę chroniącą wrogi +2|obóz. 2|Postaraj się wysadzić przy tym 2|również buldożery. 2| @@ -670,9 +674,10 @@ klikania na każdym Blupim. @17 1|Solucja: 1| -1|Blupi może iść do domu na zachodniej -1|części wyspy. Pozostała czwórka musi -1|iść dość szybko by nie paść ofiarą +1|Blupi może iść do domu na +1|zachodniej części wyspy. +1|Pozostała czwórka musi iść +1|dość szybko by nie paść ofiarą 1|buldożerów. Blupi muszą iść na 1|północny wschód. @@ -683,7 +688,8 @@ klikania na każdym Blupim. 2|są duże pokłady żelaza. 2| 2|Stwórz łódź i podążaj na -2|północny wschód z bombą zegarową. +2|północny wschód z bombą +2|zegarową. #18 1|Sytuacja: @@ -744,12 +750,13 @@ klikania na każdym Blupim. 1|Wejdź na pokład i poszukaj innej 1|wyspy z drzewami. Zetnij drzewo 1|i przetransportuj deski na większą -2|wyspę. Stwórz teleporter. Przeniesie -2|cię on do zbrojowni. +2|wyspę. Stwórz teleporter. +2|Przeniesie cię on do zbrojowni. 2| 2| 2|Umieść trochę dynamitu niedaleko -2|muru otaczającego teren i wysadź go. +2|muru otaczającego teren i wysadź +2|go. 2|Za pomocą reszty dynamitu możesz 2|zniszczyć buldożery. @@ -796,11 +803,11 @@ klikania na każdym Blupim. 2|na rzekę. Stwórz łódź z desek. 2|Będziesz potrzebować też drugiej 2|sterty desek by zbudować później -2|drugą łódź. Zanim to zrobisz, musisz -2|złapać paralizatora w klejącą pułapkę -2|i stworzyć bombę zegarową w celu -2|zniszczenia niebieskiej bariery -2|na wschodzie. +2|drugą łódź. Zanim to zrobisz, +2|musisz złapać paralizatora w +2|klejącą pułapkę i stworzyć bombę +2|zegarową w celu zniszczenia +2|niebieskiej bariery na wschodzie. #22 1|Cele: @@ -904,11 +911,12 @@ klikania na każdym Blupim. @25 1|Solucja: 1| -1|Zneutralizuj 2 buldożery za pomocą -1|klejących pułapek. Stwórz łódź na -1|północ od pierwszego wrogiego obozu, -1|zaokrętuj razem z bombą zegarową -1|i udaj się na wschód. +1|Zneutralizuj 2 buldożery za +1|pomocą klejących pułapek. Stwórz +1|łódź na północ od pierwszego +1|wrogiego obozu, zaokrętuj razem +1|z bombą zegarową i udaj się na +1|wschód. 1| 1|Znajdź ścieżkę między skałami 1|prowadzącą na południe. @@ -942,10 +950,11 @@ klikania na każdym Blupim. 1|i stwórz bombę zegarową. 1| 1|Weź robota i bombę. Robot może -1|przekroczyć wrogi obóz na zachodzie -1|bez przeszkód. Wysadź barierę na -2|północy i weź pomidory by nakarmić -2|Blupiego w swoim obozie. +1|przekroczyć wrogi obóz na +1|zachodzie bez przeszkód. Wysadź +1|barierę na północy i weź +1|pomidory by nakarmić +1|Blupiego w swoim obozie. 2| 2|Połóż pomidory na ziemi zanim 2|wykonasz skok. @@ -1055,12 +1064,13 @@ klikania na każdym Blupim. 1|Mogą okazać się przydatne 1|w starciu ze skaczącymi bombami! -2|Zielone kwiaty na wschodzie pozwolą -2|ci stworzyć klejące pułapki by obronić -2|wioskę. +2|Zielone kwiaty na wschodzie +2|pozwolą ci stworzyć klejące +2|pułapki by obronić wioskę. 2| 2|Wydobądź żelazo na południowym -2|zachodzie i stwórz bomby i pancerze. +2|zachodzie i stwórz bomby i +2|pancerze. #30 1|Sytuacja: diff --git a/resources/data/pt/stories.blp b/resources/data/pt/stories.blp new file mode 100644 index 0000000..138d639 --- /dev/null +++ b/resources/data/pt/stories.blp @@ -0,0 +1,1144 @@ +$1 +1|Objetivo: +1| +1|Cada Blupi deve entrar em uma casa. +1|Para fazer isso, sempre use o botao +1|esquerdo do mouse. + +2|1) Clique em um Blupi. +2| Um anel vai aparecer em volta +2| dele indicando que esta selecionado. +2| +2|2) Clique em sua casa. +2| +2|3) Clique em "Ir" +2| +2|4) Repita esses passos para +2| o segundo Blupi. + + + + + + + + + + Depois de ter lido esses passos + clique no dado abaixo para jogar. + +$2 +Existe um segundo treino um pouco mais +complicado: + +1|Transportar ambas pilhas de madeiras +1|para o pavimento de pedra na +1|direita. +1| +1|Blupi deve comer tomates para +1|acumular energia suficiente para +1|fazer isso. Note que +2|quando ele come, o anel vermelho +2|torna-se azul. Isso +2|indica seu nivel de energia. +2| +2| vermelho = cansado +2| azul = energia + + + +Dica: +Para arrastar sua tela, você pode +arrastar seu mouse para o lado da +tela ou usar as setas do seu +teclado. + +$3 +1|Encontre os ovos ... +1| +1|Colocando-os na incubadora, +1|quatro novos Blupis +1|nascerao dos ovos. + + + + + + +Dica: +é mais eficiente usar +o mouse e o teclado +ao mesmo tempo. + +$4 +1|Objetivo: +1| +1|Os quatro Blupis devem chegar nas +1|casas ao norte da ilha. + +2|Cada Blupi deve comer para ter +2|energia suficiente para pular. + +$5 +1|Objetivo: +1| +1|Colocar dois grupos de tomates +1|no pavimento de pedra. + +2|Para isso você deve cortar as +2|plantas e construir uma casa do +2|jardim, plantar os tomates e +2|depositar dois grupos de tomates +2|no pavimento de pedra (sem comer). + +$6 +1|Objetivo: +1| +1|Cada Blupi deve chegar em casa +1|em uma pequena ilha. +1|Infelizmente existe comida suficiente +1|para apenas um Blupi. +2|Você vai precisar encontrar uma +2|forma de produzir comida suficiente +2|para todos os outros. +2| +2|Felizmente, a ilha possui +2|muitas plantas. + +#h1 +A vida do Blupi em seu planeta +era perfeita. Tudo era muito +bonito e quieto até que um dia +um estranho meteorito caiu em +um local remoto. + +Algum tempo depois, Blupi +percebeu que sua colheita +estava sendo devastada por +aranhas gigantes. + +E ainda parece que apesar da sua +excelente forma fisica, Blupi +pegou uma curiosa doença. +Ele agora espirra e tosse bastante. + +#h2 +O que esta acontecendo? + +Bem, o estranho meteorito parece +ser uma nave espacial. Restou +somente um sobrevivente na +batida, e parecer ser um robo. +E a unica coisa que ele quer é +construir fabricas para produzir +todo tipo de maquinas perversas +para acabar com o planeta do +Blupi. + +O Blupi precisa da sua ajuda e +habilidade para obter uma +vantagem de todos os recursos +naturais para se livrar desses +intrusos... + +#1 +A nave espacial colocou fogo na +floresta. Agora a vila do Blupi +pode estar em perigo. + +1|Objetivo: +1| +1|Impedir que a vila seja queimada. +1|Para fazer isso, existe apenas uma +1|maneira: Cortar algumas plantas +1|do lado esquerdo. + + + + + +2|Dica: +2| +2|Se um Blupi ficar escondido atras +2|de uma planta, pressione a barra +2|de espaço. Fazendo isso ele vai +2|aparecer transparente por alguns +2|instantes. + +@1 +1|Soluçao: +1| +1|Levar o Blupi para a esquerda +1|para cortar algumas plantas. Os +1|dois outros Blupis podem +1|carregar as madeiras. + +#2 +1|Objetivo: +1| +1|Blupi esta longe e perdido da +1| sua vila. Ele deve se organizar +1|antes de procurar pela vila. +1| +1|1) Construa uma casa do jardim e +1| plante tomates. + +2|2) Construa uma incubadora para +2| obter ajuda. +2| +2|3) Alimente os quatro Blupis e +2| procure pela vila. +2| + + +2|Tenha cuidado: +2| +2|Algumas coisas incomuns +2|podem acontecer. + + +@2 +1|Dicas: +1| +1|Primeiro, você deve construir +1|duas barreiras no norte +1|para parar a aranha. +1|Somente assim sera possivel +2|construir uma casa do jardim +2|e plantar tomates em paz. +2| +2|Para alcançar as quatro casas +2|você deve comer. + + +#3 +1|Objetivo: +1| +1|Evitar que os quatro Blupis +1|se queimem. +1| +1|Termine a parede. + + + + +2|Tenha cuidado: +2| +2|O terreno é feito de musgo +2|que queima mais facilmente. + +@3 +1|Soluçao: +1| +1|1) Esculpir uma pedra. +1| As pedras menores ficam +1| prontas rapidamente. + +2|2) Construa uma parede entre +2| as outras duas. +2| +2|3) Espere até que o fogo acabe. + +#4 +1|Objetivo: +1| +1|Faça os quatro Blupis +1|alcançarem o pavimento +1|de pedra + +@4 +1|Soluçao: +1| +1|1) Corte uma planta +1| +1|2) Leve as madeiras para +1| perto da margem. +1| +1|3) Construa uma ponte entre +1| os dois Blupis cansados. + +2|4) Repita estes passos +2| três vezes. +2| +2|Os Blupis cansados podem +2|atravessar a ponte e alcançar +2|o pavimento de pedras. + +#5 +1|A armadilha: +1|Cuidado, o terreno onde os +1|Blupis estao prisioneiros +1|podem se queimar. +1| +1|Objetivo: +1| +1|Resista até quando o fogo +1|tiver apagado. + +2|Tome Cuidado: +2|Construir uma parede é trabalho +2|muito cansativo para o Blupi. +2|Quando ele terminar, vai morrer ! + + + +Dica: +Se o jogo estiver muito devagar +para você, pressione a tecla F6 +para aumentar a velocidade. E +F5 para voltar ao normal. + +@5 +1|Dicas: +1| +1|Você deve construir quatro +1|paredes no pavimento cinza. +1|Você vai ter que cortar duas +1|plantas para construir uma casa +1|do jardim e uma incubadora. + +2|Quando as paredes estiverem +2|terminadas, você vai ter que +2|esperar até o fogo acabar. + +#6 +1|Objetivo: +1| +1|Um perigo esta presente: proteja +1|o campo o mais depressa possivel +1|com quatro torres. + +2|Agora você pode juntar +2|os pavimentos de pedra no +2|sudeste. + + + + + + + + + +Dica: + +Você pode selecionar muitos Blupis +ao mesmo tempo mantendo +a tecla shift pressionada enquanto +clica em cada Blupi. + + +@6 +1|Soluçao: +1| +1|Você deve colocar quatro Blupis +1|para esculpir as pedras +1|rapidamente. As menores ficam +1|prontas mais rapidamente. +1| +1|Transporte as quatro pilhas de +1|pedras para o pavimento cinza +1|escuro e comece a construir +1|as torres de proteçao. + +2|Espere pela chegada e +2|destruiçao dos virus. +2| +2|Os outros quatro Blupis +2|podem ir rapidamente para +2|o pavimento de pedra no +2|sudeste. + +#7 +1|Objetivo: +1| +1|Os quatro Blupis devem +1|alcançar o pavimento de +1|pedras. Você devera tomar +1|cuidado com o Blupi +1|mais distante. + + + + + +2|Tome cuidado: +2| +2|O terreno é inapropriado +2|para construir uma casa do +2|jardim. + +@7 +1|Soluçao: +1| +1|Faça um Blupi guardar um +1|tomate rapidamente para que +1|as aranhas nao o comam. +1| +1|Com outro Blupi, pule na +1|outra ilha e construa uma ponte +1|que vai ligar as duas ilhas. + +2|Carregue os tomates para o +2|Blupi casado para que ele +2|possa comer. + +#8 +1|Objetivo: +1| +1|Evitar que um ou dois Blupis +1|se contaminem e encontrar um +1|remedio para curar os outros. +1| +1|Finalmente cada Blupi deve +1|entrar em uma casa. + + + + + + + +2|Dica: +2| +2|Construa um laboratorio. + +@8 +1|Soluçao: +1| +1|Um laboratorio de pedra deve +1|ser feito. Ele vai permitir que +1|você transforme as flores +1|amarelas em remedio para +1|curar os Blupis. + +2|Você precisa construir uma +2|ponte para levar o remedio +2|para curar os Blupis. +2| +2|As casas ficam no sudeste da ilha. + +#9 +1|Objetivo: +1| +1|Encontrar uma forma para +1|atravessar a pista de gelo. + + + + + + +2|Nota: +2| +2|Blupi pode andar no gelo. Mas +2|como o gelo é muito escorregadio, +2|ele vai perder muita energia. + +@9 +1|Soluçao: +1| +1|Construa duas torres para +1|proteger os Blupis das +1|aranhas. +1| +1|Você precisa construir uma casa +1|do jardim e uma incubadora +1|para deixar os ovos chocarem. + +2|Blupi perde muita força +2|quando ele atravessa a pista +2|de gelo. Portanto, você deve +2|levar os tomates antes da pista. + +#10 +1|Objetivo: +1| +1|Alcançar a ilha no +1|nordeste e explodir +1|uma barreira. + +2|Tudo o que você precisa fazer +2|agora é colocar os quatro +2|Blupis no pavimento de pedra. + +@10 +1|Soluçao: +1| +1|Construa uma ponta na direçao +1|dos quatro prisioneiros. Você pode +1|esculpir uma pedra para +1|construir um laboratorio. +1| +1|As flores azuis podem ser +1|encontradas no sudeste. +1|Levando-as para o laboratorio, +1|elas podem ser transformadas +1|em dinamite. + +2|Use a dinamite para destruir +2|a barreira que esta prendendo +2|os quatro prisioneiros Blupis. +2| +2|Primeiro, você precisa +2|afastar os prisioneiros para +2|protegê-los da explosao. + +#11 +1|Objetivo: +1| +1|Alcançar as casas no +1|nordeste. Tome cuidado, +1|elas estao bem guardadas. + +@11 +1|Dicas: +1| +1|Construa uma ponte no sentido +1|da ilha noroeste e depois +1|faça pelo menos quatro pacotes +1|de dinamite. + +2|Coloque as dinamites no +2|norte corretamente perto das +2|escavadoras. +2| +2|Enquanto as dinamites nao +2|estiverem prontas, evite ir +2|ao norte ou você sera atacado +2|pelas escavadoras. + +#12 +1|Objetivo: +1| +1|Três Blupis devem se unir +1| com o Blupi isolado na ilha +1|no lado noroeste. + +@12 +1|Dica: +1| +1|Construa uma casa do jardim +1|e plante tomates. +1| +1|Faça dinamites com as flores +1|azuis que podem ser +1|encontradas no nordeste. + +2|Transporte as dinamites para +2|a ilha situada no oeste. +2| +2|Tome cuidado, o caminho possui +2|dois virus escondidos. + +#13 +1|Objetivo: +1| +1|Conseguir se livrar das seis +1|aranhas. +1| +1|As quatro primeiras serao +1|faceis. As duas restantes +1|serao mais dificeis. + + + + + + +2|Dica: +2| +2|Descubra como produzir +2|remedio no laboratorio. + +@13 +1|Soluçao: +1| +1|As primeiras quatro aranhas +1|podem ser capturadas com +1|armadilhas feitas com as flores +1|verdes no laboratorio. +1| +1|As armadilhas devem ser +1|colocadas perto das aranhas. + +2|As outras duas podem ser +2|com os tomates que foram +2|alterados no +2|laboratorio. +2| +2|Construa uma ponte para carregar +2|os tomates para o laboratorio. + +#14 +1|Objetivo: +1| +1|O Blupi deve simplesmente +1|ir para casa. +1| + +@14 +1|Soluçao: +1| +1|Procure por ferro sobre o +1|terreno rochoso. Coloque uma +1|madeira na bandeira e +1|construa uma mina. +1| +1|Esculpa uma rocha para construir +1|uma oficina aonde você vai +1|poder utilizar o ferro. + +2|Pegue a bomba, suba no +2|jeep e ande para o leste. +2|O jeep vai te proteger das +2|escavadoras. +2| +2|Quando você chegar na barreira, +2|você deve deixar o seu jeep +2|rapidamente, deixar a bomba , +2|liga-la, entrar no jeep e +2|fugir + +#15 +1|Objetivo: +1| +1|Somente um Blupi +1|deve alcançar a casa no +1|nordeste. + +2|Para fazer isso, você deve +2|destruir as diversas +2|instalaçoes inimigas. + +@15 +1|Dicas: +1| +1|Construa uma casa do jardim +1|e duas torres no pavimento +1|cinza escuro. +1| +1|Construa uma ponte para ligar +1|a ilha ao leste. Selecione +1|diferentes tipos de flores e as +1|traga para o campo. + +2|Construa um laboratorio, faça +2|dinamites e armadilhas pegajosas. +2|Proteja o campo com as +2|armadilhas pegajosas e +2|fora com as dinamites. +2| +2|Quando você achar que possui +2|dinamites e armadilhas suficientes, +2|mande um pequeno comando para +2|o nordeste de destrua o campo +2|inimigo + +#16 +1|Situaçao: +1| +1|Blupi esta perdido em uma parte +1|arida do planeta sem nenhuma +1|planta. + + + + +2|Objetivo: +2| +2|Os dois Blupis devem voltar +2|para casa em sua vila. + +@16 +1|Dicas: +1| +1|Encontre a mina no nordeste, +1|esculpa uma rocha e construa +1|uma oficina, faça uma bomba +1|e dois jeeps, e procure o +1|campo inimigo no sudoeste. + +2|Exploda a barreira no campo +2|inimigo. Tente explodir junto +2|as escavadoras. +2| +2|Você deve ir para o sul e +2|procurar pela planta e fazer +2|um teletransportador. + +#17 +1|Objetivo: +1| +1|Os cinco Blupis devem +1|alcançar uma casa. + +2|Cuidado, uma casa fica +2|atras do campo inimigo. + + + + + + + + + + + + +Dica: + +Você pode selecionar alguns +Blupis ao mesmo tempo +mantendo a tecla Shift selecionada +enquanto clica em cada Blupi. + +@17 +1|Soluçao: +1| +1|Um Blupi pode ir para a casa +1|no lado oeste da ilha. +1|Os outros quatro devem ir embora +1|rapidamente por causa das +1|escavadoras. Os Blupis +1|devem ir para o nordeste. + +2|Mais adiante, você deve encontrar +2|uma vila cercada por barreiras. +2| +2|No norte da ilha, existe muito +2|ferro. +2| +2|Você deve fazer um bote e ir +2|para o nordeste da ilha com +2|uma bomba. + +#18 +1|Situaçao: +1| +1|Enquanto Blupi estava +1|colhendo flores, ele nao percebeu +1|que estava perdido da sua +1|casa. Agora ele esta perdido +1|em um lugar cheio de inimigos. + + + + + +2|Objetivo: +2| +2|Blupi deve fugir e encontrar +2|uma forma para voltar para casa. + +@18 +1|Dicas: +1| +1|Encontre a agua localizada no +1|oeste. Faça um bote. Cuidado, +1|pode pode encontrar muitos +1|virus espalhados em volta. + +2|Com o bote, você pode +2|atravessar e desembarcar +2|na margem. +2| +2|A casa esta perto agora. Tenha +2|cuidado, você deve evitar +2|as escavadoras. + +#19 +1|Situaçao: +1| +1|Quatro escavadoras parecem +1|ameaçando a vila do Blupi. + + + + + +2|Objetivo: +2| +2|Destruir as escavadoras + +@19 +1|Dicas: +1| +1|Faça um Blupi extrair ferro +1|e construir uma armadura. Ela vai +1|pretegê-lo do fogo. +1| +1|Ande para o leste e construa um +1|bote. Embarque e procure por +1|outra ilha com planta. Corte a +1|planta e coloque a madeira +2|na ilha maior. Faça um +2|teletransportador. Ele vai te levar +2|para a fortaleza. +2| +2|Coloque algumas dinamites perto +2|das paredes e exploda-as +2|Com o restante das +2|dinamites, você pode destruir +2|as escavadoras. + +#20 +1|Objetivo: +1| +1|Destruir todas as instalaçoes +1|inimigas. +1| + +@20 +1|Dicas: +1| +1|Produza muitas dinamites, +1|armadilhas, etc. possiveis antes +1|de explodir as barreiras que +1|protegem o campo inimigo. + +#21 +1|Situaçao: +1| +1|Blupi foi capturado por um +1|robo asqueroso. Ele é um +1|prisioneiro na base de campo +1|do robo. + + + + +2|Objetivo: +2| +2|Blupi deve escapar e achar +2|sua casa. + +@21 +1|Dicas: +1| +1|Pegue a dinamite do nordeste. +1|Coloque-a perto da barreira +1|azul no espaço vazio nas +1|rochas. Quando as escavadoras +1|passarem pelas dinamites, elas +1|podem destruir as barreiras. + +2|Corra para o leste ate alcançar +2|o rio. Faça um bote com as +2|plantas. Você vai precisar de +2|uma segunda pilha de madeiras +2|para construir um bote depois. +2|Antes disso, você vai ter que +2|pegar o eletrocondutor com +2|a armadilha pegajosa e fazer +2|uma bomba para destruir a +2|barreira azul no leste. + +#22 +1|Objetivo: +1| +1|1) Fazer botes. +1| +1|2) Explorar toda a ilha. +1| +1|3) Destruir todas instalaçoes +1| inimigas. + +@22 +1|Dicas: +1| +1|A ilha no nordeste tem +1|muito ferro. + +2|A ilha no leste tem tudo o +2|que você precisa para fazer +2|dinamite e armadilhas pegajosas. + +#23 +1|Situaçao: +1| +1|Blupi parece estar curioso. +1|Depois de ter observado o robo +1|por um longo tempo, ele percebe +1|agora que ele esta perdido. + + + + +2|Objetivo: +2| +2|Trazer ajuda e destruir +2|os inimigos! + + +@23 +1|Dicas: +1| +1|O Blupi isolado deve ir +1|longe do robo e ir para o +1|leste. Blupi deve esculpir +1|uma rocha para permitir +1|alcançar a madeira, e entao +1|fazer um teletransportador. + +2|Com o segundo grupo de +2|Blupis, você deve fazer um +2|bote, encontrar a bomba no +2|nordeste e explodir a barreira no +2|sul. Isto vai permitir você trazer +2|a madeira para perto da ilha +2|e fazer um teletransportador para +2|permitir você se unir e ajudar +2|o Blupi perdido. + +#24 +1|Situaçao: +1| +1|O lugar possui muitos inimigos. +1| + + + +2|Objetivo: +2| +2|Destruir todos os inimigos. + +@24 +1|Dicas: +1| +1|Vai para o sudeste para evitar +1|o fogo e faça um bote com +1|uma planta restante. +1| +1|No campo, você vai encontrar +1|algum ferro. + +2|No norte do campo, você vai +2|encontrar alguns ovos. + +#25 +1|Blupi ficou desconfiado +1|porque o trouxe algumas +1|coisas estranhas para o +1|seu planeta: +1| +1| Platina.... +1| +1|A platina, que foi colocada +2|perto do foguete do robo, +2|vai dar acesso à tecnologia +2|do inimigo. +2| + + +2|Objetivo: +2| +2|Trazer cubo de platina para +2|o pavimento de pedra. + +@25 +1|Soluçao: +1| +1|Destruir duas escavadoras com +1|armadilhas pegajosas. Fazer um +1|bote no norte do primeiro campo +1|inimigo, depois embarcar com uma +1|bomba e ir para o leste. +1| +1|Procurar por um caminho entre as +1|rochas indo para o sul. O campo +2|inimigo com o foguete esta +2|longe do leste. Você vai precisar +2|explodir uma barreira para +2|permitir pegar e carregar a +2|platina. +2| +2|Traga a platina de volta +2|para a base. + +#26 +1|O cubo de Platina vai permitir +1|você acessar a tecnologia inimiga +1|para usa-la corretamente. + + + + + +2|Objetivo: +2| +2|Ajudar o Blupi a encontrar a +2|sua casa. + +@26 +1|Dicas: +1| +1|Fazer um robo ajudante com o +1|cubo de platina na fabrica e +1|fazer uma bomba. +1| +1|Pegar o robo e a bomba. +1|O robo pode cruzar o oeste +1do campo inimigo sem ser +2|notado. Exploda a barreira +2|no norte e pegue os tomates +2|para alimentar o Blupi +2|no campo. +2| +2|Largue os tomates antes de +2|pular. + +#27 +1|Situaçao: +1| +1|O robo teve o atrevimento de +1|instalar a sua vila perto da +1|vila do Blupi. + + + + +2|Objetivo: +2| +2|Alcançar o campo inimigo e +2|destruir tudo. + +@27 +1|Dicas: +1| +1|Fazer um teletransportador o +1|mais rapido possivel para você +1|alcançar a ilha com os ovos. +1|Construir duas torres nas +1|pedras na cor cinza escuro. +1|Construir uma barreira na +1|esquerda e direita de cada +1|torre. + +2|Agora você pode respirar ! +2| +2|Você tem duas formas para +2|alcançar o campo inimigo no +2|norte, pelo bote ou +2|construindo uma ponte. +2| +2|Você pode escolher ! + +#28 +1|Situaçao: +1| +1|Enquanto estava construindo +1|sua casa, Blupi fez um erro: +1|ele construiu uma parede em +1|volta dela. + + + + + +2|Objetivo: +2| +2|Blupi deve simplesmente +2|ir para casa. + +@28 +1|Dicas: +1| +1|Uma pequena ilha no norte +1|tem muitos ovos. +1| +1|Você precisa atravessar o +1|campo inimigo rapidamente +1|para evitar que as +1|escavadoras venham do +1|norte e do sul, para que +2|você possa colher +2|flores azuis. +2|Outro Blupi pode pega-las +2|para fazer dinamites. +2| +2|Você vai poder usar somente +2uma rocha que esta no campo +2|inimigo, simplesmente fora +2|da parede de proteçao. + +#29 +1|Situaçao: +1| +1|O espaço livre parece estar sendo +1|ocupado mais e mais pelo robo +1|e seus ajudantes. + + + + + +2|Objetivo: +2| +2|Blupi deve construir sua vila +2|e elaborar uma boa tatica +2|de defesa. +2| +2|Ele vai ter que atacar e +2|eliminar todos os seus inimigos. + +@29 +1|Dicas: +1| +1|Ele deve construir torres de +1|proteçao no noroeste, +1|nordeste e no lado sudeste. +1|Todas as rochas podem ser +1|encontradas no noroeste. +1| +1|Deixe as plantas perto das +1|barreiras. Elas podem ser +1|utilizadas contra as bombas ! + +2|As flores verdes no leste permitem +2|você fazer armadilhas pegajosas +2|para defender a vila. +2| +2|Extraia ferro no sudoeste e faça +2|bombas e armadilhas. + +#30 +1|Situaçao: +1| +1|Esta guerra precisa acabar logo. +1|Blupi e o robo tiveram que +1|fazer um acordo: +1|Ele precisa ajudar o robo a voltar +1|para o seu foguete, em retorno, +1|o robo vai deixar de forma +1|definitiva o planeta do Blupi. + + + + +2|Objetivo: +2| +2|Preparar o caminho para o +2|foguete para que o robo possa +2|deixar o planeta. Tendo perdido +2|a batalha, o robo ficou zangado +2|e se recusa a se mover até que +2|o caminho esteja terminado. + +@30 +1|Dicas: +1| +1|Esculpa uma rocha no sudeste. +1|Corte uma planta e faça um bote. +1|Com o bote, procure por uma +1|ilha no nordeste. +1|Procure por algum ferro, construa +1|uma mina e uma fabrica. Faça uma +2|bomba, que vai permitir você +2|explodir as barreiras em volta do +2|do robo. +2| +2|Tudo o que você precisa, seria +2|construir uma ponte para que o +2|robo possa voltar ao seu foguete. diff --git a/resources/data/tr/stories.blp b/resources/data/tr/stories.blp new file mode 100644 index 0000000..d7a5985 --- /dev/null +++ b/resources/data/tr/stories.blp @@ -0,0 +1,1096 @@ +$1 +1|Hedef: +1| +1|Her Blupi bir eve girmek zorunda. +1|Bunu yapmak için, her zaman sol +1|fare tuşunu kullan. + +2|1) Bir Blupi'ye tıkla +2| Onun etrafında, seçildiğini +2| gösteren mavi bir halka +2| belirecek. +2| +2|2) Onun evine tıkla +2| +2|3) "git" butonuna bas +2| +2|4) İkinci Blupi için aynı +2| işlemleri tekrar et. + + + + + + + + Bu yönergeleri okuduktan sonra, + aşağıdaki zara bas. + +$2 +İşte daha karışık olan ikinci +alıştırma: + +1|Her iki kalas yığınını sağdaki +1|çizgili parke taşına taşı. +1| +1|Blupi, bu işlem sırasında +1|yeterli güç toplamak için +1|domates yemeli. Öyle ki, onları +2|yediği zaman, ayağındaki +2|kırmızı halka maviye dönüşür. Bu +2|onun enerji seviyesini gösterir. +2| +2| kırmızı = bitkin +2| mavi = formda + + + +İpucu: +Ekranı kaydırmak için, fareni +ekranın kenarına çekebilir +veya klavye yön tuşlarını +kullanabilirsin. + +$3 +1|Yumurtaları bul ... +1| +1|Onları inkübatöre koyduktan +1|sonra, dört yeni Blupi +1|yumurtadan çıkacak. + + + + + + +İpucu: +Bir elle fareyi kullanırken +diğeriyle klavye yön oklarını +kullanmak daha etkili. + +$4 +1|Hedef: +1| +1|Dört Blupi kuzeydeki adalarda +1|bulunan evlere ulaşmalı. + +2|Her Blupi, zıplamak için gereken +2|gücü almak için yemek yemeli. + +$5 +1|Hedef: +1| +1|İki grup domatesi çizgili +1|parke taşının üzerine koy. + +2|Bunu yapmak için, ağaçları +2|kesmelisin, bir bahçe kulübesi +2|inşa etmelisin, domates +2|yetiştirmelisin ve iki grup +2|domatesi çizgili parke taşının +2|üzerine koymalısın (onları sakın +2|yeme). + +$6 +1|Hedef: +1| +1|Her Blupi, küçük bir adada +1|bulunan bir eve ulaşmalı. +1|Ne yazık ki, burada sadece tek +1|Blupi'ye yetecek kadar yemek var. +2|Senin hepsine yetecek kadar +2|yemek üretmek için bir yol +2|bulman lazım. +2| +2|Neyse ki, adada bir sürü ağaç +2|var. + +#h1 +Blupi, adasında sessizce +yaşamaktayken, garip bir göktaşı +kurak bir alana düşer. + +Hemen ardından, Blupi, ekinlerinin +iri örümcekler tarafından tahrip +edildiğini farkeder. + +Blupi, kusursuz formuna rağmen, +ciddi bir hastalığa yakalandı ve +şimdi hapşırmakta. + +#h2 +Neler oluyor burada? + +Aslında tuhaf göktaşı, çok özel +bir robot taşıyan uzay gemisi. + +Bu robot düşman üreten fabrikalar +inşa ediyor. + +Blupi bu davetsiz misafirlerden +kurtulmak için bütün doğal +kaynakları kullanmalı. + +#1 +Uzay gemisi çarpışması ormanda +yangın çıkardı. Blupi'lerin +köyü şimdi tehlikede. + +1|Hedef: +1| +1|Köyün yanmasını engelle. +1|Bunu yapmak için sadece bir yol +1|var: +1|Solda bulunan ağaçların +1|bazılarını kes. + + + + + + +2|İpucu: +2| +2|Eğer bir Blupi ağaçların arkasına +2|gizlenmişse, boşluk tuşuna bas. +2|Bunu yapmak, ağaçları geçici +2|olarak saydam hale getirecek. + +@1 +1|Çözüm: +1| +1|Soldaki Blupi'ye birçok ağacı +1|kesmesi için buyur. Diğer iki +1|Blupi kalasları uzağa taşıyacak. + +#2 +1|Durum: +1| +1|Blupi köyünden uzakta ve +1|kayboldu. O, köyünü aramadan +1|önce düzen kurmalı. +1| +1|1) Bir bahçe kulübesi inşa et ve +1| domates yetiştir + +2|2) Destek kazanmak için bir +2| inkübatör inşa et. +2| +2|3) Dört Blupi'yi besle ve köyü +2| bulmaya git. +2| + + +2|Dikkat et: +2| +2|Sıradışı bir şey olacak. + + +@2 +1|İpuçları: +1| +1|Öncelikle, örümceğin gelmesini +1|engellemek için kuzeye iki +1|kazıklı çit inşa etmelisin. +1|Ancak o zaman, huzur içinde +2|bir bahçe kulübesi inşa +2|edebileceksin ve domates +2|yetiştirebileceksin. +2| +2|Dört eve ulaşmak için, doğuya +2|gitmelisin. + + +#3 +1|Hedef: +1| +1|Dört kayıp Blupi'nin yanmasını +1|engelle. +1| +1|Duvarı bitir. + + + + +2|Dikkat et: +2| +2|Zemin, kolay yanabilen +2|yosunlardan ibaret. + +@3 +1|Çözüm: +1| +1|1) Kaya kes. +1| Ufak kayaları kesmek daha +1| hızlı. + +2|2) İki mevcut duvar arasına +2| yeni bir duvar inşa et. +2| +2|3) Yangının durmasını bekle. + +#4 +1|Hedef: +1| +1|Dört Blupi'nin çizgili parke +1|taşına ulaşmasını sağla. + +@4 +1|Çözüm: +1| +1|1) Bir ağaç kes. +1| +1|2) Kalasları suyun kenarına +1| taşı. +1| +1|3) İki bitkin Blupi'ye doğru +1| bakan bir köprü inşa et. + +2|4) Bu işlemi üç kere tekrarla. +2| +2|Bitkin Blupi'ler şimdi +2|köprüden geçip çizgili parke +2|taşına ulaşabilir. + +#5 +1|Tuzak: +1|Dikkat, Blupi'lerin esir +1|olduğu toprak kolayca alev +1|almakta ve yangın daha da +1|yaklaşmakta. +1| +1|Hedef: +1|Yangın sönene kadar dayan. + +2|Dikkat et: +2|Duvar yapmak Blupi için çok +2|yorucu bir iş. Duvarı +2|bitirdiğinde, Blupi ölür ! + + + +İpucu: +Eğer oyun senin için yeterince +hızlı değilse, oyunu +hızlandırmak için F6'ya bas. +F5, oyunu normal hızda +çalıştırır. + +@5 +1|İpuçları: +1| +1|Gri parke taşlarının üzerine +1|dört duvar inşa etmelisin. +1|Bir bahçe kulübesi ve +1|inkübatör inşa etmek için +1|iki ağaç kesmelisin. + +2|Duvarlar bittiğinde, yangın +2|durana kadar beklemelisin. + +#6 +1|Hedef: +1| +1|Bir tehlike söz konusu: +1|kampı derhal dört kuleyle +1|korumalısın. + +2|Çizgili parke taşına +2|güneydoğuda kavuşacaksın. + + + + + + + + + +İpucu: + +Shift tuşu basılıyken her bir +Blupi'ye tıklarsan, birkaç +Blupi'yi aynı anda seçebilirsin. + + +@6 +1|Çözüm: +1| +1|Dört Blupi'nin hemen kaya +1|kesmesini talep etmelisin. +1|Küçük kayaları kesmek daha +1|kolay. +1| +1|Dört taş yığınını gri parke +1|taşına ulaştır ve koruma +1|kulelerini inşa etmeye başla. + +2|Virüslerin gelişini bekle ve +2|yıkımını izle. +2| +2|Diğer dört Blupi, güneydoğudaki +2|çizgili parke taşına yavaşça +2|gidebilir. + +#7 +1|Hedef: +1| +1|Dört Blupi çizgili parke +1|taşına ulaşmalı. En uzaktaki +1|Blupi ile de ilgilenmek +1|zorundasın. + + + + + +2|Dikkat et: +2| +2|Toprak, bahçe kulübesi inşa +2|etmek için uygun değil. + +@7 +1|Çözüm: +1| +1|Bir Blupi'ye domatesleri +1|kaldırmasını talep et, böylece +1|örümcekler onları yiyemeyecek. +1| +1|Diğer Blupi ile, doğudaki +1|adaya zıpla, çizgili parke +1|taşını buraya bağlayan bir +1|köprü inşa et. + +2|Domatesleri bitkin Blupi'ye +2|doğru taşı, böylece o bunları +2|yiyebilir. + +#8 +1|Hedef: +1| +1|Bir veya iki Blupi'ye mikrop +1|bulaşmasını önle ve hasta +1|olanlara bir ilaç bul. +1| +1|Son olarak, her Blupi +1|bir eve girmeli. + + + + + + + +2|İpucu: +2| +2|Bir laboratuvar kur. + +@8 +1|İpuçları: +1| +1|Laboratuvar taştan yapılmalı +1|O, sarı çiçekleri, hasta +1|Blupi'leri iyileştiren bir ilaca +1|dönüştürmende yararlı +1|olacak. + +2|Hasta Blupi'lere ilaç getirmek +2|için bir köprü inşa etmelisin. +2| +2|Evler güneydoğuda bulunmakta. + +#9 +1|Hedef: +1| +1|Buz pistini geçmek için bir +1|yol bul. +1| + + + + + + +2|Not: +2| +2|Blupi buzda yürüyebilir. Ancak +2|kaygan buzda, o bir sürü güç +2|kaybeder. + +@9 +1|İpuçları: +1| +1|Blupi'leri örümcüklerden +1|korumak için iki kule inşa +1|edilmeli. +1| +1|Yumurtaların açılması için +1|bir bahçe kulübesi ve +1|inkübatör inşa etmelisin. + +2|Buz ringini geçerken, Blupi +2|çok fazla güç kaybeder. Bu +2|yüzden geçmeden önce ona +2|domates getirmelisin. + +#10 +1|Hedef: +1| +1|Kuzeydoğudaki adaya ulaş ve +1|kazıklı çiti havaya uçur. + +2|Şimdi yapman gereken tek şey, +2|dört Blupi'yi çizgili parke +2|taşına yerleştirmek. + +@10 +1|İpuçları: +1| +1|Dört esirin doğrultusunda +1|bir köprü inşa et. Bu, +1|laboratuvar kurmak için +1|gereken kayayı kesip onu bahçe +1|kulübesinin yanına götürmene +1|olanak sağlayacak. +1| +1|Mavi çiçekler güneydoğuda. +1|Laboratuvar sayesinde, bunlar +1|dinamite dönüştürülebilir. + +2|Dinamiti kullanarak dört +2|Blupi'yi esir tutan kazıklı çiti +2|yok et. +2| +2|Öncelikle, esirleri patlamadan +2|korumak için geriye çek. + +#11 +1|Hedef: +1| +1|Kuzeydoğudaki evlere ulaş. +1|Dikkatli ol, orası sımsıkı +1|koruma altında. + +@11 +1|İpuçları: +1| +1|Kuzeybatıdaki adaya doğru bir +1|köprü inşa et ve sonra en az +1|dört paket dinamit yap. + +2|Dinamitleri kuzeye, +2|buldozerlere oldukça yakın +2|bir yere bırak. +2| +2|Dinamit yapılmadığı sürece, +2|kuzeye gitmekten kaçın. Yoksa +2|buldozerlerin ilgisini +2|çekersin. + +#12 +1|Hedef: +1| +1|Üç Blupi, yalnız bir Blupi'nin +1|bulunduğu kuzeybatıdaki bir +1|adaya varmalı. + +@12 +1|İpuçları: +1| +1|Bir bahçe kulübesi inşa et ve +1|domates yetiştir. +1| +1|Kuzeybatıda bulunan mavi +1|çiçekler ile dinamit yap. +1| + +2|Dinamiti, batıda yer alan +2|adaya ulaştır. +2| +2|Dikkatli ol, yolda iki virüs +2|gizleniyor. + +#13 +1|Hedef: +1| +1|Altı örümcekten kurtul. +1| +1|İlk dört örümcekten kurtulmak +1|kolay. Kalan ikisinden +1|kurtulmak daha zor. + + + + + + +2|İpucu: +2| +2|Laboratuvarda nasıl zehir +2|üretebileceğini öğren. + +@13 +1|İpuçları: +1| +1|İlk dört örümcek, laboratuvarda +1|yeşil çiçeklerden yapılan tuzakla +1|yakalanacak. +1| +1|Tuzaklar örümceklerin yakınına +1|yerleştirilmelidir. + +2|Son ikisi, laboratuvarda +2|değiştirilen domateslerle +2|zehirlenecek. +2| +2|Domatesleri laboratuvara +2|taşımak için bir köprü inşa et. + +#14 +1|Hedef: +1| +1|Blupi yalnızca eve gitmeli. +1| + +@14 +1|İpuçları: +1| +1|Küçük çakıl taşlarının altında +1|demir ara. Kalasları bayrağın +1|olduğu yere bırak ve maden +1|inşa et. +1| +1|Atölye inşa etmek için kaya kes, +1|böylece demiri kullanabilirsin. + +2|Bir bomba al, jipe bin ve +2|doğuya git. Jip seni +2|buldozerlerden koruyacak. +2| +2|Kazıklı çite vardığında, jipi +2|derhal terketmelisin, saatli +2|bombayı bırakmalısın ve +2|çalıştırmalısın. Daha sonra jipe +2|geri binmelisin ve oradan +2|uzaklaşmalısın. + +#15 +1|Hedef: +1| +1|Yalnız bir Blupi kuzeydoğudaki +1|eve ulaşmalı. + +2|Bunu yapmak için, birçok +2|düşman tesisini yok etmelisin. + +@15 +1|İpuçları: +1| +1|Çizgili parke taşının olduğu +1|yere bir bahçe kulübesi ve +1|iki koruma kulesi inşa et. +1| +1|Doğudaki adayı birleştirmek +1|için bir köprü inşa et. +1|Çeşitli çiçekler topla ve +1|bunları ana kampa geri getir. + +2|Bir laboratuvar inşa et, +2|dinamit ve yapışkan tuzaklar +2|yap. Kampı içeriden yapışkan +2|tuzaklar ile, dışarıdan +2|dinamitler ile koru. +2| +2|Yeterli dinamitin ve tuzağın +2|olduğunu düşündüğünde, düşman +2|kampını yok etmek için +2|kuzeydoğuya ufak bir komando +2|birliği gönder. + +#16 +1|Durum: +1| +1|Blupi, gezegeninin ağaç olmayan, +1|kurak bir yerinde kayıp. + + + + +2|Hedef: +2| +2|İki Blupi kendi köylerine geri +2|dönmeli. + +@16 +1|İpuçları: +1| +1|Kuzeydoğudaki madeni bul, bir +1|atölye inşa etmek için kaya kes, +1|saatli bir bomba ve iki jip yap ve +1|güneybatıdaki düşman kampını +1|ara. + +2|Düşman kampını koruyan bariyeri +2|patlat. Buldozeri de patlatmaya +2|çalış. +2| +2|Güneye git, yalnız duran bir +2|ağacı ara ve ışınlayıcı inşa et. + +#17 +1|Hedef: +1| +1|Beş Blupi bir eve ulaşmalı. +1| + +2|Dikkat, bir ev düşman kampının +2|arkasında. + + + + + + + + + + + + +İpucu: + +Shift tuşu basılıyken her bir +Blupi'ye tıklarsan, birkaç +Blupi'yi aynı anda seçebilirsin. + +@17 +1|İpuçları: +1| +1|Bir Blupi şimdi adanın +1|batısındaki eve gidebilir. +1|Diğer dördü buldozerlerden +1|dolayı derhal oradan ayrılmalı. +1|Blupi'ler kuzeydoğuya gitmeli. + +2|Kuzeydoğunun daha ötesinde, +2|kazıklı çitle sarılı bir köy +2|bulacaksın. +2| +2|Köyün kuzeyinde bir sürü demir +2|var. +2| +2|Bir kayık yap ve saatli bir +2|bomba ile kuzeydoğuya git. + +#18 +1|Durum: +1| +1|Blupi çiçek toplarken, evinden +1|çok uzakta olduğunu farketmedi. +1|O şimdi düşmanlarla dolu bir +1|alanda kayboldu. + + + + + +2|Hedef: +2| +2|Blupi kaçmalı ve eve dönmenin +2|bir yolunu bulmalı. + +@18 +1|İpuçları: +1| +1|Batıya uzanan nehri bul ve bir +1|kayık yap. Dikkatli ol, bir +1|sürü virüs etrafta geziyor. + +2|Kayıkla, duvarı geçebilir ve +2|nehir kıyısına çıkabilirsin. +2| +2|Ev şimdi çok uzak değil. +2|Buldozerlerden uzak durma +2|konusunda dikkatli ol. + +#19 +1|Durum: +1| +1|Dört buldozer, Blupi'lerin +1|evini tehlike altına sokuyor. + + + + + +2|Hedef: +2| +2|Buldozerleri yok et. + +@19 +1|İpuçları: +1| +1|Bir Blupi'nin demir aramasını +1|ve zırh yapmasını talep et. +1|Zırh, onu yangından koruyacak. +1| +1|Doğuya git ve bir kayık yap. +1|Karaya çık ve ağaç olan bir +1|ada ara. Ağacı kes ve +1|tahtayı daha büyük olan bir +2|adaya götür. Bir ışınlayıcı +2|inşa et. O seni silah +2|deposuna götürecek. +2| +2|Etrafı çevreleyen duvarların +2|yanına birkaç dinamit koy ve +2|onları patlat. Kalan dinamitle, +2|buldozerleri yok edebilirsin. + +#20 +1|Hedef: +1| +1|Bütün düşman tesislerini yok +1|et. +1| + +@20 +1|İpuçları: +1| +1|Düşman kampını koruyan +1|bariyerleri yok etmeden önce, +1|olabildiğnce çok dinamit, +1|tuzak, vb. üret. + +#21 +1|Durum: +1| +1|Blupi, kötü bir robot +1|tarafından ele geçirildi. +1|O, robotun kampında esir +1|olarak tutuluyor. + + + + +2|Hedef: +2| +2|Blupi kaçmalı ve evini +2|bulmalı. + +@21 +1|İpuçları: +1| +1|Kuzeydoğuda bulunan dinamiti +1|al. Onu, kayalardaki bir +1|boşluğa bakan mavi bir +1|bariyerin yanına yerleştir. +1|Buldozer gelecek ve dinamitin +1|patlamasına neden olacak. Bu +1|da bariyeri patlatacak. + +2|Nehre ulaşana kadar doğuya +2|doğru koş. Kalaslarla bir +2|kayık yap. İkinci kalas +2|yığınına, sonra yine bir kayık +2|yapmak için ihtiyacın olacak. +2|Bunu yapmadan önce, +2|elekrikçarparı yapışkan bir +2|tuzakla yakalamalısın ve +2|doğudaki mavi bariyeri saatli +2|bir bombayla yok etmelisin. + +#22 +1|Hedefler: +1| +1|1) Kayıklar yap. +1| +1|2) Bütün adaları keşfet. +1| +1|3) Bütün düşman tesislerini +1| yok et + +@22 +1|İpuçları: +1| +1|Kuzeydoğudaki ada bir sürü +1|demire sahip. + +2|Doğudaki ada, dinamit ve +2|yapışkan tuzak yapmak için +2|gereken her şeye sahip. + +#23 +1|Durum: +1| +1|Blupi çok meraklı: Robotu iyice +1|gözlemledikten sonra, şimdi +1|robotun kendini kaybettiğini +1|farketti. + + + + + +2|Hedef: +2| +2|Destek getir ve düşmanı yok +2|et. + + +@23 +1|İpuçları: +1| +1|Ayrı olan Blupi, robottan +1|uzaklaşmalı ve batıya gitmeli. +1|Blupi tahtaya ulaşmak için +1|kaya kesmeli ve ışınlayıcı +1|inşa etmeli. + +2|İkinci Blupi grubuyla, +2|bir kayık yapmalısın, +2|kuzeydoğudaki bombayı +2|bulmalısın ve güneydeki +2|bariyeri patlatmalısın. Bu, +2|terkedilecek olan adaya tahta +2|getirmeni sağlayacak, böylece +2|kaybolmuş Blupi'ye katılmak +2|ve yardım etmek için bir +2|ışınlayıcı inşa edebilirsin. + +#24 +1|Durum: +1| +1|Bölge düşmanlarla dolu. +1| + + + +2|Hedef: +2| +2|Bütün düşmanları yok et. + +@24 +1|İpuçları: +1| +1|Yangından uzak durmak için +1|güneydoğuya git ve kalan +1|ağaçla bir kayık yap. +1| +1|Kampta biraz demir bulacaksın. +1| + +2|Kampın kuzeyinde biraz yumurta +2|bulacaksın. + +#25 +1|Blupi robotun kendi gezegeninden +1|garip bir şey getirdiğinden +1|şüpheleniyor: +1| +1| Platin.... +1| +1|Robotun roketinin yanında +2|duran platin, Blupi'nin düşman +2|teknolojisine erişimini +2|sağlayacak. +2| + + +2|Hedef: +2|Bir küp platini çizgili parke +2|taşının üzerine koy. + +@25 +1|İpuçları: +1| +1|İki buldozeri yapışkan tuzaklar +1|ile imha et. İlk düşman kampının +1|kuzeyinde bir kayık yap, sonra +1|saatli bir bomba ile karaya çık +1|ve doğuya git. +1| +1|Kayaların arasında, güneye doğru +1|giden bir patika ara. Roketin +2|bulunduğu düşman kampı doğuda +2|uzakta bir yerde. Platini ele +2|geçirebilmek için bariyeri +2|patlatman gerekecek. +2| +2|Platini ana kampa geri götür. + +#26 +1|Platin küp, senin düşman +1|teknolojisine erişimini +1|sağlayacak, o yüzden onu +1|doğru şekilde kullan. + + + + + +2|Hedef: +2| +2|Blupi'nin evini bulmasına +2|yardım et. + +@26 +1|İpuçları: +1| +1|Atölyede platin küpü kullanarak +1|yardımcı bir robot yap ve saatli +1|bir bomba yap. +1| +1|Robotu ve bombayı al. Robot, +1|batıdaki düşman kampını +1|farkedilmeden geçebilir. +2|Kuzeydeki bariyeri patlat ve +2|ana kamptaki Blupi'leri beslemek +2|için domates al. +2| +2|İlk zıplayıştan önce domatesleri +2|yere bırak. + +#27 +1|Durum: +1| +1|Robot, Blupi köyünün yakınına +1|kendi köyünü kurma +1|küstahlığında bulundu. + + + + +2|Hedef: +2| +2|Düşman kampına ulaş ve +2|her şeyi yok et. + +@27 +1|İpuçları: +1| +1|Hemen bir ışınlayıcı inşa et, +1|böylece yumurtalı adaya +1|ulaşabilirsin. Taş yığınlarının +1|olduğu yere iki koruma kulesi inşa +1|et. Her kulenin sağına ve soluna +1|kazıklı çit kur. + +2|Şimdi nefes alabilirsin ! +2| +2|Kuzeyde bulunan düşman +2|kampına ulaşmak için iki yolun +2|var, ya kayıkla ya da köprü +2|yaparak. +2| +2|Seçmek sana düşüyor ! + +#28 +1|Durum: +1| +1|Blupi, evini inşa ederken bir +1|hata yaptı: etrafına bir duvar +1|ördü. + + + + + +2|Hedef: +2| +2|Blupi yalnızca eve gitmeli. + +@28 +1|İpuçları: +1| +1|Kuzeyde küçük bir adada bir +1|sürü yumurta var. +1| +1|Kuzeyden ve güneyden gelen +1|buldozerleri önlemek için +1|düşman kampını çabucak geçmek +1|zorundasın, böylece mavi +1|çiçekleri toplayabilirsin. Bir başka +2|Blupi bunları dinamit yapmak +2|için götürebilir. +2| +2|Kullanılabilecek tek kaya, düşman +2|kampının güneyinde, koruma +2|kulesinin hemen dışında +2|bulunuyor. + +#29 +1|Durum: +1| +1|Boş alanlar, robot ve destekçileri +1|tarafından git gide dolduruluyor. + + + + + +2|Hedef: +2| +2|Blupi köyünü kurmalı ve iyi +2|savunma taktikleri geliştirmeli. +2| +2|Sonra o, bütün düşmanlara +2|saldırıp onları yok edebilir. + +@29 +1|İpuçları: +1| +1|Blupi; kuzeybatı, kuzeydoğu ve +1|güneydoğu taraflarında koruma +1|kuleleri inşa etmeli. Bütün kayalar +1|kuzeybatıda bulunmakta. +1| +1|Kazıklı çit yakınındaki ağaçları +1|sakın kesme. Onlar, zıplayan +1|bombalara karşı faydalı olabilir. + +2|Doğuda bulunan yeşil çiçekler, +2|köyü savunmak amacıyla +2|yapışkan tuzaklar yapmanı +2|sağlayacak. +2| +2|Güneybatıda demir çıkar ve +2|bombalar ve zırhlar yap. + +#30 +1|Durum: +1| +1|Bu savaş daha fazla süremez. +1|Blupi ve son robot bir +1|anlaşmaya vardılar: Robotun, +1|Blupi'nin gezegeninden ayrılması +1|karşılığında, Blupi, robotun +1|roketine dönmesine yardım +1|edecek. + + + + +2|Hedef: +2| +2|Rokete giden patikayı hazırla, +2|böylece robot, gezegenden +2|ayrılabilir. Savaşı kaybetmekten +2|dolayı robot kızgın, bu yüzden +2|patika bitene kadar kımıldamayı +2|reddediyor. + +@30 +1|İpuçları: +1| +1|Güneydoğuda bir kaya kes. Bir +1|ağaç kes ve bir kayık yap. +1|Kayıkla, kuzeydoğuda bir ada +1|ara. Biraz demir ara, bir maden +1|ve atölye kur. Robotun +1|etrafındaki bariyerleri patlatmanı +2|sağlayacak olan bir bomba yap. +2| +2|Yapman gereken son şey bir +2|köprü yapmak, böylece robot, +2|roketine geri dönebilir.
\ No newline at end of file diff --git a/resources/image/button00.png b/resources/image/button00.png Binary files differindex b390654..7458180 100644 --- a/resources/image/button00.png +++ b/resources/image/button00.png diff --git a/resources/image/he/init.png b/resources/image/he/init.png Binary files differnew file mode 100644 index 0000000..9780325 --- /dev/null +++ b/resources/image/he/init.png diff --git a/resources/image/little.png b/resources/image/little.png Binary files differindex 1b2d9ef..d6ec018 100644 --- a/resources/image/little.png +++ b/resources/image/little.png diff --git a/resources/image/setup00.png b/resources/image/setup00.png Binary files differindex c7049f8..4793560 100644 --- a/resources/image/setup00.png +++ b/resources/image/setup00.png diff --git a/resources/image/text.png b/resources/image/text.png Binary files differindex 40f14bd..be14abb 100644 --- a/resources/image/text.png +++ b/resources/image/text.png diff --git a/resources/linux/planetblupi.appdata.xml b/resources/linux/planetblupi.appdata.xml new file mode 100644 index 0000000..e053b48 --- /dev/null +++ b/resources/linux/planetblupi.appdata.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>planetblupi</id> + <metadata_license>MIT</metadata_license> + <project_license>GPL-3.0+</project_license> + <name>Planet Blupi</name> + <summary>Planet Blupi - A delirious spell-binding game</summary> + <description> + <p>Planet Blupi is a strategy and adventure game. It subtly blends action with thought-provoking challenges. Behind the quiet and gentle facade, you'll enjoy a fascinating diversion full of surprises.</p> + </description> + <launchable type="desktop-id">planetblupi.desktop</launchable> + <url type="homepage">http://blupi.org/</url> + <screenshots> + <screenshot type="default"> + <image>http://devel.schroetersa.ch/blupi.org/download/screen/planetblupi.png</image> + </screenshot> + </screenshots> + <provides> + <id>planetblupi.desktop</id> + </provides> +</component>
\ No newline at end of file diff --git a/resources/po/fr.po b/resources/po/fr.po index 2932770..fcb9835 100644 --- a/resources/po/fr.po +++ b/resources/po/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-08-08 07:29+0200\n" -"PO-Revision-Date: 2018-08-08 07:29+0200\n" +"PO-Revision-Date: 2019-02-17 23:21+0100\n" "Last-Translator: Mathieu Schroeter <mathieu@schroetersa.ch>\n" "Language-Team: French <kde-i18n-doc@kde.org>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.9\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid " - FFmpeg (LGPLv2.1)" @@ -502,7 +502,7 @@ msgstr "Sol inflammable" msgid "Insert CD-Rom Planet Blupi and wait a few seconds..." msgstr "" -"Veuillez insérer le CD-Rom Planète Blupi, puis attendre quelques secondes ..." +"Veuillez insérer le CD-Rom Planet Blupi, puis attendre quelques secondes ..." msgid "" "Interface language\n" @@ -693,10 +693,10 @@ msgid "Paving stones" msgstr "Dalles" msgid "Planet Blupi" -msgstr "Planète Blupi" +msgstr "Planet Blupi" msgid "Planet Blupi -- stop" -msgstr "Planète Blupi -- arrêt" +msgstr "Planet Blupi -- arrêt" msgid "Planks" msgstr "Planches" @@ -738,7 +738,7 @@ msgid "Quit" msgstr "Quitte" msgid "Quit Planet Blupi" -msgstr "Quitter Planète Blupi" +msgstr "Quitter Planet Blupi" msgid "Quit construction" msgstr "Terminer la construction" @@ -957,7 +957,7 @@ msgid "You have failed, try again..." msgstr "C'est raté, essaie encore une fois..." msgid "You have played Planet Blupi." -msgstr "Vous avez joué à Planète Blupi." +msgstr "Vous avez joué à Planet Blupi." #, c-format msgid "construction %d, time %d" diff --git a/resources/po/he.po b/resources/po/he.po new file mode 100644 index 0000000..4f87c7c --- /dev/null +++ b/resources/po/he.po @@ -0,0 +1,975 @@ +# 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: 2019-01-27 15:19+0100\n" +"PO-Revision-Date: 2019-02-17 14:11+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.1\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " +"2 : 3);\n" + +msgid " - FFmpeg (LGPLv2.1)" +msgstr " - FFmpeg (LGPLv2.1)" + +msgid " - GNU/gettext and GNU/libiconv (GPLv3)" +msgstr " - GNU/gettext and GNU/libiconv (GPLv3)" + +msgid " - SDL2, SDL2_image and SDL2_mixer (zlib license)" +msgstr " - SDL2, SDL2_image and SDL2_mixer (zlib license)" + +msgid " - SDL_kitchensink (MIT)" +msgstr " - SDL_kitchensink (MIT)" + +msgid " - argagg (MIT)" +msgstr " - argagg (MIT)" + +msgid " - libasound (LGPLv2.1)" +msgstr " - libasound (LGPLv2.1)" + +msgid " - libcurl (MIT/X derivate)" +msgstr " - libcurl (MIT/X derivate)" + +msgid " - libogg and libvorbis (own license)" +msgstr " - libogg and libvorbis (own license)" + +msgid " - libpng (own license)" +msgstr " - libpng (own license)" + +msgid " - libpulse (LGPLv2.1)" +msgstr " - libpulse (LGPLv2.1)" + +msgid " - libsndfile (LGPLv3)" +msgstr " - libsndfile (LGPLv3)" + +msgid " - zlib (own license)" +msgstr " - zlib (own license)" + +msgid "(isolated tower)" +msgstr "(מגדל מבודד)" + +msgid "" +"1: Cut down a tree \n" +"2: Build a bridge" +msgstr "" +"1: לכרות עץ\n" +"2: לבנות גשר" + +msgid "" +"1: Cut down a tree \n" +"2: Make a boat" +msgstr "" +"1: לכרות עץ\n" +"2: לבנות סירה" + +msgid "" +"1: Cut down a tree \n" +"2: Make a palisade" +msgstr "" +"1: לכרות עץ\n" +"2: לבנות גדר" + +msgid "" +"1: Extract iron\n" +"2: Make a Jeep" +msgstr "" +"1: להפיק ברזל\n" +"2: לבנות ג'יפ" + +msgid "" +"1: Extract iron\n" +"2: Make a bomb" +msgstr "" +"1: להפיק ברזל\n" +"2: להכין פצצה" + +msgid "" +"1: Extract iron\n" +"2: Make an armour" +msgstr "" +"1: להפיק ברזל\n" +"2: לבנות מגן" + +msgid "" +"1: Grow tomatoes\n" +"2: Eat" +msgstr "" +"1: לגדל עגבניות\n" +"2: לאכול" + +msgid "" +"1: Make a bunch\n" +"2: Transform" +msgstr "" +"1: לאסוף\n" +"2: לשנות" + +msgid "" +"1: Take\n" +"2: Build a bridge" +msgstr "" +"1: לקחת\n" +"2: לבנות גשר" + +msgid "" +"1: Take\n" +"2: Build palisade" +msgstr "" +"1: לקחת\n" +"2: לבנות גדר" + +msgid "" +"1: Take\n" +"2: Make a boat" +msgstr "" +"1: לקחת\n" +"2: לבנות סירה" + +msgid "" +"1: Take\n" +"2: Transform" +msgstr "" +"1: לקחת\n" +"2: לשנות" + +msgid "" +"1|Drop planks on striped \n" +"1|paving stones." +msgstr "" +"1|הורידו את הקרשים על\n" +"1|המרצפות המפוספסות" + +msgid "" +"1|Drop platinium on striped \n" +"1|paving stones." +msgstr "" +"1|הורידו את הפלטינה על\n" +"1|המרצפות המפוספסות" + +msgid "" +"1|Drop tomatoes on striped \n" +"1|paving stones." +msgstr "" +"1|הורידו את העגבניות על\n" +"1|המרצפות המפוספסות" + +msgid "" +"1|Each Blupi in\n" +"1|his house." +msgstr "" +"1|כל בלופי\n" +"1|לביתו" + +msgid "" +"1|Go on striped\n" +"1|paving stones." +msgstr "" +"1|לכו אל המרצפות\n" +"1|המפוספסות" + +msgid "1|Goal :" +msgstr "1|מטרה:" + +msgid "" +"1|Kill all\n" +"1|enemies !" +msgstr "" +"1|הרגו את כל\n" +"1|האוייבים" + +msgid "" +"1|Resist until\n" +"1|fire extinction ..." +msgstr "" +"1|התנגדו לאש עד\n" +"1|שתכבה" + +#, c-format +msgid "" +"1|The Blupi population must\n" +"1|be of at least %d Blupi." +msgstr "" +"1|אוכלוסיית הבלופים חייבת \n" +"1|להיות לפחות %d בלופים" + +msgid "" +"1|The robot must reach\n" +"1|the striped paving stones." +msgstr "" +"1|הרובוט חייב להגיע אל\n" +"1|המרצפות המפוספסות" + +msgid "Aliasing" +msgstr "מצב חלק" + +msgid "All licenses are available under share/doc/planetblupi/copyright" +msgstr "כל הרישיונות זמינים תחת share/doc/planetblupi/copyright" + +msgid "Already two teleporters" +msgstr "יש כבר שני משגרים" + +msgid "Another mistake..." +msgstr "עוד טעות!" + +msgid "Anti-aliasing" +msgstr "מצב אנטי-חלק" + +msgid "Armour" +msgstr "שיריון" + +msgid "Available buttons" +msgstr "כפתורים זמינים" + +msgid "Bang, failed again !" +msgstr "בום! שוב נכשלתם!" + +msgid "Bank" +msgstr "גדה" + +msgid "Blow up" +msgstr "לפוצץ" + +msgid "Blupi" +msgstr "בלופי" + +msgid "Blupi in house" +msgstr "בלופי בתוך הבית" + +msgid "Blupi on striped paving stones" +msgstr "בלופי על המרצפות המפוספסות" + +msgid "Blupi's energy" +msgstr "האנרגיה של בלופי" + +msgid "Blupi's house" +msgstr "הבית של בלופי" + +msgid "Boat" +msgstr "סירה" + +msgid "Bouncing bomb" +msgstr "להקפיץ פצצה" + +msgid "Bridge" +msgstr "גשר" + +msgid "Bridge finished" +msgstr "גשר גמור" + +msgid "Buildings" +msgstr "בניינים" + +msgid "Bulldozer" +msgstr "דחפור" + +msgid "Bunch of flowers" +msgstr "זר פרחים" + +msgid "Burnt ground" +msgstr "אדמה שרופה" + +msgid "Cancel last operation" +msgstr "בטל פעולה אחרונה" + +msgid "Carve a rock" +msgstr "לחצוב בסלע" + +msgid "Carve rocks" +msgstr "לחצוב סלעים" + +msgid "" +"Change the\n" +"display mode" +msgstr "" +"לשנות את\n" +"מצב התצוגה" + +msgid "" +"Change the\n" +"render quality" +msgstr "" +"לשנות את איכות\n" +"העיבוד הגרפי" + +msgid "" +"Change the\n" +"window size" +msgstr "" +"לשנות את\n" +"גודל החלון" + +msgid "" +"Choose the\n" +"music format" +msgstr "" +"לבחור את\n" +"פורמט המוזיקה" + +msgid "Construct this game" +msgstr "הרכב את המשחק" + +msgid "Construction" +msgstr "בנייה" + +msgid "Construction number" +msgstr "בנייה מספר" + +msgid "Continue this game" +msgstr "המשך משחק נוכחי" + +msgid "Cut down a tree" +msgstr "לכרות עץ" + +msgid "Cut down trees" +msgstr "לכרות עצים" + +msgid "Decorative plants" +msgstr "צמחי נוי" + +msgid "Delete figure" +msgstr "מחק דמות" + +msgid "Delete fire" +msgstr "מחק אש" + +msgid "Delete item" +msgstr "מחק פריט" + +msgid "Demo" +msgstr "הדגמה" + +msgid "Desert" +msgstr "מדבר" + +msgid "Desktop" +msgstr "שולחן עבודה" + +msgid "Desktop mode" +msgstr "מצב שולחן העבודה" + +msgid "Difficult" +msgstr "קשה" + +msgid "Disable anti-aliasing" +msgstr "כבה אנטי-חלק" + +msgid "Drink" +msgstr "לשתות" + +msgid "Drop" +msgstr "להפיל" + +msgid "Dynamite" +msgstr "חומר נפץ" + +msgid "E" +msgstr "מז" + +msgid "Easy" +msgstr "קל" + +msgid "Eat" +msgstr "לאכול" + +msgid "Eggs" +msgstr "ביצים" + +msgid "Electrocutor" +msgstr "מחשמל" + +msgid "Enable anti-aliasing" +msgstr "הפעל אנטי-חלק" + +msgid "Ending conditions" +msgstr "תנאים לסיום" + +msgid "Enemy barrier" +msgstr "מחסום האויב" + +msgid "Enemy buildings" +msgstr "בנייני האויב" + +msgid "Enemy construction" +msgstr "מבנה האויב" + +msgid "Enemy ground" +msgstr "אדמת אויב" + +msgid "Enemy rocket" +msgstr "טיל האויב" + +msgid "Excellent..." +msgstr "נהדר" + +msgid "Extract iron" +msgstr "להפיק ברזל" + +msgid "Faster" +msgstr "מהיר יותר" + +msgid "Finish" +msgstr "סיום" + +msgid "Fire" +msgstr "אש" + +msgid "Fire out" +msgstr "אש כובתה" + +msgid "Flag" +msgstr "דגל" + +msgid "Flowers" +msgstr "פרחים" + +msgid "Forest" +msgstr "יער" + +msgid "Forest under snow" +msgstr "יער מתחת לשלג" + +msgid "Fullscreen" +msgstr "מסך מלא" + +msgid "Game paused" +msgstr "המשחק נעצר" + +msgid "Garden shed" +msgstr "חלקת גינה" + +msgid "" +"Global game\n" +"speed" +msgstr "" +"מהירות\n" +"המשחק כולו" + +msgid "Global settings" +msgstr "הגדרות גלובליות " + +msgid "Go" +msgstr "המשך" + +msgid "Grow tomatoes" +msgstr "לגדל עגבניות" + +msgid "Help" +msgstr "עזרה" + +msgid "Help number" +msgstr "עזרה מספר" + +msgid "Helper robot" +msgstr "רובוט עוזר" + +msgid "Ice" +msgstr "קרח" + +msgid "Impossible" +msgstr "בלתי אפשרי" + +#, c-format +msgid "Impossible to win if less than %d Blupi" +msgstr "בלתי אפשרי לנצח אם פחות מ %d בלופים" + +msgid "Inadequate ground" +msgstr "קרקע לא מתאימה" + +msgid "Increase volume" +msgstr "הוספת נפח" + +msgid "Increase window size" +msgstr "להגדיל את גודל החלון" + +msgid "Incubator" +msgstr "מדגרה" + +msgid "Incubator or teleporter" +msgstr "מדגרה או משגר" + +msgid "Inflammable ground" +msgstr "קרקע דליקה" + +msgid "Insert CD-Rom Planet Blupi and wait a few seconds..." +msgstr "אנא הכנס את תקליטור המשחק וחכה מספר שניות" + +msgid "" +"Interface language\n" +"and sounds" +msgstr "" +"שפת הממשק\n" +"וצלילים" + +msgid "Interrupt" +msgstr "להפסיק" + +msgid "Iron" +msgstr "ברזל" + +msgid "Items" +msgstr "פריטים" + +msgid "Jeep" +msgstr "ג'יפ" + +msgid "Laboratory" +msgstr "מעבדה" + +msgid "Last construction resolved !" +msgstr "הבנייה האחרונה נפתרה!" + +msgid "Leave Jeep" +msgstr "לעזוב את הג'יפ" + +msgid "Legacy" +msgstr "גרסה ישנה" + +msgid "Legacy mode (640x480)" +msgstr "מצב גרסה ישנה(640x480)" + +#, c-format +msgid "Lost if less than %d Blupi" +msgstr "אבוד אם פחות מ %d בלופים" + +msgid "Make a Jeep" +msgstr "לבנות ג'יפ" + +msgid "Make a helper robot" +msgstr "לבנות רובוט עוזר" + +msgid "Make a time bomb" +msgstr "לבנות פצצת זמן" + +msgid "Make armour" +msgstr "לבנות שריון" + +msgid "Make bunch of flowers" +msgstr "לאסוף זר פרחים" + +msgid "Make bunches of flowers" +msgstr "לאסוף זרי פרחים" + +msgid "Master robot" +msgstr "הרובוט העליון" + +msgid "Medical potion" +msgstr "שיקוי רפואי" + +msgid "Midi" +msgstr "מידי" + +msgid "Mine" +msgstr "מכרה" + +msgid "Miscellaneous ground" +msgstr "קרקע מגוונת" + +msgid "Mission number" +msgstr "משימה מספר" + +msgid "Mission over..." +msgstr "המשימה הסתיימה..." + +msgid "Missions" +msgstr "משימות" + +msgid "" +"Music\n" +"volume" +msgstr "" +"עוצמת\n" +"המוזיקה" + +msgid "Music choice" +msgstr "בחירת מוסיקה" + +msgid "Music number 1" +msgstr "מוסיקה מספר 1" + +msgid "Music number 10" +msgstr "מוסיקה מספר 10" + +msgid "Music number 2" +msgstr "מוסיקה מספר 2" + +msgid "Music number 3" +msgstr "מוסיקה מספר 3" + +msgid "Music number 4" +msgstr "מוסיקה מספר 4" + +msgid "Music number 5" +msgstr "מוסיקה מספר 5" + +msgid "Music number 6" +msgstr "מוסיקה מספר 6" + +msgid "Music number 7" +msgstr "מוסיקה מספר 7" + +msgid "Music number 8" +msgstr "מוסיקה מספר 8" + +msgid "Music number 9" +msgstr "מוסיקה מספר 9" + +msgid "N" +msgstr "צ" + +#, c-format +msgid "New version available for download on www.blupi.org (v%s)" +msgstr "גרסה חדשה זמינה להורדה בכתובת www.blupi.org (v%s)" + +msgid "Next game" +msgstr "משחק הבא" + +msgid "Next language" +msgstr "שפה הבאה" + +msgid "Next page" +msgstr "הדף הבא" + +msgid "No" +msgstr "לא" + +msgid "No more enemies" +msgstr "אין יותר אויבים" + +msgid "No music" +msgstr "ללא מוסיקה" + +msgid "No video" +msgstr "בלי ווידאו" + +msgid "No, not that way !" +msgstr "לא! לא בדרך הזאת." + +msgid "No, wrong way ..." +msgstr "לא, זאת הדרך הלא נכונה." + +msgid "None" +msgstr "ללא גלילה" + +msgid "Normal ground" +msgstr "קרקע רגילה" + +msgid "Not available" +msgstr "לא זמין" + +msgid "Not enough energy" +msgstr "אין מספיק אנרגיה" + +msgid "Now go on mission." +msgstr "עכשיו התחילו בפעולה" + +msgid "Occupied ground" +msgstr "קרקע מאוכלסת" + +msgid "Ogg" +msgstr "קובץ אוג" + +msgid "Open another game" +msgstr "טען משחק אחר" + +msgid "Opposite bank no good" +msgstr "הגדה ממול לא מתאימה" + +msgid "Palisade" +msgstr "גדר" + +msgid "Paving stones" +msgstr "מרצפות" + +msgid "Planet Blupi" +msgstr "הכוכב בלופי" + +msgid "Planet Blupi -- stop" +msgstr "הכוכב בלופי -- עצור" + +msgid "Planks" +msgstr "קרשים" + +msgid "Planks on striped paving stones" +msgstr "קרשים על האבנים המפוספסות" + +msgid "Platinium" +msgstr "פלטינה" + +msgid "Platinium on striped paving stones" +msgstr "פלטינה על המרצפות המפוספסות" + +msgid "Play this game" +msgstr "שחק במשחק הנוכחי" + +msgid "Poison" +msgstr "עגבניות מורעלות" + +msgid "Prairie" +msgstr "ערבה" + +msgid "Previous game" +msgstr "משחק קודם" + +msgid "Previous language" +msgstr "שפה קודמת" + +msgid "Previous page" +msgstr "דף קודם" + +msgid "Prospect for iron" +msgstr "לחפש ברזל" + +msgid "Protection tower" +msgstr "מגדל שמירה" + +msgid "Quit" +msgstr "צא" + +msgid "Quit Planet Blupi" +msgstr "צא מבלופי" + +msgid "Quit construction" +msgstr "יציאה מבנייה" + +msgid "Quit this game" +msgstr "צא ממשחק נוכחי" + +msgid "REC" +msgstr "הקלטה" + +msgid "Reduce volume" +msgstr "הפחתת עוצמה" + +msgid "Reduce window size" +msgstr "הפחתת גודל החלון" + +msgid "Repeat" +msgstr "חזור" + +msgid "Restart this game" +msgstr "התחל מחדש משחק נוכחי" + +msgid "Robot on striped paving stones" +msgstr "רובוט על המרצפות המפוספסות" + +msgid "Rocks" +msgstr "סלעים" + +msgid "S" +msgstr "ד" + +msgid "Save" +msgstr "שמור" + +msgid "Save this game" +msgstr "שמור משחק נוכחי" + +msgid "Scenery choice" +msgstr "בחירת נוף" + +msgid "" +"Scroll speed\n" +"with mouse" +msgstr "" +"מהירות גלילה\n" +"בעזרת עכבר" + +msgid "" +"Select the\n" +"window mode" +msgstr "" +"בחירת מצב\n" +"החלון" + +msgid "Settings" +msgstr "הגדרות" + +msgid "Show videos" +msgstr "הצג ווידאו" + +msgid "Sick Blupi" +msgstr "בלופי חולה" + +msgid "Skill level" +msgstr "דרגת מיומנות" + +msgid "Slower" +msgstr "איטי" + +msgid "" +"Sound effect\n" +"volume" +msgstr "" +"עוצמת האפקטים\n" +"הקוליים" + +msgid "Special pavings" +msgstr "ריצוף מיוחד" + +msgid "Spider" +msgstr "עכביש" + +msgid "Starting fire" +msgstr "הצת אש" + +msgid "Sterile ground" +msgstr "קרקע מחוטאת" + +msgid "Sticky trap" +msgstr "מלכודת דביקה" + +msgid "Stones" +msgstr "אבנים" + +msgid "Stop" +msgstr "עצור" + +msgid "Striped paving stones" +msgstr "מרצפות מפוספסות" + +msgid "Take" +msgstr "לקחת" + +msgid "Teleporter" +msgstr "משגר" + +msgid "" +"This game is an original creation of Epsitec SA, CH-1400 Yverdon-les-Bains" +msgstr "זהו משחק מקורי מאת Epsitec SA, CH-1400 Yverdon-les-Bains" + +msgid "This game uses statically linked free and open-source libraries:" +msgstr "המשחק משתמש בספריות קוד מקור חינמיות פתוחות" + +msgid "Time bomb" +msgstr "פצצת זמן" + +msgid "Tired Blupi" +msgstr "בלופי עייף" + +msgid "Tomatoes" +msgstr "עגבניות" + +msgid "Tomatoes on striped paving stones" +msgstr "עגבניות על המרצפות המפוספסות" + +msgid "Too close to water" +msgstr "קרוב מדי למים" + +msgid "Training" +msgstr "אימון" + +msgid "Training number" +msgstr "אימון מספר" + +msgid "Transform" +msgstr "לשנות" + +msgid "Transport" +msgstr "להוביל" + +msgid "Trapped enemy" +msgstr "אויב לכוד" + +msgid "Tree" +msgstr "עץ" + +msgid "Tree trunks" +msgstr "גזע עץ" + +msgid "Use Midi music (original)" +msgstr "להשתמש במוזיקת מידי (מקור)" + +msgid "Use Ogg music" +msgstr "להשתמש במוזיקת אוג" + +msgid "Version" +msgstr "גרסה" + +msgid "Very good, success on all missions !" +msgstr "יפה מאוד! הצלחתם בכל המשימות!" + +msgid "Very good." +msgstr "ממש מעולה" + +msgid "" +"Video\n" +"sequences" +msgstr "" +"וידאו\n" +"רצף" + +msgid "Virus" +msgstr "וירוס" + +msgid "W" +msgstr "מע" + +msgid "Wall" +msgstr "חומה" + +msgid "Wall or palisade" +msgstr "חומה או גדר" + +msgid "Water" +msgstr "מים" + +msgid "We hope you have had as much fun playing the game as we had making it !" +msgstr "אנחנו מקווים שנהנתם לשחק במשחק לפחות כמו שנהננו ליצור אתו" + +msgid "Weapons" +msgstr "כלי נשק" + +msgid "Well done !" +msgstr "כל הכבוד!" + +msgid "Windowed" +msgstr "מצב חלון" + +msgid "Work done" +msgstr "העבודה הושלמה" + +msgid "Workshop" +msgstr "בית מלאכה" + +msgid "Yes" +msgstr "כן" + +msgid "Yes, great ..." +msgstr "כן, מצוין..." + +msgid "You have failed, try again..." +msgstr "נכשלתם, נסו שוב..." + +msgid "You have played Planet Blupi." +msgstr "שיחקתם בבלופי." + +#, c-format +msgid "construction %d, time %d" +msgstr "בנייה %d זמן %d" + +msgid "en" +msgstr "he" + +msgid "free slot" +msgstr "מקום פנוי" + +msgid "http://www.blupi.org info@blupi.org" +msgstr "http://www.blupi.org info@blupi.org" + +#, c-format +msgid "mission %d, time %d" +msgstr "פעולה %d זמן %d" + +#, c-format +msgid "training %d, time %d" +msgstr "אימון %d זמן %d" diff --git a/resources/po/it.po b/resources/po/it.po index b4c3b70..11f949a 100644 --- a/resources/po/it.po +++ b/resources/po/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-08-08 07:29+0200\n" -"PO-Revision-Date: 2017-12-14 23:15+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2019-02-18 15:22+0100\n" +"Last-Translator: Mathieu Schroeter <mathieu@schroetersa.ch>\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 2.0.5\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid " - FFmpeg (LGPLv2.1)" @@ -209,7 +209,7 @@ msgstr "" "1|le lastre tratteggiate." msgid "Aliasing" -msgstr "" +msgstr "Aliasing" msgid "All licenses are available under share/doc/planetblupi/copyright" msgstr "Tutte le license sono disponibili in share/doc/planetblupi/copyright" @@ -221,7 +221,7 @@ msgid "Another mistake..." msgstr "Ahimè, hai sbagliato un'altra volta..." msgid "Anti-aliasing" -msgstr "" +msgstr "Anti-aliasing" msgid "Armour" msgstr "Armatura" @@ -286,23 +286,20 @@ msgstr "Spacca una roccia" msgid "Carve rocks" msgstr "Spacca delle roccie" -#, fuzzy msgid "" "Change the\n" "display mode" msgstr "" "Cambiare la\n" -"dimensione\n" -"della finestra" +"visualizzazione" -#, fuzzy msgid "" "Change the\n" "render quality" msgstr "" "Cambiare la\n" -"dimensione\n" -"della finestra" +"qualità\n" +"dell'immagina" msgid "" "Change the\n" @@ -316,6 +313,9 @@ msgid "" "Choose the\n" "music format" msgstr "" +"Scegliere il\n" +"formato\n" +"della musica" msgid "Construct this game" msgstr "Costruire questa partita" @@ -354,16 +354,16 @@ msgid "Desert" msgstr "Deserto" msgid "Desktop" -msgstr "" +msgstr "Risoluzione" msgid "Desktop mode" -msgstr "" +msgstr "Modo desktop" msgid "Difficult" msgstr "Difficile" msgid "Disable anti-aliasing" -msgstr "" +msgstr "Disattivare anti-aliasing" msgid "Drink" msgstr "Bevi" @@ -390,7 +390,7 @@ msgid "Electrocutor" msgstr "Folgoratore" msgid "Enable anti-aliasing" -msgstr "" +msgstr "Attivare anti-aliasing" msgid "Ending conditions" msgstr "" @@ -538,10 +538,10 @@ msgid "Leave Jeep" msgstr "Lascia la Jeep" msgid "Legacy" -msgstr "" +msgstr "Originale" msgid "Legacy mode (640x480)" -msgstr "" +msgstr "Originale (640x480)" #, c-format msgid "Lost if less than %d Blupi" @@ -670,7 +670,7 @@ msgid "Normal ground" msgstr "Terreno normale" msgid "Not available" -msgstr "" +msgstr "Non disponibile" msgid "Not enough energy" msgstr "Energia limitata" @@ -895,10 +895,10 @@ msgid "Tree trunks" msgstr "Tronchi" msgid "Use Midi music (original)" -msgstr "" +msgstr "Utilizzare la musica Midi (originale)" msgid "Use Ogg music" -msgstr "" +msgstr "Utilizzare la musica Ogg" msgid "Version" msgstr "Versione" diff --git a/resources/po/pl.po b/resources/po/pl.po index 42eab85..7f661cb 100644 --- a/resources/po/pl.po +++ b/resources/po/pl.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-08-08 07:29+0200\n" -"PO-Revision-Date: 2017-12-14 23:15+0100\n" +"PO-Revision-Date: 2019-02-17 23:22+0100\n" "Last-Translator: tomangelo <tomangelo@wp.pl>\n" "Language-Team: TerranovaTeam <contact@colobot.info>\n" "Language: pl\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 2.0.5\n" +"X-Generator: Poedit 2.2.1\n" msgid " - FFmpeg (LGPLv2.1)" msgstr " - FFmpeg (LGPLv2.1)" @@ -210,7 +210,7 @@ msgstr "" "1|nawierzchni docelowej." msgid "Aliasing" -msgstr "" +msgstr "Pikselizacja" msgid "All licenses are available under share/doc/planetblupi/copyright" msgstr "Wszystkie licencje dostępne są w share/doc/planetblupi/copyright" @@ -222,7 +222,7 @@ msgid "Another mistake..." msgstr "Znowu pomyłka..." msgid "Anti-aliasing" -msgstr "" +msgstr "Wygładzanie" msgid "Armour" msgstr "Zbroja" @@ -287,21 +287,19 @@ msgstr "Wyłup skałę" msgid "Carve rocks" msgstr "Wyłup skały" -#, fuzzy msgid "" "Change the\n" "display mode" msgstr "" -"Zmień rozmiar\n" -"okna" +"Zmień tryb\n" +"wyświetlania" -#, fuzzy msgid "" "Change the\n" "render quality" msgstr "" -"Zmień rozmiar\n" -"okna" +"Zmień jakość\n" +"renderowania" msgid "" "Change the\n" @@ -314,6 +312,8 @@ msgid "" "Choose the\n" "music format" msgstr "" +"Wybierz format\n" +"muzyki" msgid "Construct this game" msgstr "Edytuj poziom" @@ -352,16 +352,16 @@ msgid "Desert" msgstr "Pustynia" msgid "Desktop" -msgstr "" +msgstr "Pulpit" msgid "Desktop mode" -msgstr "" +msgstr "Tryb pulpitu" msgid "Difficult" msgstr "Trudny" msgid "Disable anti-aliasing" -msgstr "" +msgstr "Wyłącz wygładzanie" msgid "Drink" msgstr "Wypij" @@ -388,7 +388,7 @@ msgid "Electrocutor" msgstr "Paralizator" msgid "Enable anti-aliasing" -msgstr "" +msgstr "Włącz wygładzanie" msgid "Ending conditions" msgstr "Warunki zwycięstwa" @@ -534,10 +534,10 @@ msgid "Leave Jeep" msgstr "Opuść Jeepa" msgid "Legacy" -msgstr "" +msgstr "Zgodność" msgid "Legacy mode (640x480)" -msgstr "" +msgstr "Tryb zgodności (640x480)" #, c-format msgid "Lost if less than %d Blupi" @@ -666,7 +666,7 @@ msgid "Normal ground" msgstr "Zwykła ziemia" msgid "Not available" -msgstr "" +msgstr "Niedostępne" msgid "Not enough energy" msgstr "Za mało siły" @@ -891,10 +891,10 @@ msgid "Tree trunks" msgstr "Pnie drzew" msgid "Use Midi music (original)" -msgstr "" +msgstr "Muzyka Midi (oryginalna)" msgid "Use Ogg music" -msgstr "" +msgstr "Muzyka Ogg" msgid "Version" msgstr "Wersja" diff --git a/resources/po/planetblupi.pot b/resources/po/planetblupi.pot index 1cc0fea..36bc15f 100644 --- a/resources/po/planetblupi.pot +++ b/resources/po/planetblupi.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-08 07:29+0200\n" +"POT-Creation-Date: 2019-02-17 14:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/resources/po/pt.po b/resources/po/pt.po new file mode 100644 index 0000000..54a67a0 --- /dev/null +++ b/resources/po/pt.po @@ -0,0 +1,960 @@ +# 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: 2019-01-25 23:40+0100\n" +"PO-Revision-Date: 2019-02-17 23:23+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.1\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 "" + +msgid " - SDL2, SDL2_image and SDL2_mixer (zlib license)" +msgstr "" + +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 "" + +msgid " - libogg and libvorbis (own license)" +msgstr "" + +msgid " - libpng (own license)" +msgstr "" + +msgid " - libpulse (LGPLv2.1)" +msgstr " - libpulse (LGPLv2.1)" + +msgid " - libsndfile (LGPLv3)" +msgstr " - libsndfile (LGPLv3)" + +msgid " - zlib (own license)" +msgstr "" + +msgid "(isolated tower)" +msgstr "(torre isolada)" + +msgid "" +"1: Cut down a tree \n" +"2: Build a bridge" +msgstr "" +"1: Cortar planta \n" +"2: Construir uma ponte" + +msgid "" +"1: Cut down a tree \n" +"2: Make a boat" +msgstr "" +"1: Cortar uma planta \n" +"2: Fazer um bote" + +msgid "" +"1: Cut down a tree \n" +"2: Make a palisade" +msgstr "" +"1: Cortar uma planta \n" +"2: Fazer uma barreira" + +msgid "" +"1: Extract iron\n" +"2: Make a Jeep" +msgstr "" +"1: Extrair Ferro\n" +"2: Fazer um Jeep" + +msgid "" +"1: Extract iron\n" +"2: Make a bomb" +msgstr "" +"1: Extrair ferro\n" +"2: Fazer uma bomba" + +msgid "" +"1: Extract iron\n" +"2: Make an armour" +msgstr "" +"1: Extrair ferro\n" +"2: Fazer uma armadura" + +msgid "" +"1: Grow tomatoes\n" +"2: Eat" +msgstr "" +"1: Cultivar tomates\n" +"2: Comer" + +msgid "" +"1: Make a bunch\n" +"2: Transform" +msgstr "" +"1: Fazer um ramo\n" +"2: Transformar" + +msgid "" +"1: Take\n" +"2: Build a bridge" +msgstr "" +"1: Pegar\n" +"2: Construir uma ponte" + +msgid "" +"1: Take\n" +"2: Build palisade" +msgstr "" +"1: Pegar\n" +"2: Construir barreira" + +msgid "" +"1: Take\n" +"2: Make a boat" +msgstr "" +"1: Pegar\n" +"2: Fazer um bote" + +msgid "" +"1: Take\n" +"2: Transform" +msgstr "" +"1: Pegar\n" +"2: Transformar" + +msgid "" +"1|Drop planks on striped \n" +"1|paving stones." +msgstr "" +"1|Largar madeira no \n" +"1|pavimento de pedra." + +msgid "" +"1|Drop platinium on striped \n" +"1|paving stones." +msgstr "" +"1|Largar a platina no \n" +"1|pavimento de pedra." + +msgid "" +"1|Drop tomatoes on striped \n" +"1|paving stones." +msgstr "" +"1|Largar tomates no \n" +"1|pavimento de pedra." + +msgid "" +"1|Each Blupi in\n" +"1|his house." +msgstr "" +"1|Cada Blupi na\n" +"1|sua casa." + +msgid "" +"1|Go on striped\n" +"1|paving stones." +msgstr "" +"1|Ir para\n" +"1| pavimento de pedra." + +msgid "1|Goal :" +msgstr "1|Objetivo :" + +msgid "" +"1|Kill all\n" +"1|enemies !" +msgstr "" +"1|Matar todos os\n" +"1|inimigos !" + +msgid "" +"1|Resist until\n" +"1|fire extinction ..." +msgstr "" +"1|Resistir até\n" +"1|fogo acabar..." + +#, c-format +msgid "" +"1|The Blupi population must\n" +"1|be of at least %d Blupi." +msgstr "" +"1|A população Blupi deve\n" +"1|ser de pelo menos %d \n" +"1|Blupi." + +msgid "" +"1|The robot must reach\n" +"1|the striped paving stones." +msgstr "" +"1|O robo deve atingir\n" +"1|o pavimento de pedra." + +msgid "Aliasing" +msgstr "" + +msgid "All licenses are available under share/doc/planetblupi/copyright" +msgstr "" + +msgid "Already two teleporters" +msgstr "Dois teletransportadores" + +msgid "Another mistake..." +msgstr "Outro erro..." + +msgid "Anti-aliasing" +msgstr "" + +msgid "Armour" +msgstr "Armadura" + +msgid "Available buttons" +msgstr "Botoes disponiveis" + +msgid "Bang, failed again !" +msgstr "Puxa, falhou novamente !" + +msgid "Bank" +msgstr "Margem" + +msgid "Blow up" +msgstr "Explodir" + +msgid "Blupi" +msgstr "Blupi" + +msgid "Blupi in house" +msgstr "Blupi em casa" + +msgid "Blupi on striped paving stones" +msgstr "Blupi no pavimento de pedra" + +msgid "Blupi's energy" +msgstr "Energia do Blupi" + +msgid "Blupi's house" +msgstr "Casa do Blupi" + +msgid "Boat" +msgstr "Bote" + +msgid "Bouncing bomb" +msgstr "Bomba Maluca" + +msgid "Bridge" +msgstr "Ponte" + +msgid "Bridge finished" +msgstr "Ponte terminada" + +msgid "Buildings" +msgstr "Construçãoes" + +msgid "Bulldozer" +msgstr "Escavadora" + +msgid "Bunch of flowers" +msgstr "Ramos de flores" + +msgid "Burnt ground" +msgstr "Terreno queimado" + +msgid "Cancel last operation" +msgstr "Cancelar ultima operação" + +msgid "Carve a rock" +msgstr "Esculpir uma pedra" + +msgid "Carve rocks" +msgstr "Esculpir pedras" + +msgid "" +"Change the\n" +"display mode" +msgstr "" + +msgid "" +"Change the\n" +"render quality" +msgstr "" + +msgid "" +"Change the\n" +"window size" +msgstr "" + +msgid "" +"Choose the\n" +"music format" +msgstr "" + +msgid "Construct this game" +msgstr "Construir este jogo" + +msgid "Construction" +msgstr "Projetar" + +msgid "Construction number" +msgstr "Projeto numero" + +msgid "Continue this game" +msgstr "Continuar este jogo" + +msgid "Cut down a tree" +msgstr "Cortar uma Planta" + +msgid "Cut down trees" +msgstr "Cortar Plantas" + +msgid "Decorative plants" +msgstr "Planta decorativa" + +msgid "Delete figure" +msgstr "Apagar figura" + +msgid "Delete fire" +msgstr "Apagar fogo" + +msgid "Delete item" +msgstr "Apagar item" + +msgid "Demo" +msgstr "Demo" + +msgid "Desert" +msgstr "Deserto" + +msgid "Desktop" +msgstr "" + +msgid "Desktop mode" +msgstr "" + +msgid "Difficult" +msgstr "Dificil" + +msgid "Disable anti-aliasing" +msgstr "" + +msgid "Drink" +msgstr "Beber" + +msgid "Drop" +msgstr "Largar" + +msgid "Dynamite" +msgstr "Dinamite" + +msgid "E" +msgstr "L" + +msgid "Easy" +msgstr "Facil" + +msgid "Eat" +msgstr "Comer" + +msgid "Eggs" +msgstr "Ovos" + +msgid "Electrocutor" +msgstr "Eletrocondutor" + +msgid "Enable anti-aliasing" +msgstr "" + +msgid "Ending conditions" +msgstr "Condições finais" + +msgid "Enemy barrier" +msgstr "Barreira inimiga" + +msgid "Enemy buildings" +msgstr "Construçãoe inimiga" + +msgid "Enemy construction" +msgstr "Construção inimiga" + +msgid "Enemy ground" +msgstr "Terreno Inimigo" + +msgid "Enemy rocket" +msgstr "Foguete inimigo" + +msgid "Excellent..." +msgstr "Excelente..." + +msgid "Extract iron" +msgstr "Extrair ferro" + +msgid "Faster" +msgstr "Mais rapido" + +msgid "Finish" +msgstr "Terminar" + +msgid "Fire" +msgstr "Fogo" + +msgid "Fire out" +msgstr "Resistir até o fogo acabar" + +msgid "Flag" +msgstr "Bandeira" + +msgid "Flowers" +msgstr "Flores" + +msgid "Forest" +msgstr "Floresta" + +msgid "Forest under snow" +msgstr "Floresta debaixo de neve" + +msgid "Fullscreen" +msgstr "" + +msgid "Game paused" +msgstr "Jogo pausado" + +msgid "Garden shed" +msgstr "Casa do jardim" + +msgid "" +"Global game\n" +"speed" +msgstr "Velocidade" + +msgid "Global settings" +msgstr "" + +msgid "Go" +msgstr "Ir" + +msgid "Grow tomatoes" +msgstr "Plantar tomates" + +msgid "Help" +msgstr "Ajuda" + +msgid "Help number" +msgstr "Ajuda numero" + +msgid "Helper robot" +msgstr "Robo Ajudante" + +msgid "Ice" +msgstr "Gelo" + +msgid "Impossible" +msgstr "Impossivel" + +#, c-format +msgid "Impossible to win if less than %d Blupi" +msgstr "Impossivel vencer se tiver menos que %d Blupi" + +msgid "Inadequate ground" +msgstr "Terreno inadequado" + +msgid "Increase volume" +msgstr "Aumentar Volume" + +msgid "Increase window size" +msgstr "" + +msgid "Incubator" +msgstr "Incubadora" + +msgid "Incubator or teleporter" +msgstr "Incubadora ou teletransportador" + +msgid "Inflammable ground" +msgstr "Terreno inflamavel" + +msgid "Insert CD-Rom Planet Blupi and wait a few seconds..." +msgstr "Insira o CD-Rom Planet Blupi e aguarde alguns segundos..." + +msgid "" +"Interface language\n" +"and sounds" +msgstr "" + +msgid "Interrupt" +msgstr "Interromper" + +msgid "Iron" +msgstr "Ferro" + +msgid "Items" +msgstr "Itens" + +msgid "Jeep" +msgstr "Jeep" + +msgid "Laboratory" +msgstr "Laboratorio" + +msgid "Last construction resolved !" +msgstr "Ultima construção resolvida !" + +msgid "Leave Jeep" +msgstr "Deixar o Jeep" + +msgid "Legacy" +msgstr "" + +msgid "Legacy mode (640x480)" +msgstr "" + +#, c-format +msgid "Lost if less than %d Blupi" +msgstr "Perder se tiver menos do que %d Blupi" + +msgid "Make a Jeep" +msgstr "Fazer um Jeep" + +msgid "Make a helper robot" +msgstr "Fazer um robo ajudante" + +msgid "Make a time bomb" +msgstr "Fazer uma bomba" + +msgid "Make armour" +msgstr "Fazer armadura" + +msgid "Make bunch of flowers" +msgstr "Fazer um ramo de flor" + +msgid "Make bunches of flowers" +msgstr "Fazer ramos de flores" + +msgid "Master robot" +msgstr "Robo principal" + +msgid "Medical potion" +msgstr "Remédio" + +msgid "Midi" +msgstr "Midi" + +msgid "Mine" +msgstr "Mina" + +msgid "Miscellaneous ground" +msgstr "Terreno Misto" + +msgid "Mission number" +msgstr "Missao numero" + +msgid "Mission over..." +msgstr "Missao completada..." + +msgid "Missions" +msgstr "Missoes" + +msgid "" +"Music\n" +"volume" +msgstr "" +"Musica\n" +"Volume" + +msgid "Music choice" +msgstr "Musica escolhida" + +msgid "Music number 1" +msgstr "Musica 1" + +msgid "Music number 10" +msgstr "Musica 10" + +msgid "Music number 2" +msgstr "Musica 2" + +msgid "Music number 3" +msgstr "Musica 3" + +msgid "Music number 4" +msgstr "Musica 4" + +msgid "Music number 5" +msgstr "Musica 5" + +msgid "Music number 6" +msgstr "Musica 6" + +msgid "Music number 7" +msgstr "Musica 7" + +msgid "Music number 8" +msgstr "Musica 8" + +msgid "Music number 9" +msgstr "Musica 9" + +msgid "N" +msgstr "N" + +#, c-format +msgid "New version available for download on www.blupi.org (v%s)" +msgstr "" + +msgid "Next game" +msgstr "Jogo seguinte" + +msgid "Next language" +msgstr "" + +msgid "Next page" +msgstr "Pagina seguinte" + +msgid "No" +msgstr "Nao" + +msgid "No more enemies" +msgstr "Matar inimigos" + +msgid "No music" +msgstr "Sem musica" + +msgid "No video" +msgstr "Sem video" + +msgid "No, not that way !" +msgstr "Caminho errado !" + +msgid "No, wrong way ..." +msgstr "Caminho errado ..." + +msgid "None" +msgstr "Nenhum" + +msgid "Normal ground" +msgstr "Terreno normal" + +msgid "Not available" +msgstr "" + +msgid "Not enough energy" +msgstr "" + +msgid "Now go on mission." +msgstr "Agora continue a missao." + +msgid "Occupied ground" +msgstr "Terreno ocupado" + +msgid "Ogg" +msgstr "Ogg" + +msgid "Open another game" +msgstr "Abrir outro jogo" + +msgid "Opposite bank no good" +msgstr "Margem oposta ruim" + +msgid "Palisade" +msgstr "Barreira" + +msgid "Paving stones" +msgstr "Pavimento de pedra" + +msgid "Planet Blupi" +msgstr "Planet Blupi" + +msgid "Planet Blupi -- stop" +msgstr "Planet Blupi -- parar" + +msgid "Planks" +msgstr "Madeiras" + +msgid "Planks on striped paving stones" +msgstr "Madeira no pavimento de pedra" + +msgid "Platinium" +msgstr "Platina" + +msgid "Platinium on striped paving stones" +msgstr "Platina no pavimento de pedra" + +msgid "Play this game" +msgstr "Jogar este jogo" + +msgid "Poison" +msgstr "Veneno" + +msgid "Prairie" +msgstr "Campina" + +msgid "Previous game" +msgstr "Jogo anterior" + +msgid "Previous language" +msgstr "" + +msgid "Previous page" +msgstr "Pagina anterior" + +msgid "Prospect for iron" +msgstr "Procurar por ferro" + +msgid "Protection tower" +msgstr "Torre" + +msgid "Quit" +msgstr "Sair" + +msgid "Quit Planet Blupi" +msgstr "Sair do Planet Blupi" + +msgid "Quit construction" +msgstr "Encerrar projeto" + +msgid "Quit this game" +msgstr "Encerrar este jogo" + +msgid "REC" +msgstr "REC" + +msgid "Reduce volume" +msgstr "Diminuir Volume" + +msgid "Reduce window size" +msgstr "" + +msgid "Repeat" +msgstr "Repetir" + +msgid "Restart this game" +msgstr "Reiniciar este jogo" + +msgid "Robot on striped paving stones" +msgstr "Robo no pavimento de pedra" + +msgid "Rocks" +msgstr "Rochas" + +msgid "S" +msgstr "S" + +msgid "Save" +msgstr "Salvar" + +msgid "Save this game" +msgstr "Salvar este jogo" + +msgid "Scenery choice" +msgstr "Cenario escolhido" + +msgid "" +"Scroll speed\n" +"with mouse" +msgstr "" +"Velocidade de\n" +"Rolagem com mouse" + +msgid "" +"Select the\n" +"window mode" +msgstr "" + +msgid "Settings" +msgstr "Ajustes" + +msgid "Show videos" +msgstr "Mostrar Video" + +msgid "Sick Blupi" +msgstr "Blupi doente" + +msgid "Skill level" +msgstr "Dificuldade" + +msgid "Slower" +msgstr "Mais devagar" + +msgid "" +"Sound effect\n" +"volume" +msgstr "" +"Efeitos de som\n" +"Volume" + +msgid "Special pavings" +msgstr "Pavimento Especial" + +msgid "Spider" +msgstr "Aranha" + +msgid "Starting fire" +msgstr "Iniciar fogo" + +msgid "Sterile ground" +msgstr "Terreno sem vida" + +msgid "Sticky trap" +msgstr "Armadilha pegajosa" + +msgid "Stones" +msgstr "Pedras" + +msgid "Stop" +msgstr "Parar" + +msgid "Striped paving stones" +msgstr "Terreno de pedras" + +msgid "Take" +msgstr "Pegar" + +msgid "Teleporter" +msgstr "Teletransportador" + +msgid "This game is an original creation of Epsitec SA, CH-1400 Yverdon-les-Bains" +msgstr "" + +msgid "This game uses statically linked free and open-source libraries:" +msgstr "" + +msgid "Time bomb" +msgstr "Bomba" + +msgid "Tired Blupi" +msgstr "Blupi cansado" + +msgid "Tomatoes" +msgstr "Tomates" + +msgid "Tomatoes on striped paving stones" +msgstr "Tomates no pavimento de pedra" + +msgid "Too close to water" +msgstr "Muito perto da agua" + +msgid "Training" +msgstr "Treino" + +msgid "Training number" +msgstr "Treino numero" + +msgid "Transform" +msgstr "Transformar" + +msgid "Transport" +msgstr "Transporte" + +msgid "Trapped enemy" +msgstr "Prender inimigos" + +msgid "Tree" +msgstr "Planta" + +msgid "Tree trunks" +msgstr "Tronco de Planta" + +msgid "Use Midi music (original)" +msgstr "" + +msgid "Use Ogg music" +msgstr "" + +msgid "Version" +msgstr "" + +msgid "Very good, success on all missions !" +msgstr "Muito bom, sucesso em todas as missoes !" + +msgid "Very good." +msgstr "Muito bom." + +msgid "" +"Video\n" +"sequences" +msgstr "" +"Video\n" +"Sequencia" + +msgid "Virus" +msgstr "Virus" + +msgid "W" +msgstr "O" + +msgid "Wall" +msgstr "Parede" + +msgid "Wall or palisade" +msgstr "Parede ou Barreira" + +msgid "Water" +msgstr "Agua" + +msgid "We hope you have had as much fun playing the game as we had making it !" +msgstr "Esperamos que você tenha se divertido com este super jogo !" + +msgid "Weapons" +msgstr "Armas" + +msgid "Well done !" +msgstr "Muito bem !" + +msgid "Windowed" +msgstr "" + +msgid "Work done" +msgstr "Trabalho Feito" + +msgid "Workshop" +msgstr "Oficina" + +msgid "Yes" +msgstr "Sim" + +msgid "Yes, great ..." +msgstr "Sim, perfeito ..." + +msgid "You have failed, try again..." +msgstr "Você falhou, tente novamente..." + +msgid "You have played Planet Blupi." +msgstr "Você jogou o Planet Blupi." + +#, c-format +msgid "construction %d, time %d" +msgstr "Projeto %d, tempo %d" + +msgid "en" +msgstr "pt" + +msgid "free slot" +msgstr "pista livre" + +msgid "http://www.blupi.org info@blupi.org" +msgstr "http://www.blupi.org info@blupi.org" + +#, c-format +msgid "mission %d, time %d" +msgstr "missao %d, tempo %d" + +#, c-format +msgid "training %d, time %d" +msgstr "treino %d, tempo %d" diff --git a/resources/po/tr.po b/resources/po/tr.po new file mode 100644 index 0000000..7b3aca4 --- /dev/null +++ b/resources/po/tr.po @@ -0,0 +1,972 @@ +# 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: tr\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-08-08 07:29+0200\n" +"PO-Revision-Date: 2019-02-17 23:26+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.1\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 ve GNU/libiconv (GPLv3)" + +msgid " - SDL2, SDL2_image and SDL2_mixer (zlib license)" +msgstr " - SDL2, SDL2_image ve SDL2_mixer (zlib lisansı)" + +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 türevi)" + +msgid " - libogg and libvorbis (own license)" +msgstr " - libogg and libvorbis (kendi lisansı)" + +msgid " - libpng (own license)" +msgstr " - libpng (kendi lisansı)" + +msgid " - libpulse (LGPLv2.1)" +msgstr " - libpulse (LGPLv2.1)" + +msgid " - libsndfile (LGPLv3)" +msgstr " - libsndfile (LGPLv3)" + +msgid " - zlib (own license)" +msgstr " - zlib (kendi lisansı)" + +msgid "(isolated tower)" +msgstr "(ayrık kule)" + +msgid "" +"1: Cut down a tree \n" +"2: Build a bridge" +msgstr "" +"1: Bir ağaç kes \n" +"2: Bir köprü inşa et" + +msgid "" +"1: Cut down a tree \n" +"2: Make a boat" +msgstr "" +"1: Bir ağaç kes \n" +"2: Bir kayık yap" + +msgid "" +"1: Cut down a tree \n" +"2: Make a palisade" +msgstr "" +"1: Bir ağaç kes \n" +"2: Kazıklı bir çit yap" + +msgid "" +"1: Extract iron\n" +"2: Make a Jeep" +msgstr "" +"1: Demir çıkar \n" +"2: Bir jip yap" + +msgid "" +"1: Extract iron\n" +"2: Make a bomb" +msgstr "" +"1: Demir çıkar \n" +"2: Bir bomba yap" + +msgid "" +"1: Extract iron\n" +"2: Make an armour" +msgstr "" +"1: Demir çıkar \n" +"2: Bir zırh yap" + +msgid "" +"1: Grow tomatoes\n" +"2: Eat" +msgstr "" +"1: Domates yetiştir \n" +"2: Ye" + +msgid "" +"1: Make a bunch\n" +"2: Transform" +msgstr "" +"1: Bir demet çiçek topla\n" +"2: Dönüştür" + +msgid "" +"1: Take\n" +"2: Build a bridge" +msgstr "" +"1: Al\n" +"2: Bir köprü inşa et" + +msgid "" +"1: Take\n" +"2: Build palisade" +msgstr "" +"1: Al\n" +"2: Kazıklı bir çit yap" + +msgid "" +"1: Take\n" +"2: Make a boat" +msgstr "" +"1: Al\n" +"2: Bir kayık yap" + +msgid "" +"1: Take\n" +"2: Transform" +msgstr "" +"1: Al\n" +"2: Dönüştür" + +msgid "" +"1|Drop planks on striped \n" +"1|paving stones." +msgstr "" +"1|Kalasları çizgili parke \n" +"1|taşına bırak." + +msgid "" +"1|Drop platinium on striped \n" +"1|paving stones." +msgstr "" +"1|Platini çizgili parke \n" +"1|taşına bırak." + +msgid "" +"1|Drop tomatoes on striped \n" +"1|paving stones." +msgstr "" +"1|Domatesleri çizgili parke \n" +"1|taşına bırak." + +msgid "" +"1|Each Blupi in\n" +"1|his house." +msgstr "" +"1|Her Blupi kendi\n" +"1|evinde olmalı." + +msgid "" +"1|Go on striped\n" +"1|paving stones." +msgstr "" +"1|Çizgili parke taşı\n" +"1| üzerinde dur." + +msgid "1|Goal :" +msgstr "1|Hedef :" + +msgid "" +"1|Kill all\n" +"1|enemies !" +msgstr "" +"1|Bütün düşmanları\n" +"1|öldür !" + +msgid "" +"1|Resist until\n" +"1|fire extinction ..." +msgstr "" +"1|Yangın sönene\n" +"1|kadar diren." + +#, c-format +msgid "" +"1|The Blupi population must\n" +"1|be of at least %d Blupi." +msgstr "" +"1|Blupi nüfusu\n" +"1|en az %d olmalı." + +msgid "" +"1|The robot must reach\n" +"1|the striped paving stones." +msgstr "" +"1|Robot çizgili parke\n" +"1|taşına ulaşmalı." + +msgid "Aliasing" +msgstr "Örtüşme" + +msgid "All licenses are available under share/doc/planetblupi/copyright" +msgstr "Bütün lisanslar share/doc/planetblupi/copyright yolu altında mevcut" + +msgid "Already two teleporters" +msgstr "Zaten iki ışınlayıcı var" + +msgid "Another mistake..." +msgstr "Yine olmadı.." + +msgid "Anti-aliasing" +msgstr "Örtüşme önleme" + +msgid "Armour" +msgstr "Zırh" + +msgid "Available buttons" +msgstr "Mevcut butonlar" + +msgid "Bang, failed again !" +msgstr "Güm, yine başaramadık !" + +msgid "Bank" +msgstr "Kıyı" + +msgid "Blow up" +msgstr "Patlat" + +msgid "Blupi" +msgstr "Blupi" + +msgid "Blupi in house" +msgstr "Blupi evde olsun" + +msgid "Blupi on striped paving stones" +msgstr "Blupi çizgili parke taşı üzerinde olsun" + +msgid "Blupi's energy" +msgstr "Blupi'nin enerjisi" + +msgid "Blupi's house" +msgstr "Blupi'nin evi" + +msgid "Boat" +msgstr "Kayık" + +msgid "Bouncing bomb" +msgstr "Zıplayan bomba" + +msgid "Bridge" +msgstr "Köprü" + +msgid "Bridge finished" +msgstr "Köprü tamamlandı" + +msgid "Buildings" +msgstr "Binalar" + +msgid "Bulldozer" +msgstr "Buldozer" + +msgid "Bunch of flowers" +msgstr "Bir demet çiçek" + +msgid "Burnt ground" +msgstr "Yanmış zemin" + +msgid "Cancel last operation" +msgstr "Son işlemi iptal et" + +msgid "Carve a rock" +msgstr "Kayayı kes" + +msgid "Carve rocks" +msgstr "Kayaları kes" + +msgid "" +"Change the\n" +"display mode" +msgstr "" +"Görüntü modunu\n" +"değiştir" + +msgid "" +"Change the\n" +"render quality" +msgstr "" +"Görüntü kalitesini\n" +"değiştir" + +msgid "" +"Change the\n" +"window size" +msgstr "" +"Pencere\n" +"büyüklüğünü\n" +"değiştir" + +msgid "" +"Choose the\n" +"music format" +msgstr "" +"Müzik formatını\n" +"değiştir" + +msgid "Construct this game" +msgstr "Bu oyunu tasarla" + +msgid "Construction" +msgstr "Oyun tasarlama" + +msgid "Construction number" +msgstr "Oyun no" + +msgid "Continue this game" +msgstr "Bu oyuna devam et" + +msgid "Cut down a tree" +msgstr "Ağacı kes" + +msgid "Cut down trees" +msgstr "Ağaçları kes" + +msgid "Decorative plants" +msgstr "Süs bitkiler" + +msgid "Delete figure" +msgstr "Karakteri sil" + +msgid "Delete fire" +msgstr "Yangını sil" + +msgid "Delete item" +msgstr "Öğeyi sil" + +msgid "Demo" +msgstr "Demo" + +msgid "Desert" +msgstr "Çöl" + +msgid "Desktop" +msgstr "Masaüstü" + +msgid "Desktop mode" +msgstr "Masaüstü modu" + +msgid "Difficult" +msgstr "Zor" + +msgid "Disable anti-aliasing" +msgstr "Örtüşme önlemeyi devre dışı bırak" + +msgid "Drink" +msgstr "İç" + +msgid "Drop" +msgstr "Bırak" + +msgid "Dynamite" +msgstr "Dinamit" + +msgid "E" +msgstr "D" + +msgid "Easy" +msgstr "Kolay" + +msgid "Eat" +msgstr "Ye" + +msgid "Eggs" +msgstr "Yumurtalar" + +msgid "Electrocutor" +msgstr "Elektrikçarpar" + +msgid "Enable anti-aliasing" +msgstr "Örtüşme önlemeyi etkinleştir" + +msgid "Ending conditions" +msgstr "Bitirme koşulları" + +msgid "Enemy barrier" +msgstr "Düşman barikatı" + +msgid "Enemy buildings" +msgstr "Düşman binaları" + +msgid "Enemy construction" +msgstr "Düşman binası" + +msgid "Enemy ground" +msgstr "Düşman arazisi" + +msgid "Enemy rocket" +msgstr "Düşman roketi" + +msgid "Excellent..." +msgstr "Mükemmel." + +msgid "Extract iron" +msgstr "Demir çıkar" + +msgid "Faster" +msgstr "Daha hızlı" + +msgid "Finish" +msgstr "Bitir" + +msgid "Fire" +msgstr "Yangın" + +msgid "Fire out" +msgstr "Yangın sönsün" + +msgid "Flag" +msgstr "Bayrak" + +msgid "Flowers" +msgstr "Çiçekler" + +msgid "Forest" +msgstr "Orman" + +msgid "Forest under snow" +msgstr "Kar altında orman" + +msgid "Fullscreen" +msgstr "Tam ekran" + +msgid "Game paused" +msgstr "Oyun durduruldu" + +msgid "Garden shed" +msgstr "Bahçe kulübesi" + +msgid "" +"Global game\n" +"speed" +msgstr "" +"Genel oyun\n" +"hızı" + +msgid "Global settings" +msgstr "Genel ayarlar" + +msgid "Go" +msgstr "Git" + +msgid "Grow tomatoes" +msgstr "Domates yetiştir" + +msgid "Help" +msgstr "Yardım" + +msgid "Help number" +msgstr "Yardım no" + +msgid "Helper robot" +msgstr "Yardımcı robot" + +msgid "Ice" +msgstr "Buz" + +msgid "Impossible" +msgstr "İmkansız" + +#, c-format +msgid "Impossible to win if less than %d Blupi" +msgstr "Eğer nüfus %d Blupi'den azsa kazanmak imkansız" + +msgid "Inadequate ground" +msgstr "Arazi uygun edğil" + +msgid "Increase volume" +msgstr "Ses seviyesini arttır" + +msgid "Increase window size" +msgstr "Pencere büyüklüğünü arttır" + +msgid "Incubator" +msgstr "İnkübatör" + +msgid "Incubator or teleporter" +msgstr "İnkübatör veya ışınlayıcı" + +msgid "Inflammable ground" +msgstr "Alev alabilen zemin" + +msgid "Insert CD-Rom Planet Blupi and wait a few seconds..." +msgstr "Planet Blupi CD-Rom'unu takın ve birkaç saniye bekleyin..." + +msgid "" +"Interface language\n" +"and sounds" +msgstr "" +"Arayüz dili\n" +"ve sesleri" + +msgid "Interrupt" +msgstr "Oyunu yarıda kes" + +msgid "Iron" +msgstr "Demir" + +msgid "Items" +msgstr "Öğeler" + +msgid "Jeep" +msgstr "Jip" + +msgid "Laboratory" +msgstr "Laboratuvar" + +msgid "Last construction resolved !" +msgstr "Son oyun çözüldü !" + +msgid "Leave Jeep" +msgstr "Jipten ayrıl" + +msgid "Legacy" +msgstr "Eski" + +msgid "Legacy mode (640x480)" +msgstr "Eski mod (640x480)" + +#, c-format +msgid "Lost if less than %d Blupi" +msgstr "Nüfus %d Blupi'den azsa kaybedilir" + +msgid "Make a Jeep" +msgstr "Bir jip yap" + +msgid "Make a helper robot" +msgstr "Yardımcı bir robot yap" + +msgid "Make a time bomb" +msgstr "Saatli bir bomba yap" + +msgid "Make armour" +msgstr "Zırh yap" + +msgid "Make bunch of flowers" +msgstr "Bir demet çiçek topla" + +msgid "Make bunches of flowers" +msgstr "Demetlerce çiçek topla" + +msgid "Master robot" +msgstr "Baş robot" + +msgid "Medical potion" +msgstr "Tıbbi ilaç" + +msgid "Midi" +msgstr "Midi" + +msgid "Mine" +msgstr "Maden" + +msgid "Miscellaneous ground" +msgstr "Karışık zemin" + +msgid "Mission number" +msgstr "Görev no" + +msgid "Mission over..." +msgstr "Görev tamamlandı." + +msgid "Missions" +msgstr "Görevler" + +msgid "" +"Music\n" +"volume" +msgstr "Müzik seviyesi" + +msgid "Music choice" +msgstr "Müzik seçimi" + +msgid "Music number 1" +msgstr "Müzik no 1" + +msgid "Music number 10" +msgstr "Müzik no 10" + +msgid "Music number 2" +msgstr "Müzik no 2" + +msgid "Music number 3" +msgstr "Müzik no 3" + +msgid "Music number 4" +msgstr "Müzik no 4" + +msgid "Music number 5" +msgstr "Müzik no 5" + +msgid "Music number 6" +msgstr "Müzik no 6" + +msgid "Music number 7" +msgstr "Müzik no 7" + +msgid "Music number 8" +msgstr "Müzik no 8" + +msgid "Music number 9" +msgstr "Müzik no 9" + +msgid "N" +msgstr "K" + +#, c-format +msgid "New version available for download on www.blupi.org (v%s)" +msgstr "Oyunun yeni bir versiyonu mevcut www.blupi.org (v%s)" + +msgid "Next game" +msgstr "Sonraki oyun" + +msgid "Next language" +msgstr "Sonraki dil" + +msgid "Next page" +msgstr "Sonraki sayfa" + +msgid "No" +msgstr "Hayır" + +msgid "No more enemies" +msgstr "Düşman kalmasın" + +msgid "No music" +msgstr "Müzik yok" + +msgid "No video" +msgstr "Video yok" + +msgid "No, not that way !" +msgstr "Hayır, olamaz !" + +msgid "No, wrong way ..." +msgstr "Bu şekilde değil..." + +msgid "None" +msgstr "Yok" + +msgid "Normal ground" +msgstr "Normal zemin" + +msgid "Not available" +msgstr "Mevcut değil" + +msgid "Not enough energy" +msgstr "Yetersiz enerji" + +msgid "Now go on mission." +msgstr "Şimdi göreve devam et." + +msgid "Occupied ground" +msgstr "Dolu alan" + +msgid "Ogg" +msgstr "Ogg" + +msgid "Open another game" +msgstr "Başka bir oyun aç" + +msgid "Opposite bank no good" +msgstr "Karşı kıyı uygun değil" + +msgid "Palisade" +msgstr "Kazıklı çit" + +msgid "Paving stones" +msgstr "Parke taşı" + +msgid "Planet Blupi" +msgstr "Planet Blupi" + +msgid "Planet Blupi -- stop" +msgstr "Planet Blupi -- dur" + +msgid "Planks" +msgstr "Kalaslar" + +msgid "Planks on striped paving stones" +msgstr "Kalaslar çizgili parke taşı üzerinde olsun" + +msgid "Platinium" +msgstr "Platin" + +msgid "Platinium on striped paving stones" +msgstr "Platin çizgili parke taşı üzerinde olsun" + +msgid "Play this game" +msgstr "Bu oyunu oyna" + +msgid "Poison" +msgstr "Zehir" + +msgid "Prairie" +msgstr "Bozkır" + +msgid "Previous game" +msgstr "Önceki oyun" + +msgid "Previous language" +msgstr "Önceki dil" + +msgid "Previous page" +msgstr "Önceki sayfa" + +msgid "Prospect for iron" +msgstr "Demir ara" + +msgid "Protection tower" +msgstr "Koruma kulesi" + +msgid "Quit" +msgstr "Çık" + +msgid "Quit Planet Blupi" +msgstr "Planet Blupi'den çık" + +msgid "Quit construction" +msgstr "Oyundan çık" + +msgid "Quit this game" +msgstr "Bu oyundan çık" + +msgid "REC" +msgstr "REC" + +msgid "Reduce volume" +msgstr "Ses seviyesini azalt" + +msgid "Reduce window size" +msgstr "Pencere büyüklüğünü azalt" + +msgid "Repeat" +msgstr "Tekrar et" + +msgid "Restart this game" +msgstr "Bu oyunu tekrar başlat" + +msgid "Robot on striped paving stones" +msgstr "Robot çizgili parke taşı üzerinde olsun" + +msgid "Rocks" +msgstr "Kayalar" + +msgid "S" +msgstr "G" + +msgid "Save" +msgstr "Kaydet" + +msgid "Save this game" +msgstr "Bu oyunu kaydet" + +msgid "Scenery choice" +msgstr "Manzara seçimi" + +msgid "" +"Scroll speed\n" +"with mouse" +msgstr "" +"Fare kaydırma\n" +"hızı" + +msgid "" +"Select the\n" +"window mode" +msgstr "" +"Pencere\n" +"modu seç" + +msgid "Settings" +msgstr "Ayarlar" + +msgid "Show videos" +msgstr "Videoları göster" + +msgid "Sick Blupi" +msgstr "Hasta Blupi" + +msgid "Skill level" +msgstr "Beceri düzeyi" + +msgid "Slower" +msgstr "Daha yavaş" + +msgid "" +"Sound effect\n" +"volume" +msgstr "" +"Ses efekti\n" +"seviyesi" + +msgid "Special pavings" +msgstr "Özel kaplamalar" + +msgid "Spider" +msgstr "Örümcek" + +msgid "Starting fire" +msgstr "Yangın başlatma" + +msgid "Sterile ground" +msgstr "Verimsiz toprak" + +msgid "Sticky trap" +msgstr "Yapışkan tuzak" + +msgid "Stones" +msgstr "Taşlar" + +msgid "Stop" +msgstr "Dur" + +msgid "Striped paving stones" +msgstr "Çizgili parke taşı" + +msgid "Take" +msgstr "Al" + +msgid "Teleporter" +msgstr "Işınlayıcı" + +msgid "This game is an original creation of Epsitec SA, CH-1400 Yverdon-les-Bains" +msgstr "Bu oyun Epsitec SA, CH-1400 Yverdon-les-Bains'in orijinal ürünüdür" + +msgid "This game uses statically linked free and open-source libraries:" +msgstr "Bu oyun ücretsiz ve açık kaynak kodlu kütüphaneler kullanmaktadır:" + +msgid "Time bomb" +msgstr "Saatli bomba" + +msgid "Tired Blupi" +msgstr "Bitkin Blupi" + +msgid "Tomatoes" +msgstr "Domatesler" + +msgid "Tomatoes on striped paving stones" +msgstr "Domatesler çizgili parke taşı üzerinde olsun" + +msgid "Too close to water" +msgstr "Suya çok yakın" + +msgid "Training" +msgstr "Eğitim" + +msgid "Training number" +msgstr "Eğitim no" + +msgid "Transform" +msgstr "Dönüştür" + +msgid "Transport" +msgstr "Ulaşım" + +msgid "Trapped enemy" +msgstr "Tuzağa düşmüş düşman" + +msgid "Tree" +msgstr "Ağaç" + +msgid "Tree trunks" +msgstr "Ağaç gövdeleri" + +msgid "Use Midi music (original)" +msgstr "Midi müzik kullan (orijinal)" + +msgid "Use Ogg music" +msgstr "Ogg müzik kullan" + +msgid "Version" +msgstr "Versiyon" + +msgid "Very good, success on all missions !" +msgstr "Bütün görevler başarılı !" + +msgid "Very good." +msgstr "Çok iyi." + +msgid "" +"Video\n" +"sequences" +msgstr "" +"Video\n" +"kesitleri" + +msgid "Virus" +msgstr "Virüs" + +msgid "W" +msgstr "B" + +msgid "Wall" +msgstr "Duvar" + +msgid "Wall or palisade" +msgstr "Duvar veya çit" + +msgid "Water" +msgstr "Su" + +msgid "We hope you have had as much fun playing the game as we had making it !" +msgstr "Umarız ki oyunu oynamaktan, bizim oyunu yaptığımız kadar, eğlenmişsinizdir !" + +msgid "Weapons" +msgstr "Silahlar" + +msgid "Well done !" +msgstr "Aferin !" + +msgid "Windowed" +msgstr "Pencere görünümü" + +msgid "Work done" +msgstr "Yapılan iş" + +msgid "Workshop" +msgstr "Atölye" + +msgid "Yes" +msgstr "Evet" + +msgid "Yes, great ..." +msgstr "Evet, harika." + +msgid "You have failed, try again..." +msgstr "Kaybettin, tekrar dene..." + +msgid "You have played Planet Blupi." +msgstr "Planet Blupi'yi oynadınız." + +#, c-format +msgid "construction %d, time %d" +msgstr "oyun %d, zaman %d" + +msgid "en" +msgstr "tr" + +msgid "free slot" +msgstr "boş yer" + +msgid "http://www.blupi.org info@blupi.org" +msgstr "http://www.blupi.org info@blupi.org" + +#, c-format +msgid "mission %d, time %d" +msgstr "görev %d, zaman %d" + +#, c-format +msgid "training %d, time %d" +msgstr "eğitim %d, zaman %d" diff --git a/resources/sound/he/sound002.wav b/resources/sound/he/sound002.wav Binary files differnew file mode 100644 index 0000000..ca71d55 --- /dev/null +++ b/resources/sound/he/sound002.wav diff --git a/resources/sound/he/sound003.wav b/resources/sound/he/sound003.wav Binary files differnew file mode 100644 index 0000000..57de5a4 --- /dev/null +++ b/resources/sound/he/sound003.wav diff --git a/resources/sound/he/sound004.wav b/resources/sound/he/sound004.wav Binary files differnew file mode 100644 index 0000000..4a4ba64 --- /dev/null +++ b/resources/sound/he/sound004.wav diff --git a/resources/sound/he/sound005.wav b/resources/sound/he/sound005.wav Binary files differnew file mode 100644 index 0000000..b6543e0 --- /dev/null +++ b/resources/sound/he/sound005.wav diff --git a/resources/sound/he/sound006.wav b/resources/sound/he/sound006.wav Binary files differnew file mode 100644 index 0000000..31202ea --- /dev/null +++ b/resources/sound/he/sound006.wav diff --git a/resources/sound/he/sound007.wav b/resources/sound/he/sound007.wav Binary files differnew file mode 100644 index 0000000..f4d3a38 --- /dev/null +++ b/resources/sound/he/sound007.wav diff --git a/resources/sound/he/sound008.wav b/resources/sound/he/sound008.wav Binary files differnew file mode 100644 index 0000000..357fcb2 --- /dev/null +++ b/resources/sound/he/sound008.wav diff --git a/resources/sound/he/sound009.wav b/resources/sound/he/sound009.wav Binary files differnew file mode 100644 index 0000000..cefb054 --- /dev/null +++ b/resources/sound/he/sound009.wav diff --git a/resources/sound/he/sound010.wav b/resources/sound/he/sound010.wav Binary files differnew file mode 100644 index 0000000..d3e8822 --- /dev/null +++ b/resources/sound/he/sound010.wav diff --git a/resources/sound/he/sound014.wav b/resources/sound/he/sound014.wav Binary files differnew file mode 100644 index 0000000..d5a152b --- /dev/null +++ b/resources/sound/he/sound014.wav diff --git a/resources/sound/he/sound017.wav b/resources/sound/he/sound017.wav Binary files differnew file mode 100644 index 0000000..493f56e --- /dev/null +++ b/resources/sound/he/sound017.wav diff --git a/resources/sound/he/sound018.wav b/resources/sound/he/sound018.wav Binary files differnew file mode 100644 index 0000000..025bba0 --- /dev/null +++ b/resources/sound/he/sound018.wav diff --git a/resources/sound/he/sound019.wav b/resources/sound/he/sound019.wav Binary files differnew file mode 100644 index 0000000..5f09c76 --- /dev/null +++ b/resources/sound/he/sound019.wav diff --git a/resources/sound/he/sound027.wav b/resources/sound/he/sound027.wav Binary files differnew file mode 100644 index 0000000..6454aa5 --- /dev/null +++ b/resources/sound/he/sound027.wav diff --git a/resources/sound/he/sound033.wav b/resources/sound/he/sound033.wav Binary files differnew file mode 100644 index 0000000..b2be5eb --- /dev/null +++ b/resources/sound/he/sound033.wav diff --git a/resources/sound/he/sound037.wav b/resources/sound/he/sound037.wav Binary files differnew file mode 100644 index 0000000..38f5676 --- /dev/null +++ b/resources/sound/he/sound037.wav diff --git a/resources/sound/he/sound056.wav b/resources/sound/he/sound056.wav Binary files differnew file mode 100644 index 0000000..b290ff8 --- /dev/null +++ b/resources/sound/he/sound056.wav diff --git a/resources/sound/he/sound057.wav b/resources/sound/he/sound057.wav Binary files differnew file mode 100644 index 0000000..d8c2397 --- /dev/null +++ b/resources/sound/he/sound057.wav diff --git a/resources/sound/he/sound058.wav b/resources/sound/he/sound058.wav Binary files differnew file mode 100644 index 0000000..f980342 --- /dev/null +++ b/resources/sound/he/sound058.wav diff --git a/resources/sound/he/sound059.wav b/resources/sound/he/sound059.wav Binary files differnew file mode 100644 index 0000000..5b99e65 --- /dev/null +++ b/resources/sound/he/sound059.wav diff --git a/resources/sound/he/sound060.wav b/resources/sound/he/sound060.wav Binary files differnew file mode 100644 index 0000000..5e2a023 --- /dev/null +++ b/resources/sound/he/sound060.wav diff --git a/resources/sound/he/sound061.wav b/resources/sound/he/sound061.wav Binary files differnew file mode 100644 index 0000000..9f33567 --- /dev/null +++ b/resources/sound/he/sound061.wav diff --git a/resources/sound/he/sound062.wav b/resources/sound/he/sound062.wav Binary files differnew file mode 100644 index 0000000..95a617f --- /dev/null +++ b/resources/sound/he/sound062.wav diff --git a/resources/sound/he/sound063.wav b/resources/sound/he/sound063.wav Binary files differnew file mode 100644 index 0000000..b74eef5 --- /dev/null +++ b/resources/sound/he/sound063.wav diff --git a/resources/sound/he/sound064.wav b/resources/sound/he/sound064.wav Binary files differnew file mode 100644 index 0000000..17cd655 --- /dev/null +++ b/resources/sound/he/sound064.wav diff --git a/resources/sound/he/sound065.wav b/resources/sound/he/sound065.wav Binary files differnew file mode 100644 index 0000000..3172e73 --- /dev/null +++ b/resources/sound/he/sound065.wav diff --git a/resources/sound/he/sound066.wav b/resources/sound/he/sound066.wav Binary files differnew file mode 100644 index 0000000..53cc32f --- /dev/null +++ b/resources/sound/he/sound066.wav diff --git a/resources/sound/he/sound067.wav b/resources/sound/he/sound067.wav Binary files differnew file mode 100644 index 0000000..9048cc2 --- /dev/null +++ b/resources/sound/he/sound067.wav diff --git a/resources/sound/he/sound068.wav b/resources/sound/he/sound068.wav Binary files differnew file mode 100644 index 0000000..07837aa --- /dev/null +++ b/resources/sound/he/sound068.wav diff --git a/resources/sound/he/sound069.wav b/resources/sound/he/sound069.wav Binary files differnew file mode 100644 index 0000000..baeaa7e --- /dev/null +++ b/resources/sound/he/sound069.wav diff --git a/resources/sound/he/sound070.wav b/resources/sound/he/sound070.wav Binary files differnew file mode 100644 index 0000000..90a1d87 --- /dev/null +++ b/resources/sound/he/sound070.wav diff --git a/resources/sound/he/sound071.wav b/resources/sound/he/sound071.wav Binary files differnew file mode 100644 index 0000000..364fd00 --- /dev/null +++ b/resources/sound/he/sound071.wav diff --git a/resources/sound/he/sound072.wav b/resources/sound/he/sound072.wav Binary files differnew file mode 100644 index 0000000..cc3f456 --- /dev/null +++ b/resources/sound/he/sound072.wav diff --git a/resources/sound/he/sound073.wav b/resources/sound/he/sound073.wav Binary files differnew file mode 100644 index 0000000..aacb0cf --- /dev/null +++ b/resources/sound/he/sound073.wav diff --git a/src/blupi.cxx b/src/blupi.cxx index 8c986b5..5dd9532 100644 --- a/src/blupi.cxx +++ b/src/blupi.cxx @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -361,7 +361,7 @@ HandleEvent (const SDL_Event & event) totalDim.y = 66; iconDim.x = 64; iconDim.y = 66 / 2; - g_pPixmap->Cache (CHHILI, "image/hili.png", totalDim, iconDim); + g_pPixmap->Cache (CHHILI, "hili.png", totalDim, iconDim); } SDL_SetWindowTitle (g_window, gettext ("Planet Blupi")); if (g_pSound != nullptr) @@ -865,9 +865,9 @@ DoInit (int argc, char * argv[], bool & exit) iconDim.x = 0; iconDim.y = 0; #if _INTRO - if (!g_pPixmap->Cache (CHBACK, "image/intro1.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHBACK, "intro1.png", totalDim, iconDim)) #else - if (!g_pPixmap->Cache (CHBACK, "image/init.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHBACK, "init.png", totalDim, iconDim)) #endif return EXIT_FAILURE; @@ -888,7 +888,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMCELY * 2 * 6; iconDim.x = DIMCELX * 2; iconDim.y = DIMCELY * 2; - if (!g_pPixmap->Cache (CHFLOOR, "image/floor000.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHFLOOR, "floor000.png", totalDim, iconDim)) { InitFail ("Cache floor000.png"); return EXIT_FAILURE; @@ -898,13 +898,13 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMOBJY * 8; iconDim.x = DIMOBJX; iconDim.y = DIMOBJY; - if (!g_pPixmap->Cache (CHOBJECT, "image/obj000.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHOBJECT, "obj000.png", totalDim, iconDim)) { InitFail ("Cache obj000.png"); return EXIT_FAILURE; } - if (!g_pPixmap->Cache (CHOBJECTo, "image/obj-o000.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHOBJECTo, "obj-o000.png", totalDim, iconDim)) { InitFail ("Cache obj-o000.png"); return EXIT_FAILURE; @@ -914,7 +914,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMBLUPIY * 23; iconDim.x = DIMBLUPIX; iconDim.y = DIMBLUPIY; - if (!g_pPixmap->Cache (CHBLUPI, "image/blupi.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHBLUPI, "blupi.png", totalDim, iconDim)) { InitFail ("Cache blupi.png"); return EXIT_FAILURE; @@ -924,7 +924,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = 66; iconDim.x = 64; iconDim.y = 66 / 2; - if (!g_pPixmap->Cache (CHHILI, "image/hili.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHHILI, "hili.png", totalDim, iconDim)) { InitFail ("Cache hili.png"); return EXIT_FAILURE; @@ -934,7 +934,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMCELY * 2 * 5; iconDim.x = DIMCELX * 2; iconDim.y = DIMCELY * 2; - if (!g_pPixmap->Cache (CHFOG, "image/fog.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHFOG, "fog.png", totalDim, iconDim)) { InitFail ("Cache fog.png"); return EXIT_FAILURE; @@ -944,7 +944,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMCELY * 2 * 1; iconDim.x = DIMCELX * 2; iconDim.y = DIMCELY * 2; - if (!g_pPixmap->Cache (CHMASK1, "image/mask1.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHMASK1, "mask1.png", totalDim, iconDim)) { InitFail ("Cache mask1.png"); return EXIT_FAILURE; @@ -954,7 +954,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMCELY * 2 * 1; iconDim.x = DIMCELX * 2; iconDim.y = DIMCELY * 2; - if (!g_pPixmap->Cache (CHMASK2, "image/mask2.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHMASK2, "mask2.png", totalDim, iconDim)) { InitFail ("Cache mask2.png"); return EXIT_FAILURE; @@ -964,7 +964,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMBUTTONY * 21; iconDim.x = DIMBUTTONX; iconDim.y = DIMBUTTONY; - if (!g_pPixmap->Cache (CHBUTTON, "image/button00.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHBUTTON, "button00.png", totalDim, iconDim)) { InitFail ("Cache button00.png"); return EXIT_FAILURE; @@ -974,27 +974,27 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMJAUGEY * 4; iconDim.x = DIMJAUGEX; iconDim.y = DIMJAUGEY; - if (!g_pPixmap->Cache (CHJAUGE, "image/jauge.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHJAUGE, "jauge.png", totalDim, iconDim)) { InitFail ("Cache jauge.png"); return EXIT_FAILURE; } totalDim.x = DIMTEXTX * 16; - totalDim.y = DIMTEXTY * 9 * 3; + totalDim.y = DIMTEXTY * 16 * 3; iconDim.x = DIMTEXTX; iconDim.y = DIMTEXTY; - if (!g_pPixmap->Cache (CHTEXT, "image/text.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHTEXT, "text.png", totalDim, iconDim)) { InitFail ("Cache text.png"); return EXIT_FAILURE; } totalDim.x = DIMLITTLEX * 16; - totalDim.y = DIMLITTLEY * 9; + totalDim.y = DIMLITTLEY * 16; iconDim.x = DIMLITTLEX; iconDim.y = DIMLITTLEY; - if (!g_pPixmap->Cache (CHLITTLE, "image/little.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHLITTLE, "little.png", totalDim, iconDim)) { InitFail ("Cache little.png"); return EXIT_FAILURE; @@ -1004,7 +1004,7 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = 52; iconDim.x = 426; iconDim.y = 52; - if (!g_pPixmap->Cache (CHBIGNUM, "image/bignum.png", totalDim, iconDim)) + if (!g_pPixmap->Cache (CHBIGNUM, "bignum.png", totalDim, iconDim)) { InitFail ("Cache bignum.png"); return EXIT_FAILURE; diff --git a/src/button.cxx b/src/button.cxx index 7a09128..fe934ed 100644 --- a/src/button.cxx +++ b/src/button.cxx @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -55,7 +55,8 @@ CButton::~CButton () {} bool CButton::Create ( CPixmap * pPixmap, CSound * pSound, Point pos, Sint32 type, Sint32 * pMenu, - Sint32 nbMenu, const char ** pToolTips, Sint32 region, Uint32 message) + Sint32 nbMenu, const char ** pToolTips, Sint32 region, Uint32 message, + bool isRightReading) { Point iconDim; Sint32 i, icon; @@ -92,6 +93,16 @@ CButton::Create ( { icon = pMenu[i]; + if (isRightReading) + { + if (icon == 51) // right arrow + icon = 50; + else if (icon == 50) // left arrow + icon = 51; + else if (icon == 40) // stop + icon = 109; + } + if (region == 1) // palmiers ? { if (icon == 0) @@ -144,28 +155,27 @@ void CButton::Draw () { Sint32 i; - Point pos; + Point pos = this->m_pos; Rect rect; if (m_bHide) // bouton caché ? { - rect.left = m_pos.x; - 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); // dessine le fond + rect.left = pos.x; + rect.right = pos.x + m_dim.x; + rect.top = pos.y; + rect.bottom = pos.y + m_dim.y; + m_pPixmap->DrawPart (-1, CHBACK, pos, rect); // dessine le fond return; } if (m_bEnable) // bouton actif ? - m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, m_mouseState, m_pos); + m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, m_mouseState, pos); else - m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, 4, m_pos); + m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, 4, pos); if (m_nbMenu == 0) return; - pos = m_pos; if (m_nbMenu > 0) { m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, m_iconMenu[m_selMenu] + 6, pos); @@ -174,13 +184,12 @@ CButton::Draw () if (m_nbMenu == 1 || !m_bEnable || !m_bMouseDown) return; - pos = m_pos; - pos.x += m_dim.x + 2; + pos.x += IsRightReading () ? -m_dim.x - 2 : m_dim.x + 2; for (i = 0; i < m_nbMenu; i++) { m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, i == m_selMenu ? 1 : 0, pos); m_pPixmap->DrawIcon (-1, CHBUTTON + m_type, m_iconMenu[i] + 6, pos); - pos.x += m_dim.x - 1; + pos.x += IsRightReading () ? -m_dim.x - 1 : m_dim.x - 1; } } @@ -292,24 +301,43 @@ CButton::MouseOnButton (Point pos) return Detect (pos); } +bool +CButton::IsInMenu (const Point & pos) +{ + Sint32 width = m_dim.x; + + if (m_nbMenu > 1 && m_bMouseDown) // submenu expanded ? + width += 2 + (m_dim.x + (IsRightReading () ? 1 : -1)) * m_nbMenu; + + if (IsRightReading () && m_nbMenu > 1 && m_bMouseDown) + { + if (pos.x > m_pos.x + m_dim.x || pos.x < m_pos.x - width + m_dim.x) + return false; + } + else + { + if (pos.x < m_pos.x || pos.x > m_pos.x + width) + return false; + } + + if (pos.y < m_pos.y || pos.y > m_pos.y + m_dim.y) + return false; + + return true; +} + // Retourne le tooltips pour un bouton, en fonction // de la position de la souris. const char * CButton::GetToolTips (Point pos) { - Sint32 width = m_dim.x; Sint32 rank; if (m_bHide || !m_bEnable) return nullptr; - if (m_nbMenu > 1 && m_bMouseDown) // sous-menu déroulé ? - width += 2 + (m_dim.x - 1) * m_nbMenu; - - if ( - pos.x < m_pos.x || pos.x > m_pos.x + width || pos.y < m_pos.y || - pos.y > m_pos.y + m_dim.y) + if (!this->IsInMenu (pos)) return nullptr; rank = (pos.x - (m_pos.x + 2 + 1)) / (m_dim.x - 1); @@ -334,20 +362,10 @@ CButton::GetToolTips (Point pos) bool CButton::Detect (Point pos) { - Sint32 width = m_dim.x; - if (m_bHide || !m_bEnable) return false; - if (m_nbMenu > 1 && m_bMouseDown) // sous-menu déroulé ? - width += 2 + (m_dim.x - 1) * m_nbMenu; - - if ( - pos.x < m_pos.x || pos.x > m_pos.x + width || pos.y < m_pos.y || - pos.y > m_pos.y + m_dim.y) - return false; - - return true; + return this->IsInMenu (pos); } // Bouton de la souris pressé. @@ -397,9 +415,12 @@ CButton::MouseMove (Point pos) if ( m_nbMenu > 1 && m_bMouseDown && - pos.x > m_pos.x + m_dim.x + 2) // dans sous-menu ? + (IsRightReading () ? pos.x < m_pos.x + : pos.x > m_pos.x + m_dim.x + 2)) // in sub-menu ? { - m_selMenu = (pos.x - (m_pos.x + m_dim.x + 2)) / (m_dim.x - 1); + m_selMenu = IsRightReading () + ? (m_pos.x - 2 - pos.x) / (m_dim.x + 1) + : (pos.x - (m_pos.x + m_dim.x + 2)) / (m_dim.x - 1); if (m_selMenu >= m_nbMenu) m_selMenu = m_nbMenu - 1; } diff --git a/src/button.h b/src/button.h index a666f35..bc991d3 100644 --- a/src/button.h +++ b/src/button.h @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -36,7 +36,8 @@ public: bool Create ( CPixmap * pPixmap, CSound * pSound, Point pos, Sint32 type, Sint32 * pMenu, - Sint32 nbMenu, const char ** pToolTips, Sint32 region, Uint32 message); + Sint32 nbMenu, const char ** pToolTips, Sint32 region, Uint32 message, + bool isRightReading); void Draw (); Sint32 GetState (); @@ -58,6 +59,7 @@ public: protected: bool Detect (Point pos); + bool IsInMenu (const Point & pos); bool MouseDown (Point pos); bool MouseMove (Point pos); bool MouseUp (Point pos); diff --git a/src/decblupi.cxx b/src/decblupi.cxx index e29513a..1475e4a 100644 --- a/src/decblupi.cxx +++ b/src/decblupi.cxx @@ -200,7 +200,7 @@ void CDecor::BlupiDelete (Sint32 rank) { m_blupi[rank].bExist = false; - this->m_pSound->StopSound(true, rank); + this->m_pSound->StopSound (true, rank); if ( !m_bBuild && // phase de jeu ? @@ -237,7 +237,7 @@ CDecor::BlupiKill (Sint32 exRank, Point cel, Sint32 type) if (type == 0) // explosion ? { m_blupi[rank].bExist = false; // mort instantannée - this->m_pSound->StopSound(true, rank); + this->m_pSound->StopSound (true, rank); } if (type == 1) // électro ? @@ -2477,26 +2477,26 @@ CDecor::BlupiNextAction (Sint32 rank) * direction and a second from the other direction. Without this check, the * object is duplicated. */ - for (int i = 0; i < MAXBLUPI; ++i) - { - if (rank == i || !m_blupi[i].bExist) - continue; - - if ( - (m_blupi[rank].goalAction == EV_ACTION_CARRY || + if ((m_blupi[rank].goalAction == EV_ACTION_CARRY || m_blupi[rank].goalAction == EV_ACTION_EAT || - m_blupi[rank].goalAction == EV_ACTION_DRINK) && - (m_blupi[i].goalAction == EV_ACTION_CARRY2 || - m_blupi[i].goalAction == EV_ACTION_EAT2 || - m_blupi[i].goalAction == EV_ACTION_DRINK2) && - m_blupi[rank].goalHili.x == m_blupi[i].goalHili.x && - m_blupi[rank].goalHili.y == m_blupi[i].goalHili.y) + m_blupi[rank].goalAction == EV_ACTION_DRINK)) + for (int i = 0; i < MAXBLUPI; ++i) { - BlupiInitAction (i, ACTION_STOP); - GoalStop (i, true); - return false; + if (rank == i || !m_blupi[i].bExist) + continue; + + if ( + (m_blupi[i].goalAction == EV_ACTION_CARRY2 || + m_blupi[i].goalAction == EV_ACTION_EAT2 || + m_blupi[i].goalAction == EV_ACTION_DRINK2) && + m_blupi[rank].goalHili.x == m_blupi[i].goalHili.x && + m_blupi[rank].goalHili.y == m_blupi[i].goalHili.y) + { + BlupiInitAction (i, ACTION_STOP); + GoalStop (i, true); + 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) diff --git a/src/decor.cxx b/src/decor.cxx index 42be5f3..a6ba4b6 100644 --- a/src/decor.cxx +++ b/src/decor.cxx @@ -248,7 +248,7 @@ CDecor::LoadImages () totalDim.y = DIMCELY * 2 * 6; iconDim.x = DIMCELX * 2; iconDim.y = DIMCELY * 2; - snprintf (filename, sizeof (filename), "image/floor%.3d.png", m_region); + snprintf (filename, sizeof (filename), "floor%.3d.png", m_region); if (!m_pPixmap->Cache (CHFLOOR, filename, totalDim, iconDim)) return false; @@ -256,11 +256,11 @@ CDecor::LoadImages () totalDim.y = DIMOBJY * 8; iconDim.x = DIMOBJX; iconDim.y = DIMOBJY; - snprintf (filename, sizeof (filename), "image/obj%.3d.png", m_region); + snprintf (filename, sizeof (filename), "obj%.3d.png", m_region); if (!m_pPixmap->Cache (CHOBJECT, filename, totalDim, iconDim)) return false; - snprintf (filename, sizeof (filename), "image/obj-o%.3d.png", m_region); + snprintf (filename, sizeof (filename), "obj-o%.3d.png", m_region); if (!m_pPixmap->Cache (CHOBJECTo, filename, totalDim, iconDim)) return false; @@ -1346,7 +1346,8 @@ CDecor::Build (Rect clip, Point posMouse) tPos = pos; tPos.x += 9; tPos.y -= 24; - m_pPixmap->DrawIcon (-1, CHBUTTON, 46, tPos); + m_pPixmap->DrawIcon ( + -1, CHBUTTON, IsRightReading () ? 115 : 46, tPos); } // Dessine blupi @@ -1538,7 +1539,7 @@ term: const auto text = GetResHili (posMouse); if (text) { - posMouse.x += 10; + posMouse.x += IsRightReading () ? 0 : 10; posMouse.y += 20; DrawText (m_pPixmap, posMouse, text); } @@ -1843,7 +1844,8 @@ CDecor::CelOkForAction ( GetFloor (cel, channel, icon); if ( // mine ? action == EV_ACTION_BUILD4 && - ((!g_restoreBugs && !m_decorMem[cel.x / 2][cel.y / 2].flagged) || // fixed + ((!g_restoreBugs && + !m_decorMem[cel.x / 2][cel.y / 2].flagged) || // fixed (g_restoreBugs && (channel != CHFLOOR || icon != 71)))) // funny bug { error = Errors::GROUND; // sol pas adéquat @@ -3504,4 +3506,4 @@ void CDecor::InvalidateGrounds () { m_bGroundRedraw = true; -}
\ No newline at end of file +} diff --git a/src/decstat.cxx b/src/decstat.cxx index aed44bb..1a6048d 100644 --- a/src/decstat.cxx +++ b/src/decstat.cxx @@ -734,13 +734,13 @@ CDecor::StatisticDraw () if (pStatistic->nb > 0) { - pos.x -= 3; + pos.x -= IsRightReading () ? -21 : 3; pos.y -= 5; m_pPixmap->DrawIcon (-1, CHBUTTON, icon, pos); nb = pStatistic->nb; snprintf (text, sizeof (text), "%d", nb); - pos.x += 3 + 34; + pos.x += IsRightReading () ? -21 + 22 : 3 + 34; pos.y += 5 + 7; DrawText (m_pPixmap, pos, text); } @@ -775,7 +775,9 @@ CDecor::StatisticDraw () if (strlen (textRes)) { nb = GetTextWidth (textRes); - pos.x += (POSDRAWX - nb) / 2; + pos.x += (POSDRAWX_ - nb) / 2; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, textRes); } } @@ -1011,16 +1013,22 @@ Sint32 CDecor::StatisticDetect (Point pos, bool & disable) { Sint32 rank; + Point _pos = pos; disable = false; + if (IsRightReading ()) + _pos.x = LXIMAGE () - _pos.x; + // Dans un bouton stop/setup/write ? - if (pos.x >= 10 && pos.x <= 10 + 42 * 3 && pos.y >= 422 && pos.y <= 422 + 40) + if ( + _pos.x >= 10 && _pos.x <= 10 + 42 * 3 && _pos.y >= 422 && + _pos.y <= 422 + 40) { - pos.x -= 10; - if (pos.x % 42 > 40) + _pos.x -= 10; + if (_pos.x % 42 > 40) return -1; - return 100 + pos.x / 42; + return 100 + _pos.x / 42; } if ( @@ -23,19 +23,21 @@ #include <SDL_stdinc.h> #include "display.h" +#include "misc.h" // clang-format off #define _INTRO true // true for init screen -#define POSDRAWX 144 // draw surface -#define POSDRAWY 15 #define DIMDRAWX (LXIMAGE () - (LXLOGIC () - LYLOGIC ())) #define DIMDRAWY 450 +#define POSDRAWX_ 144 +#define POSDRAWX (IsRightReading () ? LXIMAGE () - POSDRAWX_ - DIMDRAWX : POSDRAWX_) // draw surface +#define POSDRAWY 15 -#define POSMAPX 8 // map surface -#define POSMAPY 15 #define DIMMAPX 128 #define DIMMAPY 128 +#define POSMAPX (IsRightReading () ? LXIMAGE () - 8 - DIMMAPX : 8) // map surface +#define POSMAPY 15 #define MAXCELX 200 // max cells for a world #define MAXCELY 200 @@ -56,10 +58,10 @@ #define DIMJAUGEX 124 // progress size #define DIMJAUGEY 22 -#define POSSTATX 12 // statistics -#define POSSTATY 220 #define DIMSTATX 60 #define DIMSTATY 30 +#define POSSTATX (IsRightReading () ? LXIMAGE () - 12 - DIMSTATX * 2 : 12) // statistics +#define POSSTATY 220 #define DIMTEXTX 16 // max char size #define DIMTEXTY 16 diff --git a/src/event.cxx b/src/event.cxx index 618c424..05832f3 100644 --- a/src/event.cxx +++ b/src/event.cxx @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -103,8 +103,8 @@ static Phase table[] = { { EV_PHASE_TESTCD, - "image/init.png", - "image/back-stars.png", + "init.png", + "back-stars.png", CPixmap::Mode::FIX, false, { @@ -116,7 +116,7 @@ static Phase table[] = { EV_PHASE_INTRO1, - "image/intro1.png", + "intro1.png", "", CPixmap::Mode::FIX, false, @@ -129,8 +129,8 @@ static Phase table[] = { EV_PHASE_INIT, - "image/init.png", - "image/back-stars.png", + "init.png", + "back-stars.png", CPixmap::Mode::FIX, false, { @@ -178,9 +178,9 @@ static Phase table[] = { EV_PHASE_HISTORY0, - "image/history0.png", - "image/back-book.png", - CPixmap::Mode::FIX, + "history0.png", + "back-book.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -203,9 +203,9 @@ static Phase table[] = { EV_PHASE_HISTORY1, - "image/history1.png", - "image/back-book.png", - CPixmap::Mode::FIX, + "history1.png", + "back-book.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -228,9 +228,9 @@ static Phase table[] = { EV_PHASE_INFO, - "image/info%.3d.png", - "image/back-book.png", - CPixmap::Mode::FIX, + "info%.3d.png", + "back-book.png", + CPixmap::Mode::FIX_REVERSABLE, false, { { @@ -295,9 +295,9 @@ static Phase table[] = { EV_PHASE_PLAY, - "image/play.png", + "play.png", "", - CPixmap::Mode::EXPAND, + CPixmap::Mode::EXPAND_REVERSABLE, false, { { @@ -326,9 +326,9 @@ static Phase table[] = { EV_PHASE_STOP, - "image/stop%.3d.png", - "image/back-book.png", - CPixmap::Mode::FIX, + "stop%.3d.png", + "back-book.png", + CPixmap::Mode::FIX_REVERSABLE, false, { { @@ -375,9 +375,9 @@ static Phase table[] = { EV_PHASE_HELP, - "image/help.png", - "image/back-book.png", - CPixmap::Mode::FIX, + "help.png", + "back-book.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -418,8 +418,8 @@ static Phase table[] = { EV_PHASE_SETUP, - "image/setup01.png", - "image/back-setup.png", + "setup01.png", + "back-setup.png", CPixmap::Mode::FIX, false, { @@ -497,8 +497,8 @@ static Phase table[] = { EV_PHASE_SETUPp, - "image/setup01.png", - "image/back-setup.png", + "setup01.png", + "back-setup.png", CPixmap::Mode::FIX, false, { @@ -576,9 +576,9 @@ static Phase table[] = { EV_PHASE_READ, - "image/read.png", - "image/back-chest-r.png", - CPixmap::Mode::FIX, + "read.png", + "back-chest-r.png", + CPixmap::Mode::FIX_REVERSABLE, false, { { @@ -655,9 +655,9 @@ static Phase table[] = { EV_PHASE_WRITE, - "image/write.png", - "image/back-chest-w.png", - CPixmap::Mode::FIX, + "write.png", + "back-chest-w.png", + CPixmap::Mode::FIX_REVERSABLE, false, { { @@ -734,9 +734,9 @@ static Phase table[] = { EV_PHASE_WRITEp, - "image/write.png", - "image/back-chest-w.png", - CPixmap::Mode::FIX, + "write.png", + "back-chest-w.png", + CPixmap::Mode::FIX_REVERSABLE, false, { { @@ -813,8 +813,8 @@ static Phase table[] = { EV_PHASE_LOST, - "image/lost.png", - "image/back-lost.png", + "lost.png", + "back-lost.png", CPixmap::Mode::FIX, true, { @@ -832,8 +832,8 @@ static Phase table[] = { EV_PHASE_WIN, - "image/win.png", - "image/back-win.png", + "win.png", + "back-win.png", CPixmap::Mode::FIX, true, { @@ -851,7 +851,7 @@ static Phase table[] = { EV_PHASE_LASTWIN, - "image/last%.3d.png", + "last%.3d.png", "", CPixmap::Mode::FIX, true, @@ -870,9 +870,9 @@ static Phase table[] = { EV_PHASE_BUILD, - "image/build.png", + "build.png", "", - CPixmap::Mode::EXPAND, + CPixmap::Mode::EXPAND_REVERSABLE, true, { { @@ -987,9 +987,9 @@ static Phase table[] = { EV_PHASE_BUTTON, - "image/button.png", - "image/back-build.png", - CPixmap::Mode::FIX, + "button.png", + "back-build.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -1209,9 +1209,9 @@ static Phase table[] = { EV_PHASE_TERM, - "image/term.png", - "image/back-build.png", - CPixmap::Mode::FIX, + "term.png", + "back-build.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -1300,9 +1300,9 @@ static Phase table[] = { EV_PHASE_MUSIC, - "image/music.png", - "image/back-build.png", - CPixmap::Mode::FIX, + "music.png", + "back-build.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -1385,9 +1385,9 @@ static Phase table[] = { EV_PHASE_REGION, - "image/region.png", - "image/back-build.png", - CPixmap::Mode::FIX, + "region.png", + "back-build.png", + CPixmap::Mode::FIX_REVERSABLE, true, { { @@ -1428,7 +1428,7 @@ static Phase table[] = { EV_PHASE_PLAYMOVIE, - "image/movie.png", + "movie.png", "", CPixmap::Mode::FIX, false, @@ -1441,7 +1441,7 @@ static Phase table[] = { EV_PHASE_WINMOVIE, - "image/movie.png", + "movie.png", "", CPixmap::Mode::FIX, false, @@ -1454,7 +1454,7 @@ static Phase table[] = { EV_PHASE_H0MOVIE, - "image/movie.png", + "movie.png", "", CPixmap::Mode::FIX, false, @@ -1467,7 +1467,7 @@ static Phase table[] = { EV_PHASE_H1MOVIE, - "image/movie.png", + "movie.png", "", CPixmap::Mode::FIX, false, @@ -1480,7 +1480,7 @@ static Phase table[] = { EV_PHASE_H2MOVIE, - "image/movie.png", + "movie.png", "", CPixmap::Mode::FIX, false, @@ -1493,8 +1493,8 @@ static Phase table[] = { EV_PHASE_BYE, - "image/bye.png", - "image/back-bye.png", + "bye.png", + "back-bye.png", CPixmap::Mode::FIX, false, { @@ -1506,7 +1506,7 @@ static Phase table[] = { EV_PHASE_INSERT, - "image/insert.png", + "insert.png", "", CPixmap::Mode::FIX, false, @@ -1525,8 +1525,8 @@ static Phase table[] = { EV_PHASE_SETTINGS, - "image/setup00.png", - "image/back-setup.png", + "setup00.png", + "back-setup.png", CPixmap::Mode::FIX, false, { @@ -1642,6 +1642,7 @@ CEvent::CEvent () m_bHelp = false; m_bAllMissions = false; m_scrollSpeed = 1; + m_scrollSpeedPrev = -1; m_bPause = false; m_bShift = false; m_shiftPhase = 0; @@ -1684,6 +1685,9 @@ CEvent::CEvent () m_Languages.push_back (Language::de); m_Languages.push_back (Language::it); m_Languages.push_back (Language::pl); + m_Languages.push_back (Language::tr); + m_Languages.push_back (Language::pt); + m_Languages.push_back (Language::he); this->m_LangStart = GetLocale (); @@ -1697,6 +1701,12 @@ CEvent::CEvent () m_Lang = m_Languages.begin () + 4; else if (this->m_LangStart == "pl") m_Lang = m_Languages.begin () + 5; + else if (this->m_LangStart == "tr") + m_Lang = m_Languages.begin () + 6; + else if (this->m_LangStart == "pt") + m_Lang = m_Languages.begin () + 7; + else if (this->m_LangStart == "he") + m_Lang = m_Languages.begin () + 8; else m_Lang = m_Languages.begin (); @@ -2019,10 +2029,20 @@ CEvent::CreateButtons (Sint32 phase) pos.y = table[m_index].buttons[i].y; message = table[m_index].buttons[i].message; + auto isRightReading = + ((message == EV_PHASE_INIT || message == EV_PHASE_PLAY || + message == EV_SETUP_EXIT) || + (phase != EV_PHASE_SETTINGS && phase != EV_PHASE_SETUP && + phase != EV_PHASE_SETUPp)) && + IsRightReading (); + + if (isRightReading) + pos.x = LXIMAGE () - pos.x - DIMBUTTONX; + if ( phase != EV_PHASE_PLAY && phase != EV_PHASE_BUILD && phase != EV_PHASE_INIT) - pos.x += LXOFFSET (); + pos.x = isRightReading ? pos.x - LXOFFSET () : pos.x + LXOFFSET (); if (m_bPrivate) { @@ -2030,11 +2050,15 @@ CEvent::CreateButtons (Sint32 phase) { pos.x = 117 + LXOFFSET (); pos.y = 115; + if (isRightReading) + pos.x = LXIMAGE () - pos.x - DIMBUTTONX; } if (message == EV_PHASE_SKILL2) { pos.x = 117 + LXOFFSET (); pos.y = 115 + 42; + if (isRightReading) + pos.x = LXIMAGE () - pos.x - DIMBUTTONX; } } @@ -2042,7 +2066,7 @@ CEvent::CreateButtons (Sint32 phase) m_pPixmap, m_pSound, pos, table[m_index].buttons[i].type, table[m_index].buttons[i].iconMenu + 1, table[m_index].buttons[i].iconMenu[0], table[m_index].buttons[i].toolTips, - m_pDecor->GetRegion (), message); + m_pDecor->GetRegion (), message, isRightReading); i++; } @@ -2124,6 +2148,8 @@ CEvent::DrawButtons () rect.right = pos.x + 300; rect.top = pos.y; rect.bottom = pos.y + DIMLITTLEY; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text, FONTLITTLE); } } @@ -2133,7 +2159,8 @@ CEvent::DrawButtons () snprintf ( res, sizeof (res), "%s %u.%u.%u%s", gettext ("Version"), PB_VERSION_MAJOR, PB_VERSION_MINOR, PB_VERSION_PATCH, PB_VERSION_EXTRA); - pos.x = LXIMAGE () - GetTextWidth (res, FONTLITTLE) - 4; + pos.x = IsRightReading () ? 4 + GetTextWidth (res, FONTLITTLE) + : LXIMAGE () - GetTextWidth (res, FONTLITTLE) - 4; pos.y = 465; DrawText (m_pPixmap, pos, res, FONTLITTLE); @@ -2145,6 +2172,8 @@ CEvent::DrawButtons () res, sizeof (res), gettext ("New version available for download on www.blupi.org (v%s)"), this->m_updateVersion.c_str ()); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, res, FONTLITTLE); } } @@ -2270,28 +2299,30 @@ CEvent::DrawButtons () } m_menu.Draw (); + auto offset = IsRightReading () ? POSDRAWX + DIMDRAWX : 0; + // Dessine la rose des vents. if (!m_bPause && !m_bDemoPlay) { - DrawTextCenter (gettext ("N"), (10 + 134) / 2, 17); - DrawTextCenter (gettext ("S"), (10 + 134) / 2, 126); - DrawTextCenter (gettext ("W"), 14, 70); - DrawTextCenter (gettext ("E"), 129, 70); + DrawTextCenter (gettext ("N"), (10 + 134) / 2 + offset, 17); + DrawTextCenter (gettext ("S"), (10 + 134) / 2 + offset, 126); + DrawTextCenter (gettext ("W"), 14 + offset, 70); + DrawTextCenter (gettext ("E"), 129 + offset, 70); } // Dessine la pause. if (m_bPause) - DrawTextCenter (gettext ("Game paused"), (10 + 134) / 2, 20); + DrawTextCenter (gettext ("Game paused"), (10 + 134) / 2 + offset, 20); else { if (m_bDemoRec) // recording demo ? - DrawTextCenter (gettext ("REC"), (10 + 38) / 2, 20, FONTRED); + DrawTextCenter (gettext ("REC"), (10 + 38) / 2 + offset, 20, FONTRED); if (m_bDemoPlay) // playing demo ? - DrawTextCenter (gettext ("Demo"), (10 + 134) / 2, 20, FONTRED); + DrawTextCenter (gettext ("Demo"), (10 + 134) / 2 + offset, 20, FONTRED); } // Dessine la vitesse. - pos.x = 64; + pos.x = IsRightReading () ? LXIMAGE () - 64 : 64; pos.y = LYIMAGE () - 15; rect.left = pos.x; rect.right = pos.x + 20; @@ -2325,10 +2356,14 @@ CEvent::DrawButtons () rect.bottom = POSDRAWY; m_pPixmap->DrawPart (-1, CHBACK, pos, rect); - pos.x = POSDRAWX + 20; + pos.x = POSDRAWX_ + 20; pos.y = POSDRAWY + 4; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawTextRect (m_pPixmap, pos, m_libelle, 0, FONTLITTLE, 1); - pos.x = POSDRAWX + DIMDRAWX / 2 + 20; + pos.x = POSDRAWX_ + DIMDRAWX / 2 + 20; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawTextRect (m_pPixmap, pos, m_libelle, 0, FONTLITTLE, 2); pos.x = POSDRAWX + DIMDRAWX / 2 - DIMBUTTONX / 2; @@ -2341,6 +2376,8 @@ CEvent::DrawButtons () { m_posHelpButton.x = POSDRAWX + DIMDRAWX - DIMBUTTONX - 2; m_posHelpButton.y = lg - DIMBUTTONY - 2; + if (IsRightReading ()) + m_posHelpButton.x = POSDRAWX + 2; m_pPixmap->DrawIcon ( -1, CHBUTTON, m_bHiliHelpButton ? 2 : 0, m_posHelpButton); if (m_bInfoHelp) @@ -2354,6 +2391,8 @@ CEvent::DrawButtons () { pos.x = POSDRAWX + DIMDRAWX / 2 - DIMBUTTONX / 2; pos.y = -12; + if (IsRightReading ()) + m_posHelpButton.x = POSDRAWX + 2; m_pPixmap->DrawIcon (-1, CHBUTTON, m_bHiliInfoButton ? 75 : 74, pos); } m_posInfoButton = pos; @@ -2371,6 +2410,8 @@ CEvent::DrawButtons () pos.x = 420 + LXOFFSET (); pos.y = 8; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, res); for (i = 0; i < 10; i++) @@ -2382,9 +2423,13 @@ CEvent::DrawButtons () lg = GetTextWidth (text); pos.x = (420 + 460) / 2 - lg / 2 + LXOFFSET (); pos.y = 30 + 12 + 42 * i; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text, FONTSLIM); pos.x = 420 + 50 + LXOFFSET (); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; if (world >= 0) { @@ -2413,14 +2458,18 @@ CEvent::DrawButtons () { Term * pTerm = m_pDecor->GetTerminated (); - DrawTextCenter ( - gettext ("Ending conditions"), (10 + 134) / 2 + LXOFFSET (), 20); + auto x = (10 + 134) / 2 + LXOFFSET (); + if (IsRightReading ()) + x = LXIMAGE () - x; + DrawTextCenter (gettext ("Ending conditions"), x, 20); pos.x = 170 + 42 * 2 + 4 + LXOFFSET (); pos.y = 30 + 12 + 42 * 4; snprintf ( text, sizeof (text), gettext ("Lost if less than %d Blupi"), pTerm->nbMinBlupi); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text); pos.x = 170 + 42 * 2 + 4 + LXOFFSET (); @@ -2428,22 +2477,37 @@ CEvent::DrawButtons () snprintf ( text, sizeof (text), gettext ("Impossible to win if less than %d Blupi"), pTerm->nbMaxBlupi); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text); } // Dessine les textes pour les choix des boutons. if (m_phase == EV_PHASE_BUTTON) - DrawTextCenter ( - gettext ("Available buttons"), (10 + 134) / 2 + LXOFFSET (), 20); + { + auto x = (10 + 134) / 2 + LXOFFSET (); + if (IsRightReading ()) + x = LXIMAGE () - x; + DrawTextCenter (gettext ("Available buttons"), x, 20); + } // Dessine les textes pour le choix des musiques. if (m_phase == EV_PHASE_MUSIC) - DrawTextCenter (gettext ("Music choice"), (10 + 134) / 2 + LXOFFSET (), 20); + { + auto x = (10 + 134) / 2 + LXOFFSET (); + if (IsRightReading ()) + x = LXIMAGE () - x; + DrawTextCenter (gettext ("Music choice"), x, 20); + } // Dessine les textes pour le choix de la région. if (m_phase == EV_PHASE_REGION) - DrawTextCenter ( - gettext ("Scenery choice"), (10 + 134) / 2 + LXOFFSET (), 20); + { + auto x = (10 + 134) / 2 + LXOFFSET (); + if (IsRightReading ()) + x = LXIMAGE () - x; + DrawTextCenter (gettext ("Scenery choice"), x, 20); + } // Ajoute "Mission numéro". if (m_phase == EV_PHASE_INFO) @@ -2465,6 +2529,8 @@ CEvent::DrawButtons () pos.x -= 100; if (m_bPrivate) pos.y += 14; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, res, FONTSLIM); } @@ -2481,6 +2547,8 @@ CEvent::DrawButtons () pos.x -= 100; if (m_bPrivate) pos.y += 14; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text, FONTRED); } @@ -2497,6 +2565,8 @@ CEvent::DrawButtons () pos.x -= 100; if (m_bPrivate) pos.y += 14; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text, FONTRED); } @@ -2513,6 +2583,7 @@ CEvent::DrawButtons () world = m_private; lg = GetBignumWidth (world + 1); + lg = IsRightReading () ? -lg : lg; pos.x = (140 + 270) / 2 - lg / 2 + LXOFFSET (); pos.y = 100; if (m_bSchool) @@ -2521,6 +2592,8 @@ CEvent::DrawButtons () pos.x -= 135; if (m_bPrivate) pos.y = 115; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawBignum (m_pPixmap, pos, world + 1); } @@ -2529,6 +2602,7 @@ CEvent::DrawButtons () { if (!m_bSchool) { + std::string text; if (m_pDecor->GetSkill () == 0) { if (m_bPrivate) @@ -2542,10 +2616,9 @@ CEvent::DrawButtons () pos.y = 230 + 13; } pos.x += LXOFFSET (); - DrawText (m_pPixmap, pos, gettext ("Easy"), FONTSLIM); + text = gettext ("Easy"); } - - if (m_pDecor->GetSkill () == 1) + else if (m_pDecor->GetSkill () == 1) { if (m_bPrivate) { @@ -2558,8 +2631,12 @@ CEvent::DrawButtons () pos.y = 230 + 42 + 13; } pos.x += LXOFFSET (); - DrawText (m_pPixmap, pos, gettext ("Difficult"), FONTSLIM); + text = gettext ("Difficult"); } + + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; + DrawText (m_pPixmap, pos, text.c_str (), FONTSLIM); } } @@ -2583,6 +2660,8 @@ CEvent::DrawButtons () else pente = 19; pos.x += LXOFFSET (); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawTextRect (m_pPixmap, pos, m_libelle, pente, FONTSLIM); } @@ -2599,6 +2678,8 @@ CEvent::DrawButtons () pos.x = 60 + LXOFFSET (); pos.y = 443; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, list[GetWorld () % 5]); } @@ -2613,6 +2694,8 @@ CEvent::DrawButtons () pos.x = 60 + LXOFFSET (); pos.y = 443; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, list[GetWorld () % 5]); } @@ -2630,6 +2713,8 @@ CEvent::DrawButtons () pos.x = 60 + LXOFFSET (); pos.y = 443; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; DrawText (m_pPixmap, pos, text); } @@ -2646,18 +2731,21 @@ CEvent::DrawButtons () snprintf (res, sizeof (res), "x%d", m_speed); lg = GetTextWidth (res); + lg = IsRightReading () ? -lg : lg; pos.x = (54 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, res); snprintf (res, sizeof (res), "%d", m_pSound->GetAudioVolume ()); lg = GetTextWidth (res); + lg = IsRightReading () ? -lg : lg; pos.x = (284 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, res); snprintf (res, sizeof (res), "%d", m_pSound->GetMidiVolume ()); lg = GetTextWidth (res); + lg = IsRightReading () ? -lg : lg; pos.x = (399 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, res); @@ -2666,6 +2754,7 @@ CEvent::DrawButtons () if (m_pMovie->GetEnable () && m_bMovie) text = gettext ("Yes"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = (514 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, text); @@ -2675,6 +2764,7 @@ CEvent::DrawButtons () else snprintf (res, sizeof (res), "%d", m_scrollSpeed); lg = GetTextWidth (res); + lg = IsRightReading () ? -lg : lg; pos.x = (169 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, res); @@ -2710,8 +2800,15 @@ CEvent::DrawButtons () lang = "Italiano"; else if (locale == "pl") lang = "Polski"; + else if (locale == "tr") + lang = "Türkçe"; + else if (locale == "pt") + lang = "Português"; + else if (locale == "he") + lang = "עברית"; lg = GetTextWidth (lang.c_str ()); + lg = IsRightReading () ? -lg : lg; pos.x = (54 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, lang.c_str ()); @@ -2719,6 +2816,7 @@ CEvent::DrawButtons () const char * text = g_bFullScreen ? gettext ("Fullscreen") : gettext ("Windowed"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = (169 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, text); @@ -2731,12 +2829,14 @@ CEvent::DrawButtons () g_zoom == 2 ? gettext ("Legacy") : gettext ("Desktop")); lg = GetTextWidth (res); + lg = IsRightReading () ? -lg : lg; pos.x = (284 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, res); text = (g_restoreMidi && mid) || !ogg ? gettext ("Midi") : gettext ("Ogg"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = (399 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, text); @@ -2746,6 +2846,7 @@ CEvent::DrawButtons () ? (g_renderQuality ? gettext ("Anti-aliasing") : gettext ("Aliasing")) : gettext ("Not available"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = (514 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, text); @@ -2758,6 +2859,7 @@ CEvent::DrawButtons () text = gettext ("You have played Planet Blupi."); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = LXIMAGE () / 2 - lg / 2; pos.y = 20; DrawText (m_pPixmap, pos, text); @@ -2765,6 +2867,7 @@ CEvent::DrawButtons () text = gettext ("We hope you have had as much fun playing the game as we " "had making it !"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = LXIMAGE () / 2 - lg / 2; pos.y = 40; DrawText (m_pPixmap, pos, text); @@ -2790,6 +2893,8 @@ CEvent::DrawButtons () for (size_t i = 0; i < countof (libs); ++i) { pos.x = 30 + LXOFFSET (); + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x; pos.y = 120 + i * 20; DrawText (m_pPixmap, pos, libs[i].c_str ()); } @@ -2797,12 +2902,14 @@ CEvent::DrawButtons () text = gettext ("This game is an original creation of Epsitec SA, CH-1400 " "Yverdon-les-Bains"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = LXIMAGE () / 2 - lg / 2; pos.y = 430; DrawText (m_pPixmap, pos, text); text = gettext ("http://www.blupi.org info@blupi.org"); lg = GetTextWidth (text); + lg = IsRightReading () ? -lg : lg; pos.x = LXIMAGE () / 2 - lg / 2; pos.y = 450; DrawText (m_pPixmap, pos, text); @@ -2969,11 +3076,15 @@ bool CEvent::EventButtons (const SDL_Event & event, Point pos) { Sint32 lg; + Point _pos = pos; // Cherche le tool tips à utiliser pour la souris. m_textToolTips[0] = 0; m_posToolTips.x = -1; + if (IsRightReading ()) + _pos.x = LXIMAGE () - _pos.x; + if (m_phase == EV_PHASE_PLAY) { auto progress = [&](CJauge & prog, const char * text) -> bool { @@ -2987,6 +3098,7 @@ CEvent::EventButtons (const SDL_Event & event, Point pos) { snprintf (m_textToolTips, sizeof (m_textToolTips), "%s", text); lg = GetTextWidth (m_textToolTips); + lg = IsRightReading () ? -lg : lg; test.x += (DIMJAUGEX - lg) / 2; test.y += 4; m_posToolTips = test; @@ -3012,10 +3124,12 @@ CEvent::EventButtons (const SDL_Event & event, Point pos) { snprintf (m_textToolTips, sizeof (m_textToolTips), "%s", text); lg = GetTextWidth (m_textToolTips); - pos.x += 10; + pos.x += IsRightReading () ? 0 : 10; pos.y += 20; - if (pos.x > LXIMAGE () - lg) + if (pos.x > LXIMAGE () + (IsRightReading () ? 0 : -lg)) pos.x = LXIMAGE () - lg; + if (pos.x < 0) + pos.x = 0; if (pos.y > LYIMAGE () - 14) pos.y = LYIMAGE () - 14; m_posToolTips = pos; @@ -3277,13 +3391,13 @@ CEvent::LoadBackground () switch (id) { case 0: - backWideName = "image/back-disco.png"; + backWideName = "back-disco.png"; break; case 1: - backWideName = "image/back-stars.png"; + backWideName = "back-stars.png"; break; case 2: - backWideName = "image/back-win.png"; + backWideName = "back-win.png"; break; } } @@ -4076,6 +4190,12 @@ CEvent::GetStartLanguage () return Language::it; if (this->m_LangStart == "pl") return Language::pl; + if (this->m_LangStart == "tr") + return Language::tr; + if (this->m_LangStart == "pt") + return Language::pt; + if (this->m_LangStart == "he") + return Language::he; return Language::en; } @@ -4116,6 +4236,15 @@ CEvent::SetLanguage (Language lang) case Language::pl: slang = "pl"; break; + case Language::tr: + slang = "tr"; + break; + case Language::pt: + slang = "pt"; + break; + case Language::he: + slang = "he"; + break; } snprintf (env, sizeof (env), "LANGUAGE=%s", slang); @@ -5095,9 +5224,11 @@ CEvent::DemoRecStart () InitRandom (); m_pDecor->SetTime (0); - m_speed = 1; - this->m_scrollSpeedPrev = this->m_scrollSpeed; - this->m_scrollSpeed = 3; + m_speed = 1; + + if (this->m_scrollSpeedPrev == -1) + this->m_scrollSpeedPrev = this->m_scrollSpeed; + this->m_scrollSpeed = 3; m_bStartRecording = true; } @@ -5138,10 +5269,15 @@ CEvent::DemoRecStop () } m_pDemoSDLBuffer.clear (); - m_bDemoRec = false; - m_demoTime = 0; - m_bStartRecording = false; - this->m_scrollSpeed = this->m_scrollSpeedPrev; + m_bDemoRec = false; + m_demoTime = 0; + m_bStartRecording = false; + + if (this->m_scrollSpeedPrev >= 0) + { + this->m_scrollSpeed = this->m_scrollSpeedPrev; + this->m_scrollSpeedPrev = -1; + } } // Début de la reproduction d'une démo. @@ -5221,8 +5357,9 @@ CEvent::DemoPlayStart (const std::string * demoFile) return false; } - this->m_scrollSpeedPrev = m_scrollSpeed; - this->m_scrollSpeed = 3; + if (this->m_scrollSpeedPrev == -1) + this->m_scrollSpeedPrev = this->m_scrollSpeed; + this->m_scrollSpeed = 3; ChangePhase (EV_PHASE_PLAY); InitRandom (); @@ -5245,10 +5382,15 @@ CEvent::DemoPlayStop () m_pDemoSDLBuffer.clear (); - m_bDemoPlay = false; - m_bDemoRec = false; - m_demoTime = 0; - this->m_scrollSpeed = this->m_scrollSpeedPrev; + m_bDemoPlay = false; + m_bDemoRec = false; + m_demoTime = 0; + + if (this->m_scrollSpeedPrev >= 0) + { + this->m_scrollSpeed = this->m_scrollSpeedPrev; + this->m_scrollSpeedPrev = -1; + } ChangePhase (EV_PHASE_INIT); } @@ -5388,6 +5530,10 @@ CEvent::DemoStep () message = m_pDemoBuffer[m_demoIndex].message; wParam = m_pDemoBuffer[m_demoIndex].wParam; lParam = m_pDemoBuffer[m_demoIndex].lParam; + + if (IsRightReading ()) + lParam = + (lParam & 0xFFFF0000) | ((lParam & 0xFFFF) - POSDRAWX_ + POSDRAWX); } else // New SDL events format { @@ -5400,12 +5546,18 @@ CEvent::DemoStep () { event.motion.x = m_pDemoSDLBuffer[m_demoIndex].x; event.motion.y = m_pDemoSDLBuffer[m_demoIndex].y; + + if (IsRightReading ()) + event.motion.x -= POSDRAWX_ + POSDRAWX; } else if (event.type != SDL_KEYUP && event.type != SDL_KEYDOWN) { event.button.button = m_pDemoSDLBuffer[m_demoIndex].button; event.button.x = m_pDemoSDLBuffer[m_demoIndex].x; event.button.y = m_pDemoSDLBuffer[m_demoIndex].y; + + if (IsRightReading ()) + event.button.x -= POSDRAWX_ + POSDRAWX; } } diff --git a/src/event.h b/src/event.h index 63ca037..0dfd9b0 100644 --- a/src/event.h +++ b/src/event.h @@ -85,6 +85,9 @@ enum class Language { de = 3, it = 4, pl = 5, + tr = 6, + pt = 7, + he = 8, end, }; diff --git a/src/menu.cxx b/src/menu.cxx index 02ffb4e..af8e303 100644 --- a/src/menu.cxx +++ b/src/menu.cxx @@ -271,6 +271,8 @@ CMenu::Draw () m_pPixmap->DrawIcon (-1, CHBUTTON, state, pos); icon = table_button_icon[m_buttons[i]]; + if (IsRightReading () && icon == 40) + icon = 109; if (m_perso == 8) // disciple ? { if (icon == 30) @@ -305,13 +307,16 @@ CMenu::Draw () snprintf (text, sizeof (text), "%s", tr); } - if (m_nbCel.x > 1 && i < m_nbCel.y) + if ( + (m_nbCel.x > 1 && i < m_nbCel.y) || (IsRightReading () && m_nbCel.x == 1)) { - pos.x = m_pos.x - 4 - GetTextWidth (text); // texte à gauche + pos.x = m_pos.x - 4 - + (IsRightReading () ? 0 : GetTextWidth (text)); // texte à gauche } else { - pos.x = m_pos.x + m_dim.x + 4; + pos.x = + m_pos.x + m_dim.x + 4 + (IsRightReading () ? GetTextWidth (text) : 0); } DrawText (m_pPixmap, pos, text, FONTWHITE); @@ -331,13 +336,16 @@ CMenu::Draw () snprintf (text, sizeof (text), "%s", tr); } - if (m_nbCel.x > 1 && i < m_nbCel.y) + if ( + (m_nbCel.x > 1 && i < m_nbCel.y) || + (IsRightReading () && m_nbCel.x == 1)) { - pos.x = m_pos.x - 4 - GetTextWidth (text); + pos.x = m_pos.x - 4 - (IsRightReading () ? 0 : GetTextWidth (text)); } else { - pos.x = m_pos.x + m_dim.x + 4; + pos.x = + m_pos.x + m_dim.x + 4 + (IsRightReading () ? GetTextWidth (text) : 0); } pos.y += DIMTEXTY; diff --git a/src/misc.cxx b/src/misc.cxx index 7a814a6..8c9d2e0 100644 --- a/src/misc.cxx +++ b/src/misc.cxx @@ -98,6 +98,17 @@ GetLocale () return gettext ("en"); } +bool +IsRightReading (const char * text) +{ + auto isRight = false; + if (text) + isRight = strchr (text, 0xD7) != nullptr; + else + isRight = GetLocale () == "he"; + return isRight; +} + // Retourne le nom de dossier en cours. std::string @@ -40,6 +40,7 @@ std::string GetBaseDir (); std::string GetShareDir (); std::string GetBinDir (); std::string GetLocale (); +bool IsRightReading (const char * text = nullptr); extern void AddUserPath (std::string & pFilename); enum Location { LOCATION_ABSOLUTE, LOCATION_BASE, LOCATION_USER }; @@ -68,4 +69,12 @@ basename (char * path) snprintf (basename, sizeof (basename), "%s%s", fname, ext); return basename; } -#endif /* _WIN32 */
\ No newline at end of file +#endif /* _WIN32 */ +#ifdef EMSCRIPTEN +static inline char * +basename (char * filename) +{ + char * p = strrchr (filename, '/'); + return p ? p + 1 : filename; +} +#endif /* EMSCRIPTEN */ diff --git a/src/pixmap.cxx b/src/pixmap.cxx index 0fcf6d2..de797b8 100644 --- a/src/pixmap.cxx +++ b/src/pixmap.cxx @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -124,7 +124,8 @@ CPixmap::CreateMainTexture () } Sint32 -CPixmap::BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR) +CPixmap::BltFast ( + Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR, SDL_RendererFlip flip) { Sint32 res; @@ -159,16 +160,18 @@ CPixmap::BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR) if (this->mainTexture) SDL_SetRenderTarget (g_renderer, target ? target : this->mainTexture); - res = SDL_RenderCopy ( - g_renderer, m_SDLTextureInfo[srcCh].texture, &srcRect, &dstRect); + res = SDL_RenderCopyEx ( + g_renderer, m_SDLTextureInfo[srcCh].texture, &srcRect, &dstRect, 0, + nullptr, flip); if (this->mainTexture) SDL_SetRenderTarget (g_renderer, target); } else { SDL_SetRenderTarget (g_renderer, m_SDLTextureInfo[dstCh].texture); - res = SDL_RenderCopy ( - g_renderer, m_SDLTextureInfo[srcCh].texture, &srcRect, &dstRect); + res = SDL_RenderCopyEx ( + g_renderer, m_SDLTextureInfo[srcCh].texture, &srcRect, &dstRect, 0, + nullptr, flip); SDL_SetRenderTarget (g_renderer, target); } @@ -179,7 +182,8 @@ CPixmap::BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR) // Les modes sont 0=transparent, 1=opaque. Sint32 -CPixmap::BltFast (Sint32 chDst, size_t channel, Point dst, Rect rcRect) +CPixmap::BltFast ( + Sint32 chDst, size_t channel, Point dst, Rect rcRect, SDL_RendererFlip flip) { Sint32 limit; @@ -209,7 +213,7 @@ CPixmap::BltFast (Sint32 chDst, size_t channel, Point dst, Rect rcRect) dstRect.top = dst.y; dstRect.right = dstRect.left + rcRect.right - rcRect.left; dstRect.bottom = dstRect.top + rcRect.bottom - rcRect.top; - return this->BltFast (chDst, channel, dstRect, rcRect); + return this->BltFast (chDst, channel, dstRect, rcRect, flip); } // Effectue un appel BltFast. @@ -325,7 +329,11 @@ CPixmap::Cache ( size_t channel, const std::string & pFilename, Point totalDim, Point iconDim, Mode mode, std::string wideName) { - std::string file = GetBaseDir () + pFilename; + std::string absolute; + std::string file = GetBaseDir () + "image/" + GetLocale () + "/" + pFilename; + if (!FileExists (file, file, LOCATION_ABSOLUTE)) + file = GetBaseDir () + "image/" + pFilename; + SDL_Surface * surface = IMG_Load (file.c_str ()); bool blupiChSet = false; @@ -376,20 +384,28 @@ CPixmap::Cache ( SDL_SetRenderTarget (g_renderer, m_SDLTextureInfo[channel].texture); + SDL_RendererFlip flip = + (mode == FIX_REVERSABLE || mode == EXPAND_REVERSABLE) && IsRightReading () + ? SDL_FLIP_HORIZONTAL + : SDL_FLIP_NONE; + switch (mode) { case FIX: + case FIX_REVERSABLE: { if (channel == CHBACK && (ow < LXIMAGE () || oh < LYIMAGE ())) { if (!wideName.empty ()) { - std::string file = GetBaseDir () + m_SDLTextureInfo[channel].wideName; + std::string file = + GetBaseDir () + "image/" + m_SDLTextureInfo[channel].wideName; SDL_Surface * surface = IMG_Load (file.c_str ()); SDL_Texture * texture = SDL_CreateTextureFromSurface (g_renderer, surface); SDL_FreeSurface (surface); - SDL_RenderCopy (g_renderer, texture, nullptr, nullptr); + SDL_RenderCopyEx ( + g_renderer, texture, nullptr, nullptr, 0, nullptr, flip); SDL_DestroyTexture (texture); } @@ -398,32 +414,37 @@ CPixmap::Cache ( dst.y = 0; dst.w = ow; dst.h = oh; - SDL_RenderCopy (g_renderer, texture, nullptr, &dst); + SDL_RenderCopyEx (g_renderer, texture, nullptr, &dst, 0, nullptr, flip); } else - SDL_RenderCopy (g_renderer, texture, nullptr, nullptr); + SDL_RenderCopyEx ( + g_renderer, texture, nullptr, nullptr, 0, nullptr, flip); break; } case EXPAND: + case EXPAND_REVERSABLE: { + auto isFlipped = flip == SDL_FLIP_HORIZONTAL; + SDL_Rect src, dst; src.x = 0; src.y = 0; - src.w = POSDRAWX - 1; + src.w = POSDRAWX_ - 1; src.h = LYIMAGE (); dst = src; - SDL_RenderCopy (g_renderer, texture, &src, &dst); + dst.x = isFlipped ? LXIMAGE () - src.w : src.x; + SDL_RenderCopyEx (g_renderer, texture, &src, &dst, 0, nullptr, flip); src.x = ow - 16; src.w = 16; - dst.x = LXIMAGE () - 16; + dst.x = isFlipped ? 0 : LXIMAGE () - 16; dst.w = src.w; - SDL_RenderCopy (g_renderer, texture, &src, &dst); - src.x = POSDRAWX - 1; + SDL_RenderCopyEx (g_renderer, texture, &src, &dst, 0, nullptr, flip); + src.x = POSDRAWX_ - 1; src.w = ow - src.x - 16; - dst.x = src.x; + dst.x = isFlipped ? 16 : src.x; dst.w = DIMDRAWX + 1; - SDL_RenderCopy (g_renderer, texture, &src, &dst); + SDL_RenderCopyEx (g_renderer, texture, &src, &dst, 0, nullptr, flip); break; } } @@ -644,12 +665,13 @@ CPixmap::DrawIconPart ( // Dessine une partie d'image n'importe o�. bool -CPixmap::DrawPart (Sint32 chDst, size_t channel, Point dest, Rect rect) +CPixmap::DrawPart ( + Sint32 chDst, size_t channel, Point dest, Rect rect, SDL_RendererFlip flip) { if (m_SDLTextureInfo.find (channel) == m_SDLTextureInfo.end ()) return false; - return !BltFast (chDst, channel, dest, rect); + return !BltFast (chDst, channel, dest, rect, flip); } // Dessine une partie d'image rectangulaire. diff --git a/src/pixmap.h b/src/pixmap.h index 4468d9d..dd47bc9 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -55,7 +55,9 @@ class CPixmap public: enum Mode { FIX = 0, + FIX_REVERSABLE, EXPAND, + EXPAND_REVERSABLE, }; CPixmap (CEvent * event); @@ -82,7 +84,9 @@ public: bool DrawIconPart ( Sint32 chDst, size_t channel, Sint32 rank, Point pos, Sint32 startY, Sint32 endY); - bool DrawPart (Sint32 chDst, size_t channel, Point dest, Rect rect); + bool DrawPart ( + Sint32 chDst, size_t channel, Point dest, Rect rect, + SDL_RendererFlip flip = SDL_FLIP_NONE); bool DrawImage (Sint32 chDst, size_t channel, Rect rect); bool BuildIconMask ( @@ -102,8 +106,12 @@ public: void FromGameToDisplay (Sint32 & x, Sint32 & y); protected: - Sint32 BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR); - Sint32 BltFast (Sint32 chDst, size_t channel, Point dst, Rect rcRect); + Sint32 BltFast ( + Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR, + SDL_RendererFlip flip = SDL_FLIP_NONE); + Sint32 BltFast ( + Sint32 chDst, size_t channel, Point dst, Rect rcRect, + SDL_RendererFlip flip = SDL_FLIP_NONE); Sint32 BltFast ( SDL_Texture * lpSDL, size_t channel, Point dst, Rect rcRect, SDL_BlendMode = SDL_BLENDMODE_BLEND); diff --git a/src/progress.cxx b/src/progress.cxx index 0b4713a..8a6b40d 100644 --- a/src/progress.cxx +++ b/src/progress.cxx @@ -63,32 +63,42 @@ CJauge::Draw () { Sint32 part; Rect rect; + Point pos = this->m_pos; + + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x - m_dim.x; if (m_bHide) // bouton caché ? { - rect.left = m_pos.x; - 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); // dessine le fond + rect.left = pos.x; + rect.right = pos.x + m_dim.x; + rect.top = pos.y; + rect.bottom = pos.y + m_dim.y; + m_pPixmap->DrawPart (-1, CHBACK, pos, rect); // dessine le fond return; } + SDL_RendererFlip flip = SDL_FLIP_NONE; + if (IsRightReading ()) + flip = SDL_FLIP_HORIZONTAL; + part = (m_level * (DIMJAUGEX - 6 - 4)) / 100; rect.left = 0; rect.right = DIMJAUGEX; rect.top = DIMJAUGEY * 0; rect.bottom = DIMJAUGEY * 1; - m_pPixmap->DrawPart (-1, CHJAUGE, m_pos, rect); // partie noire + m_pPixmap->DrawPart (-1, CHJAUGE, pos, rect, flip); // partie noire if (part > 0) { + if (IsRightReading ()) + pos.x += DIMJAUGEX - part - 6; rect.left = 0; rect.right = 6 + part; rect.top = DIMJAUGEY * m_type; rect.bottom = DIMJAUGEY * (m_type + 1); - m_pPixmap->DrawPart (-1, CHJAUGE, m_pos, rect); // partie colorée + m_pPixmap->DrawPart (-1, CHJAUGE, pos, rect, flip); // partie colorée } } @@ -128,5 +138,8 @@ CJauge::SetHide (bool bHide) Point CJauge::GetPos () { - return m_pos; + Point pos = m_pos; + if (IsRightReading ()) + pos.x = LXIMAGE () - pos.x - m_dim.x; + return pos; } diff --git a/src/sound.h b/src/sound.h index ccf3f18..93e611e 100644 --- a/src/sound.h +++ b/src/sound.h @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -25,7 +25,11 @@ #include <string> #include <vector> +#ifdef EMSCRIPTEN +#include <SDL2/SDL_mixer.h> +#else /* EMSCRIPTEN */ #include <SDL_mixer.h> +#endif /* !EMSCRIPTEN */ #include "blupi.h" diff --git a/src/text.cxx b/src/text.cxx index 222c165..18cbbf4 100644 --- a/src/text.cxx +++ b/src/text.cxx @@ -1,7 +1,7 @@ /* * This file is part of the planetblupi source code * Copyright (C) 1997, Daniel Roux & EPSITEC SA - * Copyright (C) 2017-2018, Mathieu Schroeter + * Copyright (C) 2017-2019, Mathieu Schroeter * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games * * This program is free software: you can redistribute it and/or modify @@ -34,56 +34,82 @@ * \param[in] c - The character (incremented if 0xC3 or 0xC4 or 0xC5 UTF-8). * \returns the offset. */ -static Sint32 +static Uint8 GetOffset (const char *& c) { /* clang-format off */ - static const unsigned char table_accents[] = { - /* ü à â é è ë ê ï */ - 0xBC, 0xA0, 0xA2, 0xA9, 0xA8, 0xAB, 0xAA, 0xAF, /* UTF-8 */ - /* î ô ù û ä ö ç */ - 0xAE, 0xB4, 0xB9, 0xBB, 0xA4, 0xB6, 0xA7, /* UTF-8 */ + static const unsigned char table_c3[] = { + /* ü à â é è ë ê ï */ + 0xBC, 0xA0, 0xA2, 0xA9, 0xA8, 0xAB, 0xAA, 0xAF, + /* î ô ù û ä ö ç ò */ + 0xAE, 0xB4, 0xB9, 0xBB, 0xA4, 0xB6, 0xA7, 0xB2, + /* ì ó Ç Ö Ü õ ã */ + 0xAC, 0xB3, 0x87, 0x96, 0x9C, 0xB5, 0xA3 }; - 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 */ + static const unsigned char table_c4[] = { + /* ę ć ą Ğ ğ İ ı */ + 0x99, 0x87, 0x85, 0x9E, 0x9F, 0xB0, 0xB1, + }; + + static const unsigned char table_c5[] = { + /* ń ź ż ł ś Ş ş */ + 0x84, 0xBA, 0xBC, 0x82, 0x9B, 0x9E, 0x9F, + }; + + static const unsigned char table_d7[] = { + /*a ז ו ה ד ג ב א */ + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, + /*a מ ל ך כ י ט ח */ + 0x97, 0x98, 0x99, 0x9B, 0x9A, 0x9C, 0x9E, + /*a ף פ ע ס ן נ ם */ + 0x9D, 0xA0, 0x9F, 0xA1, 0xA2, 0xA4, 0xA3, + /*a ת ש ר ק ץ צ */ + 0xA6, 0xA5, 0xA7, 0xA8, 0xA9, 0xAA, }; /* clang-format on */ - if (static_cast<unsigned char> (*c) == 0xC3) - c++; - if (static_cast<unsigned char> (*c) == 0xC4) - c++; - if (static_cast<unsigned char> (*c) == 0xC5) - c++; + int offset = 0; + int inc = 0; + size_t size = 0; + const unsigned char * table = nullptr; - if (GetLocale () != "pl") + switch (static_cast<unsigned char> (*c)) { - // 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; + case 0xC3: + offset = 128; + table = table_c3; + size = countof (table_c3); + inc = 1; + break; + case 0xC4: + offset = 128 + 32; + table = table_c4; + size = countof (table_c4); + inc = 1; + break; + case 0xC5: + offset = 128 + 64; + table = table_c5; + size = countof (table_c5); + inc = 1; + break; + case 0xD7: + offset = 128 + 96; + table = table_d7; + size = countof (table_d7); + inc = 1; + break; } - for (unsigned int i = 0; i < countof (table_extended); ++i) - if ((unsigned char) *c == table_extended[i]) - return 127 + i; + for (size_t i = 0; i < size; ++i) + if (static_cast<unsigned char> (*(c + inc)) == table[i]) + return offset + i; - if (*c < 0) + if (*(c + inc) < 0) return 1; // square - return *c; + return *(c + inc); } /** @@ -93,41 +119,54 @@ GetOffset (const char *& c) * \param[in] font - The font used (little or normal). * \returns the length. */ -Sint32 +Uint8 GetCharWidth (const char *& c, Sint32 font) { // clang-format off - static const unsigned char table_width[] = + static const Uint8 table_width[] = { - 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, - 9, 9, 8, 8, 8, 8, 5, 5, 8, 8, 8, 9, 8, 8, 10, 10, + 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 5, 6, 9, 13, 11, 12, 12, 6, 6, 6, 12, 12, 5, 9, 6, 9, 8, 8, 9, 9, 8, 9, 8, 8, 9, 9, 6, 6, 8, 9, 10, 11, 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, 8, - 5, 8, 8, 8, 8, 8, 7, 9, 6, 7 + 8, 8, 7, 6, 7, 8, 8, 10, 8, 8, 7, 6, 6, 6, 10, 0, + 8, 9, 9, 8, 8, 8, 8, 5, 5, 8, 8, 8, 9, 8, 8, 8, + 5, 8, 9, 9, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 9, 8, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 7, 6, 7, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 8, 8, 9, 5, 7, 9, 10, 6, 8, 8, 9, 10, 9, 6, + 7, 9, 9, 8, 9, 9, 10, 9, 8, 12, 10, 0, 0, 0, 0, 0, }; - static const unsigned char table_width_little[] = + static const Uint8 table_width_little[] = { - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 7, - 6, 6, 6, 6, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6, 5, 5, - 3, 3, 5, 8, 5, 11, 9, 3, 4, 4, 6, 6, 3, 4, 3, 6, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 7, 6, 7, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, + 3, 2, 5, 8, 5, 11, 9, 2, 4, 4, 6, 6, 2, 4, 2, 6, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 7, 6, 7, 6, 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, 6, - 3, 6, 6, 6, 5, 5, 5, 7, 4, 5 + 6, 6, 3, 5, 3, 6, 6, 8, 6, 6, 5, 4, 6, 4, 7, 0, + 7, 6, 6, 6, 6, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6, 6, + 3, 6, 7, 8, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 5, 7, 8, 6, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 5, 5, 4, 5, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 7, 5, 6, 7, 2, 4, 7, 7, 3, 5, 7, 6, 7, 7, 4, + 3, 7, 7, 7, 8, 7, 6, 7, 7, 9, 8, 0, 0, 0, 0, 0, }; // clang-format on if (font == FONTLITTLE) return table_width_little[GetOffset (c)]; - else - return table_width[GetOffset (c)] - 1; + return table_width[GetOffset (c)] - 1; } /** @@ -137,50 +176,92 @@ GetCharWidth (const char *& c, Sint32 font) * \param[in] pos - The coordinates for the text. * \param[in] pText - The text. * \param[in] font - The font style (little or normal). + * \param[in] slope - Text slope. */ void -DrawText (CPixmap * pPixmap, Point pos, const char * pText, Sint32 font) +DrawText ( + CPixmap * pPixmap, Point pos, const char * pText, Sint32 font, Sint32 slope) { - Sint32 rank; - - while (*pText != '\0') + Sint32 rank; + bool isLatin = false; + int numberSize = 0; + const char * it = nullptr; + int skip = 0; + Sint32 start = pos.y; + Sint32 rel = 0; + + auto useD7 = strchr (pText, 0xD7) != nullptr; + auto isRightReading = useD7 && IsRightReading (); + auto length = strlen (pText); + + if (length >= 1 && !useD7 && IsRightReading ()) + pos.x -= GetTextWidth (pText, font); + + while (*pText != '\0' || skip) { + if (isRightReading && numberSize == 0) + { + const auto test = [](const char * text) -> bool { + return *text > ' ' && *text <= '~'; + }; + it = pText; + isLatin = test (pText); + if (isLatin) + { + while (test (pText)) + ++pText; + + numberSize = pText - it; + skip = numberSize - 1; + } + } + + if (numberSize) + { + pText = it + numberSize - 1; + numberSize--; + } + rank = GetOffset (pText); + if (isRightReading) + { + if (rank == '(') + rank = ')'; + else if (rank == ')') + rank = '('; + } + + auto inc = rank > 127; + auto lg = GetCharWidth (pText, font); + + if (isRightReading) + pos.x += -lg; + + rel += lg; + if (slope) + pos.y = start + rel / slope; + if (font != FONTLITTLE) { - rank += (128 + 16) * font; + rank += 256 * font; pPixmap->DrawIcon (-1, CHTEXT, rank, pos); } else pPixmap->DrawIcon (-1, CHLITTLE, rank, pos); - pos.x += GetCharWidth (pText, font); - pText++; - } -} - -// Affiche un texte penché. + if (!isRightReading) + pos.x += lg; -void -DrawTextPente ( - CPixmap * pPixmap, Point pos, const char * pText, Sint32 pente, Sint32 font) -{ - Sint32 rank, lg, rel, start; - - start = pos.y; - rel = 0; - while (*pText != 0) - { - rank = GetOffset (pText); - rank += (128 + 16) * font; - pPixmap->DrawIcon (-1, CHTEXT, rank, pos); + if (!numberSize && skip > 0) + { + pText += skip; + skip = 0; + } - lg = GetCharWidth (pText, font); + if (inc) + pText++; pText++; - rel += lg; - pos.x += lg; - pos.y = start + rel / pente; } } @@ -227,10 +308,7 @@ DrawTextRect ( continue; } - if (pente == 0) - DrawText (pPixmap, pos, pDest, font); - else - DrawTextPente (pPixmap, pos, pDest, pente, font); + DrawText (pPixmap, pos, pDest, font, pente); if (pDest[0] == 0) // ligne vide ? { @@ -253,6 +331,7 @@ DrawTextCenter (CPixmap * pPixmap, Point pos, const char * pText, Sint32 font) char * pDest; Sint32 itl; Point start; + auto isRightReading = IsRightReading (); if (font == FONTLITTLE) itl = DIMLITTLEY; @@ -270,8 +349,10 @@ DrawTextCenter (CPixmap * pPixmap, Point pos, const char * pText, Sint32 font) if (*pText == '\n') pText++; // saute '\n' - pDest = text; - start.x = pos.x - GetTextWidth (pDest) / 2; + pDest = text; + start.x = + pos.x + + (isRightReading ? GetTextWidth (pDest) : -GetTextWidth (pDest)) / 2; start.y = pos.y; DrawText (pPixmap, start, pDest, font); @@ -347,7 +428,13 @@ GetTextWidth (const char * pText, Sint32 font) while (*pText != 0) { + auto rank = GetOffset (pText); + auto inc = rank > 127; + width += GetCharWidth (pText, font); + + if (inc) + pText++; pText++; } @@ -27,12 +27,9 @@ #define FONTLITTLE 10 // clang-format on -void -DrawText (CPixmap * pPixmap, Point pos, const char * pText, Sint32 font = 0); - -void DrawTextPente ( - CPixmap * pPixmap, Point pos, const char * pText, Sint32 pente, - Sint32 font = 0); +void DrawText ( + CPixmap * pPixmap, Point pos, const char * pText, Sint32 font = 0, + Sint32 slope = 0); void DrawTextRect ( CPixmap * pPixmap, Point pos, char * pText, Sint32 pente, Sint32 font = 0, |