[Scummvm-git-logs] scummvm master -> 23f72f47add9fea3bdcff4b47058cb345d1791dd

dreammaster noreply at scummvm.org
Tue Sep 17 05:55:42 UTC 2024


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

Summary:
23f72f47ad M4: RIDDLE: Room 603 init


Commit: 23f72f47add9fea3bdcff4b47058cb345d1791dd
    https://github.com/scummvm/scummvm/commit/23f72f47add9fea3bdcff4b47058cb345d1791dd
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-16T22:55:34-07:00

Commit Message:
M4: RIDDLE: Room 603 init

Changed paths:
    engines/m4/riddle/rooms/section6/room603.cpp
    engines/m4/riddle/rooms/section6/room603.h


diff --git a/engines/m4/riddle/rooms/section6/room603.cpp b/engines/m4/riddle/rooms/section6/room603.cpp
index f618281c375..eb4f4aed9cd 100644
--- a/engines/m4/riddle/rooms/section6/room603.cpp
+++ b/engines/m4/riddle/rooms/section6/room603.cpp
@@ -27,10 +27,257 @@ namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+static const int16 NORMAL_DIRS1[] = { 200, -1 };
+static const char *NORMAL_NAMES1[] = { "shen guo walker 3" };
+static const int16 SHADOW_DIRS1[] = { 210, -1 };
+static const char *SHADOW_NAMES1[] = { "shen guo shadow 3" };
+static const int16 NORMAL_DIRS2[] = { 220, -1 };
+static const char *NORMAL_NAMES2[] = { "kuang walker 2" };
+static const int16 SHADOW_DIRS2[] = { 230, -1 };
+static const char *SHADOW_NAMES2[] = { "kuangs shadow 2" };
+
+void Room603::preload() {
+	if (_G(flags)[V191]) {
+		_G(art_base_override) = "EXPLOSION BACKGROUND";
+		_G(use_alternate_attribute_file) = false;
+		_G(player).walker_in_this_scene = false;
+	}
+
+	Room::preload();
+}
+
 void Room603::init() {
+	if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+		_val1 = 0;
+		_val2 = 0;
+		_val3 = 0;
+		_val4 = 0;
+		_val5 = 0;
+	}
+
+	_val6 = 0;
+
+	if (_G(game).previous_room != 604 && _G(game).previous_room != KERNEL_RESTORING_GAME &&
+			inv_player_has("PULL CORD") && !inv_object_is_here("POLE") &&
+			_G(flags)[V203] == 4) {
+		_G(flags)[V203] = 5;
+		_G(flags)[GLB_TEMP_5] = 0;
+	}
+
+	if (_G(flags)[V191]) {
+		interface_hide();
+		player_set_commands_allowed(false);
+		digi_preload("explode");
+		digi_preload("950_s28a");
+		digi_play_loop("950_s28a", 3, 90);
+		series_play("653 RIP HOPS ROCK", 0xf00, 16, -1, 5);
+		series_load("653 FIRST FRAME SHED");
+		_shed = series_show("653 FIRST FRAME SHED", 0xf00, 16);
+
+		ws_walk_load_walker_series(NORMAL_DIRS1, NORMAL_NAMES1);
+		ws_walk_load_shadow_series(SHADOW_DIRS1, SHADOW_NAMES1);
+
+		_shenWalker = triggerMachineByHash_3000(8, 12, NORMAL_DIRS1, SHADOW_DIRS1, 525, 238, 3,
+			triggerMachineByHashCallback3000, "shen suit gun walker");
+		sendWSMessage_10000(_shenWalker, 535, 235, 3, 10, 1);
+
+		ws_walk_load_walker_series(NORMAL_DIRS2, NORMAL_NAMES2);
+		ws_walk_load_shadow_series(SHADOW_DIRS2, SHADOW_NAMES2);
+
+		_kuangWalker = triggerMachineByHash_3000(8, 13, NORMAL_DIRS2, SHADOW_DIRS2, 554, 245, 2,
+			triggerMachineByHashCallback3000, "kuang suit walker");
+		sendWSMessage_10000(_kuangWalker, 563, 244, 2, -1, 1);
+		return;
+	}
+
+	if (_G(flags)[V203] != 9) {
+		digi_preload("603_S02");
+		digi_preload("603_S02a");
+		digi_preload("603_S02b");
+		digi_preload("603_S02c");
+
+		if (_G(flags)[V203] == 0) {
+			digi_preload("603_S01");
+			digi_preload("603_S01A");
+			digi_preload("603_S01B");
+			_rp01 = series_load("603RP01");
+			_rp02 = series_load("603RP02");
+		}
+
+		_tt03 = series_load("603TT03");
+		_ttD01 = series_load("603TTD01");
+		_rp04 = series_load("603RP04");
+		_ripHandsBehindBack = series_load("RIP TREK HANDS BEHIND BACK POS2");
+		_ripTalk = series_load("RIP TREK TALK");
+		_ripHandsHips = series_load("RIP TREK HANDS HIPS POS2");
+		_ripHandChin = series_load("RIP TREK HAND ON CHIN POS2");
+		_ripTwoHandTalk = series_load("RIP TREK TWO HAND TALK POS2");
+	}
+
+	if (_G(flags)[V203] == 9) {
+		_note = series_show("603NOTE", 0x700, 16);
+		hotspot_set_active("NOTE", false);
+		hotspot_set_active("twelvetrees", false);
+		hotspot_set_active("twelvetrees ", false);
+		hotspot_set_active("person in pit", false);
+	} else {
+		hotspot_set_active("NOTE ", false);
+
+		if (!inv_object_is_here("TWELVETREES' NOTE")) {
+			hotspot_set_active("NOTE", false);
+		} else if (_G(flags)[V203] == 4) {
+			_note = series_show("603NOTE", 0x800, 16);
+		} else {
+			hotspot_set_active("NOTE", false);
+		}
+	}
+
+	if (inv_object_is_here("POLE")) {
+		_pole = series_show("603POLE", 0x400, 16);
+	} else {
+		hotspot_set_active("POLE", false);
+	}
+
+	if (_G(flags)[V203] < 1) {
+		_shirt = series_show("603SHIRT", 0x400, 16);
+		hotspot_set_active("SLEEVE", false);
+	} else {
+		hotspot_set_active("SHIRT", false);
+
+		if (inv_object_is_here("SLEEVE"))
+			_sleeve = series_show("603SLEEV", 0x400, 16);
+		else
+			hotspot_set_active("SLEEVE", false);
+	}
+
+	if (_G(flags)[V203] == 9) {
+		hotspot_set_active("POWER LINE", false);
+		hotspot_set_active("shed", false);
+		hotspot_set_active("wire", false);
+		hotspot_set_active("  ", false);
+		series_show("603ROCKS", 0xf00, 16);
+	} else {
+		series_load("603 POWER LINE");
+		series_show("603 POWER LINE", 0, 16);
+	}
+
+	switch (_G(game).previous_room) {
+	case KERNEL_RESTORING_GAME:
+		digi_preload(_G(globals)[GLB_TEMP_5] ? "genrun" : "950_s28a");
+		break;
+
+	case 604:
+		player_set_commands_allowed(false);
+		digi_preload("950_s28a");
+		ws_demand_location(542, 230, 2);
+		ws_walk(534, 240, nullptr, 5, 7);
+		break;
+
+	case 605:
+		if (_G(globals)[GLB_TEMP_5]) {
+			digi_preload("genrun");
+		} else {
+			digi_preload("950_s28a");
+			digi_stop(3);
+			digi_unload("950_s28");
+		}
+
+		player_set_commands_allowed(false);
+		ws_demand_location(670, 232, 2);
+		ws_walk(497, 245, nullptr, 1, 8);
+		break;
+
+	default:
+		player_set_commands_allowed(false);
+		digi_preload("950_s28a");
+		ws_demand_location(67, 391, 2);
+		ws_walk(135, 356, nullptr, 1, 2);
+		break;
+	}
+
+	switch (_G(flags)[V203]) {
+	case 0:
+		digi_preload("17_04p01");
+		digi_preload("17_04n06");
+		_G(player).disable_hyperwalk = true;
+		_G(kernel).call_daemon_every_loop = true;
+
+		_door = series_show("603DOOR", 0xf00, 16, -1, -1, 23, 100, 0, 0);
+		_ttDigShirtOff = series_load("TT DIG LOOP NO SHIRT");
+		_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, 0,
+			triggerMachineByHashCallbackNegative, "tt");
+		sendWSMessage_10000(1, _tt, _ttDigShirtOff, 2, 2, 200, _ttDigShirtOff, 2, 2, 0);
+
+		_val1 = 200;
+		_val7 = 1;
+		_val8 = 0;
+		_val9 = 0;
+		_val10 = 0;
+
+		hotspot_set_active("twelvetrees ", false);
+		hotspot_set_active("twelvetrees", false);
+		break;
+
+	case 1:
+	case 3:
+	case 5:
+	case 7:
+		_door = series_show("603DOOR", 0xf00, 16);
+		hotspot_set_active("wire", false);
+		_ttDigShirtOn = series_load("TT DIG LOOP SHIRT ON");
+		_val7 = 6;
+		_val8 = 17;
+		_val9 = 0;
+		_val10 = 0;
+		hotspot_set_active("person in pit", false);
+
+		if (_val5) {
+			_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x200, 0,
+				triggerMachineByHashCallbackNegative, "tt");
+			sendWSMessage_10000(1, _tt, _ttD01, 1, 1, 400, _ttD01, 1, 1, 0);
+			_val1 = 400;
+			hotspot_set_active("twelvetrees ", false);
+			_ttShadow = series_show("tt walker shadow 4", 0xf00, 0, -1, -1, 0, 53, 291, 293);
+
+		} else {
+			_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, 0,
+				triggerMachineByHashCallbackNegative, "tt");
+			sendWSMessage_10000(1, _tt, _ttDigShirtOn, 1, 1, 500,
+				_ttDigShirtOn, 1, 1, 0);
+			_val1 = 500;
+			hotspot_set_active("twelvetrees", false);
+		}
+		break;
+
+	default:
+		if (_G(game).previous_room == 604)
+			_door = series_show("603DOOR", 0xf00, 16, -1, -1, 14, 100, 0, 0);
+		else
+			_door = series_show("603DOOR", 0xf00, 16, -1, -1, 0, 100, 0, 0);
+
+		hotspot_set_active("wire", false);
+		hotspot_set_active("twelvetrees", false);
+		hotspot_set_active("twelvetrees ", false);
+		hotspot_set_active("person in pit", false);
+		break;
+	}
+
+	if (_G(flags)[GLB_TEMP_5])
+		digi_play_loop("genrun", 3, 140, -1, 604);
+	else
+		digi_play_loop("950_s28a", 3, 90, -1, -1);
 }
 
 void Room603::daemon() {
+	// TODO
+}
+
+void Room603::pre_parser() {
+	// TODO
+}
+
+void Room603::parser() {
+	// TODO
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section6/room603.h b/engines/m4/riddle/rooms/section6/room603.h
index a65ef6a0c4a..486ee0ed7e9 100644
--- a/engines/m4/riddle/rooms/section6/room603.h
+++ b/engines/m4/riddle/rooms/section6/room603.h
@@ -29,12 +29,49 @@ namespace Riddle {
 namespace Rooms {
 
 class Room603 : public Room {
+private:
+	int _val1 = 0;
+	int _val2 = 0;
+	int _val3 = 0;
+	int _val4 = 0;
+	int _val5 = 0;
+	int _val6 = 0;
+	int _val7 = 0;
+	int _val8 = 0;
+	int _val9 = 0;
+	int _val10 = 0;
+	machine *_shed = nullptr;
+	machine *_shenWalker = nullptr;
+	machine *_kuangWalker = nullptr;
+	machine *_note = nullptr;
+	machine *_pole = nullptr;
+	machine *_shirt = nullptr;
+	machine *_sleeve = nullptr;
+	machine *_door = nullptr;
+	machine *_tt = nullptr;
+	machine *_ttShadow = nullptr;
+	int _rp01 = 0;
+	int _rp02 = 0;
+	int _ttDigShirtOff = 0;
+	int _ttDigShirtOn = 0;
+	int _tt03 = 0;
+	int _ttD01 = 0;
+	int _rp04 = 0;
+	int _ripHandsBehindBack = 0;
+	int _ripTalk = 0;
+	int _ripHandsHips = 0;
+	int _ripHandChin = 0;
+	int _ripTwoHandTalk = 0;
+
 public:
 	Room603() : Room() {}
 	~Room603() override {}
 
+	void preload() override;
 	void init() override;
 	void daemon() override;
+	void pre_parser() override;
+	void parser() override;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list