[Scummvm-git-logs] scummvm master -> 5aef420c43c10aee2b91853e2d7faf02a93798d3

neuromancer noreply at scummvm.org
Tue Mar 8 19:31:23 UTC 2022


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f725f3d8bf HYPNO: added difficulty selection in wet
860cc60f1b HYPNO: added menu for level selection in wet
5aef420c43 HYPNO: refactored hard coded functions of wet


Commit: f725f3d8bfba8a84baf00fc83d054879472decc6
    https://github.com/scummvm/scummvm/commit/f725f3d8bfba8a84baf00fc83d054879472decc6
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-03-08T20:30:53+01:00

Commit Message:
HYPNO: added difficulty selection in wet

Changed paths:
    engines/hypno/wet/wet.cpp


diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index a16fc1008f7..541f996cd0f 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -471,13 +471,19 @@ void WetEngine::runMainMenu(Code *code) {
 	Common::Event event;
 	uint32 c = 252; // green
 	byte *palette;
-	Graphics::Surface *frame = decodeFrame("c_misc/menus.smk", 16, &palette);
+	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 16, &palette);
+	Graphics::Surface *overlay = decodeFrame("c_misc/menus.smk", 18, nullptr);
 	loadPalette(palette, 0, 256);
 	Common::String _name = "";
-	drawImage(*frame, 0, 0, false);
-	drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
-	while (!shouldQuit()) {
 
+	Common::Rect subName(21, 10, 159, 24);
+
+	drawImage(*menu, 0, 0, false);
+	Graphics::Surface surName = overlay->getSubArea(subName);
+	drawImage(surName, subName.left, subName.top, false);
+	drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
+	bool cont = true;
+	while (!shouldQuit() && cont) {
 		while (g_system->getEventManager()->pollEvent(event)) {
 			// Events
 			switch (event.type) {
@@ -490,14 +496,15 @@ void WetEngine::runMainMenu(Code *code) {
 				if (event.kbd.keycode == Common::KEYCODE_BACKSPACE)
 					_name.deleteLastChar();
 				else if (event.kbd.keycode == Common::KEYCODE_RETURN && !_name.empty()) {
-					_nextLevel = code->levelIfWin;
-					return;
+					cont = false;
 				}
 				else if (Common::isAlnum(event.kbd.keycode)) {
+					playSound("sound/m_choice.raw", 1);
 					_name = _name + char(event.kbd.keycode - 32);
 				}
 
-				drawImage(*frame, 0, 0, false);
+				drawImage(*menu, 0, 0, false);
+				drawImage(surName, subName.left, subName.top, false);
 				drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
 				drawString("scifi08.fgx", _name, 140, 50, 170, c);
 				break;
@@ -511,6 +518,73 @@ void WetEngine::runMainMenu(Code *code) {
 		drawScreen();
 		g_system->delayMillis(10);
 	}
+
+	Common::Rect subDifficulty(20, 104, 233, 119);
+	Graphics::Surface surDifficulty = overlay->getSubArea(subDifficulty);
+	drawImage(*menu, 0, 0, false);
+	drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
+
+	Common::Rect subWet(145, 149, 179, 159);
+	Graphics::Surface surWet = overlay->getSubArea(subWet);
+	drawImage(surWet, subWet.left, subWet.top, false);
+	playSound("sound/no_rapid.raw", 1, 11025);
+
+	Common::Rect subDamp(62, 149, 110, 159);
+	Graphics::Surface surDamp = overlay->getSubArea(subDamp);
+
+	Common::Rect subSoaked(204, 149, 272, 159);
+	Graphics::Surface surSoaked = overlay->getSubArea(subSoaked);
+
+	Common::Array<Common::String> difficulties;
+	difficulties.push_back("0");
+	difficulties.push_back("1");
+	difficulties.push_back("2");
+	uint32 idx = 1;
+
+	cont = true;
+	while (!shouldQuit() && cont) {
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_LEFT && idx > 0) {
+					playSound("sound/no_rapid.raw", 1, 11025);
+					idx--;
+				} else if (event.kbd.keycode == Common::KEYCODE_RIGHT && idx < 2) {
+					playSound("sound/no_rapid.raw", 1, 11025);
+					idx++;
+				} else if (event.kbd.keycode == Common::KEYCODE_RETURN)
+					cont = false;
+
+				drawImage(*menu, 0, 0, false);
+				drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
+
+				if (difficulties[idx] == "0")
+					drawImage(surDamp, subDamp.left, subDamp.top, false);
+				else if (difficulties[idx] == "1")
+					drawImage(surWet, subWet.left, subWet.top, false);
+				else if (difficulties[idx] == "2")
+					drawImage(surSoaked, subSoaked.left, subSoaked.top, false);
+				else
+					error("Invalid difficulty: %s", difficulties[idx].c_str());
+
+				break;
+			default:
+				break;
+			}
+		}
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+
+	_difficulty = difficulties[idx];
+	_nextLevel = code->levelIfWin;
+
 }
 
 Common::String WetEngine::findNextLevel(const Transition *trans) {


Commit: 860cc60f1be9f3d919863d5c5fc7b76c42304605
    https://github.com/scummvm/scummvm/commit/860cc60f1be9f3d919863d5c5fc7b76c42304605
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-03-08T20:30:53+01:00

Commit Message:
HYPNO: added menu for level selection in wet

Changed paths:
    engines/hypno/hypno.h
    engines/hypno/wet/wet.cpp


diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 6c71e5bac63..d783fa824f1 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -345,6 +345,7 @@ public:
 
 private:
 	void runMainMenu(Code *code);
+	void runLevelMenu(Code *code);
 	void runCheckLives(Code *code);
 	void endCredits(Code *code);
 
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 541f996cd0f..d550595af74 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -253,11 +253,15 @@ void WetEngine::loadAssetsFullGame() {
 	_levels["<main_menu>"] = menu;
 	_levels["<main_menu>"]->levelIfWin = "<intros>";
 
+	Code *level_menu = new Code("<level_menu>");
+	_levels["<level_menu>"] = level_menu;
+	_levels["<level_menu>"]->levelIfWin = "?";
+
 	Transition *over = new Transition("<quit>");
 	over->intros.push_back("c_misc/gameover.smk");
 	_levels["<game_over>"] = over;
 
-	Transition *intros = new Transition("c11");
+	Transition *intros = new Transition("<level_menu>");
 	intros->intros.push_back("c_misc/stardate.smk");
 	intros->intros.push_back("c_misc/intros.smk");
 	intros->intros.push_back("c_misc/confs.smk");
@@ -400,6 +404,8 @@ void WetEngine::runCode(Code *code) {
 	changeScreenMode("320x200");
 	if (code->name == "<main_menu>")
 		runMainMenu(code);
+	else if (code->name == "<level_menu>")
+		runLevelMenu(code);
 	else if (code->name == "<check_lives>")
 		runCheckLives(code);
 	else if (code->name == "<credits>")
@@ -467,6 +473,69 @@ void WetEngine::drawString(const Common::String &font, const Common::String &str
 		error("Invalid font: '%s'", font.c_str());
 }
 
+void WetEngine::runLevelMenu(Code *code) {
+	Common::Event event;
+	byte *palette;
+	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 20, &palette);
+	loadPalette(palette, 0, 256);
+	byte black[3] = {0x00, 0x00, 0x00}; // Always red?
+	byte lime[3] = {0x00, 0xFF, 0x00}; // Always red?
+	byte green[3] = {0x2C, 0x82, 0x28}; // Always red?
+	int lastLevel = 20;
+	int maxLevel = 20;
+	int currentLevel = 0;
+	for (int i = 0; i < maxLevel; i++)
+		if (i < lastLevel)
+			loadPalette((byte *) &green, 192+i, 1);
+		else
+			loadPalette((byte *) &black, 192+i, 1);
+
+	loadPalette((byte *) &lime, 192+currentLevel, 1);
+	drawImage(*menu, 0, 0, false);
+	bool cont = true;
+	while (!shouldQuit() && cont) {
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_DOWN && currentLevel < lastLevel-1) {
+					playSound("sound/extra.raw", 1, 11025);
+					currentLevel++;
+				} else if (event.kbd.keycode == Common::KEYCODE_UP && currentLevel > 0) {
+					playSound("sound/extra.raw", 1, 11025);
+					currentLevel--;
+				} else if (event.kbd.keycode == Common::KEYCODE_RETURN ) {
+					_nextLevel = Common::String::format("c%d", rawChapterTable[currentLevel].id);
+					cont = false;
+				}
+
+				for (int i = 0; i < maxLevel; i++)
+					if (i < lastLevel)
+						loadPalette((byte *) &green, 192+i, 1);
+					else
+						loadPalette((byte *) &black, 192+i, 1);
+
+
+				loadPalette((byte *) &lime, 192+currentLevel, 1);
+				drawImage(*menu, 0, 0, false);
+				break;
+			default:
+				break;
+			}
+		}
+
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+	menu->free();
+	delete menu;
+}
+
 void WetEngine::runMainMenu(Code *code) {
 	Common::Event event;
 	uint32 c = 252; // green


Commit: 5aef420c43c10aee2b91853e2d7faf02a93798d3
    https://github.com/scummvm/scummvm/commit/5aef420c43c10aee2b91853e2d7faf02a93798d3
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-03-08T20:30:53+01:00

Commit Message:
HYPNO: refactored hard coded functions of wet

Changed paths:
  A engines/hypno/wet/hard.cpp
    engines/hypno/hypno.h
    engines/hypno/module.mk
    engines/hypno/wet/wet.cpp


diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index d783fa824f1..4945a40bc4d 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -318,6 +318,8 @@ class WetEngine : public HypnoEngine {
 public:
 	WetEngine(OSystem *syst, const ADGameDescription *gd);
 	Common::HashMap<int, const struct chapterEntry*> _chapterTable;
+	Common::Array<int> _ids;
+
 	void loadAssets() override;
 	void loadAssetsDemoDisc();
 	void loadAssetsPCW();
diff --git a/engines/hypno/module.mk b/engines/hypno/module.mk
index 445e252cb56..b4e5b291a8e 100644
--- a/engines/hypno/module.mk
+++ b/engines/hypno/module.mk
@@ -19,6 +19,7 @@ MODULE_OBJS := \
 	spider/talk.o \
 	video.o \
 	wet/arcade.o \
+	wet/hard.o \
 	wet/wet.o
 
 MODULE_DIRS += \
diff --git a/engines/hypno/wet/hard.cpp b/engines/hypno/wet/hard.cpp
new file mode 100644
index 00000000000..c5d8baa02c4
--- /dev/null
+++ b/engines/hypno/wet/hard.cpp
@@ -0,0 +1,239 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/bitarray.h"
+#include "common/events.h"
+#include "common/config-manager.h"
+
+#include "hypno/hypno.h"
+
+namespace Hypno {
+
+void WetEngine::endCredits(Code *code) {
+	showCredits();
+	_nextLevel = "<main_menu>";
+}
+
+void WetEngine::runCode(Code *code) {
+	changeScreenMode("320x200");
+	if (code->name == "<main_menu>")
+		runMainMenu(code);
+	else if (code->name == "<level_menu>")
+		runLevelMenu(code);
+	else if (code->name == "<check_lives>")
+		runCheckLives(code);
+	else if (code->name == "<credits>")
+		endCredits(code);
+	else
+		error("invalid hardcoded level: %s", code->name.c_str());
+}
+
+void WetEngine::runCheckLives(Code *code) {
+	if (_lives < 0)
+		_nextLevel = "<game_over>";
+	else
+		_nextLevel = _checkpoint;
+}
+
+void WetEngine::runLevelMenu(Code *code) {
+	Common::Event event;
+	byte *palette;
+	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 20, &palette);
+	loadPalette(palette, 0, 256);
+	byte black[3] = {0x00, 0x00, 0x00}; // Always red?
+	byte lime[3] = {0x00, 0xFF, 0x00}; // Always red?
+	byte green[3] = {0x2C, 0x82, 0x28}; // Always red?
+	int lastLevel = 20;
+	int maxLevel = 20;
+	int currentLevel = 0;
+	for (int i = 0; i < maxLevel; i++)
+		if (i < lastLevel)
+			loadPalette((byte *) &green, 192+i, 1);
+		else
+			loadPalette((byte *) &black, 192+i, 1);
+
+	loadPalette((byte *) &lime, 192+currentLevel, 1);
+	drawImage(*menu, 0, 0, false);
+	bool cont = true;
+	while (!shouldQuit() && cont) {
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_DOWN && currentLevel < lastLevel-1) {
+					playSound("sound/extra.raw", 1, 11025);
+					currentLevel++;
+				} else if (event.kbd.keycode == Common::KEYCODE_UP && currentLevel > 0) {
+					playSound("sound/extra.raw", 1, 11025);
+					currentLevel--;
+				} else if (event.kbd.keycode == Common::KEYCODE_RETURN ) {
+					_nextLevel = Common::String::format("c%d", _ids[currentLevel]);
+					cont = false;
+				}
+
+				for (int i = 0; i < maxLevel; i++)
+					if (i < lastLevel)
+						loadPalette((byte *) &green, 192+i, 1);
+					else
+						loadPalette((byte *) &black, 192+i, 1);
+
+
+				loadPalette((byte *) &lime, 192+currentLevel, 1);
+				drawImage(*menu, 0, 0, false);
+				break;
+			default:
+				break;
+			}
+		}
+
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+	menu->free();
+	delete menu;
+}
+
+void WetEngine::runMainMenu(Code *code) {
+	Common::Event event;
+	uint32 c = 252; // green
+	byte *palette;
+	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 16, &palette);
+	Graphics::Surface *overlay = decodeFrame("c_misc/menus.smk", 18, nullptr);
+	loadPalette(palette, 0, 256);
+	Common::String _name = "";
+
+	Common::Rect subName(21, 10, 159, 24);
+
+	drawImage(*menu, 0, 0, false);
+	Graphics::Surface surName = overlay->getSubArea(subName);
+	drawImage(surName, subName.left, subName.top, false);
+	drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
+	bool cont = true;
+	while (!shouldQuit() && cont) {
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_BACKSPACE)
+					_name.deleteLastChar();
+				else if (event.kbd.keycode == Common::KEYCODE_RETURN && !_name.empty()) {
+					cont = false;
+				}
+				else if (Common::isAlnum(event.kbd.keycode)) {
+					playSound("sound/m_choice.raw", 1);
+					_name = _name + char(event.kbd.keycode - 32);
+				}
+
+				drawImage(*menu, 0, 0, false);
+				drawImage(surName, subName.left, subName.top, false);
+				drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
+				drawString("scifi08.fgx", _name, 140, 50, 170, c);
+				break;
+
+
+			default:
+				break;
+			}
+		}
+
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+
+	Common::Rect subDifficulty(20, 104, 233, 119);
+	Graphics::Surface surDifficulty = overlay->getSubArea(subDifficulty);
+	drawImage(*menu, 0, 0, false);
+	drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
+
+	Common::Rect subWet(145, 149, 179, 159);
+	Graphics::Surface surWet = overlay->getSubArea(subWet);
+	drawImage(surWet, subWet.left, subWet.top, false);
+	playSound("sound/no_rapid.raw", 1, 11025);
+
+	Common::Rect subDamp(62, 149, 110, 159);
+	Graphics::Surface surDamp = overlay->getSubArea(subDamp);
+
+	Common::Rect subSoaked(204, 149, 272, 159);
+	Graphics::Surface surSoaked = overlay->getSubArea(subSoaked);
+
+	Common::Array<Common::String> difficulties;
+	difficulties.push_back("0");
+	difficulties.push_back("1");
+	difficulties.push_back("2");
+	uint32 idx = 1;
+
+	cont = true;
+	while (!shouldQuit() && cont) {
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (event.kbd.keycode == Common::KEYCODE_LEFT && idx > 0) {
+					playSound("sound/no_rapid.raw", 1, 11025);
+					idx--;
+				} else if (event.kbd.keycode == Common::KEYCODE_RIGHT && idx < 2) {
+					playSound("sound/no_rapid.raw", 1, 11025);
+					idx++;
+				} else if (event.kbd.keycode == Common::KEYCODE_RETURN)
+					cont = false;
+
+				drawImage(*menu, 0, 0, false);
+				drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
+
+				if (difficulties[idx] == "0")
+					drawImage(surDamp, subDamp.left, subDamp.top, false);
+				else if (difficulties[idx] == "1")
+					drawImage(surWet, subWet.left, subWet.top, false);
+				else if (difficulties[idx] == "2")
+					drawImage(surSoaked, subSoaked.left, subSoaked.top, false);
+				else
+					error("Invalid difficulty: %s", difficulties[idx].c_str());
+
+				break;
+			default:
+				break;
+			}
+		}
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+
+	_difficulty = difficulties[idx];
+	_nextLevel = code->levelIfWin;
+
+}
+
+} // End of namespace Hypno
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index d550595af74..ac834a910ab 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -61,6 +61,7 @@ WetEngine::WetEngine(OSystem *syst, const ADGameDescription *gd) : HypnoEngine(s
 
     const chapterEntry *entry = rawChapterTable;
     while (entry->id) {
+		_ids.push_back(entry->id);
 		_chapterTable[entry->id] = entry;
 		entry++;
     }
@@ -395,32 +396,6 @@ void WetEngine::showCredits() {
 	}
 }
 
-void WetEngine::endCredits(Code *code) {
-	showCredits();
-	_nextLevel = "<main_menu>";
-}
-
-void WetEngine::runCode(Code *code) {
-	changeScreenMode("320x200");
-	if (code->name == "<main_menu>")
-		runMainMenu(code);
-	else if (code->name == "<level_menu>")
-		runLevelMenu(code);
-	else if (code->name == "<check_lives>")
-		runCheckLives(code);
-	else if (code->name == "<credits>")
-		endCredits(code);
-	else
-		error("invalid hardcoded level: %s", code->name.c_str());
-}
-
-void WetEngine::runCheckLives(Code *code) {
-	if (_lives < 0)
-		_nextLevel = "<game_over>";
-	else
-		_nextLevel = _checkpoint;
-}
-
 void WetEngine::loadFonts() {
 	Common::File file;
 
@@ -473,189 +448,6 @@ void WetEngine::drawString(const Common::String &font, const Common::String &str
 		error("Invalid font: '%s'", font.c_str());
 }
 
-void WetEngine::runLevelMenu(Code *code) {
-	Common::Event event;
-	byte *palette;
-	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 20, &palette);
-	loadPalette(palette, 0, 256);
-	byte black[3] = {0x00, 0x00, 0x00}; // Always red?
-	byte lime[3] = {0x00, 0xFF, 0x00}; // Always red?
-	byte green[3] = {0x2C, 0x82, 0x28}; // Always red?
-	int lastLevel = 20;
-	int maxLevel = 20;
-	int currentLevel = 0;
-	for (int i = 0; i < maxLevel; i++)
-		if (i < lastLevel)
-			loadPalette((byte *) &green, 192+i, 1);
-		else
-			loadPalette((byte *) &black, 192+i, 1);
-
-	loadPalette((byte *) &lime, 192+currentLevel, 1);
-	drawImage(*menu, 0, 0, false);
-	bool cont = true;
-	while (!shouldQuit() && cont) {
-		while (g_system->getEventManager()->pollEvent(event)) {
-			// Events
-			switch (event.type) {
-
-			case Common::EVENT_QUIT:
-			case Common::EVENT_RETURN_TO_LAUNCHER:
-				break;
-
-			case Common::EVENT_KEYDOWN:
-				if (event.kbd.keycode == Common::KEYCODE_DOWN && currentLevel < lastLevel-1) {
-					playSound("sound/extra.raw", 1, 11025);
-					currentLevel++;
-				} else if (event.kbd.keycode == Common::KEYCODE_UP && currentLevel > 0) {
-					playSound("sound/extra.raw", 1, 11025);
-					currentLevel--;
-				} else if (event.kbd.keycode == Common::KEYCODE_RETURN ) {
-					_nextLevel = Common::String::format("c%d", rawChapterTable[currentLevel].id);
-					cont = false;
-				}
-
-				for (int i = 0; i < maxLevel; i++)
-					if (i < lastLevel)
-						loadPalette((byte *) &green, 192+i, 1);
-					else
-						loadPalette((byte *) &black, 192+i, 1);
-
-
-				loadPalette((byte *) &lime, 192+currentLevel, 1);
-				drawImage(*menu, 0, 0, false);
-				break;
-			default:
-				break;
-			}
-		}
-
-		drawScreen();
-		g_system->delayMillis(10);
-	}
-	menu->free();
-	delete menu;
-}
-
-void WetEngine::runMainMenu(Code *code) {
-	Common::Event event;
-	uint32 c = 252; // green
-	byte *palette;
-	Graphics::Surface *menu = decodeFrame("c_misc/menus.smk", 16, &palette);
-	Graphics::Surface *overlay = decodeFrame("c_misc/menus.smk", 18, nullptr);
-	loadPalette(palette, 0, 256);
-	Common::String _name = "";
-
-	Common::Rect subName(21, 10, 159, 24);
-
-	drawImage(*menu, 0, 0, false);
-	Graphics::Surface surName = overlay->getSubArea(subName);
-	drawImage(surName, subName.left, subName.top, false);
-	drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
-	bool cont = true;
-	while (!shouldQuit() && cont) {
-		while (g_system->getEventManager()->pollEvent(event)) {
-			// Events
-			switch (event.type) {
-
-			case Common::EVENT_QUIT:
-			case Common::EVENT_RETURN_TO_LAUNCHER:
-				break;
-
-			case Common::EVENT_KEYDOWN:
-				if (event.kbd.keycode == Common::KEYCODE_BACKSPACE)
-					_name.deleteLastChar();
-				else if (event.kbd.keycode == Common::KEYCODE_RETURN && !_name.empty()) {
-					cont = false;
-				}
-				else if (Common::isAlnum(event.kbd.keycode)) {
-					playSound("sound/m_choice.raw", 1);
-					_name = _name + char(event.kbd.keycode - 32);
-				}
-
-				drawImage(*menu, 0, 0, false);
-				drawImage(surName, subName.left, subName.top, false);
-				drawString("scifi08.fgx", "ENTER NAME :", 48, 50, 100, c);
-				drawString("scifi08.fgx", _name, 140, 50, 170, c);
-				break;
-
-
-			default:
-				break;
-			}
-		}
-
-		drawScreen();
-		g_system->delayMillis(10);
-	}
-
-	Common::Rect subDifficulty(20, 104, 233, 119);
-	Graphics::Surface surDifficulty = overlay->getSubArea(subDifficulty);
-	drawImage(*menu, 0, 0, false);
-	drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
-
-	Common::Rect subWet(145, 149, 179, 159);
-	Graphics::Surface surWet = overlay->getSubArea(subWet);
-	drawImage(surWet, subWet.left, subWet.top, false);
-	playSound("sound/no_rapid.raw", 1, 11025);
-
-	Common::Rect subDamp(62, 149, 110, 159);
-	Graphics::Surface surDamp = overlay->getSubArea(subDamp);
-
-	Common::Rect subSoaked(204, 149, 272, 159);
-	Graphics::Surface surSoaked = overlay->getSubArea(subSoaked);
-
-	Common::Array<Common::String> difficulties;
-	difficulties.push_back("0");
-	difficulties.push_back("1");
-	difficulties.push_back("2");
-	uint32 idx = 1;
-
-	cont = true;
-	while (!shouldQuit() && cont) {
-		while (g_system->getEventManager()->pollEvent(event)) {
-			// Events
-			switch (event.type) {
-
-			case Common::EVENT_QUIT:
-			case Common::EVENT_RETURN_TO_LAUNCHER:
-				break;
-
-			case Common::EVENT_KEYDOWN:
-				if (event.kbd.keycode == Common::KEYCODE_LEFT && idx > 0) {
-					playSound("sound/no_rapid.raw", 1, 11025);
-					idx--;
-				} else if (event.kbd.keycode == Common::KEYCODE_RIGHT && idx < 2) {
-					playSound("sound/no_rapid.raw", 1, 11025);
-					idx++;
-				} else if (event.kbd.keycode == Common::KEYCODE_RETURN)
-					cont = false;
-
-				drawImage(*menu, 0, 0, false);
-				drawImage(surDifficulty, subDifficulty.left, subDifficulty.top, false);
-
-				if (difficulties[idx] == "0")
-					drawImage(surDamp, subDamp.left, subDamp.top, false);
-				else if (difficulties[idx] == "1")
-					drawImage(surWet, subWet.left, subWet.top, false);
-				else if (difficulties[idx] == "2")
-					drawImage(surSoaked, subSoaked.left, subSoaked.top, false);
-				else
-					error("Invalid difficulty: %s", difficulties[idx].c_str());
-
-				break;
-			default:
-				break;
-			}
-		}
-		drawScreen();
-		g_system->delayMillis(10);
-	}
-
-	_difficulty = difficulties[idx];
-	_nextLevel = code->levelIfWin;
-
-}
-
 Common::String WetEngine::findNextLevel(const Transition *trans) {
 	if (trans->nextLevel.empty())
 		error("Invalid transition!");




More information about the Scummvm-git-logs mailing list