[Scummvm-git-logs] scummvm master -> 06751e22649aa93eaadd7fd62e1a5f3d0a1082a4

neuromancer noreply at scummvm.org
Sat Jan 8 09:39:58 UTC 2022


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

Summary:
ccf1f27302 HYPNO: fixes to make sure checkpoints are correctly saved in spider
06751e2264 HYPNO: improved menu handling in spider and fixed timer deallocation issue


Commit: ccf1f27302fa8c5b74ca6e4bc710128e618abb00
    https://github.com/scummvm/scummvm/commit/ccf1f27302fa8c5b74ca6e4bc710128e618abb00
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-01-08T10:39:34+01:00

Commit Message:
HYPNO: fixes to make sure checkpoints are correctly saved in spider

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


diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 115161af4e4..cd839c7e156 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -388,8 +388,13 @@ void SpiderEngine::loadAssetsFullGame() {
 	sc = (Scene *) _levels["decide3.mi_"];
 	cl = new ChangeLevel("alofintr.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
+
 	cl = new ChangeLevel("c4");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadSceneLevel("int_roof.mi_", "", prefix);
 	sc = (Scene *) _levels["int_roof.mi_"];
@@ -533,8 +538,13 @@ void SpiderEngine::loadAssetsFullGame() {
 	sc->intros.push_back("cine/apts006s.smk");
 	cl = new ChangeLevel("ball1.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
+
 	cl = new ChangeLevel("c5");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadArcadeLevel("c5.mi_", "<trans_apt_6>", prefix);
 	_levels["c5.mi_"]->levelIfLose = "<over_hob2>";
@@ -595,6 +605,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("movie3.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
+
+	cl = new ChangeLevel("decide6.mi_");
+	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadSceneLevel("movie3.mi_", "movie4.mi_", prefix);
 	_levels["movie3.mi_"]->intros.push_back("cine/imss001s.smk");
@@ -615,9 +632,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("shoctalk.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("decide10.mi_");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadSceneLevel("shoctalk.mi_", "decide7.mi_", prefix);
 	_levels["shoctalk.mi_"]->intros.push_back("cine/vrfs004s.smk");
@@ -627,9 +648,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("decide8.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("c13.mi_");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadArcadeLevel("c13.mi_", "<after_c13>", prefix);
 	_levels["c13.mi_"]->levelIfLose = "<over_shock>";
@@ -663,9 +688,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("c8");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("c9");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadArcadeLevel("c8.mi_", "<after_c8>", prefix);
 	_levels["c8.mi_"]->levelIfLose = "<over_myst2>";
@@ -707,9 +736,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("c11s");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("c12s");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	// Octopus fight without Mason
 	loadArcadeLevel("c11.mi_", "<chip_dies_with_shocker>", prefix);
@@ -738,9 +771,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("docoffi1.mi_");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("<dont_believe_mason>");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	loadSceneLevel("docoffi1.mi_", "decide11.mi_", prefix);
 	_levels["docoffi1.mi_"]->intros.push_back("cine/doos002s.smk");
@@ -752,9 +789,13 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	cl = new ChangeLevel("c11m");
 	sc->hots[2].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[2].actions.push_back(gl);
 
 	cl = new ChangeLevel("c12m");
 	sc->hots[4].actions.push_back(cl);
+	gl = new Global("GS_LEVELWON", "TURNON");
+	sc->hots[4].actions.push_back(gl);
 
 	// No c7/c7h level?
 	// Octopus fight with Mason
@@ -775,8 +816,6 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["c12h.mi_"]->intros.push_back("cine/cybs001s.smk");
 	_levels["c12mh.mi_"] = _levels["c12h.mi_"];
 
-	loadSceneLevel("decide11.mi_", "", prefix);
-
 	// Game overs
 	Transition *over_apt_1 = new Transition("tryagain.mi_");
 	over_apt_1->intros.push_back("spider/cine/ross003s.smk");


Commit: 06751e22649aa93eaadd7fd62e1a5f3d0a1082a4
    https://github.com/scummvm/scummvm/commit/06751e22649aa93eaadd7fd62e1a5f3d0a1082a4
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-01-08T10:39:34+01:00

Commit Message:
HYPNO: improved menu handling in spider and fixed timer deallocation issue

Changed paths:
    engines/hypno/actions.cpp
    engines/hypno/grammar.h
    engines/hypno/grammar_mis.cpp
    engines/hypno/grammar_mis.y
    engines/hypno/hypno.cpp
    engines/hypno/scene.cpp
    engines/hypno/wet/wet.cpp


diff --git a/engines/hypno/actions.cpp b/engines/hypno/actions.cpp
index 1d670c19676..8261d598347 100644
--- a/engines/hypno/actions.cpp
+++ b/engines/hypno/actions.cpp
@@ -69,8 +69,12 @@ void HypnoEngine::runMenu(Hotspots hs) {
 
 	//if (h.stype == "SINGLE_RUN")
 	//	loadImage("int_main/mainbutt.smk", 0, 0);
-	if (h.stype == "AUTO_BUTTONS" && _conversation.empty())
-		loadImage("int_main/resume.smk", 0, 0, true);
+	if (_conversation.empty()) {
+		if (h.flags[0] == "HINTS" || h.flags[1] == "HINTS" || h.flags[2] == "HINTS")
+			loadImage("int_main/hint1.smk", 0, 0, true);
+		else if (h.flags[0] == "AUTO_BUTTONS")
+			loadImage("int_main/resume.smk", 0, 0, true);
+	}
 }
 
 void HypnoEngine::runBackground(Background *a) {	
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index 19568d872f9..5c1d25f0bce 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -96,15 +96,13 @@ typedef Common::Array<MVideo> Videos;
 
 class Hotspot {
 public:
-	Hotspot(HotspotType type_, Common::String stype_, Common::Rect rect_ = Common::Rect(0, 0, 0, 0)) {
+	Hotspot(HotspotType type_, Common::Rect rect_ = Common::Rect(0, 0, 0, 0)) {
 		type = type_;
-		stype = stype_;
 		rect = rect_;
 		smenu = nullptr;
 	}
 	HotspotType type;
-	Common::String stype;
-	Common::String stypeFlag;
+	Common::String flags[3];
 	Common::Rect rect;
 	Common::String setting;
 	Actions actions;
diff --git a/engines/hypno/grammar_mis.cpp b/engines/hypno/grammar_mis.cpp
index cdb7b395fad..a4a0046abfd 100644
--- a/engines/hypno/grammar_mis.cpp
+++ b/engines/hypno/grammar_mis.cpp
@@ -584,12 +584,12 @@ static const yytype_int8 yytranslate[] =
 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,    73,    73,    76,    83,    84,    88,   100,   106,   121,
-     127,   133,   134,   141,   148,   154,   160,   166,   173,   180,
-     187,   194,   200,   206,   209,   215,   221,   224,   225,   228,
-     235,   238,   239,   243,   246,   249,   253,   257,   262,   268,
-     269,   275,   281,   287,   294,   301,   307,   312,   313,   316,
-     317,   320,   321,   324,   325
+       0,    73,    73,    76,    83,    84,    88,   104,   110,   125,
+     131,   137,   138,   145,   152,   158,   164,   170,   177,   184,
+     191,   198,   204,   210,   213,   219,   225,   228,   229,   232,
+     239,   242,   243,   247,   250,   253,   257,   261,   266,   272,
+     273,   279,   285,   291,   298,   305,   311,   316,   317,   320,
+     321,   324,   325,   328,   329
 };
 #endif
 
@@ -1242,8 +1242,12 @@ yyreduce:
   case 6: /* line: MENUTOK mflag mflag mflag  */
 #line 88 "engines/hypno/grammar_mis.y"
                                 {
-		Hotspot *hot = new Hotspot(MakeMenu, (yyvsp[-2].s)); 
+		Hotspot *hot = new Hotspot(MakeMenu); 
 		debugC(1, kHypnoDebugParser, "MENU %s %s", (yyvsp[-2].s), (yyvsp[-1].s));
+		hot->flags[0] = (yyvsp[-2].s);
+		hot->flags[1] = (yyvsp[-1].s);
+		hot->flags[2] = (yyvsp[0].s);
+
 		Hotspots *cur = stack->back();
 		cur->push_back(*hot);
 
@@ -1253,22 +1257,22 @@ yyreduce:
 		smenu_idx->pop_back();
 		smenu_idx->push_back(idx);
 	}
-#line 1257 "engines/hypno/grammar_mis.cpp"
+#line 1261 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 7: /* line: HOTSTOK BBOXTOK NUM NUM NUM NUM  */
-#line 100 "engines/hypno/grammar_mis.y"
+#line 104 "engines/hypno/grammar_mis.y"
                                            {  
-		Hotspot *hot = new Hotspot(MakeHotspot, "", Common::Rect((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i))); 
+		Hotspot *hot = new Hotspot(MakeHotspot, Common::Rect((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i))); 
 		debugC(1, kHypnoDebugParser, "HOTS %d.", hot->type);
 		Hotspots *cur = stack->back();
 		cur->push_back(*hot); 
 	}
-#line 1268 "engines/hypno/grammar_mis.cpp"
+#line 1272 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 8: /* line: SMENTOK  */
-#line 106 "engines/hypno/grammar_mis.y"
+#line 110 "engines/hypno/grammar_mis.y"
                    { 
 		// This should always point to a hotspot
 		int idx = smenu_idx->back();
@@ -1284,39 +1288,39 @@ yyreduce:
 		stack->push_back(hot->smenu);
 		debugC(1, kHypnoDebugParser, "SUBMENU");
 	}
-#line 1288 "engines/hypno/grammar_mis.cpp"
+#line 1292 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 9: /* line: ESCPTOK  */
-#line 121 "engines/hypno/grammar_mis.y"
+#line 125 "engines/hypno/grammar_mis.y"
                     {
 		Escape *a = new Escape();
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "ESC SUBMENU"); }
-#line 1299 "engines/hypno/grammar_mis.cpp"
+#line 1303 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 10: /* line: TIMETOK NUM mflag  */
-#line 127 "engines/hypno/grammar_mis.y"
+#line 131 "engines/hypno/grammar_mis.y"
                               { 
 		Timer *a = new Timer((yyvsp[-1].i));
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "TIME %d", (yyvsp[-1].i)); }
-#line 1310 "engines/hypno/grammar_mis.cpp"
+#line 1314 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 11: /* line: SWPTTOK NUM  */
-#line 133 "engines/hypno/grammar_mis.y"
+#line 137 "engines/hypno/grammar_mis.y"
                        { debugC(1, kHypnoDebugParser, "SWPT %d", (yyvsp[0].i)); }
-#line 1316 "engines/hypno/grammar_mis.cpp"
+#line 1320 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 12: /* line: BACKTOK FILENAME NUM NUM gsswitch flag flag  */
-#line 134 "engines/hypno/grammar_mis.y"
+#line 138 "engines/hypno/grammar_mis.y"
                                                        {
 		Background *a = new Background((yyvsp[-5].s), Common::Point((yyvsp[-4].i), (yyvsp[-3].i)), (yyvsp[-2].s), (yyvsp[-1].s), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
@@ -1324,11 +1328,11 @@ yyreduce:
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "BACK");
 	}
-#line 1328 "engines/hypno/grammar_mis.cpp"
+#line 1332 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 13: /* line: GLOBTOK GSSWITCH NAME  */
-#line 141 "engines/hypno/grammar_mis.y"
+#line 145 "engines/hypno/grammar_mis.y"
                                   { 
 		Global *a = new Global((yyvsp[-1].s), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
@@ -1336,44 +1340,44 @@ yyreduce:
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "GLOB"); 
 	}
-#line 1340 "engines/hypno/grammar_mis.cpp"
+#line 1344 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 14: /* line: AMBITOK FILENAME NUM NUM flag  */
-#line 148 "engines/hypno/grammar_mis.y"
+#line 152 "engines/hypno/grammar_mis.y"
                                          { 
 		Ambient *a = new Ambient((yyvsp[-3].s), Common::Point((yyvsp[-2].i), (yyvsp[-1].i)), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);			
 		debugC(1, kHypnoDebugParser, "AMBI %d %d", (yyvsp[-2].i), (yyvsp[-1].i)); }
-#line 1351 "engines/hypno/grammar_mis.cpp"
+#line 1355 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 15: /* line: PLAYTOK FILENAME NUM NUM gsswitch flag  */
-#line 154 "engines/hypno/grammar_mis.y"
+#line 158 "engines/hypno/grammar_mis.y"
                                                   { 
 		Play *a = new Play((yyvsp[-4].s), Common::Point((yyvsp[-3].i), (yyvsp[-2].i)), (yyvsp[-1].s), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "PLAY %s.", (yyvsp[-4].s)); }
-#line 1362 "engines/hypno/grammar_mis.cpp"
+#line 1366 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 16: /* line: OVERTOK FILENAME NUM NUM flag  */
-#line 160 "engines/hypno/grammar_mis.y"
+#line 164 "engines/hypno/grammar_mis.y"
                                          { 
 		Overlay *a = new Overlay((yyvsp[-3].s), Common::Point((yyvsp[-2].i), (yyvsp[-1].i)), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
-#line 1373 "engines/hypno/grammar_mis.cpp"
+#line 1377 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 17: /* line: PALETOK FILENAME  */
-#line 166 "engines/hypno/grammar_mis.y"
+#line 170 "engines/hypno/grammar_mis.y"
                             {
 		Palette *a = new Palette((yyvsp[0].s));
 		Hotspots *cur = stack->back();
@@ -1381,11 +1385,11 @@ yyreduce:
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "PALE");
 	}
-#line 1385 "engines/hypno/grammar_mis.cpp"
+#line 1389 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 18: /* line: INTRTOK FILENAME NUM NUM  */
-#line 173 "engines/hypno/grammar_mis.y"
+#line 177 "engines/hypno/grammar_mis.y"
                                     { 
 		Cutscene *a = new Cutscene(Common::String("cine/") + (yyvsp[-2].s));
 		Hotspots *cur = stack->back();
@@ -1393,11 +1397,11 @@ yyreduce:
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "INTRO %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1397 "engines/hypno/grammar_mis.cpp"
+#line 1401 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 19: /* line: INTRTOK FILENAME  */
-#line 180 "engines/hypno/grammar_mis.y"
+#line 184 "engines/hypno/grammar_mis.y"
                             { 
 		Cutscene *a = new Cutscene(Common::String("cine/") + (yyvsp[0].s));
 		Hotspots *cur = stack->back();
@@ -1405,11 +1409,11 @@ yyreduce:
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "INTRO %s", (yyvsp[0].s)); 
 	}
-#line 1409 "engines/hypno/grammar_mis.cpp"
+#line 1413 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 20: /* line: CUTSTOK FILENAME  */
-#line 187 "engines/hypno/grammar_mis.y"
+#line 191 "engines/hypno/grammar_mis.y"
                             { 
 		Cutscene *a = new Cutscene((yyvsp[0].s));
 		Hotspots *cur = stack->back();
@@ -1417,197 +1421,197 @@ yyreduce:
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "CUTS %s", (yyvsp[0].s)); 
 	}
-#line 1421 "engines/hypno/grammar_mis.cpp"
+#line 1425 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 21: /* line: WALNTOK FILENAME NUM NUM gsswitch flag  */
-#line 194 "engines/hypno/grammar_mis.y"
+#line 198 "engines/hypno/grammar_mis.y"
                                                    { 
 		WalN *a = new WalN((yyvsp[-5].s), (yyvsp[-4].s), Common::Point((yyvsp[-3].i), (yyvsp[-2].i)), (yyvsp[-1].s), (yyvsp[0].s));
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "WALN %s %d %d", (yyvsp[-4].s), (yyvsp[-3].i), (yyvsp[-2].i)); }
-#line 1432 "engines/hypno/grammar_mis.cpp"
+#line 1436 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 22: /* line: MICETOK FILENAME NUM  */
-#line 200 "engines/hypno/grammar_mis.y"
+#line 204 "engines/hypno/grammar_mis.y"
                                 {
 		Mice *a = new Mice((yyvsp[-1].s), (yyvsp[0].i)-1);
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
-#line 1443 "engines/hypno/grammar_mis.cpp"
+#line 1447 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 23: /* line: MPTRTOK FILENAME NUM NUM NUM NUM NUM  */
-#line 206 "engines/hypno/grammar_mis.y"
+#line 210 "engines/hypno/grammar_mis.y"
                                                 {
 		debugC(1, kHypnoDebugParser, "MPTR %s %d %d %d %d %d", (yyvsp[-5].s), (yyvsp[-4].i), (yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
-#line 1451 "engines/hypno/grammar_mis.cpp"
+#line 1455 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 24: /* line: TALKTOK alloctalk talk  */
-#line 209 "engines/hypno/grammar_mis.y"
+#line 213 "engines/hypno/grammar_mis.y"
                                   { 
 		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(talk_action);
 		talk_action = nullptr;
 		debugC(1, kHypnoDebugParser, "TALK"); }
-#line 1462 "engines/hypno/grammar_mis.cpp"
+#line 1466 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 25: /* line: ENDTOK anything RETTOK  */
-#line 215 "engines/hypno/grammar_mis.y"
+#line 219 "engines/hypno/grammar_mis.y"
                                   { 
 		debugC(1, kHypnoDebugParser, "explicit END");
 		g_parsedHots = stack->back();
 		stack->pop_back();
 		smenu_idx->pop_back();
 	}
-#line 1473 "engines/hypno/grammar_mis.cpp"
+#line 1477 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 26: /* line: RETTOK  */
-#line 221 "engines/hypno/grammar_mis.y"
+#line 225 "engines/hypno/grammar_mis.y"
                        { debugC(1, kHypnoDebugParser, "implicit END"); }
-#line 1479 "engines/hypno/grammar_mis.cpp"
+#line 1483 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 29: /* alloctalk: %empty  */
-#line 228 "engines/hypno/grammar_mis.y"
+#line 232 "engines/hypno/grammar_mis.y"
            { 
 	assert(talk_action == nullptr);
 	talk_action = new Talk();
 	talk_action->escape = false;
 	talk_action->active = true; 
 }
-#line 1490 "engines/hypno/grammar_mis.cpp"
+#line 1494 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 30: /* talk: INACTOK talk  */
-#line 235 "engines/hypno/grammar_mis.y"
+#line 239 "engines/hypno/grammar_mis.y"
                    {
 		talk_action->active = false; 
 		debugC(1, kHypnoDebugParser, "inactive"); }
-#line 1498 "engines/hypno/grammar_mis.cpp"
+#line 1502 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 31: /* talk: FDTOK talk  */
-#line 238 "engines/hypno/grammar_mis.y"
+#line 242 "engines/hypno/grammar_mis.y"
                      { debugC(1, kHypnoDebugParser, "inactive"); }
-#line 1504 "engines/hypno/grammar_mis.cpp"
+#line 1508 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 32: /* talk: BACKTOK FILENAME NUM NUM gsswitch flag  */
-#line 239 "engines/hypno/grammar_mis.y"
+#line 243 "engines/hypno/grammar_mis.y"
                                                  { 
 		talk_action->background = (yyvsp[-4].s);
 		talk_action->backgroundPos = Common::Point((yyvsp[-3].i), (yyvsp[-2].i));
 		debugC(1, kHypnoDebugParser, "BACK in TALK"); }
-#line 1513 "engines/hypno/grammar_mis.cpp"
+#line 1517 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 33: /* talk: BOXXTOK NUM NUM  */
-#line 243 "engines/hypno/grammar_mis.y"
+#line 247 "engines/hypno/grammar_mis.y"
                           {
 		talk_action->boxPos = Common::Point((yyvsp[-1].i), (yyvsp[0].i)); 
 		debugC(1, kHypnoDebugParser, "BOXX %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1521 "engines/hypno/grammar_mis.cpp"
+#line 1525 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 34: /* talk: ESCAPETOK  */
-#line 246 "engines/hypno/grammar_mis.y"
+#line 250 "engines/hypno/grammar_mis.y"
                     {
 		talk_action->escape = true; 
 		debugC(1, kHypnoDebugParser, "ESCAPE"); }
-#line 1529 "engines/hypno/grammar_mis.cpp"
+#line 1533 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 35: /* talk: SECONDTOK FILENAME NUM NUM flag  */
-#line 249 "engines/hypno/grammar_mis.y"
+#line 253 "engines/hypno/grammar_mis.y"
                                           {
 		talk_action->second = (yyvsp[-3].s);
 		talk_action->secondPos = Common::Point((yyvsp[-2].i), (yyvsp[-1].i)); 
 		debugC(1, kHypnoDebugParser, "SECOND %s %d %d '%s'", (yyvsp[-3].s), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].s)); }
-#line 1538 "engines/hypno/grammar_mis.cpp"
+#line 1542 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 36: /* talk: INTROTOK FILENAME NUM NUM  */
-#line 253 "engines/hypno/grammar_mis.y"
+#line 257 "engines/hypno/grammar_mis.y"
                                     { 
 		talk_action->intro = (yyvsp[-2].s);
 		talk_action->introPos = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
 		debugC(1, kHypnoDebugParser, "INTRO %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1547 "engines/hypno/grammar_mis.cpp"
+#line 1551 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 37: /* talk: DEFAULTTOK FILENAME NUM NUM  */
-#line 257 "engines/hypno/grammar_mis.y"
+#line 261 "engines/hypno/grammar_mis.y"
                                       { 
 		// Unsure how this is different from second
 		talk_action->second = (yyvsp[-2].s);
 		talk_action->secondPos = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
 		debugC(1, kHypnoDebugParser, "DEFAULT %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1557 "engines/hypno/grammar_mis.cpp"
+#line 1561 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 38: /* talk: PG talk  */
-#line 262 "engines/hypno/grammar_mis.y"
+#line 266 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "G";
 		talk_cmd.path = (yyvsp[-1].s)+2;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1568 "engines/hypno/grammar_mis.cpp"
+#line 1572 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 39: /* talk: PH talk  */
-#line 268 "engines/hypno/grammar_mis.y"
+#line 272 "engines/hypno/grammar_mis.y"
                   { debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1574 "engines/hypno/grammar_mis.cpp"
+#line 1578 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 40: /* talk: PF talk  */
-#line 269 "engines/hypno/grammar_mis.y"
+#line 273 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "F";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1585 "engines/hypno/grammar_mis.cpp"
+#line 1589 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 41: /* talk: PA talk  */
-#line 275 "engines/hypno/grammar_mis.y"
+#line 279 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "A";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "|A%d", talk_cmd.num); }
-#line 1596 "engines/hypno/grammar_mis.cpp"
+#line 1600 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 42: /* talk: PD talk  */
-#line 281 "engines/hypno/grammar_mis.y"
+#line 285 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "D";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1607 "engines/hypno/grammar_mis.cpp"
+#line 1611 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 43: /* talk: PP NUM NUM flag talk  */
-#line 287 "engines/hypno/grammar_mis.y"
+#line 291 "engines/hypno/grammar_mis.y"
                                { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "P";
@@ -1615,11 +1619,11 @@ yyreduce:
 		talk_cmd.position = Common::Point((yyvsp[-3].i), (yyvsp[-2].i));
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "%s %d %d '%s'", (yyvsp[-4].s), (yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].s)); }
-#line 1619 "engines/hypno/grammar_mis.cpp"
+#line 1623 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 44: /* talk: PI NUM NUM talk  */
-#line 294 "engines/hypno/grammar_mis.y"
+#line 298 "engines/hypno/grammar_mis.y"
                           { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "I";
@@ -1627,74 +1631,74 @@ yyreduce:
 		talk_cmd.position = Common::Point((yyvsp[-2].i), (yyvsp[-1].i));
 		talk_action->commands.push_back(talk_cmd);		  
 		debugC(1, kHypnoDebugParser, "%s %d %d", (yyvsp[-3].s), (yyvsp[-2].i), (yyvsp[-1].i)); }
-#line 1631 "engines/hypno/grammar_mis.cpp"
+#line 1635 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 45: /* talk: PS talk  */
-#line 301 "engines/hypno/grammar_mis.y"
+#line 305 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "S";
 		talk_cmd.variable = (yyvsp[-1].s)+2;
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1642 "engines/hypno/grammar_mis.cpp"
+#line 1646 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 46: /* talk: PL talk  */
-#line 307 "engines/hypno/grammar_mis.y"
+#line 311 "engines/hypno/grammar_mis.y"
                   { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "L";
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "|L"); }
-#line 1652 "engines/hypno/grammar_mis.cpp"
+#line 1656 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 47: /* talk: PE  */
-#line 312 "engines/hypno/grammar_mis.y"
+#line 316 "engines/hypno/grammar_mis.y"
              { debugC(1, kHypnoDebugParser, "|E"); }
-#line 1658 "engines/hypno/grammar_mis.cpp"
+#line 1662 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 49: /* mflag: NAME  */
-#line 316 "engines/hypno/grammar_mis.y"
+#line 320 "engines/hypno/grammar_mis.y"
             { (yyval.s) = (yyvsp[0].s); }
-#line 1664 "engines/hypno/grammar_mis.cpp"
+#line 1668 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 50: /* mflag: %empty  */
-#line 317 "engines/hypno/grammar_mis.y"
+#line 321 "engines/hypno/grammar_mis.y"
                         { (yyval.s) = scumm_strdup(""); }
-#line 1670 "engines/hypno/grammar_mis.cpp"
+#line 1674 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 51: /* flag: FLAG  */
-#line 320 "engines/hypno/grammar_mis.y"
+#line 324 "engines/hypno/grammar_mis.y"
                         { (yyval.s) = (yyvsp[0].s); debugC(1, kHypnoDebugParser, "flag: %s", (yyvsp[0].s)); }
-#line 1676 "engines/hypno/grammar_mis.cpp"
+#line 1680 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 52: /* flag: %empty  */
-#line 321 "engines/hypno/grammar_mis.y"
+#line 325 "engines/hypno/grammar_mis.y"
                         { (yyval.s) = scumm_strdup(""); }
-#line 1682 "engines/hypno/grammar_mis.cpp"
+#line 1686 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 53: /* gsswitch: GSSWITCH  */
-#line 324 "engines/hypno/grammar_mis.y"
+#line 328 "engines/hypno/grammar_mis.y"
                         { (yyval.s) = (yyvsp[0].s); debugC(1, kHypnoDebugParser, "switch %s", (yyvsp[0].s)); }
-#line 1688 "engines/hypno/grammar_mis.cpp"
+#line 1692 "engines/hypno/grammar_mis.cpp"
     break;
 
   case 54: /* gsswitch: %empty  */
-#line 325 "engines/hypno/grammar_mis.y"
+#line 329 "engines/hypno/grammar_mis.y"
                         { (yyval.s) = scumm_strdup(""); }
-#line 1694 "engines/hypno/grammar_mis.cpp"
+#line 1698 "engines/hypno/grammar_mis.cpp"
     break;
 
 
-#line 1698 "engines/hypno/grammar_mis.cpp"
+#line 1702 "engines/hypno/grammar_mis.cpp"
 
       default: break;
     }
diff --git a/engines/hypno/grammar_mis.y b/engines/hypno/grammar_mis.y
index 2fbb4b9fefc..a44cff07292 100644
--- a/engines/hypno/grammar_mis.y
+++ b/engines/hypno/grammar_mis.y
@@ -86,8 +86,12 @@ lines: line lines
 
 
 line: MENUTOK mflag mflag mflag {
-		Hotspot *hot = new Hotspot(MakeMenu, $2); 
+		Hotspot *hot = new Hotspot(MakeMenu); 
 		debugC(1, kHypnoDebugParser, "MENU %s %s", $2, $3);
+		hot->flags[0] = $2;
+		hot->flags[1] = $3;
+		hot->flags[2] = $4;
+
 		Hotspots *cur = stack->back();
 		cur->push_back(*hot);
 
@@ -98,7 +102,7 @@ line: MENUTOK mflag mflag mflag {
 		smenu_idx->push_back(idx);
 	}
 	| HOTSTOK BBOXTOK NUM NUM NUM NUM  {  
-		Hotspot *hot = new Hotspot(MakeHotspot, "", Common::Rect($3, $4, $5, $6)); 
+		Hotspot *hot = new Hotspot(MakeHotspot, Common::Rect($3, $4, $5, $6)); 
 		debugC(1, kHypnoDebugParser, "HOTS %d.", hot->type);
 		Hotspots *cur = stack->back();
 		cur->push_back(*hot); 
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index 6247781c289..17daea303af 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -72,7 +72,7 @@ HypnoEngine::HypnoEngine(OSystem *syst, const ADGameDescription *gd)
 	_defaultCursor = "";
 	_checkpoint = "";
 	// Add quit level
-	Hotspot q(MakeMenu, "");
+	Hotspot q(MakeMenu);
 	Action *a = new Quit();
 	q.actions.push_back(a);
 	Scene *quit = new Scene();
diff --git a/engines/hypno/scene.cpp b/engines/hypno/scene.cpp
index 1e8b4ec464f..cbc8eafd74a 100644
--- a/engines/hypno/scene.cpp
+++ b/engines/hypno/scene.cpp
@@ -104,7 +104,7 @@ bool HypnoEngine::checkLevelWon() {
 
 void HypnoEngine::clickedHotspot(Common::Point mousePos) {
 	Hotspots *hots = stack.back();
-	Hotspot selected(MakeHotspot, "");
+	Hotspot selected(MakeHotspot);
 	bool found = false;
 	int rs = 100000000;
 	int cs = 0;
@@ -197,7 +197,7 @@ void HypnoEngine::clickedHotspot(Common::Point mousePos) {
 
 bool HypnoEngine::hoverHotspot(Common::Point mousePos) {
 	Hotspots *hots = stack.back();
-	Hotspot selected(MakeHotspot, "");
+	Hotspot selected(MakeHotspot);
 	bool found = false;
 	int rs = 100000000;
 	for (Hotspots::const_iterator it = hots->begin(); it != hots->end(); ++it) {
@@ -509,6 +509,8 @@ void HypnoEngine::runScene(Scene *scene) {
 	_nextParallelVideoToPlay.clear();
 	_nextSequentialVideoToPlay.clear();
 	_escapeSequentialVideoToPlay.clear();
+
+	removeTimers();
 }
 
 void HypnoEngine::showConversation() { error("Not implemented"); }
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index deb69f014ae..e65d6c6c548 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -67,7 +67,7 @@ void WetEngine::loadAssetsDemoDisc() {
 	if (missions->listMembers(files) == 0)
 		error("Failed to load any files from missions.lib");
 
-	Hotspot h(MakeMenu, "");
+	Hotspot h(MakeMenu);
 	Hotspots hs;
 	Ambient *a = new Ambient("movie/selector.smk", Common::Point(0, 0), "/LOOP");
 	a->fullscreen = true;




More information about the Scummvm-git-logs mailing list