[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