[Scummvm-git-logs] scummvm master -> dd012904f5840f9d658651347db63155cb6f1786

Strangerke noreply at scummvm.org
Thu Apr 16 09:44:00 UTC 2026


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

Summary:
dd012904f5 WAYNESWORLD: Implement an introPt4 for demo1, some refactoring


Commit: dd012904f5840f9d658651347db63155cb6f1786
    https://github.com/scummvm/scummvm/commit/dd012904f5840f9d658651347db63155cb6f1786
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-16T11:43:42+02:00

Commit Message:
WAYNESWORLD: Implement an introPt4 for demo1, some refactoring

Changed paths:
    engines/waynesworld/wwintro.cpp
    engines/waynesworld/wwintro.h
    engines/waynesworld/wwintro_demo1.cpp
    engines/waynesworld/wwintro_full.cpp


diff --git a/engines/waynesworld/wwintro.cpp b/engines/waynesworld/wwintro.cpp
index 1b37888eb8d..3076a8a46ff 100644
--- a/engines/waynesworld/wwintro.cpp
+++ b/engines/waynesworld/wwintro.cpp
@@ -205,6 +205,30 @@ void WWIntro::introPt3_clean() {
 	_outlineSurface = _logoSurface = _backg2Surface = nullptr;
 }
 
+bool WWIntro::introPt4() {
+	bool retVal = true;
+	introPt4_init();
+
+	if (!introPt4_intro()) {
+		retVal = false;
+	} else if (!introPt4_displayCallInTime()) {
+		retVal = false;
+	} else if (!introPt4_caller1()) {
+		retVal = false;
+	} else if (!introPt4_caller2()) {
+		retVal = false;
+	} else if (!introPt4_caller3()) {
+		retVal = false;
+	} else if (!introPt4_caller4()) {
+		retVal = false;
+	} else
+		retVal = introPt4_playGuitar();
+
+	introPt4_cleanup();
+
+	return retVal;
+}
+
 bool WWIntro::introPt4_displayCallInTime() {
 	WWSurface *pt4Sub3Surface1 = new WWSurface(178, 21);
 	WWSurface *pt4Sub3Surface2 = new WWSurface(178, 21);
@@ -234,4 +258,40 @@ bool WWIntro::introPt4_displayCallInTime() {
 	return true;
 }
 
+void WWIntro::introPt4_cleanup() {
+	delete _vm->_fontWW;
+	_vm->_fontWW = nullptr;
+	delete _introBackg1Image;
+	_introBackg1Image = nullptr;
+	for (int i = 0; i < 5; ++i) {
+		delete _introWbodyImage[i];
+		_introWbodyImage[i] = nullptr;
+	}
+	delete _introGbodyImage;
+	_introGbodyImage = nullptr;
+	for (int i = 0; i < 7; ++i) {
+		delete _introWhead1[i];
+		_introWhead1[i] = nullptr;
+	}
+	for (int i = 0; i < 11; ++i) {
+		delete _introGhead1[i];
+		_introGhead1[i] = nullptr;
+	}
+}
+
+bool WWIntro::introPt4_playGuitar() {
+	sub2FEFB(1, 1, 1, 0, 9, -1);
+	sub2FEFB(1, 2, 1, 0, 9, -1);
+	sub2FEFB(1, 3, 1, 0, 9, -1);
+	sub2FEFB(1, 4, 1, 0, 9, -1);
+
+	_vm->_midi->stopSong();
+
+	if (_vm->_escPressed) {
+		return false;
+	}
+
+	return true;
+}
+
 } // End of namespace WaynesWorld
diff --git a/engines/waynesworld/wwintro.h b/engines/waynesworld/wwintro.h
index 440f501f79d..7ca658f4bed 100644
--- a/engines/waynesworld/wwintro.h
+++ b/engines/waynesworld/wwintro.h
@@ -78,7 +78,17 @@ protected:
 	void sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId);
 	void introPt3_init();
 	void introPt3_clean();
+	bool introPt4();
+	virtual void introPt4_init() = 0;
+	virtual bool introPt4_intro() = 0;
 	bool introPt4_displayCallInTime();
+	virtual bool introPt4_caller1() = 0;
+	virtual bool introPt4_caller2() = 0;
+	virtual bool introPt4_caller3() = 0;
+	virtual bool introPt4_caller4() = 0;
+	void introPt4_cleanup();
+	bool introPt4_playGuitar();
+
 
 private:
 	void sub3009A(int textId);
@@ -94,19 +104,17 @@ public:
 private:
 	bool introPt1();
 	bool introPt3(bool flag);
-	bool introPt4();
 	void cleanOanGxl();
 	void introPt6();
 	void introPt7();
 
-	void introPt4_init();
-	bool introPt4_intro();
-	bool introPt4_caller1();
-	bool introPt4_caller2();
-	bool introPt4_caller3();
-	bool introPt4_caller4();
-	void introPt4_cleanup();
-	bool introPt4_playGuitar();
+protected:
+	bool introPt4_intro() override;
+	void introPt4_init() override;
+	bool introPt4_caller1() override;
+	bool introPt4_caller2() override;
+	bool introPt4_caller3() override;
+	bool introPt4_caller4() override;
 };
 
 class WWIntro_demo1 : public WWIntro {
@@ -119,11 +127,14 @@ public:
 private:
 	bool introPt1();
 	bool introPt3();
-	bool introPt4();
-	void introPt4_init();
-	bool introPt4_intro();
-	bool introPt4_caller1();
-	void introPt4_cleanup();
+
+protected:
+	bool introPt4_intro() override;
+	void introPt4_init() override;
+	bool introPt4_caller1() override;
+	bool introPt4_caller2() override;
+	bool introPt4_caller3() override;
+	bool introPt4_caller4() override;
 };
 } // End of namespace WaynesWorld
 
diff --git a/engines/waynesworld/wwintro_demo1.cpp b/engines/waynesworld/wwintro_demo1.cpp
index 774e7ac8874..560f8998c06 100644
--- a/engines/waynesworld/wwintro_demo1.cpp
+++ b/engines/waynesworld/wwintro_demo1.cpp
@@ -192,22 +192,6 @@ bool WWIntro_demo1::introPt3() {
 	return true;
 }
 
-bool WWIntro_demo1::introPt4() {
-	bool retVal = true;
-
-	introPt4_init();
-	if (!introPt4_intro()) {
-		retVal = false;
-	} else if (!introPt4_displayCallInTime()) {
-		retVal = false;
-	} else if (!introPt4_caller1()) {
-		retVal = false;
-	}
-
-	introPt4_cleanup();
-	return retVal;
-}
-
 void WWIntro_demo1::introPt4_init() {
 	_vm->_fontWW = new GFTFont();
 	_vm->_fontWW->loadFromFile("ww.gft");
@@ -217,8 +201,13 @@ void WWIntro_demo1::introPt4_init() {
 
 	_introBackg1Image = new WWSurface(320, 170);
 	_vm->drawImageToSurface(_oanGxl, "backg1.pcx", _introBackg1Image, 0, 0);
-	_introWbodyImage[0] = new WWSurface(145, 118);
-	_vm->drawImageToSurface(_oanGxl, "wbody0.pcx", _introWbodyImage[0], 0, 0);
+
+	for (int i = 0; i < 5; ++i) {
+		_introWbodyImage[i] = new WWSurface(145, 118);
+		Common::String filename = Common::String::format("wbody%d.pcx", i == 0 ? 0 : i + 8);
+		_vm->drawImageToSurface(_oanGxl, filename.c_str(), _introWbodyImage[i], 0, 0);
+	}
+
 	_introGbodyImage = new WWSurface(160, 149);
 	_vm->drawImageToSurface(_oanGxl, "gbody0.pcx", _introGbodyImage, 0, 0);
 
@@ -343,25 +332,222 @@ bool WWIntro_demo1::introPt4_caller1() {
 	return true;
 }
 
-void WWIntro_demo1::introPt4_cleanup() {
-	delete _vm->_fontWW;
-	_vm->_fontWW = nullptr;
-	delete _introBackg1Image;
-	_introBackg1Image = nullptr;
+bool WWIntro_demo1::introPt4_caller2() {
+	for (int i = 0; i < 4; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+	_vm->playSound("flash-bk.abt", true);
+
+	for (int i = 0; i < 4; ++i) {
+		for (int j = 0; j < 10; ++j) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		}
+		++_startOagPos;
+	}
+
+	for (int i = 0; i < 4; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+
+	for (int j = 0; j < 10; ++j) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+
+	for (int i = 0; i < 3; ++i) {
+		for (int j = 0; j < 10; ++j) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		}
+		++_startOagPos;
+	}
+
+	for (int i = 0; i < 2; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+
+	for (int i = 0; i < 10; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	for (int i = 0; i < 4; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+	_vm->_sound->playSound("no-way.abt", false);
+
+	for (int i = 0; i < 3; ++i) {
+		for (int j = 0; j < 10; ++j) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		}
+		++_startOagPos;
+	}
+	_vm->_sound->playSound("goodc-g.abt", false);
+
+	for (int i = 0; i < 2; ++i) {
+		for (int j = 0; j < 10; ++j) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
+	}
+
+	return true;
+}
+
+bool WWIntro_demo1::introPt4_caller3() {
 	for (int i = 0; i < 5; ++i) {
-		delete _introWbodyImage[i];
-		_introWbodyImage[i] = nullptr;
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
 	}
-	delete _introGbodyImage;
-	_introGbodyImage = nullptr;
-	for (int i = 0; i < 7; ++i) {
-		delete _introWhead1[i];
-		_introWhead1[i] = nullptr;
+
+	for (int i = 0; i < 10; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
 	}
-	for (int i = 0; i < 11; ++i) {
-		delete _introGhead1[i];
-		_introGhead1[i] = nullptr;
+	++_startOawPos;
+
+	for (int i = 0; i < 5; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+	}
+	++_startOawPos;
+	++_startOagPos;
+	_vm->_sound->playSound("worthy.snd", true);
+
+	for (int j = 0; j < 2; ++j) {
+		for (int i = 0; i < 15; ++i) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
 	}
+
+	_vm->_sound->playSound("not!.abt", false);
+
+	for (int i = 0; i < 5; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+	}
+	++_startOawPos;
+	++_startOagPos;
+
+	for (int i = 0; i < 2; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+
+	for (int j = 0; j < 4; ++j) {
+		for (int i = 0; i < 15; ++i) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
+	}
+	_vm->_sound->playSound("as-if.abt", false);
+
+	for (int i = 0; i < 5; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+	}
+	++_startOawPos;
+	++_startOagPos;
+
+	return true;
+}
+
+bool WWIntro_demo1::introPt4_caller4() {
+	for (int j = 0; j < 2; ++j) {
+		for (int i = 0; i < 15; ++i) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
+	}
+
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+
+	for (int i = 0; i < 15; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	for (int j = 0; j < 2; ++j) {
+		for (int i = 0; i < 15; ++i) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		}
+		++_startOagPos;
+	}
+
+	_vm->_sound->playSound("ilovetw.abt", true);
+
+	for (int i = 0; i < 15; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+	_vm->_sound->playSound("cool!.abt", false);
+
+	for (int i = 0; i < 3; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	for (int i = 0; i < 2; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+	_vm->_sound->playSound("nway-way.abt", false);
+
+	for (int i = 0; i < 5; ++i) {
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+	}
+	++_startOagPos;
+
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(1);
+
+	for (int j = 0; j < 3; ++j) {
+		for (int i = 0; i < 8; ++i) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
+	}
+
+	for (int i = 0; i < 8; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+	_vm->_sound->playSound("exskweez.abt", false);
+
+	for (int i = 0; i < 8; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+	}
+	++_startOawPos;
+
+	for (int i = 0; i < 6; ++i) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+	}
+
+	_vm->_sound->playSound("donut.snd", true);
+
+	for (int j = 0; j < 3; ++j) {
+		for (int i = 0; i < 8; ++i) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		}
+		++_startOawPos;
+	}
+
+	_vm->_sound->playSound("partyon.abt", false);
+
+	for (int i = 0; i < 5; ++i) {
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+	}
+	++_startOagPos;
+
+	return true;
 }
 
 } // End of namespace WaynesWorld
diff --git a/engines/waynesworld/wwintro_full.cpp b/engines/waynesworld/wwintro_full.cpp
index e6033e51a94..ff54ae89d7b 100644
--- a/engines/waynesworld/wwintro_full.cpp
+++ b/engines/waynesworld/wwintro_full.cpp
@@ -247,30 +247,6 @@ bool WWIntro_full::introPt3(bool flag) {
 	return true;
 }
 
-bool WWIntro_full::introPt4() {
-	bool retVal = true;
-	introPt4_init();
-
-	if (!introPt4_intro()) {
-		retVal = false;
-	} else if (!introPt4_displayCallInTime()) {
-		retVal = false;
-	} else if (!introPt4_caller1()) {
-		retVal = false;
-	} else if (!introPt4_caller2()) {
-		retVal = false;
-	} else if (!introPt4_caller3()) {
-		retVal = false;
-	} else if (!introPt4_caller4()) {
-		retVal = false;
-	} else
-		retVal = introPt4_playGuitar();
-
-	introPt4_cleanup();
-
-	return retVal;
-}
-
 void WWIntro_full::cleanOanGxl() {
 	delete _oanGxl;
 	_oanGxl = nullptr;
@@ -902,40 +878,4 @@ bool WWIntro_full::introPt4_caller4() {
 	return true;
 }
 
-void WWIntro_full::introPt4_cleanup() {
-	delete _vm->_fontWW;
-	_vm->_fontWW = nullptr;
-	delete _introBackg1Image;
-	_introBackg1Image = nullptr;
-	for (int i = 0; i < 5; ++i) {
-		delete _introWbodyImage[i];
-		_introWbodyImage[i] = nullptr;
-	}
-	delete _introGbodyImage;
-	_introGbodyImage = nullptr;
-	for (int i = 0; i < 7; ++i) {
-		delete _introWhead1[i];
-		_introWhead1[i] = nullptr;
-	}
-	for (int i = 0; i < 11; ++i) {
-		delete _introGhead1[i];
-		_introGhead1[i] = nullptr;
-	}
-}
-
-bool WWIntro_full::introPt4_playGuitar() {
-	sub2FEFB(1, 1, 1, 0, 9, -1);
-	sub2FEFB(1, 2, 1, 0, 9, -1);
-	sub2FEFB(1, 3, 1, 0, 9, -1);
-	sub2FEFB(1, 4, 1, 0, 9, -1);
-
-	_vm->_midi->stopSong();
-
-	if (_vm->_escPressed) {
-		return false;
-	}
-
-	return true;
-}
-
 } // End of namespace WaynesWorld




More information about the Scummvm-git-logs mailing list