From 6648415acd4665fd19137a2d70cf3b039948235b Mon Sep 17 00:00:00 2001 From: jummy Date: Mon, 10 Jun 2024 12:31:06 -0500 Subject: [PATCH] buh --- README.md | 2 +- blupi-d.rc | 489 ++++++++++++++++++++++++++++++++++++++++++++++++++++ blupi-e.rc | 489 ++++++++++++++++++++++++++++++++++++++++++++++++++++ blupi-f.rc | 489 ++++++++++++++++++++++++++++++++++++++++++++++++++++ def.h | 461 +++++++++++++++++++++++++++++++++++++++++++++++++ event.cpp | 66 +++++++ menu.cpp | 439 ++++++++++++++++++++++++++++++++++++++++++++++ misc.cpp | 398 ++++++++++++++++++++++++++++++++++++++++++ network.cpp | 0 network.h | 0 resource.h | 343 ++++++++++++++++++++++++++++++++++++ 11 files changed, 3175 insertions(+), 1 deletion(-) create mode 100644 blupi-d.rc create mode 100644 blupi-e.rc create mode 100644 blupi-f.rc create mode 100644 def.h create mode 100644 event.cpp create mode 100644 menu.cpp create mode 100644 misc.cpp create mode 100644 network.cpp create mode 100644 network.h create mode 100644 resource.h diff --git a/README.md b/README.md index 88ccc6e..7c47b2e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # Speedy Eggbert 2 Source Code Decomp WIP Source Tree for Speedy Eggbert (Blupi) 2 - As of now (5/17/24), there hasn't been any source code found for SE2. So we are using the released (original) source code from Planet Blupi to compare code and help us with the proccess. + As of now (5/17/24), the source code of Speedy Eggbert 2 has not been published. We are using the released (original) source code from Planet Blupi to compare code and help us with the proccess. diff --git a/blupi-d.rc b/blupi-d.rc new file mode 100644 index 0000000..250bef8 --- /dev/null +++ b/blupi-d.rc @@ -0,0 +1,489 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (Switzerland) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRS) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "blupi.ico" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100c04b0" + BEGIN + VALUE "CompanyName", "EPSITEC\0" + VALUE "FileDescription", "Blupi\0" + VALUE "FileVersion", "0, 4, 0, 0\0" + VALUE "InternalName", "Planet Blupi\0" + VALUE "LegalCopyright", "Copyright © 1997\0" + VALUE "OriginalFilename", "Blupi.exe\0" + VALUE "ProductName", "EPSITEC Planet Blupi\0" + VALUE "ProductVersion", "0, 4, 0, 0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x100c, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR DISCARDABLE "cursor1.cur" +IDC_MAP CURSOR DISCARDABLE "map.cur" +IDC_ARROWU CURSOR DISCARDABLE "arrowup.cur" +IDC_ARROWD CURSOR DISCARDABLE "arrowdow.cur" +IDC_ARROWL CURSOR DISCARDABLE "arrowlef.cur" +IDC_ARROWR CURSOR DISCARDABLE "arrowrig.cur" +IDC_ARROWUL CURSOR DISCARDABLE "arrowul.cur" +IDC_ARROWUR CURSOR DISCARDABLE "arrowur.cur" +IDC_ARROWDR CURSOR DISCARDABLE "arrowdr.cur" +IDC_ARROWDL CURSOR DISCARDABLE "arrowdl.cur" +IDC_WAIT CURSOR DISCARDABLE "wait.cur" +IDC_EMPTY CURSOR DISCARDABLE "empty.cur" +IDC_FILL CURSOR DISCARDABLE "fill.cur" +IDC_ARROW CURSOR DISCARDABLE "arrow.cur" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_GO "Gehen" + TX_ACTION_STOP "Halt" + TX_ACTION_MANGE "Essen" + TX_ACTION_CARRY "Nehmen" + TX_ACTION_DEPOSE "Hinlegen" + TX_ACTION_ABAT "Baum fällen" + TX_ACTION_ROC "Stein bearbeiten" + TX_ACTION_CULTIVE "Garten anlegen" + TX_ACTION_BUILD1 "Gartenhäuschen" + TX_ACTION_BUILD2 "Brutplatz" + TX_ACTION_BUILD3 "Labor" + TX_ACTION_BUILD4 "Bergwerk" + TX_ACTION_BUILD5 "Werkstatt" + TX_ACTION_BUILD6 "Beamgerät" + TX_ACTION_MUR "Mauer" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_PALIS "Palisade" + TX_ACTION_ABATn "Bäume fällen" + TX_ACTION_ROCn "Steine bearbeiten" + TX_ACTION_PONT "Brücke" + TX_ACTION_TOUR "Wachturm" + TX_ACTION_BOIT "Trinken" + TX_ACTION_LABO "Verarbeiten" + TX_ACTION_FLEUR "Blumenstrauss machen" + TX_ACTION_FLEURn "Blumensträusse machen" + TX_ACTION_DYNAMITE "Zünden" + TX_ACTION_BATEAU "Boot" + TX_ACTION_DJEEP "Aussteigen" + TX_ACTION_DRAPEAU "Eisen suchen" + TX_ACTION_EXTRAIT "Eisen abbauen" + TX_ACTION_FABJEEP "Jeep bauen" + TX_ACTION_FABMINE "Zeitbombe bauen" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ERROR_MISC "Hier nicht möglich" + TX_ERROR_GROUND "Untergrund nicht geeignet" + TX_ERROR_FREE "Untergrund schon besetzt" + TX_ERROR_PONTOP "Anderes Ufer nicht OK" + TX_ERROR_PONTTERM "Brücke schon fertig" + TX_ERROR_TOURISOL "(Alleinstehender Wachturm)" + TX_ERROR_TOUREAU "Zu nahe am Wasser" + TX_ERROR_TELE2 "Es gibt schon 2 Beammaschinen" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_IONAMEEX "Training %d, Zeit %d" + TX_IOFREE "frei" + TX_TERMMIN "Verloren sobald weniger als %d Blupis" + TX_TERMMAX "Gewinnen unmöglich wenn weniger als %d Blupis" + TX_BUTTON_JOUER "Missionen" + TX_BUTTON_APPRENDRE "Training" + TX_BUTTON_QUITTER "BLUPI beenden" + TX_BUTTON_PREVP "Vorhergehende Mission" + TX_BUTTON_NEXTP "Nächste Mission" + TX_BUTTON_PLAYP "Diese Mission spielen" + TX_BUTTON_BUILDP "Diese Mission konstruieren" + TX_BUTTON_TERM "Beenden" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_READP "Gespeicherte Mission öffnen" + TX_BUTTON_WRITEP "Mission speichern" + TX_BUTTON_CANCELP "Mission aufgeben" + TX_BUTTON_CONTP "Mission weiterspielen" + TX_BUTTON_REPEAT "Neu Anfangen" + TX_BUTTON_BUTTON "Zur Verfügung stehende Knöpfe" + TX_BUTTON_CTERM "Bedingungen für Ende der Mission" + TX_BUTTON_TERMC "Konstruktion beenden" + TX_BUTTON_TERMHBLUPI "Blupi auf gestreiften Quadraten" + TX_BUTTON_TERMHPLANCHE "Bretter auf gestreiften Quadraten" + TX_BUTTON_TERMFIRE "Feuer ausgegangen" + TX_BUTTON_TERMDEC "(-)" + TX_BUTTON_TERMINC "(+)" + TX_PAUSE "Pause" + TX_JAUGE1 "Blupis Energie" + TX_JAUGE2 "Arbeitsfortschritt" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP "Einstellungen" + TX_BUTTON_MUSIC "Auswahl der Musik" + TX_BUTTON_SETUP1 "Langsamer" + TX_BUTTON_SETUP2 "Schneller" + TX_BUTTON_SETUP3 "Leiser" + TX_BUTTON_SETUP4 "Lauter" + TX_BUTTON_MUSIC1 "Keine Musik" + TX_BUTTON_MUSIC2 "Musik Nummer 1" + TX_BUTTON_MUSIC3 "Musik Nummer 2" + TX_BUTTON_MUSIC4 "Musik Nummer 3" + TX_BUTTON_MUSIC5 "Musik Nummer 4" + TX_BUTTON_MUSIC6 "Musik Nummer 5" + TX_BUTTON_MUSIC7 "Musik Nummer 6" + TX_BUTTON_MUSIC8 "Musik Nummer 7" + TX_BUTTON_MUSIC9 "Musik Nummer 8" + TX_BUTTON_MUSIC10 "Musik Nummer 9" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION "Auswahl der Umgebung" + TX_BUTTON_TERMMBLUPI "Blupi im Haus" + TX_BUTTON_TERMKILL "Keine Feinde mehr" + TX_TERM "Bedingungen für\ndas Ende der Mission" + TX_BUTTON "Zur Verfügung\nstehende Knöpfe" + TX_MUSIC "Auswahl der Musik" + TX_SCHOOL "Training Nummer" + TX_MISSION "Mission Nummer" + TX_IONAMEMI "Mission %d, Zeit %d" + TX_BUTTON_TERMHTOMATE "Tomaten auf gestreiften Quadraten" + TX_BUTTON_SETUP5 "Leiser" + TX_BUTTON_SETUP6 "Lauter" + TX_BUTTON_SETUP7 "Keine Videosequenzen" + TX_BUTTON_SETUP8 "Zeigt die Videosequenzen" + TX_OUI "Ja" + TX_NON "Nein" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_BLUPIm "Kranker Blupi" + TX_OBJ_BLUPIf "Erschöpfter Blupi" + TX_OBJ_BLUPI "Blupi" + TX_OBJ_BATEAU "Boot" + TX_OBJ_JEEP "Jeep" + TX_OBJ_PIEGE "Klebefalle" + TX_OBJ_POISON "Gift" + TX_OBJ_DYNAMITE "Dynamitstangen" + TX_OBJ_MINE "Zeitbombe" + TX_OBJ_TOMATE "Tomaten" + TX_OBJ_POTION "Medikament" + TX_OBJ_PLANCHE "Bretter" + TX_OBJ_PIERRE "Steine" + TX_OBJ_DRAPEAU "Wimpel" + TX_OBJ_FER "Eisenerz" + TX_OBJ_FLEUR1 "Blumen" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_FLEUR2 "Blumen" + TX_OBJ_FLEUR3 "Blumen" + TX_OBJ_CABANE "Gartenhäuschen" + TX_OBJ_LABO "Labor" + TX_OBJ_MINEFER "Bergwerk" + TX_OBJ_USINE "Werkstatt" + TX_OBJ_TOUR "Wachturm" + TX_OBJ_FEU "Feuer" + TX_OBJ_ROBOT "Roboterchef" + TX_OBJ_TRACKS "Planierraupe" + TX_OBJ_BOMBE "Springende Bombe" + TX_OBJ_ARAIGNEE "Spinne" + TX_OBJ_VIRUS "Virus" + TX_OBJ_ELECTRO "Elektrisiermaschine" + TX_OBJ_ARBRE "Bäume" + TX_OBJ_MUR "Mauer" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_ARBREb "Baumstämme" + TX_OBJ_ROC "Felsen" + TX_OBJ_OEUF "Eier" + TX_OBJ_PALISSADE "Palisade" + TX_OBJ_ENNEMIp "Verklebter Feind" + TX_OBJ_ENNEMI "Feindliche Einrichtung" + TX_OBJ_HERBE "Normaler Untergrund" + TX_OBJ_MOUSSE "Brennbarer Untergrund" + TX_OBJ_TERRE "Karger Untergrund" + TX_OBJ_EAU "Wasser" + TX_OBJ_RIVE "Ufer" + TX_OBJ_MIXTE "Gemischter Untergrund" + TX_OBJ_PONT "Brücke" + TX_OBJ_COUVEUSE "Brutplatz" + TX_OBJ_GLACE "Eis" + TX_OBJ_MAISON "Blupis Haus" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_HACHURE "Gestreifte Quadrate" + TX_OBJ_MOUSSEb "Verbrannter Untergrund" + TX_OBJ_BOUQUET1 "Blumenstrauss" + TX_OBJ_BOUQUET2 "Blumenstrauss" + TX_OBJ_BOUQUET3 "Blumenstrauss" + TX_OBJ_DALLE "Platten" + TX_OBJ_ENNEMIs "Feindesgrund" + TX_OBJ_DISCIPLE "Hilfsroboter" + TX_OBJ_METAL "Platinium" + TX_OBJ_FUSEE "Feindliche Rakete" + TX_OBJ_TELEPORTE "Beammaschine" + TX_OBJ_ARMURE "Rüstung" + TX_OBJ_DALLESPEC "Spezialplatten" + TX_OBJ_COUVTELE "Brutplatz oder Beammaschine" + TX_OBJ_BATIMENT "Gebäude" + TX_OBJ_BATENNEMIS "Feindliches Gebäude" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_WIN1 "Toll, Du hast es geschafft" + TX_WIN2 "Ja, super" + TX_WIN3 "Sehr gut" + TX_WIN4 "Ausgezeichnet" + TX_WIN5 "Auftrag erfüllt" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST1 "Das war nichts, probier es noch einmal !" + TX_LOST2 "Nein, so geht das leider nicht !" + TX_LOST3 "Das war mal wieder nichts !" + TX_LOST4 "Das war leider nicht die richtige Lösung !" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST5 "Aber nein, doch nicht so..." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LASTWIN1 "Du kannst jetzt mit den Missionen beginnen." + TX_LASTWIN2 "Bravo, das Spiel ist beendet !" + TX_LASTWIN3 "Letzte konstruierte Mission beendet." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP9 "Langsamer" + TX_BUTTON_SETUP10 "Schneller" + TX_INFO_SETUP1 "Globale\nGeschwindigkeit\ndes Spiels" + TX_INFO_SETUP2 "Lautstärke der\nGeräuscheffekte" + TX_INFO_SETUP3 "Lautstärke\nder Musik" + TX_INFO_SETUP4 "Videosequenzen" + TX_INFO_SETUP5 "Geschwindigkeit\nder Bildschirm-\nverschiebungen\nmit der Maus" + TX_INFO_NOSCROLL "Keine" + TX_BUTTON_REGION1 "Wiese" + TX_BUTTON_REGION2 "Wüste" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION3 "Verschneiter Wald" + TX_BUTTON_REGION4 "Wald" + TX_REGION "Auswahl\nder Umgebung" + TX_BUTTON_PLAY_STOP "Halt" + TX_BUTTON_PLAY_SETUP "Einstellungen" + TX_BUTTON_PLAY_WRITE "Speichern" + TX_INSERT "Füge die Planet Blupi CD-Rom in das Laufwerk ein und warte einige Sekunden ..." + TX_BUTTON_PREVH "Vorhergehende Seite" + TX_BUTTON_NEXTH "Nächste Seite" + TX_BUTTON_TERMHMETAL "Platinium auf gestreiften Quadraten" + TX_BUTTON_HELP "Hilfe" + TX_HELP "Hilfe Nummer" + TX_BUTTON_PRIVE "Konstruktion" + TX_PRIVATE "Konstruktion Nummer" + TX_IONAMEPR "Konstruktion %d, Zeit %d" + TX_PRIVATE_HACHBLUPI "1|Auf die gestreiften Quadrate gehen." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_FABDISC "Roboter bauen" + TX_ACTION_REPEAT "Wiederholen" + TX_ACTION_QARMURE "Aussteigen" + TX_ACTION_FABARMURE "Rüstung bauen" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_HACHPLANCHE "1|Bretter auf die\n1|gestreiften Quadrate legen." + TX_PRIVATE_HACHTOMATE "1|Tomaten auf die\n1|gestreiften Quadrate legen." + TX_PRIVATE_HACHMETAL "1|Platinium auf die\n1|gestreiften Quadrate legen." + TX_PRIVATE_STOPFIRE "1|Solange überleben bis\n1|das Feuer ausgegangen ist." + TX_PRIVATE_HOMEBLUPI "1|Jeder Blupi\n1|in seinem Haus." + TX_PRIVATE_KILLROBOTS "1|Alle Feinde\n1|zerstören !" + TX_BUTTON_UNDO "Letzten Befehl rückgängig machen" + TX_DEMO_END1 "Sie haben soeben mit der DEMO Version von Planet Blupi gespielt." + TX_DEMO_END2 "Hoffentlich hatten Sie genau soviel Spass beim Spielen wie wir beim herstellen des Spiels !" + TX_DEMO_END3 "Dieses Spiel wurde entwickelt von Epsitec SA, CH-1092 Belmont" + TX_DEMO_END4 "http://www.blupi.com blupi@epsitec.ch" + TX_FULL_END1 "Sie haben soeben mit PLANET BLUPI gespielt." + TX_FULL_END2 "Hoffentlich hatten Sie genau soviel Spass beim Spielen wie wir beim herstellen des Spiels !" + TX_FULL_END3 "Herausgegeben von WG Verlag & Lizenzen AG" + TX_FULL_END4 "Entwickelt von EPSITEC SA" + TX_PRIVATE_OBJECTIF "1|Ziel :" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_NBBLUPI "1|Die Blupibevölkerung muss mindestens %d Blupi(s) betragen." + TX_BUTTON_SKILL "Schwierigkeitsgrad" + TX_SKILL1 "Leicht" + TX_SKILL2 "Schwer" + TX_BUTTON_DEMO "Demo" + TX_DEMOREC "REC" + TX_DEMOPLAY "Demo" + TX_BUTTON_TERMHROBOT "Roboter auf gestreiften Quadraten" + TX_PRIVATE_HACHROBOT "1|Der Roboter muss die\n1|gestreiften Quadrate erreichen." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_REPEAT_CULTIVE "1: Tomaten anbauen...\n2: Essen" + TX_REPEAT_FLEUR "1: Blumenstrauss binden\n2: Verarbeiten" + TX_REPEAT_FLEURQ "1: Nehmen\n2: Verarbeiten" + TX_REPEAT_FABMINE "1: Eisen abbauen\n2: Zeitbombe bauen" + TX_REPEAT_FABJEEP "1: Eisen abbauen\n2: Jeep bauen" + TX_REPEAT_PALIS "1: Baum fällen\n2: Palissade bauen" + TX_REPEAT_PALISQ "1: Nehmen\n2: Palissade bauen" + TX_REPEAT_PONT "1: Baum fällen\n2: Brücke bauen" + TX_REPEAT_PONTQ "1: Nehmen\n2: Brücke bauen" + TX_REPEAT_BATEAU "1: Baum fällen\n2: Boot bauen" + TX_REPEAT_BATEAUQ "1: Bretter nehmen\n2: Boot bauen" + TX_REPEAT_FABARMURE "1: Eisen abbauen\n2: Rüstung bauen" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_MURPAL "Mauer oder Palissade" + TX_OBJ_OBJET "Gegenstände" + TX_OBJ_ARME "Waffen" + TX_OBJ_VEHICULE "Transportmittel" + TX_OBJ_STARTFEU "Feuer" + TX_OBJ_DELOBJ "Gegenstand löschen" + TX_OBJ_DELPERSO "Figur löschen" + TX_OBJ_DELFEU "Feuer löschen" + TX_OBJ_PLANTE "Pflanzen" + TX_OBJ_BARENNEMIS "Feindlicher Zaun" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_DIRECT_N "N" + TX_DIRECT_S "S" + TX_DIRECT_E "O" + TX_DIRECT_O "W" +END + +#endif // French (Switzerland) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/blupi-e.rc b/blupi-e.rc new file mode 100644 index 0000000..5b608b6 --- /dev/null +++ b/blupi-e.rc @@ -0,0 +1,489 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (Switzerland) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRS) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "blupi.ico" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100c04b0" + BEGIN + VALUE "CompanyName", "EPSITEC\0" + VALUE "FileDescription", "Blupi\0" + VALUE "FileVersion", "0, 4, 0, 0\0" + VALUE "InternalName", "Planet Blupi\0" + VALUE "LegalCopyright", "Copyright © 1997\0" + VALUE "OriginalFilename", "Blupi.exe\0" + VALUE "ProductName", "EPSITEC Planet Blupi\0" + VALUE "ProductVersion", "0, 4, 0, 0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x100c, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR DISCARDABLE "cursor1.cur" +IDC_MAP CURSOR DISCARDABLE "map.cur" +IDC_ARROWU CURSOR DISCARDABLE "arrowup.cur" +IDC_ARROWD CURSOR DISCARDABLE "arrowdow.cur" +IDC_ARROWL CURSOR DISCARDABLE "arrowlef.cur" +IDC_ARROWR CURSOR DISCARDABLE "arrowrig.cur" +IDC_ARROWUL CURSOR DISCARDABLE "arrowul.cur" +IDC_ARROWUR CURSOR DISCARDABLE "arrowur.cur" +IDC_ARROWDR CURSOR DISCARDABLE "arrowdr.cur" +IDC_ARROWDL CURSOR DISCARDABLE "arrowdl.cur" +IDC_WAIT CURSOR DISCARDABLE "wait.cur" +IDC_EMPTY CURSOR DISCARDABLE "empty.cur" +IDC_FILL CURSOR DISCARDABLE "fill.cur" +IDC_ARROW CURSOR DISCARDABLE "arrow.cur" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_GO "Go" + TX_ACTION_STOP "Stop" + TX_ACTION_MANGE "Eat" + TX_ACTION_CARRY "Take" + TX_ACTION_DEPOSE "Drop" + TX_ACTION_ABAT "Cut down a tree" + TX_ACTION_ROC "Carve a rock" + TX_ACTION_CULTIVE "Grow tomatoes" + TX_ACTION_BUILD1 "Garden shed" + TX_ACTION_BUILD2 "Incubator" + TX_ACTION_BUILD3 "Laboratory" + TX_ACTION_BUILD4 "Mine" + TX_ACTION_BUILD5 "Workshop" + TX_ACTION_BUILD6 "Teleporter" + TX_ACTION_MUR "Wall" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_PALIS "Palisade" + TX_ACTION_ABATn "Cut down trees" + TX_ACTION_ROCn "Carve rocks" + TX_ACTION_PONT "Bridge" + TX_ACTION_TOUR "Protection tower" + TX_ACTION_BOIT "Drink" + TX_ACTION_LABO "Transform" + TX_ACTION_FLEUR "Make bunch of flowers" + TX_ACTION_FLEURn "Make bunches of flowers" + TX_ACTION_DYNAMITE "Blow up" + TX_ACTION_BATEAU "Boat" + TX_ACTION_DJEEP "Leave Jeep" + TX_ACTION_DRAPEAU "Prospect for iron" + TX_ACTION_EXTRAIT "Extract iron" + TX_ACTION_FABJEEP "Make a Jeep" + TX_ACTION_FABMINE "Make a time bomb" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ERROR_MISC "Impossible" + TX_ERROR_GROUND "Inadequate ground" + TX_ERROR_FREE "Occupied ground" + TX_ERROR_PONTOP "Opposite bank no good" + TX_ERROR_PONTTERM "Bridge finished" + TX_ERROR_TOURISOL "(isolated tower)" + TX_ERROR_TOUREAU "Too close to water" + TX_ERROR_TELE2 "Already two teleporters" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_IONAMEEX "training %d, time %d" + TX_IOFREE "free slot" + TX_TERMMIN "Lost if less than %d Blupis" + TX_TERMMAX "Impossible to win if less than %d Blupis" + TX_BUTTON_JOUER "Missions" + TX_BUTTON_APPRENDRE "Training" + TX_BUTTON_QUITTER "Quit BLUPI" + TX_BUTTON_PREVP "Previous game" + TX_BUTTON_NEXTP "Next game" + TX_BUTTON_PLAYP "Play this game" + TX_BUTTON_BUILDP "Construct this game" + TX_BUTTON_TERM "Finish" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_READP "Open another game " + TX_BUTTON_WRITEP "Save this game" + TX_BUTTON_CANCELP "Quit this game" + TX_BUTTON_CONTP "Continue this game" + TX_BUTTON_REPEAT "Restart this game" + TX_BUTTON_BUTTON "Available buttons" + TX_BUTTON_CTERM "Ending conditions" + TX_BUTTON_TERMC "Quit construction" + TX_BUTTON_TERMHBLUPI "Blupi on striped paving stones" + TX_BUTTON_TERMHPLANCHE "Planks on striped paving stones" + TX_BUTTON_TERMFIRE "Fire out" + TX_BUTTON_TERMDEC "(-)" + TX_BUTTON_TERMINC "(+)" + TX_PAUSE "Game paused" + TX_JAUGE1 "Blupi's energy" + TX_JAUGE2 "Work done" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP "Settings" + TX_BUTTON_MUSIC "Music choice" + TX_BUTTON_SETUP1 "Slower" + TX_BUTTON_SETUP2 "Faster" + TX_BUTTON_SETUP3 "Reduce volume" + TX_BUTTON_SETUP4 "Increase volume" + TX_BUTTON_MUSIC1 "No music" + TX_BUTTON_MUSIC2 "Music number 1" + TX_BUTTON_MUSIC3 "Music number 2" + TX_BUTTON_MUSIC4 "Music number 3" + TX_BUTTON_MUSIC5 "Music number 4" + TX_BUTTON_MUSIC6 "Music number 5" + TX_BUTTON_MUSIC7 "Music number 6" + TX_BUTTON_MUSIC8 "Music number 7" + TX_BUTTON_MUSIC9 "Music number 8" + TX_BUTTON_MUSIC10 "Music number 9" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION "Scenery choice" + TX_BUTTON_TERMMBLUPI "Blupi in house" + TX_BUTTON_TERMKILL "No more enemies" + TX_TERM "Ending conditions" + TX_BUTTON "Available buttons" + TX_MUSIC "Music choice" + TX_SCHOOL "Training number" + TX_MISSION "Mission number" + TX_IONAMEMI "mission %d, time %d" + TX_BUTTON_TERMHTOMATE "Tomatoes on striped paving stones" + TX_BUTTON_SETUP5 "Reduce volume" + TX_BUTTON_SETUP6 "Increase volume" + TX_BUTTON_SETUP7 "No video" + TX_BUTTON_SETUP8 "Show videos" + TX_OUI "Yes" + TX_NON "No" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_BLUPIm "Sick Blupi" + TX_OBJ_BLUPIf "Tired Blupi" + TX_OBJ_BLUPI "Blupi" + TX_OBJ_BATEAU "Boat" + TX_OBJ_JEEP "Jeep" + TX_OBJ_PIEGE "Sticky trap" + TX_OBJ_POISON "Poison" + TX_OBJ_DYNAMITE "Dynamite" + TX_OBJ_MINE "Time bomb" + TX_OBJ_TOMATE "Tomatoes" + TX_OBJ_POTION "Medical potion" + TX_OBJ_PLANCHE "Planks" + TX_OBJ_PIERRE "Stones" + TX_OBJ_DRAPEAU "Flag" + TX_OBJ_FER "Iron" + TX_OBJ_FLEUR1 "Flowers" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_FLEUR2 "Flowers" + TX_OBJ_FLEUR3 "Flowers" + TX_OBJ_CABANE "Garden shed" + TX_OBJ_LABO "Laboratory" + TX_OBJ_MINEFER "Mine" + TX_OBJ_USINE "Workshop" + TX_OBJ_TOUR "Protection tower" + TX_OBJ_FEU "Fire" + TX_OBJ_ROBOT "Master robot" + TX_OBJ_TRACKS "Bulldozer" + TX_OBJ_BOMBE "Bouncing bomb" + TX_OBJ_ARAIGNEE "Spider" + TX_OBJ_VIRUS "Virus" + TX_OBJ_ELECTRO "Electrocutor" + TX_OBJ_ARBRE "Tree" + TX_OBJ_MUR "Wall" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_ARBREb "Tree trunks" + TX_OBJ_ROC "Rocks" + TX_OBJ_OEUF "Eggs" + TX_OBJ_PALISSADE "Palisade" + TX_OBJ_ENNEMIp "Trapped enemy" + TX_OBJ_ENNEMI "Enemy construction" + TX_OBJ_HERBE "Normal ground" + TX_OBJ_MOUSSE "Inflammable ground" + TX_OBJ_TERRE "Sterile ground" + TX_OBJ_EAU "Water" + TX_OBJ_RIVE "Bank" + TX_OBJ_MIXTE "Miscellaneous ground" + TX_OBJ_PONT "Bridge" + TX_OBJ_COUVEUSE "Incubator" + TX_OBJ_GLACE "Ice" + TX_OBJ_MAISON "Blupi's house" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_HACHURE "Striped paving stones" + TX_OBJ_MOUSSEb "Burnt ground" + TX_OBJ_BOUQUET1 "Bunch of flowers" + TX_OBJ_BOUQUET2 "Bunch of flowers" + TX_OBJ_BOUQUET3 "Bunch of flowers" + TX_OBJ_DALLE "Paving stones" + TX_OBJ_ENNEMIs "Enemy ground " + TX_OBJ_DISCIPLE "Helper robot" + TX_OBJ_METAL "Platinium" + TX_OBJ_FUSEE "Enemy rocket" + TX_OBJ_TELEPORTE "Teleporter" + TX_OBJ_ARMURE "Armour" + TX_OBJ_DALLESPEC "Special pavings" + TX_OBJ_COUVTELE "Incubator or teleporter" + TX_OBJ_BATIMENT "Buildings" + TX_OBJ_BATENNEMIS "Enemy buildings" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_WIN1 "Well done !" + TX_WIN2 "Yes, great ..." + TX_WIN3 "Very good." + TX_WIN4 "Excellent..." + TX_WIN5 "Mission over..." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST1 "You have failed, try again..." + TX_LOST2 "No, wrong way ..." + TX_LOST3 "Bang, failed again !" + TX_LOST4 "Another mistake..." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST5 "No, not that way !" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LASTWIN1 "Now go on mission." + TX_LASTWIN2 "Very good, success on all missions !" + TX_LASTWIN3 "Last construction resolved !" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP9 "Slower" + TX_BUTTON_SETUP10 "Faster" + TX_INFO_SETUP1 "Global game\nspeed" + TX_INFO_SETUP2 "Sound effect\nvolume" + TX_INFO_SETUP3 "Music\nvolume" + TX_INFO_SETUP4 "Video\nsequences" + TX_INFO_SETUP5 "Scroll speed\nwith mouse" + TX_INFO_NOSCROLL "None" + TX_BUTTON_REGION1 "Prairie" + TX_BUTTON_REGION2 "Desert" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION3 "Forest under snow" + TX_BUTTON_REGION4 "Forest" + TX_REGION "Scenery choice" + TX_BUTTON_PLAY_STOP "Interrupt" + TX_BUTTON_PLAY_SETUP "Settings" + TX_BUTTON_PLAY_WRITE "Save" + TX_INSERT "Insert CD-Rom Planet Blupi and wait a few seconds..." + TX_BUTTON_PREVH "Previous page" + TX_BUTTON_NEXTH "Next page" + TX_BUTTON_TERMHMETAL "Platinium on striped paving stones" + TX_BUTTON_HELP "Help" + TX_HELP "Help number" + TX_BUTTON_PRIVE "Construction" + TX_PRIVATE "Construction number" + TX_IONAMEPR "Construction %d, time %d" + TX_PRIVATE_HACHBLUPI "1|Go on striped\n1| paving stones." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_FABDISC "Make a helper robot" + TX_ACTION_REPEAT "Repeat" + TX_ACTION_QARMURE "Quit" + TX_ACTION_FABARMURE "Make armour" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_HACHPLANCHE "1|Drop planks on striped \n1|paving stones." + TX_PRIVATE_HACHTOMATE "1|Drop tomatoes on striped \n1|paving stones." + TX_PRIVATE_HACHMETAL "1|Drop platinium on striped \n1|paving stones." + TX_PRIVATE_STOPFIRE "1|Resist until\n1|fire extinction ..." + TX_PRIVATE_HOMEBLUPI "1|Each Blupi in\n1|his house." + TX_PRIVATE_KILLROBOTS "1|Kill all\n1|enemies !" + TX_BUTTON_UNDO "Cancel last operation" + TX_DEMO_END1 "You have played the DEMO version of Planet Blupi." + TX_DEMO_END2 "We hope you have had as much fun playing the game as we had making it !" + TX_DEMO_END3 "This game is an original creation of EPSITEC SA, CH-1092 Belmont" + TX_DEMO_END4 "http://www.blupi.com blupi@epsitec.ch" + TX_FULL_END1 "You have played Planet Blupi." + TX_FULL_END2 "We hope you have had as much fun playing the game as we had making it !" + TX_FULL_END3 "This game is an original creation of EPSITEC SA, CH-1092 Belmont" + TX_FULL_END4 "http://www.blupi.com blupi@epsitec.ch" + TX_PRIVATE_OBJECTIF "1|Goal :" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_NBBLUPI "1|The Blupi population must \n1|be of at least %d Blupis." + TX_BUTTON_SKILL "Skill level" + TX_SKILL1 "Easy" + TX_SKILL2 "Difficult" + TX_BUTTON_DEMO "Demo" + TX_DEMOREC "REC" + TX_DEMOPLAY "Demo" + TX_BUTTON_TERMHROBOT "Robot on striped paving stones" + TX_PRIVATE_HACHROBOT "1|The robot must reach\n1|the striped paving stones." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_REPEAT_CULTIVE "1: Grow tomatoes\n2: Eat" + TX_REPEAT_FLEUR "1: Make a bunch\n2: Transform" + TX_REPEAT_FLEURQ "1: Take\n2: Transform" + TX_REPEAT_FABMINE "1: Extract iron\n2: Make a bomb" + TX_REPEAT_FABJEEP "1: Extract iron\n2: Make a Jeep" + TX_REPEAT_PALIS "1: Cut down a tree \n2: Make a palisade" + TX_REPEAT_PALISQ "1: Take\n2: Build palisade" + TX_REPEAT_PONT "1: Cut down a tree \n2: Build a bridge" + TX_REPEAT_PONTQ "1: Take\n2: Build a bridge" + TX_REPEAT_BATEAU "1: Cut down a tree \n2: Make a boat" + TX_REPEAT_BATEAUQ "1: Take\n2: Make a boat" + TX_REPEAT_FABARMURE "1: Extract iron\n2: Make an armour" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_MURPAL "Wall or palisade" + TX_OBJ_OBJET "Items" + TX_OBJ_ARME "Weapons" + TX_OBJ_VEHICULE "Transport" + TX_OBJ_STARTFEU "Starting fire" + TX_OBJ_DELOBJ "Delete item" + TX_OBJ_DELPERSO "Delete figure" + TX_OBJ_DELFEU "Delete fire" + TX_OBJ_PLANTE "Decorative plants" + TX_OBJ_BARENNEMIS "Enemy barrier" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_DIRECT_N "N" + TX_DIRECT_S "S" + TX_DIRECT_E "E" + TX_DIRECT_O "W" +END + +#endif // French (Switzerland) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/blupi-f.rc b/blupi-f.rc new file mode 100644 index 0000000..d35e46e --- /dev/null +++ b/blupi-f.rc @@ -0,0 +1,489 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (Switzerland) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRS) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "blupi.ico" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100c04b0" + BEGIN + VALUE "CompanyName", "EPSITEC\0" + VALUE "FileDescription", "Blupi\0" + VALUE "FileVersion", "0, 4, 0, 0\0" + VALUE "InternalName", "Planet Blupi\0" + VALUE "LegalCopyright", "Copyright © 1997\0" + VALUE "OriginalFilename", "Blupi.exe\0" + VALUE "ProductName", "EPSITEC Planet Blupi\0" + VALUE "ProductVersion", "0, 4, 0, 0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x100c, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR DISCARDABLE "cursor1.cur" +IDC_MAP CURSOR DISCARDABLE "map.cur" +IDC_ARROWU CURSOR DISCARDABLE "arrowup.cur" +IDC_ARROWD CURSOR DISCARDABLE "arrowdow.cur" +IDC_ARROWL CURSOR DISCARDABLE "arrowlef.cur" +IDC_ARROWR CURSOR DISCARDABLE "arrowrig.cur" +IDC_ARROWUL CURSOR DISCARDABLE "arrowul.cur" +IDC_ARROWUR CURSOR DISCARDABLE "arrowur.cur" +IDC_ARROWDR CURSOR DISCARDABLE "arrowdr.cur" +IDC_ARROWDL CURSOR DISCARDABLE "arrowdl.cur" +IDC_WAIT CURSOR DISCARDABLE "wait.cur" +IDC_EMPTY CURSOR DISCARDABLE "empty.cur" +IDC_FILL CURSOR DISCARDABLE "fill.cur" +IDC_ARROW CURSOR DISCARDABLE "arrow.cur" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_GO "Va" + TX_ACTION_STOP "Stoppe" + TX_ACTION_MANGE "Mange" + TX_ACTION_CARRY "Prend" + TX_ACTION_DEPOSE "Dépose" + TX_ACTION_ABAT "Abat un arbre" + TX_ACTION_ROC "Taille un rocher" + TX_ACTION_CULTIVE "Cultive un jardin" + TX_ACTION_BUILD1 "Cabane de jardin" + TX_ACTION_BUILD2 "Couveuse" + TX_ACTION_BUILD3 "Laboratoire" + TX_ACTION_BUILD4 "Mine de fer" + TX_ACTION_BUILD5 "Usine" + TX_ACTION_BUILD6 "Téléporteur" + TX_ACTION_MUR "Mur anti-feu" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_PALIS "Palissade" + TX_ACTION_ABATn "Abat des arbres" + TX_ACTION_ROCn "Taille des rochers" + TX_ACTION_PONT "Pont" + TX_ACTION_TOUR "Tour de protection" + TX_ACTION_BOIT "Boit" + TX_ACTION_LABO "Transforme" + TX_ACTION_FLEUR "Fait un bouquet" + TX_ACTION_FLEURn "Fait des bouquets" + TX_ACTION_DYNAMITE "Explose" + TX_ACTION_BATEAU "Bateau" + TX_ACTION_DJEEP "Descend" + TX_ACTION_DRAPEAU "Cherche du fer" + TX_ACTION_EXTRAIT "Extrait du fer" + TX_ACTION_FABJEEP "Farbique une jeep" + TX_ACTION_FABMINE "Fabrique une bombe" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ERROR_MISC "Impossible ici" + TX_ERROR_GROUND "Terrain pas adapté" + TX_ERROR_FREE "Terrain occupé" + TX_ERROR_PONTOP "Autre rive pas ok" + TX_ERROR_PONTTERM "Pont terminé" + TX_ERROR_TOURISOL "(tour isolée)" + TX_ERROR_TOUREAU "Trop près de l'eau" + TX_ERROR_TELE2 "Déjà 2 téléporteurs" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_IONAMEEX "entraînement %d, temps %d" + TX_IOFREE "libre" + TX_TERMMIN "Perdu si moins de %d blupi" + TX_TERMMAX "Impossible de gagner si moins de %d blupi" + TX_BUTTON_JOUER "Missions" + TX_BUTTON_APPRENDRE "Entraînement" + TX_BUTTON_QUITTER "Quitter BLUPI" + TX_BUTTON_PREVP "Partie précédente" + TX_BUTTON_NEXTP "Partie suivante" + TX_BUTTON_PLAYP "Jouer cette partie" + TX_BUTTON_BUILDP "Construire cette partie" + TX_BUTTON_TERM "Terminer" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_READP "Ouvrir une autre partie" + TX_BUTTON_WRITEP "Enregistrer la partie en cours" + TX_BUTTON_CANCELP "Abandonner la partie" + TX_BUTTON_CONTP "Continuer la partie" + TX_BUTTON_REPEAT "Recommencer" + TX_BUTTON_BUTTON "Boutons disponibles" + TX_BUTTON_CTERM "Conditions de fin" + TX_BUTTON_TERMC "Terminer la construction" + TX_BUTTON_TERMHBLUPI "Blupi sur dalles hachurées" + TX_BUTTON_TERMHPLANCHE "Planches sur dalles hachurées" + TX_BUTTON_TERMFIRE "Feu stoppé" + TX_BUTTON_TERMDEC "(-)" + TX_BUTTON_TERMINC "(+)" + TX_PAUSE "Partie interrompue" + TX_JAUGE1 "Energie de Blupi" + TX_JAUGE2 "Travail en cours" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP "Réglages" + TX_BUTTON_MUSIC "Choix de la musique" + TX_BUTTON_SETUP1 "Diminue la vitesse" + TX_BUTTON_SETUP2 "Augmente la vitesse" + TX_BUTTON_SETUP3 "Diminue le volume" + TX_BUTTON_SETUP4 "Augmente le volume" + TX_BUTTON_MUSIC1 "Pas de musique" + TX_BUTTON_MUSIC2 "Musique numéro 1" + TX_BUTTON_MUSIC3 "Musique numéro 2" + TX_BUTTON_MUSIC4 "Musique numéro 3" + TX_BUTTON_MUSIC5 "Musique numéro 4" + TX_BUTTON_MUSIC6 "Musique numéro 5" + TX_BUTTON_MUSIC7 "Musique numéro 6" + TX_BUTTON_MUSIC8 "Musique numéro 7" + TX_BUTTON_MUSIC9 "Musique numéro 8" + TX_BUTTON_MUSIC10 "Musique numéro 9" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION "Choix des décors" + TX_BUTTON_TERMMBLUPI "Blupi dans sa maison" + TX_BUTTON_TERMKILL "Plus d'ennemis" + TX_TERM "Conditions de fin" + TX_BUTTON "Boutons disponibles" + TX_MUSIC "Choix des musiques" + TX_SCHOOL "Entraînement numéro" + TX_MISSION "Mission numéro" + TX_IONAMEMI "mission %d, temps %d" + TX_BUTTON_TERMHTOMATE "Tomates sur dalles hachurées" + TX_BUTTON_SETUP5 "Diminue le volume" + TX_BUTTON_SETUP6 "Augmente le volume" + TX_BUTTON_SETUP7 "Pas de vidéo" + TX_BUTTON_SETUP8 "Montre les vidéos" + TX_OUI "Oui" + TX_NON "Non" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_BLUPIm "Blupi malade" + TX_OBJ_BLUPIf "Blupi fatigué" + TX_OBJ_BLUPI "Blupi" + TX_OBJ_BATEAU "Bateau" + TX_OBJ_JEEP "Jeep" + TX_OBJ_PIEGE "Piège à glu" + TX_OBJ_POISON "Poison" + TX_OBJ_DYNAMITE "Dynamite" + TX_OBJ_MINE "Bombe à retardement" + TX_OBJ_TOMATE "Tomates" + TX_OBJ_POTION "Potion" + TX_OBJ_PLANCHE "Planches" + TX_OBJ_PIERRE "Pierres" + TX_OBJ_DRAPEAU "Drapeau" + TX_OBJ_FER "Minerai de fer" + TX_OBJ_FLEUR1 "Fleurs" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_FLEUR2 "Fleurs" + TX_OBJ_FLEUR3 "Fleurs" + TX_OBJ_CABANE "Cabane de jardin" + TX_OBJ_LABO "Laboratoire" + TX_OBJ_MINEFER "Mine de fer" + TX_OBJ_USINE "Usine" + TX_OBJ_TOUR "Tour de protection" + TX_OBJ_FEU "Feu" + TX_OBJ_ROBOT "Robot-maître" + TX_OBJ_TRACKS "Bulldozer" + TX_OBJ_BOMBE "Bombe sauteuse" + TX_OBJ_ARAIGNEE "Araignée" + TX_OBJ_VIRUS "Virus" + TX_OBJ_ELECTRO "Electrocuteur" + TX_OBJ_ARBRE "Arbres" + TX_OBJ_MUR "Mur anti-feu" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_ARBREb "Troncs" + TX_OBJ_ROC "Rochers" + TX_OBJ_OEUF "Oeufs" + TX_OBJ_PALISSADE "Palissade" + TX_OBJ_ENNEMIp "Ennemi piégé" + TX_OBJ_ENNEMI "Construction ennemie" + TX_OBJ_HERBE "Sol normal" + TX_OBJ_MOUSSE "Sol inflammable" + TX_OBJ_TERRE "Sol improductif" + TX_OBJ_EAU "Eau" + TX_OBJ_RIVE "Rive" + TX_OBJ_MIXTE "Sol mixte" + TX_OBJ_PONT "Pont" + TX_OBJ_COUVEUSE "Couveuse" + TX_OBJ_GLACE "Glace" + TX_OBJ_MAISON "Maison de blupi" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_HACHURE "Dalles hachurées" + TX_OBJ_MOUSSEb "Mousse brûlée" + TX_OBJ_BOUQUET1 "Bouquet de fleurs" + TX_OBJ_BOUQUET2 "Bouquet de fleurs" + TX_OBJ_BOUQUET3 "Bouquet de fleurs" + TX_OBJ_DALLE "Dalles" + TX_OBJ_ENNEMIs "Sol ennemi" + TX_OBJ_DISCIPLE "Robot-aide" + TX_OBJ_METAL "Platinium" + TX_OBJ_FUSEE "Fusée ennemie" + TX_OBJ_TELEPORTE "Téléporteur" + TX_OBJ_ARMURE "Armure" + TX_OBJ_DALLESPEC "Dalles spéciales" + TX_OBJ_COUVTELE "Couveuse ou téléporteur" + TX_OBJ_BATIMENT "Bâtiments" + TX_OBJ_BATENNEMIS "Bâtiments ennemis" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_WIN1 "Bravo, c'est réussi !" + TX_WIN2 "Oui, super ..." + TX_WIN3 "Très bien." + TX_WIN4 "Magnifique, excellent ..." + TX_WIN5 "Mission accomplie." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST1 "C'est raté, essaie encore une fois" + TX_LOST2 "Et non, ce n'est pas ça ..." + TX_LOST3 "Paf, c'est raté !" + TX_LOST4 "Caramba, encore raté ..." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LOST5 "Mais non, pas comme ça !" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_LASTWIN1 "Passe maintenant aux missions." + TX_LASTWIN2 "Magnifique, le jeu est terminé !" + TX_LASTWIN3 "Dernière construction résolue !" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_SETUP9 "Diminue la vitesse" + TX_BUTTON_SETUP10 "Augmente la vitesse" + TX_INFO_SETUP1 "Vitesse globale\ndu jeu" + TX_INFO_SETUP2 "Volume\ndes bruitages" + TX_INFO_SETUP3 "Volume\ndes musiques" + TX_INFO_SETUP4 "Séquences\nvidéo" + TX_INFO_SETUP5 "Vitesse\ndes décalages\navec la souris" + TX_INFO_NOSCROLL "Aucun" + TX_BUTTON_REGION1 "Prairie" + TX_BUTTON_REGION2 "Désert" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_BUTTON_REGION3 "Forêt enneigée" + TX_BUTTON_REGION4 "Forêt" + TX_REGION "Choix de la région" + TX_BUTTON_PLAY_STOP "Interrompre" + TX_BUTTON_PLAY_SETUP "Réglages" + TX_BUTTON_PLAY_WRITE "Enregistrer" + TX_INSERT "Veuillez insérer le CD-Rom Planète Blupi, puis attendre quelques secondes ..." + TX_BUTTON_PREVH "Page précédente" + TX_BUTTON_NEXTH "Page suivante" + TX_BUTTON_TERMHMETAL "Platinium sur dalles hachurées" + TX_BUTTON_HELP "Aide" + TX_HELP "Aide numéro" + TX_BUTTON_PRIVE "Construction" + TX_PRIVATE "Construction numéro" + TX_IONAMEPR "construction %d, temps %d" + TX_PRIVATE_HACHBLUPI "1|Aller sur les dalles\n1|hachurées." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_ACTION_FABDISC "Fabrique un robot" + TX_ACTION_REPEAT "Répète" + TX_ACTION_QARMURE "Quitte" + TX_ACTION_FABARMURE "Fabrique une armure" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_HACHPLANCHE "1|Déposer des planches\n1|sur les dalles hachurées." + TX_PRIVATE_HACHTOMATE "1|Déposer des tomates\n1|sur les dalles hachurées." + TX_PRIVATE_HACHMETAL "1|Déposer du platinium\n1|sur les dalles hachurées." + TX_PRIVATE_STOPFIRE "1|Résister jusqu'à\n1|l'extinction du feu ..." + TX_PRIVATE_HOMEBLUPI "1|Chaque Blupi dans\n1|sa maison." + TX_PRIVATE_KILLROBOTS "1|Supprimer tous les\n1|ennemis !" + TX_BUTTON_UNDO "Annuler la dernière opération" + TX_DEMO_END1 "Vous avez joué à la version DEMO de Planète Blupi." + TX_DEMO_END2 "Nous espérons que vous avez eu autant de plaisir à y jouer que nous à le réaliser !" + TX_DEMO_END3 "Ce jeu est une création originale d'EPSITEC SA, CH-1092 Belmont" + TX_DEMO_END4 "http://www.blupi.com blupi@epsitec.ch" + TX_FULL_END1 "Vous avez joué à Planète Blupi." + TX_FULL_END2 "Nous espérons que vous avez eu autant de plaisir à y jouer que nous à le réaliser !" + TX_FULL_END3 "Ce jeu est une création originale d'EPSITEC SA, CH-1092 Belmont" + TX_FULL_END4 "http://www.blupi.com blupi@epsitec.ch" + TX_PRIVATE_OBJECTIF "1|Objectif :" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_PRIVATE_NBBLUPI "1|La population doit être\n1|d'au moins %d Blupi." + TX_BUTTON_SKILL "Niveau de difficulté" + TX_SKILL1 "Facile" + TX_SKILL2 "Difficile" + TX_BUTTON_DEMO "Démo" + TX_DEMOREC "REC" + TX_DEMOPLAY "Démo" + TX_BUTTON_TERMHROBOT "Robot sur dalles hachurées" + TX_PRIVATE_HACHROBOT "1|Le robot doit atteindre\n1|les dalles hachurées." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_REPEAT_CULTIVE "1: Cultive ...\n2: Mange" + TX_REPEAT_FLEUR "1: Fait un bouquet\n2: Transforme" + TX_REPEAT_FLEURQ "1: Prend\n2: Transforme" + TX_REPEAT_FABMINE "1: Extrait du fer\n2: Fabrique bombe" + TX_REPEAT_FABJEEP "1: Extrait du fer\n2: Fabrique jeep" + TX_REPEAT_PALIS "1: Abat un arbre\n2: Construit palissade" + TX_REPEAT_PALISQ "1: Prend\n2: Construit palissade" + TX_REPEAT_PONT "1: Abat un arbre\n2: Construit pont" + TX_REPEAT_PONTQ "1: Prend\n2: Construit pont" + TX_REPEAT_BATEAU "1: Abat un arbre\n2: Construit bateau" + TX_REPEAT_BATEAUQ "1: Prend\n2: Construit bateau" + TX_REPEAT_FABARMURE "1: Extrait du fer\n2: Fabrique armure" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OBJ_MURPAL "Mur ou palissade" + TX_OBJ_OBJET "Objets" + TX_OBJ_ARME "Armes" + TX_OBJ_VEHICULE "Moyens de transport" + TX_OBJ_STARTFEU "Début d'incendie" + TX_OBJ_DELOBJ "Supprime objet" + TX_OBJ_DELPERSO "Supprime personnage" + TX_OBJ_DELFEU "Supprime feu" + TX_OBJ_PLANTE "Plantes ornementales" + TX_OBJ_BARENNEMIS "Barrière ennemie" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_DIRECT_N "N" + TX_DIRECT_S "S" + TX_DIRECT_E "E" + TX_DIRECT_O "O" +END + +#endif // French (Switzerland) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/def.h b/def.h new file mode 100644 index 0000000..afae2f4 --- /dev/null +++ b/def.h @@ -0,0 +1,461 @@ +// Def.h +// + +#pragma once + +#include + +#define _DEMO FALSE // TRUE=demo, FALSE=complet +#define _INTRO FALSE // TRUE si images d'introduction +#define _EGAMES FALSE // TRUE version pour eGames +#define _SE FALSE // TRUE eGames Special Edition + + +#define LXIMAGE 640 // dimensions de la fenêtre de jeu +#define LYIMAGE 480 + +#define MAXCELX 100 // nb max de cellules d'un monde +#define MAXCELY 100 + +//#define DIMCELX 60 // dimensions d'une cellule (décor) +//#define DIMCELY 30 + +//#define DIMOBJX 120 // dimensions d'un objet +//#define DIMOBJY 120 + +//#define DIMBLUPIX 60 // dimensions de blupi +//#define DIMBLUPIY 60 +//#define SHIFTBLUPIY 5 // petit décalage vers le haut + +#define DIMBUTTONX 40 // dimensions d'un button +#define DIMBUTTONY 40 + +#define DIMJAUGEX 124 // dimensions de la jauge +#define DIMJAUGEY 22 + +#define DIMTEXTX 16 // dimensions max d'un caractère +#define DIMTEXTY 16 + +#define DIMLITTLEX 16 // dimensions max d'un petit caractère +#define DIMLITTLEY 12 + +#define CHBACK 0 +#define CHOBJECT 1 +#define CHBLUPI 2 +#define CHDECOR 3 +#define CHHILI 5 +#define CHFOG 6 +#define CHMASK1 7 +#define CHMAP 8 +#define CHEXPLO 9 +#define CHELEMENT 10 +#define CHBLUPI001 11 +#define CHBLUPI002 12 +#define CHBLUPI003 13 +#define CHTEMP 14 + + +// Directions : + +#define DIRECT_LEFT 1 +#define DIRECT_RIGHT 2 + + +// Actions : + +#define ACTION_STOP 0 // arrêt +#define ACTION_STOPf 1 // arrêt fatigué +#define ACTION_MARCHE 2 // marche +#define ACTION_MARCHEf 3 // marche fatigué +#define ACTION_BUILD 4 // construit +#define ACTION_PIOCHE 5 // pioche +#define ACTION_ENERGY 6 // prend de l'énergie +#define ACTION_TAKE 8 // fait sauter un objet sur la tête (est) +#define ACTION_DEPOSE 9 // repose l'objet sur la tête (est) +#define ACTION_SCIE 10 // scie du bois +#define ACTION_BRULE 11 // blupi crame ! +#define ACTION_TCHAO 12 // blupi disparait ! +#define ACTION_MANGE 13 // blupi mange +#define ACTION_NAISSANCE 14 // naissance +#define ACTION_SAUTE2 15 // saute par-dessus un obstacle +#define ACTION_SAUTE3 16 // saute par-dessus un obstacle +#define ACTION_SAUTE4 17 // saute par-dessus un obstacle +#define ACTION_SAUTE5 18 // saute par-dessus un obstacle +#define ACTION_PONT 19 // pousse un pont +#define ACTION_MISC1 20 // divers 1 (hausse les épaules) +#define ACTION_MISC2 21 // divers 2 (grat-grat) +#define ACTION_MISC3 22 // divers 3 (yoyo) +#define ACTION_MISC1f 23 // divers 1 fatigué (bof-bof) +#define ACTION_GLISSE 24 // glisse en marchant +#define ACTION_BOIT 25 // blupi boit +#define ACTION_LABO 26 // blupi travaille dans son laboratoire +#define ACTION_DYNAMITE 27 // blupi fait péter la dynamite +#define ACTION_DELAY 28 // blupi attend un frame +#define ACTION_CUEILLE1 29 // blupi cueille des fleurs +#define ACTION_CUEILLE2 30 // blupi cueille des fleurs +#define ACTION_MECHE 31 // blupi se bouche les oreilles +#define ACTION_STOPb 32 // arrêt en bateau +#define ACTION_MARCHEb 33 // avance en bateau +#define ACTION_STOPj 34 // arrêt en jeep +#define ACTION_MARCHEj 35 // avance en jeep +#define ACTION_ELECTRO 36 // blupi électrocuté +#define ACTION_GRILLE1 37 // blupi grille (phase 1) +#define ACTION_GRILLE2 38 // blupi grille (phase 2) +#define ACTION_GRILLE3 39 // blupi grille (phase 3) +#define ACTION_MISC4 40 // divers 4 (ferme les yeux) +#define ACTION_CONTENT 41 // blupi est content +#define ACTION_ARROSE 42 // blupi arrose +#define ACTION_BECHE 43 // blupi bèche +#define ACTION_CUEILLE3 44 // blupi cueille des fleurs +#define ACTION_BUILDBREF 45 // construit +#define ACTION_BUILDSEC 46 // construit +#define ACTION_BUILDSOURD 47 // construit +#define ACTION_BUILDPIERRE 48 // construit +#define ACTION_PIOCHEPIERRE 49 // pioche +#define ACTION_PIOCHESOURD 50 // pioche +#define ACTION_MISC5 51 // divers 5 (ohé) +#define ACTION_TELEPORTE1 52 // téléporte +#define ACTION_TELEPORTE2 53 // téléporte +#define ACTION_TELEPORTE3 54 // téléporte +#define ACTION_STOPa 55 // arrêt armure +#define ACTION_MARCHEa 56 // marche armure +#define ACTION_ARMUREOPEN 57 // ouvre armure +#define ACTION_ARMURECLOSE 58 // ferme armure +#define ACTION_SAUTE1 59 // saute dans la jeep +#define ACTION_MISC6 60 // divers 6 (diabolo) + +#define ACTION_A_STOP 100 // araignée: arrêt +#define ACTION_A_MARCHE 101 // araignée: marche +#define ACTION_A_SAUT 102 // araignée: saute +#define ACTION_A_GRILLE 103 // araignée: grille dans rayon +#define ACTION_A_POISON 105 // araignée: empoisonée +#define ACTION_A_MORT1 106 // araignée: meurt +#define ACTION_A_MORT2 107 // araignée: meurt +#define ACTION_A_MORT3 108 // araignée: meurt + +#define ACTION_V_STOP 200 // virus: arrêt +#define ACTION_V_MARCHE 201 // virus: marche +#define ACTION_V_GRILLE 202 // virus: grille dans rayon + +#define ACTION_T_STOP 300 // tracks: arrêt +#define ACTION_T_MARCHE 301 // tracks: marche +#define ACTION_T_ECRASE 302 // tracks: écrase un objet + +#define ACTION_R_STOP 400 // robot: arrêt +#define ACTION_R_MARCHE 401 // robot: marche +#define ACTION_R_APLAT 402 // robot: applatit +#define ACTION_R_BUILD 403 // robot: construit +#define ACTION_R_DELAY 404 // robot: construit +#define ACTION_R_CHARGE 405 // robot: recharge +#define ACTION_R_ECRASE 406 // robot: écrase un objet + +#define ACTION_B_STOP 500 // bombe: arrêt +#define ACTION_B_MARCHE 501 // bombe: marche + +#define ACTION_D_DELAY 600 // détonnateur: attend + +#define ACTION_E_STOP 700 // électro: arrêt +#define ACTION_E_MARCHE 701 // électro: marche +#define ACTION_E_DEBUT 702 // électro: débute +#define ACTION_E_RAYON 703 // électro: rayonne + +#define ACTION_D_STOP 800 // disciple: arrêt +#define ACTION_D_MARCHE 801 // disciple: marche +#define ACTION_D_BUILD 802 // disciple: construit +#define ACTION_D_PIOCHE 803 // disciple: pioche +#define ACTION_D_SCIE 804 // disciple: scie du bois +#define ACTION_D_TCHAO 805 // disciple: disparait ! +#define ACTION_D_CUEILLE1 806 // disciple: cueille des fleurs +#define ACTION_D_CUEILLE2 807 // disciple: cueille des fleurs +#define ACTION_D_MECHE 808 // disciple: se bouche les oreilles +#define ACTION_D_ARROSE 809 // disciple: arrose +#define ACTION_D_BECHE 810 // disciple: bèche + + +// Sons : + +#define SOUND_CLICK 0 +#define SOUND_JUMP_MEDIUM 1 +#define SOUND_JUMP_HIGH 2 +#define SOUND_STEP 3 +#define SOUND_BONK 4 +#define SOUND_TURN 5 +#define SOUND_WHOOPS 6 +#define SOUND_CROUCH 7 +#define SOUND_WAH 8 +#define SOUND_RESPAWN 9 +#define SOUND_EXPLODE 10 +#define SOUND_CHEST 11 +#define SOUND_EGG 12 +#define SOUND_NOT_ENOUGH 13 +#define SOUND_WIN 14 +#define SOUND_HELI_START 15 +#define SOUND_HELI_MOVE 16 +#define SOUND_HELI_STOP 17 +#define SOUND_HELI_IDLE 18 +#define SOUND_CHEST_LAST 19 +#define SOUND_CROUCH_END 20 +#define SOUND_LOOK_UP 21 +#define SOUND_JUMP_LOW 22 +#define SOUND_SPLASH_BIG 23 +#define SOUND_BUBBLES 24 +#define SOUND_GASP 25 +#define SOUND_DROWN 26 +#define SOUND_CANT_USE 27 +#define SOUND_JEEP_START 28 +#define SOUND_JEEP_MOVE 29 +#define SOUND_JEEP_STOP 30 +#define SOUND_JEEP_IDLE 31 +#define SOUND_LEVEL_START 32 +#define SOUND_DOOR_OPEN 33 +#define SOUND_BAR_GRAB 34 +#define SOUND_BAR_PULLUP 35 +#define SOUND_MONKEY 36 +#define SOUND_FOOT_TAP 37 +#define SOUND_CASE_PUSH 38 +#define SOUND_CASE_PULL 39 +#define SOUND_HURT_HEAD 40 +#define SOUND_DOINK 41 +#define SOUND_SHIELD_START 42 +#define SOUND_SHIELD_END 43 +#define SOUND_LOLLY_START 44 +#define SOUND_LOLLY_END 45 +#define SOUND_PHEW 46 +#define SOUND_EXHILARATED 47 +#define SOUND_EFFORT 48 +#define SOUND_FRIGHTEN 49 +#define SOUND_LOLLY_EAT 50 +#define SOUND_GLUE_HIT 51 +#define SOUND_GLUE_FIRE 52 +#define SOUND_NO_ITEMS 53 +#define SOUND_GLUE_GET 54 +#define SOUND_POWER_START 55 +#define SOUND_POWER_END 56 +#define SOUND_DRINK 57 +#define SOUND_POWER_GET 58 +#define SOUND_POWER_HIT 59 +#define SOUND_BOMB_GET 60 +#define SOUND_BOMB_USE 61 +#define SOUND_INVIS_START 62 +#define SOUND_INVIS_END 63 +#define SOUND_SPLASH_SMALL 64 +#define SOUND_TAUNT 65 + +// Speedy Blupi 2 +#define SOUND_INVERT_START 66 +#define SOUND_INVERT_END 67 +#define SOUND_SPRING 68 // where is this used ? +#define SOUND_LIGHTNING 69 +#define SOUND_CRUSH_START 70 +#define SOUND_TELEPORT 71 +#define SOUND_BRIDGE_BREAK 72 +#define SOUND_BRIDGE_APPEAR 73 +#define SOUND_DIE 74 +#define SOUND_SAW_HIT 75 +#define SOUND_SAW_STOP 76 +#define SOUND_SAW_START 77 +#define SOUND_STEP_WOOD 78 +#define SOUND_BONK_WOOD 79 +#define SOUND_STEP_METAL 80 +#define SOUND_BONK_METAL 81 +#define SOUND_STEP_CAVE 82 +#define SOUND_BONK_CAVE 83 +#define SOUND_STEP_SLIME 84 +#define SOUND_BONK_SLIME 85 +#define SOUND_STEP_PLASTIC 86 +#define SOUND_BONK_PLASTIC 87 +#define SOUND_STEP_CHEESE 88 +#define SOUND_BONK_CHEESE 89 +#define SOUND_STEP_GRASS 90 +#define SOUND_BONK_GRASS 91 +#define SOUND_HOMING_BOMB 92 + +#define SOUND_MOVIE 99 + + +// Boutons (play) : + +#define MAXBUTTON 40 + +/* ? +#define BUTTON_GO 0 +#define BUTTON_STOP 1 +#define BUTTON_MANGE 2 +#define BUTTON_CARRY 3 +#define BUTTON_DEPOSE 4 +#define BUTTON_ABAT 5 +#define BUTTON_ROC 6 +#define BUTTON_CULTIVE 7 +#define BUTTON_BUILD1 8 +#define BUTTON_BUILD2 9 +#define BUTTON_BUILD3 10 +#define BUTTON_BUILD4 11 +#define BUTTON_BUILD5 12 +#define BUTTON_BUILD6 13 +#define BUTTON_MUR 14 +#define BUTTON_PALIS 15 +#define BUTTON_ABATn 16 +#define BUTTON_ROCn 17 +#define BUTTON_PONT 18 +#define BUTTON_TOUR 19 +#define BUTTON_BOIT 20 +#define BUTTON_LABO 21 +#define BUTTON_FLEUR 22 +#define BUTTON_FLEURn 23 +#define BUTTON_DYNAMITE 24 +#define BUTTON_BATEAU 25 +#define BUTTON_DJEEP 26 +#define BUTTON_DRAPEAU 27 +#define BUTTON_EXTRAIT 28 +#define BUTTON_FABJEEP 29 +#define BUTTON_FABMINE 30 +#define BUTTON_FABDISC 31 +#define BUTTON_REPEAT 32 +#define BUTTON_DARMURE 33 +#define BUTTON_FABARMURE 34 +*/ + +// Lutins pour la souris + +#define SPRITE_ARROW 1 +#define SPRITE_POINTER 2 +#define SPRITE_MAP 3 +#define SPRITE_ARROWU 4 +#define SPRITE_ARROWD 5 +#define SPRITE_ARROWL 6 +#define SPRITE_ARROWR 7 +#define SPRITE_ARROWUL 8 +#define SPRITE_ARROWUR 9 +#define SPRITE_ARROWDL 10 +#define SPRITE_ARROWDR 11 +#define SPRITE_WAIT 12 +#define SPRITE_EMPTY 13 +#define SPRITE_FILL 14 + + +// User define message + +#define WM_UPDATE (WM_USER+1) + +#define WM_DECOR1 (WM_USER+20) +#define WM_DECOR2 (WM_USER+21) +#define WM_DECOR3 (WM_USER+22) +#define WM_DECOR4 (WM_USER+23) +#define WM_DECOR5 (WM_USER+24) + +#define WM_BUTTON0 (WM_USER+200) +#define WM_BUTTON1 (WM_USER+201) +#define WM_BUTTON2 (WM_USER+202) +#define WM_BUTTON3 (WM_USER+203) +#define WM_BUTTON4 (WM_USER+204) +#define WM_BUTTON5 (WM_USER+205) +#define WM_BUTTON6 (WM_USER+206) +#define WM_BUTTON7 (WM_USER+207) +#define WM_BUTTON8 (WM_USER+208) +#define WM_BUTTON9 (WM_USER+209) +#define WM_BUTTON10 (WM_USER+210) +#define WM_BUTTON11 (WM_USER+211) +#define WM_BUTTON12 (WM_USER+212) +#define WM_BUTTON13 (WM_USER+213) +#define WM_BUTTON14 (WM_USER+214) +#define WM_BUTTON15 (WM_USER+215) +#define WM_BUTTON16 (WM_USER+216) +#define WM_BUTTON17 (WM_USER+217) +#define WM_BUTTON18 (WM_USER+218) +#define WM_BUTTON19 (WM_USER+219) +#define WM_BUTTON20 (WM_USER+220) +#define WM_BUTTON21 (WM_USER+221) +#define WM_BUTTON22 (WM_USER+222) +#define WM_BUTTON23 (WM_USER+223) +#define WM_BUTTON24 (WM_USER+224) +#define WM_BUTTON25 (WM_USER+225) +#define WM_BUTTON26 (WM_USER+226) +#define WM_BUTTON27 (WM_USER+227) +#define WM_BUTTON28 (WM_USER+228) +#define WM_BUTTON29 (WM_USER+229) +#define WM_BUTTON30 (WM_USER+230) +#define WM_BUTTON31 (WM_USER+231) +#define WM_BUTTON32 (WM_USER+232) +#define WM_BUTTON33 (WM_USER+233) +#define WM_BUTTON34 (WM_USER+234) +#define WM_BUTTON35 (WM_USER+235) +#define WM_BUTTON36 (WM_USER+236) +#define WM_BUTTON37 (WM_USER+237) +#define WM_BUTTON38 (WM_USER+238) +#define WM_BUTTON39 (WM_USER+239) + +#define WM_READ0 (WM_USER+300) +#define WM_READ1 (WM_USER+301) +#define WM_READ2 (WM_USER+302) +#define WM_READ3 (WM_USER+303) +#define WM_READ4 (WM_USER+304) +#define WM_READ5 (WM_USER+305) +#define WM_READ6 (WM_USER+306) +#define WM_READ7 (WM_USER+307) +#define WM_READ8 (WM_USER+308) +#define WM_READ9 (WM_USER+309) + +#define WM_WRITE0 (WM_USER+310) +#define WM_WRITE1 (WM_USER+311) +#define WM_WRITE2 (WM_USER+312) +#define WM_WRITE3 (WM_USER+313) +#define WM_WRITE4 (WM_USER+314) +#define WM_WRITE5 (WM_USER+315) +#define WM_WRITE6 (WM_USER+316) +#define WM_WRITE7 (WM_USER+317) +#define WM_WRITE8 (WM_USER+318) +#define WM_WRITE9 (WM_USER+319) + + +#define WM_PHASE_INIT (WM_USER+500) //0x5F4 +#define WM_PHASE_PLAY (WM_USER+501) +#define WM_PHASE_BUILD (WM_USER+502) +//#define WM_PHASE_READ (WM_USER+503) +//#define WM_PHASE_WRITE (WM_USER+504) +//#define WM_PHASE_INFO (WM_USER+505) +//#define WM_PHASE_BUTTON (WM_USER+506) +//#define WM_PHASE_TERM (WM_USER+507) +//#define WM_PHASE_WIN (WM_USER+508) +//#define WM_PHASE_LOST (WM_USER+509) +//#define WM_PHASE_STOP (WM_USER+510) +//#define WM_PHASE_SETUP (WM_USER+511) +//#define WM_PHASE_MUSIC (WM_USER+512) // 0x600 +//#define WM_PHASE_PLAYMOVIE (WM_USER+513) +//#define WM_PHASE_WINMOVIE (WM_USER+514) +//#define WM_PHASE_SCHOOL (WM_USER+515) +//#define WM_PHASE_MISSION (WM_USER+516) +//#define WM_PHASE_LASTWIN (WM_USER+517) +//#define WM_PHASE_WRITEp (WM_USER+518) +//#define WM_PHASE_SETUPp (WM_USER+519) +//#define WM_PHASE_REGION (WM_USER+520) +//#define WM_PHASE_INSERT (WM_USER+521) +//#define WM_PHASE_HISTORY0 (WM_USER+522) +//#define WM_PHASE_HISTORY1 (WM_USER+523) +//#define WM_PHASE_HELP (WM_USER+524) +//#define WM_PHASE_H0MOVIE (WM_USER+525) +//#define WM_PHASE_H1MOVIE (WM_USER+526) +//#define WM_PHASE_H2MOVIE (WM_USER+527) +#define WM_PHASE_TESTCD (WM_USER+528) // 0x610 +#define WM_PHASE_MANUEL (WM_USER+529) +//#define WM_PHASE_PRIVATE (WM_USER+530) +//#define WM_PHASE_UNDO (WM_USER+531) +#define WM_PHASE_BYE (WM_USER+532) +//#define WM_PHASE_SKILL1 (WM_USER+533) +//#define WM_PHASE_SKILL2 (WM_USER+534) +#define WM_PHASE_DEMO (WM_USER+535) +#define WM_PHASE_INTRO1 (WM_USER+536) +#define WM_PHASE_INTRO2 (WM_USER+537) + +#define WM_PREV (WM_USER+600) +#define WM_NEXT (WM_USER+601) +#define WM_MOVIE (WM_USER+602) + + + + +// Types de gestion de la souris. + +#define MOUSETYPEGRA 1 +#define MOUSETYPEWIN 2 +#define MOUSETYPEWINPOS 3 +*/ diff --git a/event.cpp b/event.cpp new file mode 100644 index 0000000..3f61fcd --- /dev/null +++ b/event.cpp @@ -0,0 +1,66 @@ +// Event.cpp +// + +#include +#include +#include +#include +#include "def.h" +#include "resource.h" +#include "pixmap.h" +#include "sound.h" +#include "decor.h" +#include "movie.h" +#include "button.h" +#include "menu.h" +#include "jauge.h" +#include "event.h" +#include "action.h" +#include "text.h" +#include "misc.h" + +///////////////////////////////////////////////////////////////////////////// + +static Phase table[] = +{ + { + WM_PHASE_TESTCD, + "init.blp", + FALSE, + { + { + 0 + } + } + }, + + { + WM_PHASE_INIT, + "init.blp", + FALSE, + { + { + WM_PHASE_GAMER, + 0, {1, 0x30}, + 86, 410, + {1, TX_BUTTON_PLAY} + }, + { + WM_PHASE_DEMO, + 0, {1, 0x54}, + 128, 410, + {1, TX_BUTTON_DEMO} + }, + { +#if _EGAMES + WM_CLOSE, +#else + WM_PHASE_BYE, +#endif + 0, {1, 6}, + 520, 410, + {1, TX_BUTTON_QUIT} + }, + }, + } +} \ No newline at end of file diff --git a/menu.cpp b/menu.cpp new file mode 100644 index 0000000..7c9e691 --- /dev/null +++ b/menu.cpp @@ -0,0 +1,439 @@ +// Menu.cpp +// + +#include +#include +#include +#include +#include "def.h" +#include "resource.h" +#include "pixmap.h" +#include "sound.h" +#include "decor.h" +#include "button.h" +#include "menu.h" +#include "text.h" +#include "misc.h" + + +///////////////////////////////////////////////////////////////////////////// + + +#define MARGMENU 0 + + +static short table_button_icon[] = +{ + 24, // go + 40, // stop + 32, // mange + 30, // carry + 31, // depose + 22, // abat + 27, // roc + 28, // cultive + 19, // build1 (cabane) + 25, // build2 (couveuse) + 35, // build3 (laboratoire) + 61, // build4 (mine) + 59, // build5 (usine) + 101, // build6 (téléporteur) + 20, // mur + 26, // palis + 42, // abat n + 43, // roc n + 23, // pont + 33, // tour + 34, // boit + 39, // labo + 54, // fleur + 55, // fleur n + 41, // dynamite + 58, // bateau + 60, // djeep + 64, // drapeau + 62, // extrait du fer + 65, // fabrique jeep + 63, // fabrique mine + 83, // fabrique disciple + 100, // repeat + 107, // qarmure + 106, // fabarmure +}; + +void GetText(int rank, char *pBuffer, int lgBuffer) +{ + LoadString(TX_ACTION_GO+rank, pBuffer, lgBuffer); +} + +void GetErr(int rank, char *pBuffer, int lgBuffer) +{ + LoadString(TX_ERROR_MISC+rank, pBuffer, lgBuffer); +} + + +///////////////////////////////////////////////////////////////////////////// + +// Constructeur. + +CMenu::CMenu() +{ + m_nbButtons = 0; + m_selRank = -1; +} + +// Destructeur. + +CMenu::~CMenu() +{ +} + + +// Crée un nouveau bouton. + +BOOL CMenu::Create(HWND hWnd, CPixmap *pPixmap, CSound *pSound, + POINT pos, int nb, int *pButtons, int *pErrors, + int perso) +{ + pos.x -= DIMBUTTONX/2; + pos.y -= DIMBUTTONY/2; + + m_hWnd = hWnd; + m_pPixmap = pPixmap; + m_pSound = pSound; + m_nbButtons = nb; + m_pos = pos; + m_perso = perso; + + Update(nb, pButtons, pErrors); + + if ( m_pos.x < POSDRAWX ) m_pos.x = POSDRAWX; + if ( m_pos.y < POSDRAWY ) m_pos.y = POSDRAWY; + + if ( m_pos.x > POSDRAWX+DIMDRAWX-2-m_dim.x ) m_pos.x = POSDRAWX+DIMDRAWX-2-m_dim.x; + if ( m_pos.y > POSDRAWY+DIMDRAWY-2-m_dim.y ) m_pos.y = POSDRAWY+DIMDRAWY-2-m_dim.y; + + if ( m_pos.x != pos.x || m_pos.y != pos.y ) + { + pos = m_pos; + pos.x += DIMBUTTONX/2; + pos.y += DIMBUTTONY/2; + ClientToScreen(m_hWnd, &pos); + SetCursorPos(pos.x, pos.y); + } + + m_selRank = Detect(pos); + + return TRUE; +} + +// Met à jour le menu. + +void CMenu::Update(int nb, int *pButtons, int *pErrors) +{ + int i; + + m_nbButtons = nb; + + if ( nb < 5 ) m_nbCel.x = 1; + else m_nbCel.x = 2; + + m_nbCel.y = (nb+m_nbCel.x-1)/m_nbCel.x; + + m_dim.x = (DIMBUTTONX+MARGMENU)*m_nbCel.x; + m_dim.y = (DIMBUTTONY+MARGMENU)*m_nbCel.y; + + for ( i=0 ; iGetClipping(); + clipRect.left = POSDRAWX; + clipRect.top = POSDRAWY; + clipRect.right = POSDRAWX+DIMDRAWX; + clipRect.bottom = POSDRAWY+DIMDRAWY; + m_pPixmap->SetClipping(clipRect); + + if ( m_pos.x-150 < POSDRAWX ) bLeft = FALSE; + if ( m_pos.x+m_dim.x+150 > POSDRAWX+DIMDRAWX ) bRight = FALSE; + + for ( i=0 ; iDrawIcon(-1, CHBUTTON, state, pos); + + icon = table_button_icon[m_buttons[i]]; + if ( m_perso == 8 ) // disciple ? + { + if ( icon == 30 ) icon = 88; // prend + if ( icon == 31 ) icon = 89; // dépose + } + m_pPixmap->DrawIcon(-1, CHBUTTON, icon+6, pos); + } + + // Affiche le texte d'aide. + if ( m_selRank != -1 ) + { + i = m_selRank; + pos.y = m_pos.y+((i%m_nbCel.y)*(DIMBUTTONY+MARGMENU)); + + if ( m_errors[i] == 0 ) + { + pos.y += (DIMBUTTONY-DIMTEXTY)/2; + } + else + { + pos.y += (DIMBUTTONY-DIMTEXTY*2)/2; + } + + if ( m_errors[i] >= 100 ) // no ressource au lieu erreur ? + { + LoadString(m_errors[i], text, 50); + pText = strchr(text, '\n'); + if ( pText != NULL ) *pText = 0; + } + else + { + GetText(m_buttons[i], text, 50); + } + + if ( m_nbCel.x > 1 && i < m_nbCel.y ) + { +// if ( bLeft ) +// { + pos.x = m_pos.x-4-GetTextWidth(text); // texte à gauche +// } +// else +// { +// pos.x = m_pos.x+((i/m_nbCel.y)+1)+(DIMBUTTONX+MARGMENU)+4; +// } + } + else + { +// if ( bRight ) +// { + pos.x = m_pos.x+m_dim.x+4; // texte à droite +// } +// else +// { +// pos.x = m_pos.x+(i/m_nbCel.y)*(DIMBUTTONX+MARGMENU)-4-GetTextWidth(text); +// } + } + + DrawText(m_pPixmap, pos, text, FONTWHITE); + + if ( m_errors[i] != 0 ) + { + if ( m_errors[i] >= 100 ) // no ressource au lieu erreur ? + { + LoadString(m_errors[i], text, 50); + pText = strchr(text, '\n'); + if ( pText != NULL ) strcpy(text, pText+1); + } + else + { + GetErr(m_errors[i]-1, text, 50); // impossible ici + } + + if ( m_nbCel.x > 1 && i < m_nbCel.y ) + { +// if ( bLeft ) +// { + pos.x = m_pos.x-4-GetTextWidth(text); // texte à gauche +// } +// else +// { +// pos.x = m_pos.x+((i/m_nbCel.y)+1)+(DIMBUTTONX+MARGMENU)+4; +// } + } + else + { +// if ( bRight ) +// { + pos.x = m_pos.x+m_dim.x+4; // texte à droite +// } +// else +// { +// pos.x = m_pos.x+(i/m_nbCel.y)*(DIMBUTTONX+MARGMENU)-4-GetTextWidth(text); +// } + } + + pos.y += DIMTEXTY; + if ( m_errors[i] >= 100 ) // no ressource au lieu erreur ? + { + DrawText(m_pPixmap, pos, text, FONTWHITE); + } + else + { + DrawText(m_pPixmap, pos, text, FONTRED); + } + } + } + + m_pPixmap->SetClipping(oldClip); +} + +// Retourne le bouton sélectionné. + +int CMenu::GetSel() +{ + if ( m_selRank == -1 ) return -1; + + return m_buttons[m_selRank]; +} + +// Retourne le rang sélectionné. + +int CMenu::GetRank() +{ + return m_selRank; +} + +// Retourne TRUE si le bouton sélectionné a une erreur. + +BOOL CMenu::IsError() +{ + if ( m_selRank == -1 ) return TRUE; + + if ( m_errors[m_selRank] != 0 && + m_errors[m_selRank] < 100 ) return TRUE; + + return FALSE; +} + + +// Indique si le menu existe. + +BOOL CMenu::IsExist() +{ + return ( m_nbButtons == 0 ) ? FALSE:TRUE; +} + + +// Traitement d'un événement. + +BOOL CMenu::TreatEvent(UINT message, WPARAM wParam, LPARAM lParam) +{ + POINT pos; + + if ( m_nbButtons == 0 ) return FALSE; + + pos = ConvLongToPos(lParam); + + switch( message ) + { + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + if ( MouseDown(pos) ) return TRUE; + break; + + case WM_MOUSEMOVE: + if ( MouseMove(pos) ) return TRUE; + break; + + case WM_LBUTTONUP: + case WM_RBUTTONUP: + if ( MouseUp(pos) ) return TRUE; + break; + } + + return FALSE; +} + +// Détecte dans quel bouton est la souris. + +int CMenu::Detect(POINT pos) +{ + int rank; + + if ( pos.x < m_pos.x || pos.x > m_pos.x+m_dim.x || + pos.y < m_pos.y || pos.y > m_pos.y+m_dim.y ) return -1; + + rank = (pos.y-m_pos.y)/(DIMBUTTONY+MARGMENU); + rank += ((pos.x-m_pos.x)/(DIMBUTTONX+MARGMENU))*m_nbCel.y; + + if ( rank >= m_nbButtons ) return -1; + return rank; +} + +// Bouton de la souris pressé. + +BOOL CMenu::MouseDown(POINT pos) +{ + return FALSE; +} + +// Souris déplacés. + +BOOL CMenu::MouseMove(POINT pos) +{ + m_mousePos = pos; + m_selRank = Detect(pos); + + if ( pos.x < m_pos.x-(DIMBUTTONX+MARGMENU) || + pos.x > m_pos.x+m_dim.x+(DIMBUTTONX+MARGMENU) || + pos.y < m_pos.y-(DIMBUTTONY+MARGMENU) || + pos.y > m_pos.y+m_dim.y+(DIMBUTTONY+MARGMENU) ) + { + Delete(); // enlève le menu si souris trop loin ! + } + + return FALSE; +} + +// Bouton de la souris relâché. + +BOOL CMenu::MouseUp(POINT pos) +{ + m_mousePos = pos; + m_selRank = Detect(pos); + + return FALSE; +} + +// Envoie le message. + +void CMenu::Message() +{ + if ( m_selRank != -1 ) + { + PostMessage(m_hWnd, WM_BUTTON0+m_selRank, 0, 0); + } +} + + diff --git a/misc.cpp b/misc.cpp new file mode 100644 index 0000000..a32dad2 --- /dev/null +++ b/misc.cpp @@ -0,0 +1,398 @@ +// misc.cpp +// + + +#include +#include +#include +#include +#include "def.h" + + +// Variables globales + +HINSTANCE g_hInstance; +int g_lastSprite = 0; +extern BOOL g_bFullScreen; // FALSE si mode de test +extern int g_mouseType; +extern char g_CDPath[MAX_PATH]; + + + +// Initialise HInstance. + +void InitHInstance(HINSTANCE hInstance) +{ + g_hInstance = hInstance; +} + + +// Affiche un message de debug. + +void OutputDebug(char *pMessage) +{ +#ifdef _DEBUG + OutputDebugString(pMessage); +#endif +} + + +// Charge un texte dans une ressource. + +void LoadString(UINT nID, char *pBuffer, int lgBuffer) +{ + LoadString(g_hInstance, nID, pBuffer, lgBuffer); +} + +// Change le lutin de la souris. + +void ChangeSprite(int sprite) +{ + HCURSOR hCursor = nullptr; + + if ( g_mouseType == MOUSETYPEGRA ) return; + if ( g_lastSprite == sprite ) return; + + if ( sprite == SPRITE_ARROW ) hCursor = LoadCursor(g_hInstance, "IDC_ARROW"); + if ( sprite == SPRITE_POINTER ) hCursor = LoadCursor(g_hInstance, "IDC_POINTER"); + if ( sprite == SPRITE_MAP ) hCursor = LoadCursor(g_hInstance, "IDC_MAP"); + if ( sprite == SPRITE_ARROWU ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWU"); + if ( sprite == SPRITE_ARROWD ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWD"); + if ( sprite == SPRITE_ARROWL ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWL"); + if ( sprite == SPRITE_ARROWR ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWR"); + if ( sprite == SPRITE_ARROWUL ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWUL"); + if ( sprite == SPRITE_ARROWUR ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWUR"); + if ( sprite == SPRITE_ARROWDL ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWDL"); + if ( sprite == SPRITE_ARROWDR ) hCursor = LoadCursor(g_hInstance, "IDC_ARROWDR"); + if ( sprite == SPRITE_WAIT ) hCursor = LoadCursor(g_hInstance, "IDC_WAIT"); + if ( sprite == SPRITE_EMPTY ) hCursor = LoadCursor(g_hInstance, "IDC_EMPTY"); + if ( sprite == SPRITE_FILL ) hCursor = LoadCursor(g_hInstance, "IDC_FILL"); + SetCursor(hCursor); + + g_lastSprite = sprite; +} + + +// Conversion de la position de la souris. + +POINT ConvLongToPos(LPARAM lParam) +{ + POINT pos; + + pos.x = LOWORD(lParam); // horizontal position of cursor + pos.y = HIWORD(lParam); // vertical position of cursor + +// if ( !g_bFullScreen ) +// { +// pos.y -= GetSystemMetrics(SM_CYCAPTION); +// } + + return pos; +} + + +// Réinitialise le générateur aléatoire. + +void InitRandom() +{ + srand(1); +} + +// Retourne un nombre aléatoire compris entre +// deux bornes (inclues). + +int Random(int min, int max) +{ + long n; + + n = rand(); + n = min+(n%(max-min+1)); + + return (int)n; +} + + +// Retourne le nom de dossier en cours. + +void GetCurrentDir(char *pName, int lg) +{ + int i; + + strncpy(pName, _pgmptr, lg-1); + pName[lg-1] = 0; + + lg = strlen(pName); + if ( lg == 0 ) return; + + for ( i=0 ; i 0 ) + { + lg --; + if ( pName[lg] == '\\' ) + { + pName[lg+1] = 0; + break; + } + } + + if ( lg > 6 && strcmp(pName+lg-6, "\\debug\\") == 0 ) + { + pName[lg-5] = 0; // ignore le dossier \debug ! + } +} + + +// Ajoute le chemin permettant de lire un fichier +// sur le CD-Rom. + +void AddCDPath(char *pFilename) +{ + char temp[MAX_PATH]; + int lg; + BOOL bDaniel = FALSE; + + if ( g_CDPath[0] == 0 ) return; + + lg = strlen(g_CDPath); + if ( lg > 14 && strstr(g_CDPath+lg-14, "\\daniel\\blupi\\") ) + { + bDaniel = TRUE; + } + +#if _DEMO + strcpy(temp, g_CDPath); + strcat(temp, pFilename); +#else + if ( !bDaniel && + (strstr(pFilename, "image\\") == pFilename || + strstr(pFilename, "movie\\") == pFilename) ) + { + strcpy(temp, g_CDPath); + strcat(temp, "..\\"); + strcat(temp, pFilename); + } + else + { + strcpy(temp, g_CDPath); + strcat(temp, pFilename); + } +#endif + + strcpy(pFilename, temp); +} + +// Ajoute le chemin permettant de lire un fichier +// utilisateur. + +void AddUserPath(char *pFilename) +{ + char temp[MAX_PATH]; + char* pText; + int pos; + char last; + SECURITY_ATTRIBUTES att; + + if ( g_CDPath[0] != 0 ) return; + +#if _EGAMES + strcpy(temp, "c:\\Planet Blupi Full\\"); +#if _DEMO + strcpy(temp, "c:\\Planet Blupi Demo\\"); +#endif +#if _SE + strcpy(temp, "c:\\Planet Blupi SE\\"); +#endif +#else + strcpy(temp, "c:\\Planète Blupi\\"); +#endif + + att.nLength = sizeof(SECURITY_ATTRIBUTES); + att.lpSecurityDescriptor = NULL; + att.bInheritHandle = FALSE; + CreateDirectory(temp, &att); + + pText = strstr(pFilename, "\\"); + if ( pText != NULL ) + { + pos = strlen(temp)+(pText-pFilename)+1; + strcat(temp, pFilename); + last = temp[pos]; + temp[pos] = 0; + CreateDirectory(temp, &att); + temp[pos] = last; + } + else + { + strcat(temp, pFilename); + } + + strcpy(pFilename, temp); +} + + + +//---------------------------------------------------------------------- +// +// Function : TraceErrorDD() +// +// Purpose : Traces an error (DirectDraw) +// +//---------------------------------------------------------------------- + +void TraceErrorDD(HRESULT hErr, char *sFile, int nLine) +{ + char dderr[256]; + char err[1024]; + + switch (hErr) + { + case DD_OK : sprintf(dderr, "DD_OK"); break; + case DDERR_ALREADYINITIALIZED : sprintf(dderr, "DDERR_ALREADYINITIALIZED"); break; + case DDERR_CANNOTATTACHSURFACE : sprintf(dderr, "DDERR_CANNOTATTACHSURFACE"); break; + case DDERR_CANNOTDETACHSURFACE : sprintf(dderr, "DDERR_CANNOTDETACHSURFACE"); break; + case DDERR_CURRENTLYNOTAVAIL : sprintf(dderr, "DDERR_CURRENTLYNOTAVAIL"); break; + case DDERR_EXCEPTION : sprintf(dderr, "DDERR_EXCEPTION"); break; + case DDERR_GENERIC : sprintf(dderr, "DDERR_GENERIC"); break; + case DDERR_HEIGHTALIGN : sprintf(dderr, "DDERR_HEIGHTALIGN"); break; + case DDERR_INCOMPATIBLEPRIMARY : sprintf(dderr, "DDERR_INCOMPATIBLEPRIMARY"); break; + case DDERR_INVALIDCAPS : sprintf(dderr, "DDERR_INVALIDCAPS"); break; + case DDERR_INVALIDCLIPLIST : sprintf(dderr, "DDERR_INVALIDCLIPLIST"); break; + case DDERR_INVALIDMODE : sprintf(dderr, "DDERR_INVALIDMODE"); break; + case DDERR_INVALIDOBJECT : sprintf(dderr, "DDERR_INVALIDOBJECT"); break; + case DDERR_INVALIDPARAMS : sprintf(dderr, "DDERR_INVALIDPARAMS"); break; + case DDERR_INVALIDPIXELFORMAT : sprintf(dderr, "DDERR_INVALIDPIXELFORMAT"); break; + case DDERR_INVALIDRECT : sprintf(dderr, "DDERR_INVALIDRECT"); break; + case DDERR_LOCKEDSURFACES : sprintf(dderr, "DDERR_LOCKEDSURFACES"); break; + case DDERR_NO3D : sprintf(dderr, "DDERR_NO3D"); break; + case DDERR_NOALPHAHW : sprintf(dderr, "DDERR_NOALPHAHW"); break; + case DDERR_NOCLIPLIST : sprintf(dderr, "DDERR_NOCLIPLIST"); break; + case DDERR_NOCOLORCONVHW : sprintf(dderr, "DDERR_NOCOLORCONVHW"); break; + case DDERR_NOCOOPERATIVELEVELSET : sprintf(dderr, "DDERR_NOCOOPERATIVELEVELSET"); break; + case DDERR_NOCOLORKEY : sprintf(dderr, "DDERR_NOCOLORKEY"); break; + case DDERR_NOCOLORKEYHW : sprintf(dderr, "DDERR_NOCOLORKEYHW"); break; + case DDERR_NODIRECTDRAWSUPPORT : sprintf(dderr, "DDERR_NODIRECTDRAWSUPPORT"); break; + case DDERR_NOEXCLUSIVEMODE : sprintf(dderr, "DDERR_NOEXCLUSIVEMODE"); break; + case DDERR_NOFLIPHW : sprintf(dderr, "DDERR_NOFLIPHW"); break; + case DDERR_NOGDI : sprintf(dderr, "DDERR_NOGDI"); break; + case DDERR_NOMIRRORHW : sprintf(dderr, "DDERR_NOMIRRORHW"); break; + case DDERR_NOTFOUND : sprintf(dderr, "DDERR_NOTFOUND"); break; + case DDERR_NOOVERLAYHW : sprintf(dderr, "DDERR_NOOVERLAYHW"); break; + case DDERR_NORASTEROPHW : sprintf(dderr, "DDERR_NORASTEROPHW"); break; + case DDERR_NOROTATIONHW : sprintf(dderr, "DDERR_NOROTATIONHW"); break; + case DDERR_NOSTRETCHHW : sprintf(dderr, "DDERR_NOSTRETCHHW"); break; + case DDERR_NOT4BITCOLOR : sprintf(dderr, "DDERR_NOT4BITCOLOR"); break; + case DDERR_NOT4BITCOLORINDEX : sprintf(dderr, "DDERR_NOT4BITCOLORINDEX"); break; + case DDERR_NOT8BITCOLOR : sprintf(dderr, "DDERR_NOT8BITCOLOR"); break; + case DDERR_NOTEXTUREHW : sprintf(dderr, "DDERR_NOTEXTUREHW"); break; + case DDERR_NOVSYNCHW : sprintf(dderr, "DDERR_NOVSYNCHW"); break; + case DDERR_NOZBUFFERHW : sprintf(dderr, "DDERR_NOZBUFFERHW"); break; + case DDERR_NOZOVERLAYHW : sprintf(dderr, "DDERR_NOZOVERLAYHW"); break; + case DDERR_OUTOFCAPS : sprintf(dderr, "DDERR_OUTOFCAPS"); break; + case DDERR_OUTOFMEMORY : sprintf(dderr, "DDERR_OUTOFMEMORY"); break; + case DDERR_OUTOFVIDEOMEMORY : sprintf(dderr, "DDERR_OUTOFVIDEOMEMORY"); break; + case DDERR_OVERLAYCANTCLIP : sprintf(dderr, "DDERR_OVERLAYCANTCLIP"); break; + case DDERR_OVERLAYCOLORKEYONLYONEACTIVE : sprintf(dderr, "DDERR_OVERLAYCOLORKEYONLYONEACTIVE"); break; + case DDERR_PALETTEBUSY : sprintf(dderr, "DDERR_PALETTEBUSY"); break; + case DDERR_COLORKEYNOTSET : sprintf(dderr, "DDERR_COLORKEYNOTSET"); break; + case DDERR_SURFACEALREADYATTACHED : sprintf(dderr, "DDERR_SURFACEALREADYATTACHED"); break; + case DDERR_SURFACEALREADYDEPENDENT : sprintf(dderr, "DDERR_SURFACEALREADYDEPENDENT"); break; + case DDERR_SURFACEBUSY : sprintf(dderr, "DDERR_SURFACEBUSY"); break; + case DDERR_CANTLOCKSURFACE : sprintf(dderr, "DDERR_CANTLOCKSURFACE"); break; + case DDERR_SURFACEISOBSCURED : sprintf(dderr, "DDERR_SURFACEISOBSCURED"); break; + case DDERR_SURFACELOST : sprintf(dderr, "DDERR_SURFACELOST"); break; + case DDERR_SURFACENOTATTACHED : sprintf(dderr, "DDERR_SURFACENOTATTACHED"); break; + case DDERR_TOOBIGHEIGHT : sprintf(dderr, "DDERR_TOOBIGHEIGHT"); break; + case DDERR_TOOBIGSIZE : sprintf(dderr, "DDERR_TOOBIGSIZE"); break; + case DDERR_TOOBIGWIDTH : sprintf(dderr, "DDERR_TOOBIGWIDTH"); break; + case DDERR_UNSUPPORTED : sprintf(dderr, "DDERR_UNSUPPORTED"); break; + case DDERR_UNSUPPORTEDFORMAT : sprintf(dderr, "DDERR_UNSUPPORTEDFORMAT"); break; + case DDERR_UNSUPPORTEDMASK : sprintf(dderr, "DDERR_UNSUPPORTEDMASK"); break; + case DDERR_VERTICALBLANKINPROGRESS : sprintf(dderr, "DDERR_VERTICALBLANKINPROGRESS"); break; + case DDERR_WASSTILLDRAWING : sprintf(dderr, "DDERR_WASSTILLDRAWING"); break; + case DDERR_XALIGN : sprintf(dderr, "DDERR_XALIGN"); break; + case DDERR_INVALIDDIRECTDRAWGUID : sprintf(dderr, "DDERR_INVALIDDIRECTDRAWGUID"); break; + case DDERR_DIRECTDRAWALREADYCREATED : sprintf(dderr, "DDERR_DIRECTDRAWALREADYCREATED"); break; + case DDERR_NODIRECTDRAWHW : sprintf(dderr, "DDERR_NODIRECTDRAWHW"); break; + case DDERR_PRIMARYSURFACEALREADYEXISTS : sprintf(dderr, "DDERR_PRIMARYSURFACEALREADYEXISTS"); break; + case DDERR_NOEMULATION : sprintf(dderr, "DDERR_NOEMULATION"); break; + case DDERR_REGIONTOOSMALL : sprintf(dderr, "DDERR_REGIONTOOSMALL"); break; + case DDERR_CLIPPERISUSINGHWND : sprintf(dderr, "DDERR_CLIPPERISUSINGHWND"); break; + case DDERR_NOCLIPPERATTACHED : sprintf(dderr, "DDERR_NOCLIPPERATTACHED"); break; + case DDERR_NOHWND : sprintf(dderr, "DDERR_NOHWND"); break; + case DDERR_HWNDSUBCLASSED : sprintf(dderr, "DDERR_HWNDSUBCLASSED"); break; + case DDERR_HWNDALREADYSET : sprintf(dderr, "DDERR_HWNDALREADYSET"); break; + case DDERR_NOPALETTEATTACHED : sprintf(dderr, "DDERR_NOPALETTEATTACHED"); break; + case DDERR_NOPALETTEHW : sprintf(dderr, "DDERR_NOPALETTEHW"); break; + case DDERR_BLTFASTCANTCLIP : sprintf(dderr, "DDERR_BLTFASTCANTCLIP"); break; + case DDERR_NOBLTHW : sprintf(dderr, "DDERR_NOBLTHW"); break; + case DDERR_NODDROPSHW : sprintf(dderr, "DDERR_NODDROPSHW"); break; + case DDERR_OVERLAYNOTVISIBLE : sprintf(dderr, "DDERR_OVERLAYNOTVISIBLE"); break; + case DDERR_NOOVERLAYDEST : sprintf(dderr, "DDERR_NOOVERLAYDEST"); break; + case DDERR_INVALIDPOSITION : sprintf(dderr, "DDERR_INVALIDPOSITION"); break; + case DDERR_NOTAOVERLAYSURFACE : sprintf(dderr, "DDERR_NOTAOVERLAYSURFACE"); break; + case DDERR_EXCLUSIVEMODEALREADYSET : sprintf(dderr, "DDERR_EXCLUSIVEMODEALREADYSET"); break; + case DDERR_NOTFLIPPABLE : sprintf(dderr, "DDERR_NOTFLIPPABLE"); break; + case DDERR_CANTDUPLICATE : sprintf(dderr, "DDERR_CANTDUPLICATE"); break; + case DDERR_NOTLOCKED : sprintf(dderr, "DDERR_NOTLOCKED"); break; + case DDERR_CANTCREATEDC : sprintf(dderr, "DDERR_CANTCREATEDC"); break; + case DDERR_NODC : sprintf(dderr, "DDERR_NODC"); break; + case DDERR_WRONGMODE : sprintf(dderr, "DDERR_WRONGMODE"); break; + case DDERR_IMPLICITLYCREATED : sprintf(dderr, "DDERR_IMPLICITLYCREATED"); break; + case DDERR_NOTPALETTIZED : sprintf(dderr, "DDERR_NOTPALETTIZED"); break; + case DDERR_UNSUPPORTEDMODE : sprintf(dderr, "DDERR_UNSUPPORTEDMODE"); break; + case DDERR_NOMIPMAPHW : sprintf(dderr, "DDERR_NOMIPMAPHW"); break; + case DDERR_INVALIDSURFACETYPE : sprintf(dderr, "DDERR_INVALIDSURFACETYPE"); break; + case DDERR_DCALREADYCREATED : sprintf(dderr, "DDERR_DCALREADYCREATED"); break; + case DDERR_CANTPAGELOCK : sprintf(dderr, "DDERR_CANTPAGELOCK"); break; + case DDERR_CANTPAGEUNLOCK : sprintf(dderr, "DDERR_CANTPAGEUNLOCK"); break; + case DDERR_NOTPAGELOCKED : sprintf(dderr, "DDERR_NOTPAGELOCKED"); break; + case DDERR_NOTINITIALIZED : sprintf(dderr, "DDERR_NOTINITIALIZED"); break; + + default : sprintf(dderr, "Unknown Error"); break; + } + sprintf(err, "DirectDraw Error %s in file %s at line %d\n", dderr, sFile, nLine); + OutputDebug(err); +} + +//---------------------------------------------------------------------- +// +// Function : TraceErrorDS() +// +// Purpose : Traces an error (DirectSound) +// +//---------------------------------------------------------------------- + +void TraceErrorDS(HRESULT hErr, char *sFile, int nLine) +{ + char dserr[256]; + char err[1024]; + + switch (hErr) + { + case DS_OK : sprintf(dserr, "DD_OK"); break; + case DSERR_ALLOCATED : sprintf(dserr, "DSERR_ALLOCATED"); break; + case DSERR_CONTROLUNAVAIL : sprintf(dserr, "DSERR_CONTROLUNAVAIL"); break; + case DSERR_INVALIDPARAM : sprintf(dserr, "DSERR_INVALIDPARAM"); break; + case DSERR_INVALIDCALL : sprintf(dserr, "DSERR_INVALIDCALL"); break; + case DSERR_GENERIC : sprintf(dserr, "DSERR_GENERIC"); break; + case DSERR_PRIOLEVELNEEDED : sprintf(dserr, "DSERR_PRIOLEVELNEEDED"); break; + case DSERR_OUTOFMEMORY : sprintf(dserr, "DSERR_OUTOFMEMORY"); break; + case DSERR_BADFORMAT : sprintf(dserr, "DSERR_BADFORMAT"); break; + case DSERR_UNSUPPORTED : sprintf(dserr, "DSERR_UNSUPPORTED"); break; + case DSERR_NODRIVER : sprintf(dserr, "DSERR_NODRIVER"); break; + case DSERR_ALREADYINITIALIZED : sprintf(dserr, "DSERR_ALREADYINITIALIZED"); break; + case DSERR_NOAGGREGATION : sprintf(dserr, "DSERR_NOAGGREGATION"); break; + case DSERR_BUFFERLOST : sprintf(dserr, "DSERR_BUFFERLOST"); break; + case DSERR_OTHERAPPHASPRIO : sprintf(dserr, "DSERR_OTHERAPPHASPRIO"); break; + case DSERR_UNINITIALIZED : sprintf(dserr, "DSERR_UNINITIALIZED"); break; + + default : sprintf(dserr, "Unknown Error"); break; + } + sprintf(err, "DirectSound Error %s in file %s at line %d\n", dserr, sFile, nLine); + OutputDebug(err); +} + diff --git a/network.cpp b/network.cpp new file mode 100644 index 0000000..e69de29 diff --git a/network.h b/network.h new file mode 100644 index 0000000..e69de29 diff --git a/resource.h b/resource.h new file mode 100644 index 0000000..9b5dd69 --- /dev/null +++ b/resource.h @@ -0,0 +1,343 @@ + +#define TX_IONAMEEX 100 +#define TX_IOFREE 101 +#define IDR_MENU 102 // ? +#define TX_OWNLEVEL 102 +#define TX_BUTTON_TESTTHISLEVEL 103 +#define TX_BUTTON_LEVELS 104 +#define TX_BUTTON_TRAINING 105 +#define TX_BUTTON_QUITBLUPI 106 +#define TX_BUTTON_PREVIOUSLEVEL 107 +#define TX_BUTTON_NEXTLEVEL 108 +#define TX_BUTTON_PLAY 109 //init, info +#define TX_BUTTON_DESIGNLEVEL 110 +#define TX_BUTTON_FINISH 111 + +#define TX_BUTTON_OPENLEVEL 112 +#define TX_BUTTON_SAVELEVEL 113 +#define TX_BUTTON_QUITLEVEL 114 +#define TX_BUTTON_CONTINUELEVEL 115 +#define TX_BUTTON_RESTARTLEVEL 116 +#define TX_BUTTON_CHOOSEPLAYER 117 +#define TX_BUTTON_PLAYERNAME 118 +#define TX_BUTTON_QUITDESIGN 119 +#define TX_BUTTON_CHOOSESIZE 120 +#define TX_BUTTON_SCROLL_BOTH 121 +#define TX_BUTTON_SCROLL_HORIZONTAL 122 +#define TX_BUTTON_SCROLL_VERTICAL 123 +#define TX_BUTTON_TESTTHELEVEL 124 +#define TX_PAUSE 125 +#define TX_BUTTON_SCROLL_TINY 126 +#define TX_BUTTON_CLEARPLAYER 127 + +#define TX_BUTTON_SETTINGS 128 +#define TX_BUTTON_CHOOSEMUSIC 129 +#define TX_BUTTON_SOUNDVOLUMEDOWN 130 +#define TX_BUTTON_SOUNDVOLUMEUP 131 +#define TX_BUTTON_MUSICVOLUMEDOWN 132 +#define TX_BUTTON_MUSICVOLUMEUP 133 +#define TX_BUTTON_NOMUSIC 134 +#define TX_BUTTON_MUSIC1 135 +#define TX_BUTTON_MUSIC2 136 +#define TX_BUTTON_MUSIC3 137 +#define TX_BUTTON_MUSIC4 138 +#define TX_BUTTON_MUSIC5 139 +#define TX_BUTTON_MUSIC6 140 +#define TX_BUTTON_MUSIC7 141 +#define TX_BUTTON_MUSIC8 142 +#define TX_BUTTON_MUSIC9 143 + +#define TX_BUTTON_CHOOSEBACKGROUND 144 +#define TX_DISCARDGAME 145 +#define TX_BLUPI 146 +#define TX_DESIGNLEVELS 147 +#define TX_INFO_CHOOSEPLAYER 148 +#define TX_CHOOSEMUSIC 149 +#define TX_TRAININGNUMBER 150 +#define TX_LEVELNUMBER 151 +#define TX_IONAMEMI 152 +#define TX_CHOOSESIZE 153 +#define TX_BUTTON_256COLOR_BACKGROUND 154 +#define TX_BUTTON_65000COLOR_BACKGROUND 155 +#define TX_BUTTON_KEYBOARD 156 +#define TX_BUTTON_JOYSTICK 157 +#define TX_YES 158 +#define TX_NO 159 + +#define TX_SETTINGS 160 +#define TX_INFO_WRITELEVEL 161 +#define TX_INFO_SOUNDVOLUME 162 +#define TX_INFO_MUSICVOLUME 163 +#define TX_INFO_COLORDEPTH 164 +#define TX_INFO_INPUTDEVICE 165 +#define TX_INFO_READLEVEL 166 +#define TX_INFO_PLAYERNUMBER 167 +#define TX_INFO_PLAYERFREE 168 +#define TX_INFO_DOOROPEN 169 +#define TX_INFO_DOORSOPEN 170 +#define TX_INFO_MUSIC10 171 +#define TX_INFO_PLAYERNAME 172 +#define TX_INFO_NOSCROLL 173 +#define TX_BUTTON_OKAY 174 +#define TX_BUTTON_CANCEL 175 + +#define TX_BUTTON_YES 176 +#define TX_BUTTON_NO 177 +#define TX_CHOOSEBACKGROUND 178 +#define TX_BUTTON_PLAY_SUSPEND 179 +#define TX_BUTTON_PLAY_SETTINGS 180 +#define TX_BUTTON_PLAY_SAVE 181 +#define TX_INSERT 182 +#define TX_BUTTON_DELETELEVEL 183 +#define TX_DELETELEVEL 184 +#define TX_BUTTON_NAMELEVEL 185 +#define TX_NAMELEVEL 186 +#define TX_NONAME 187 +#define TX_BUTTON_DESIGN 188 +#define TX_DESIGNNUMBER 189 +#define TX_IONAMEPR 190 +#define TX_FILENAME_WRITELEVEL 191 + +#define TX_NEXTFILES 192 +#define TX_PREVIOUSFILES 193 +#define TX_FOLDERCONTENT 194 +#define TX_BUTTON_SINGLEPLAYER 195 +#define TX_BUTTON_MULTIPLAYER 196 +#define TX_GAMEPAUSED 197 //stop +#define TX_BUTTON_UNDO 198 +#define TX_DEMO_END1 199 +#define TX_DEMO_END2 200 +#define TX_DEMO_END3 201 +#define TX_DEMO_END4 202 +#define TX_FULL_END1 203 +#define TX_FULL_END2 204 +#define TX_FULL_END3 205 +#define TX_FULL_END4 206 +#define TX_BUTTON_CHOOSECOLOR 207 + +#define TX_BUTTON_READY 208 +#define TX_BUTTON_SKILL 209 +#define TX_SKILL1 210 +#define TX_SKILL2 211 +#define TX_BUTTON_DEMO 212 +#define TX_DEMOREC 213 +#define TX_DEMOPLAY 214 +#define TX_BACK_TECHNICAL 215 +#define TX_BACK_REDLAVA 216 +#define TX_BACK_STONES 217 +#define TX_BACK_WOOD 218 +#define TX_BACK_SLIME2 219 +#define TX_BACK_CIRCUIT 220 +#define TX_BACK_SOIL 221 +#define TX_BACK_STARRYSKY 222 +#define TX_BACK_GREENERY 223 + +#define TX_BACK_CHEESE 224 +#define TX_BACK_HEX 225 +#define TX_BACK_DARKSKY 226 +#define TX_BACK_COLORSPOTS 227 +#define TX_BACK_PINKMECH 228 +#define TX_BACK_BLUEMECH 229 +#define TX_BACK_GREYSKY 230 +#define TX_BACK_HEAVYCLOUD 231 +#define TX_BACK_LIGHTCLOUD 232 +#define TX_BACK_BLUEBARK 233 +#define TX_BACK_BROWNMARBLE 234 +#define TX_BACK_REDMARBLE 235 +#define TX_BACK_VOLCANO 236 +#define TX_BACK_STRIPESPOTS 237 +#define TX_BACK_MOSAIC2 238 +#define TX_MULTIPLAYER 239 //service +#define TX_CONNECTIONTYPE 240 + +#define TX_MULTIPLAYER2 243 //session +#define TX_AVAILABLEGAMES 244 + +#define TX_BUTTON_NEWGAME 248 +#define TX_BUTTON_UPDATELIST 249 +#define TX_NEWMULTIPLAYERGAME 250 +#define TX_GAMENAME 251 + +#define TX_SETTINGSWITHPLAYERS 253 + +#define TX_LEVELNUMBER_MULTIPLAYER 255 +#define TX_CHATZONE + +#define TX_BUTTON_SAVECURRENTGAME 263 +#define TX_BUTTON_OPENGAME 264 +#define TX_BUTTON_CONTINUEGAME 265 +#define TX_BUTTON_QUITGAME 266 +#define TX_BUTTON_HELP 267 +#define TX_AVAILABLECOMMANDS 268 //help +#define TX_OPENGAME 269 +#define TX_SAVECURRENTGAME 270 +#define TX_LISTOFSAVEDGAMES 271 +#define TX_SAVE_FREE 272 + +#define TX_READY 286 + +#define TX_BUTTON_256COLOR_SCENERY 305 +#define TX_BUTTON_65000COLOR_SCENERY 306 + +#define TX_REPEAT_CULTIVE 500 +#define TX_REPEAT_FLEUR 501 +#define TX_REPEAT_FLEURQ 502 +#define TX_REPEAT_FABMINE 503 +#define TX_REPEAT_FABJEEP 504 +#define TX_REPEAT_PALIS 505 +#define TX_REPEAT_PALISQ 506 +#define TX_REPEAT_PONT 507 +#define TX_REPEAT_PONTQ 508 +#define TX_REPEAT_BATEAU 509 +#define TX_REPEAT_BATEAUQ 510 +#define TX_REPEAT_FABARMURE 511 + +#define TX_DIRECT_N 512 +#define TX_DIRECT_S 513 +#define TX_DIRECT_E 514 +#define TX_DIRECT_O 515 + +#define TX_HELP_WALKk 600 // keyboard key +#define TX_HELP_WALKj 601 // joystick button +#define TX_HELP_WALK 602 // description +#define TX_HELP_JUMPk 603 +#define TX_HELP_JUMPj 604 +#define TX_HELP_JUMP 605 +#define TX_HELP_JUMPHIGHk 606 +#define TX_HELP_JUMPHIGHj 607 +#define TX_HELP_JUMPHIGH 608 +#define TX_HELP_JUMPLOWk 609 +#define TX_HELP_JUMPLOWj 610 +#define TX_HELP_JUMPLOW 611 +#define TX_HELP_LOOKUPk 612 +#define TX_HELP_LOOKUPj 613 +#define TX_HELP_LOOKUP 614 +#define TX_HELP_LOOKDOWNk 615 +#define TX_HELP_LOOKDOWNj 616 +#define TX_HELP_LOOKDOWN 617 +#define TX_HELP_FIREk 618 +#define TX_HELP_FIREj 619 +#define TX_HELP_FIRE 620 +#define TX_HELP_RESERVEk 621 +#define TX_HELP_RESERVEj 622 +#define TX_HELP_RESERVE 623 + +#define IDR_WAVE_BOING 1000 +#define TX_ERROR_MISC 1000 +#define IDR_WAVE_BLOW 1001 +#define TX_ERROR_GROUND 1001 +#define TX_ERROR_FREE 1002 +#define TX_ERROR_PONTOP 1003 +#define TX_ERROR_PONTTERM 1004 +#define TX_ERROR_TOURISOL 1005 +#define TX_ERROR_TOUREAU 1006 +#define TX_ERROR_TELE2 1007 + +#define TX_OBJ_BLUPIm 2000 +#define TX_OBJ_BLUPIf 2001 +#define TX_OBJ_BLUPI 2002 +#define TX_OBJ_BATEAU 2003 +#define TX_OBJ_JEEP 2004 +#define TX_OBJ_PIEGE 2005 +#define TX_OBJ_POISON 2006 +#define TX_OBJ_DYNAMITE 2007 +#define TX_OBJ_MINE 2008 +#define TX_OBJ_TOMATE 2009 +#define TX_OBJ_POTION 2010 +#define TX_OBJ_PLANCHE 2011 +#define TX_OBJ_PIERRE 2012 +#define TX_OBJ_DRAPEAU 2013 +#define TX_OBJ_FER 2014 +#define TX_OBJ_FLEUR1 2015 + +#define TX_OBJ_FLEUR2 2016 +#define TX_OBJ_FLEUR3 2017 +#define TX_OBJ_CABANE 2018 +#define TX_OBJ_LABO 2019 +#define TX_OBJ_MINEFER 2020 +#define TX_OBJ_USINE 2021 +#define TX_OBJ_TOUR 2022 +#define TX_OBJ_FEU 2023 +#define TX_OBJ_ROBOT 2024 +#define TX_OBJ_TRACKS 2025 +#define TX_OBJ_BOMBE 2026 +#define TX_OBJ_ARAIGNEE 2027 +#define TX_OBJ_VIRUS 2028 +#define TX_OBJ_ELECTRO 2029 +#define TX_OBJ_ARBRE 2030 +#define TX_OBJ_MUR 2031 + +#define TX_OBJ_ARBREb 2032 +#define TX_OBJ_ROC 2033 +#define TX_OBJ_OEUF 2034 +#define TX_OBJ_PALISSADE 2035 +#define TX_OBJ_ENNEMIp 2036 +#define TX_OBJ_ENNEMI 2037 +#define TX_OBJ_HERBE 2038 +#define TX_OBJ_MOUSSE 2039 +#define TX_OBJ_TERRE 2040 +#define TX_OBJ_EAU 2041 +#define TX_OBJ_RIVE 2042 +#define TX_OBJ_MIXTE 2043 +#define TX_OBJ_PONT 2044 +#define TX_OBJ_COUVEUSE 2045 +#define TX_OBJ_GLACE 2046 +#define TX_OBJ_MAISON 2047 + +#define TX_OBJ_HACHURE 2048 +#define TX_OBJ_MOUSSEb 2049 +#define TX_OBJ_BOUQUET1 2050 +#define TX_OBJ_BOUQUET2 2051 +#define TX_OBJ_BOUQUET3 2052 +#define TX_OBJ_DALLE 2053 +#define TX_OBJ_ENNEMIs 2054 +#define TX_OBJ_DISCIPLE 2055 +#define TX_OBJ_METAL 2056 +#define TX_OBJ_FUSEE 2057 +#define TX_OBJ_TELEPORTE 2058 +#define TX_OBJ_ARMURE 2059 +#define TX_OBJ_DALLESPEC 2060 +#define TX_OBJ_COUVTELE 2061 +#define TX_OBJ_BATIMENT 2062 +#define TX_OBJ_BATENNEMIS 2063 + +#define TX_OBJ_MURPAL 2064 +#define TX_OBJ_OBJET 2065 +#define TX_OBJ_ARME 2066 +#define TX_OBJ_VEHICULE 2067 +#define TX_OBJ_STARTFEU 2068 +#define TX_OBJ_DELOBJ 2069 +#define TX_OBJ_DELPERSO 2070 +#define TX_OBJ_DELFEU 2071 +#define TX_OBJ_PLANTE 2072 +#define TX_OBJ_BARENNEMIS 2073 + +#define TX_WIN1 3000 +#define TX_WIN2 3001 +#define TX_WIN3 3002 +#define TX_WIN4 3003 +#define TX_WIN5 3004 + +#define TX_LOST1 3100 +#define TX_LOST2 3101 +#define TX_LOST3 3102 +#define TX_LOST4 3103 + +#define TX_LOST5 3104 + +#define TX_LASTWIN1 3200 +#define TX_LASTWIN2 3201 +#define TX_LASTWIN3 3202 + +#define IDM_EXIT 40001 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 109 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif