[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