[Scummvm-git-logs] scummvm master -> 76a6abd612e5403a92dd51719bf385d276fc3ff7
neuromancer
noreply at scummvm.org
Sat Feb 26 13:26:42 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:
5bffbd5094 HYPNO: parse hit/miss videos for boss combats in wet
76a6abd612 HYPNO: implemented hit videos for boss combats in wet and removed some extra spaces
Commit: 5bffbd5094efc731858dfc45e8113678ab4dd054
https://github.com/scummvm/scummvm/commit/5bffbd5094efc731858dfc45e8113678ab4dd054
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-26T14:26:50+01:00
Commit Message:
HYPNO: parse hit/miss videos for boss combats in wet
Changed paths:
engines/hypno/grammar.h
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index edb37f27a88..810ed975dc0 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -495,6 +495,10 @@ public:
Filename defeatNoEnergyFirstVideo;
Filename defeatNoEnergySecondVideo;
Filename defeatMissBossVideo;
+ Filename hitBoss1Video;
+ Filename missBoss1Video;
+ Filename hitBoss2Video;
+ Filename missBoss2Video;
Filename beforeVideo;
Filename briefingVideo;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index fe229f6247c..07c73c13bc1 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -578,13 +578,13 @@ static const yytype_int16 yyrline[] =
{
0, 78, 78, 78, 79, 82, 83, 84, 87, 91,
95, 99, 100, 101, 102, 103, 108, 118, 127, 133,
- 138, 139, 143, 147, 150, 154, 157, 158, 176, 198,
- 204, 209, 214, 220, 225, 230, 235, 240, 245, 252,
- 253, 256, 257, 258, 261, 269, 274, 279, 283, 287,
- 291, 295, 299, 303, 307, 311, 315, 319, 323, 327,
- 331, 335, 339, 343, 347, 350, 354, 359, 363, 368,
- 373, 377, 383, 384, 387, 388, 391, 395, 398, 405,
- 406
+ 138, 139, 143, 147, 150, 154, 157, 158, 184, 206,
+ 212, 217, 222, 228, 233, 238, 243, 248, 253, 260,
+ 261, 264, 265, 266, 269, 277, 282, 287, 291, 295,
+ 299, 303, 307, 311, 315, 319, 323, 327, 331, 335,
+ 339, 343, 347, 351, 355, 358, 362, 367, 371, 376,
+ 381, 385, 391, 392, 395, 396, 399, 403, 406, 413,
+ 414
};
#endif
@@ -1429,16 +1429,24 @@ yyreduce:
g_parsedArc->defeatMissBossVideo = (yyvsp[0].s);
else if (Common::String("B5") == (yyvsp[-1].s))
g_parsedArc->defeatNoEnergySecondVideo = (yyvsp[0].s);
+ else if (Common::String("B6") == (yyvsp[-1].s))
+ g_parsedArc->hitBoss1Video = (yyvsp[0].s);
+ else if (Common::String("B7") == (yyvsp[-1].s))
+ g_parsedArc->missBoss1Video = (yyvsp[0].s);
+ else if (Common::String("B8") == (yyvsp[-1].s))
+ g_parsedArc->hitBoss2Video = (yyvsp[0].s);
+ else if (Common::String("B9") == (yyvsp[-1].s))
+ g_parsedArc->missBoss2Video = (yyvsp[0].s);
else if (Common::String("BA") == (yyvsp[-1].s))
g_parsedArc->briefingVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1438 "engines/hypno/grammar_arc.cpp"
+#line 1446 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: SNTOK FILENAME enc */
-#line 176 "engines/hypno/grammar_arc.y"
+#line 184 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
if (Common::String("22K") == (yyvsp[0].s) || Common::String("22k") == (yyvsp[0].s))
@@ -1461,125 +1469,125 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s));
}
-#line 1465 "engines/hypno/grammar_arc.cpp"
+#line 1473 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: HETOK BYTE NUM NUM */
-#line 198 "engines/hypno/grammar_arc.y"
+#line 206 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
segment.end = true;
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1476 "engines/hypno/grammar_arc.cpp"
+#line 1484 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: HLTOK BYTE NUM NUM */
-#line 204 "engines/hypno/grammar_arc.y"
+#line 212 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1486 "engines/hypno/grammar_arc.cpp"
+#line 1494 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: HUTOK BYTE NUM NUM */
-#line 209 "engines/hypno/grammar_arc.y"
+#line 217 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1496 "engines/hypno/grammar_arc.cpp"
+#line 1504 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: HTOK NAME NUM NUM */
-#line 214 "engines/hypno/grammar_arc.y"
+#line 222 "engines/hypno/grammar_arc.y"
{
assert(Common::String((yyvsp[-2].s)).size() == 1);
Segment segment((yyvsp[-2].s)[0], (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1507 "engines/hypno/grammar_arc.cpp"
+#line 1515 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: HTOK RTOK NUM NUM */
-#line 220 "engines/hypno/grammar_arc.y"
+#line 228 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == R
Segment segment('R', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1517 "engines/hypno/grammar_arc.cpp"
+#line 1525 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: HTOK ATOK NUM NUM */
-#line 225 "engines/hypno/grammar_arc.y"
+#line 233 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == A
Segment segment('A', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1527 "engines/hypno/grammar_arc.cpp"
+#line 1535 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HTOK PTOK NUM NUM */
-#line 230 "engines/hypno/grammar_arc.y"
+#line 238 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('P', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1537 "engines/hypno/grammar_arc.cpp"
+#line 1545 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HTOK LTOK NUM NUM */
-#line 235 "engines/hypno/grammar_arc.y"
+#line 243 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('L', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1547 "engines/hypno/grammar_arc.cpp"
+#line 1555 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: H12TOK BYTE NUM NUM */
-#line 240 "engines/hypno/grammar_arc.y"
+#line 248 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1557 "engines/hypno/grammar_arc.cpp"
+#line 1565 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK BYTE NUM NUM */
-#line 245 "engines/hypno/grammar_arc.y"
+#line 253 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1567 "engines/hypno/grammar_arc.cpp"
+#line 1575 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* enc: ENCTOK */
-#line 252 "engines/hypno/grammar_arc.y"
+#line 260 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1573 "engines/hypno/grammar_arc.cpp"
+#line 1581 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* enc: %empty */
-#line 253 "engines/hypno/grammar_arc.y"
+#line 261 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1579 "engines/hypno/grammar_arc.cpp"
+#line 1587 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* bline: FNTOK FILENAME */
-#line 261 "engines/hypno/grammar_arc.y"
+#line 269 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1588,305 +1596,305 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1592 "engines/hypno/grammar_arc.cpp"
+#line 1600 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* bline: FNTOK NONETOK */
-#line 269 "engines/hypno/grammar_arc.y"
+#line 277 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1602 "engines/hypno/grammar_arc.cpp"
+#line 1610 "engines/hypno/grammar_arc.cpp"
break;
case 46: /* bline: FTOK FILENAME */
-#line 274 "engines/hypno/grammar_arc.y"
+#line 282 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1612 "engines/hypno/grammar_arc.cpp"
+#line 1620 "engines/hypno/grammar_arc.cpp"
break;
case 47: /* bline: ITOK NAME */
-#line 279 "engines/hypno/grammar_arc.y"
+#line 287 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1621 "engines/hypno/grammar_arc.cpp"
+#line 1629 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* bline: ITOK BNTOK */
-#line 283 "engines/hypno/grammar_arc.y"
+#line 291 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1630 "engines/hypno/grammar_arc.cpp"
+#line 1638 "engines/hypno/grammar_arc.cpp"
break;
case 49: /* bline: ITOK ATOK */
-#line 287 "engines/hypno/grammar_arc.y"
+#line 295 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1639 "engines/hypno/grammar_arc.cpp"
+#line 1647 "engines/hypno/grammar_arc.cpp"
break;
case 50: /* bline: ITOK CTOK */
-#line 291 "engines/hypno/grammar_arc.y"
+#line 299 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1648 "engines/hypno/grammar_arc.cpp"
+#line 1656 "engines/hypno/grammar_arc.cpp"
break;
case 51: /* bline: ITOK DTOK */
-#line 295 "engines/hypno/grammar_arc.y"
+#line 303 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1657 "engines/hypno/grammar_arc.cpp"
+#line 1665 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: ITOK FTOK */
-#line 299 "engines/hypno/grammar_arc.y"
+#line 307 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1666 "engines/hypno/grammar_arc.cpp"
+#line 1674 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: ITOK HTOK */
-#line 303 "engines/hypno/grammar_arc.y"
+#line 311 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1675 "engines/hypno/grammar_arc.cpp"
+#line 1683 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ITOK ITOK */
-#line 307 "engines/hypno/grammar_arc.y"
+#line 315 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1684 "engines/hypno/grammar_arc.cpp"
+#line 1692 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ITOK JTOK */
-#line 311 "engines/hypno/grammar_arc.y"
+#line 319 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1693 "engines/hypno/grammar_arc.cpp"
+#line 1701 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: ITOK NTOK */
-#line 315 "engines/hypno/grammar_arc.y"
+#line 323 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1702 "engines/hypno/grammar_arc.cpp"
+#line 1710 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: ITOK OTOK */
-#line 319 "engines/hypno/grammar_arc.y"
+#line 327 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1711 "engines/hypno/grammar_arc.cpp"
+#line 1719 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: ITOK PTOK */
-#line 323 "engines/hypno/grammar_arc.y"
+#line 331 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1720 "engines/hypno/grammar_arc.cpp"
+#line 1728 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: ITOK QTOK */
-#line 327 "engines/hypno/grammar_arc.y"
+#line 335 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1729 "engines/hypno/grammar_arc.cpp"
+#line 1737 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: ITOK RTOK */
-#line 331 "engines/hypno/grammar_arc.y"
+#line 339 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1738 "engines/hypno/grammar_arc.cpp"
+#line 1746 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: ITOK SNTOK */
-#line 335 "engines/hypno/grammar_arc.y"
+#line 343 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1747 "engines/hypno/grammar_arc.cpp"
+#line 1755 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: ITOK TTOK */
-#line 339 "engines/hypno/grammar_arc.y"
+#line 347 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1756 "engines/hypno/grammar_arc.cpp"
+#line 1764 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: ITOK LTOK */
-#line 343 "engines/hypno/grammar_arc.y"
+#line 351 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 1765 "engines/hypno/grammar_arc.cpp"
+#line 1773 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: JTOK NUM */
-#line 347 "engines/hypno/grammar_arc.y"
+#line 355 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1773 "engines/hypno/grammar_arc.cpp"
+#line 1781 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: A0TOK NUM NUM */
-#line 350 "engines/hypno/grammar_arc.y"
+#line 358 "engines/hypno/grammar_arc.y"
{
shoot->position = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
debugC(1, kHypnoDebugParser, "A0 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1782 "engines/hypno/grammar_arc.cpp"
+#line 1790 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: RTOK NUM NUM */
-#line 354 "engines/hypno/grammar_arc.y"
+#line 362 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1792 "engines/hypno/grammar_arc.cpp"
+#line 1800 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: R01TOK NUM NUM */
-#line 359 "engines/hypno/grammar_arc.y"
+#line 367 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0/1 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1801 "engines/hypno/grammar_arc.cpp"
+#line 1809 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: BNTOK NUM NUM */
-#line 363 "engines/hypno/grammar_arc.y"
+#line 371 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->bodyFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1811 "engines/hypno/grammar_arc.cpp"
+#line 1819 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: KNTOK NUM NUM */
-#line 368 "engines/hypno/grammar_arc.y"
+#line 376 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "KN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1821 "engines/hypno/grammar_arc.cpp"
+#line 1829 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: P0TOK NUM NUM */
-#line 373 "engines/hypno/grammar_arc.y"
+#line 381 "engines/hypno/grammar_arc.y"
{
shoot->paletteSize = (yyvsp[-1].i);
shoot->paletteOffset = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "P0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1830 "engines/hypno/grammar_arc.cpp"
+#line 1838 "engines/hypno/grammar_arc.cpp"
break;
case 71: /* bline: OTOK NUM NUM */
-#line 377 "engines/hypno/grammar_arc.y"
+#line 385 "engines/hypno/grammar_arc.y"
{
if ((yyvsp[-1].i) == 0 && (yyvsp[0].i) == 0)
error("Invalid O command (0, 0)");
shoot->deathPosition = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1841 "engines/hypno/grammar_arc.cpp"
+#line 1849 "engines/hypno/grammar_arc.cpp"
break;
case 72: /* bline: CTOK NUM */
-#line 383 "engines/hypno/grammar_arc.y"
+#line 391 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1847 "engines/hypno/grammar_arc.cpp"
+#line 1855 "engines/hypno/grammar_arc.cpp"
break;
case 73: /* bline: HTOK NUM */
-#line 384 "engines/hypno/grammar_arc.y"
+#line 392 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1855 "engines/hypno/grammar_arc.cpp"
+#line 1863 "engines/hypno/grammar_arc.cpp"
break;
case 74: /* bline: VTOK NUM */
-#line 387 "engines/hypno/grammar_arc.y"
+#line 395 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 1861 "engines/hypno/grammar_arc.cpp"
+#line 1869 "engines/hypno/grammar_arc.cpp"
break;
case 75: /* bline: WTOK NUM */
-#line 388 "engines/hypno/grammar_arc.y"
+#line 396 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1869 "engines/hypno/grammar_arc.cpp"
+#line 1877 "engines/hypno/grammar_arc.cpp"
break;
case 76: /* bline: DTOK NUM */
-#line 391 "engines/hypno/grammar_arc.y"
+#line 399 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1878 "engines/hypno/grammar_arc.cpp"
+#line 1886 "engines/hypno/grammar_arc.cpp"
break;
case 77: /* bline: LTOK NUM NUM */
-#line 395 "engines/hypno/grammar_arc.y"
+#line 403 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1886 "engines/hypno/grammar_arc.cpp"
+#line 1894 "engines/hypno/grammar_arc.cpp"
break;
case 78: /* bline: SNTOK FILENAME enc */
-#line 398 "engines/hypno/grammar_arc.y"
+#line 406 "engines/hypno/grammar_arc.y"
{
if (Common::String("S1") == (yyvsp[-2].s))
shoot->deathSound = (yyvsp[-1].s);
@@ -1894,28 +1902,28 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 1898 "engines/hypno/grammar_arc.cpp"
+#line 1906 "engines/hypno/grammar_arc.cpp"
break;
case 79: /* bline: NTOK */
-#line 405 "engines/hypno/grammar_arc.y"
+#line 413 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "N"); }
-#line 1904 "engines/hypno/grammar_arc.cpp"
+#line 1912 "engines/hypno/grammar_arc.cpp"
break;
case 80: /* bline: ZTOK */
-#line 406 "engines/hypno/grammar_arc.y"
+#line 414 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 1915 "engines/hypno/grammar_arc.cpp"
+#line 1923 "engines/hypno/grammar_arc.cpp"
break;
-#line 1919 "engines/hypno/grammar_arc.cpp"
+#line 1927 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index c25af572f3f..a3880ca21be 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -168,6 +168,14 @@ hline: CTOK NUM {
g_parsedArc->defeatMissBossVideo = $2;
else if (Common::String("B5") == $1)
g_parsedArc->defeatNoEnergySecondVideo = $2;
+ else if (Common::String("B6") == $1)
+ g_parsedArc->hitBoss1Video = $2;
+ else if (Common::String("B7") == $1)
+ g_parsedArc->missBoss1Video = $2;
+ else if (Common::String("B8") == $1)
+ g_parsedArc->hitBoss2Video = $2;
+ else if (Common::String("B9") == $1)
+ g_parsedArc->missBoss2Video = $2;
else if (Common::String("BA") == $1)
g_parsedArc->briefingVideo = $2;
Commit: 76a6abd612e5403a92dd51719bf385d276fc3ff7
https://github.com/scummvm/scummvm/commit/76a6abd612e5403a92dd51719bf385d276fc3ff7
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-26T14:26:50+01:00
Commit Message:
HYPNO: implemented hit videos for boss combats in wet and removed some extra spaces
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/hypno.h
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 750a89de11f..c99d6bd53be 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -55,7 +55,7 @@ void HypnoEngine::parseArcadeShooting(const Common::String &prefix, const Common
debugC(1, kHypnoDebugParser, "Parsing %s/%s", prefix.c_str(), filename.c_str());
parse_arc(data.c_str());
ArcadeShooting *arcade = new ArcadeShooting();
- *arcade = *g_parsedArc;
+ *arcade = *g_parsedArc;
_levels[filename] = (Level*) arcade;
g_parsedArc->backgroundVideo.clear();
g_parsedArc->transitionPalette.clear();
@@ -152,7 +152,7 @@ void HypnoEngine::loadArcadeLevel(const Common::String &arclevel, const Common::
splitArcadeFile(arclevel, arc, list);
debugC(1, kHypnoDebugParser, "%s", arc.c_str());
parseArcadeShooting("", arclevel, arc);
- ArcadeShooting *arcade = (ArcadeShooting *) _levels[arclevel];
+ ArcadeShooting *arcade = (ArcadeShooting *) _levels[arclevel];
arcade->shootSequence = parseShootList(arclevel, list);
arcade->prefix = prefix;
arcade->levelIfWin = nextWin;
@@ -232,7 +232,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
} else if (event.kbd.keycode == Common::KEYCODE_k) { // Added for testing
_health = 0;
} else if (event.kbd.keycode == Common::KEYCODE_LEFT) {
- _lastPlayerPosition = _currentPlayerPosition;
+ _lastPlayerPosition = _currentPlayerPosition;
_currentPlayerPosition = kPlayerLeft;
} else if (event.kbd.keycode == Common::KEYCODE_DOWN) {
_lastPlayerPosition = _currentPlayerPosition;
@@ -320,13 +320,13 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
findNextSegment(arc);
if (_segmentIdx >= segments.size())
- error("Invalid segment %d", _segmentIdx);
+ error("Invalid segment %d", _segmentIdx);
debugC(1, kHypnoDebugArcade, "Starting segment %d of type %x at %d", _segmentIdx, segments[_segmentIdx].type, segments[_segmentIdx].start);
if (!segments[_segmentIdx].end) { // If it is not the end segment
background.decoder->forceSeekToFrame(segments[_segmentIdx].start);
continue;
- } else
+ } else
_skipLevel = true;
}
@@ -365,7 +365,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
ShootInfo si = _shootSequence.front();
int idx = (int)segments[_segmentIdx].size * _segmentRepetition \
+ background.decoder->getCurFrame() \
- - (int)segments[_segmentIdx].start;
+ - (int)segments[_segmentIdx].start;
//debug("%d %d", si.timestamp, idx);
if ((int)si.timestamp <= idx) {
_shootSequence.pop_front();
@@ -442,7 +442,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
if (needsUpdate) {
if (shootingPrimary || shootingSecondary) {
- shoot(mousePos);
+ shoot(mousePos, arc, background);
drawShoot(mousePos);
shootingPrimary = false;
}
@@ -494,13 +494,13 @@ void HypnoEngine::drawCursorArcade(const Common::Point &mousePos) {
changeCursor("target");
else
changeCursor("arcade");
-
+
g_system->copyRectToScreen(_compositeSurface->getPixels(), _compositeSurface->pitch, 0, 0, _screenW, _screenH);
}
bool HypnoEngine::clickedPrimaryShoot(const Common::Point &mousePos) { return true; }
-void HypnoEngine::shoot(const Common::Point &mousePos) {
+void HypnoEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, MVideo &background) {
int i = detectTarget(mousePos);
if (i >= 0) {
if (!_shoots[i].hitSound.empty())
@@ -529,17 +529,33 @@ void HypnoEngine::shoot(const Common::Point &mousePos) {
_shoots[i].video->decoder->forceSeekToFrame(explosionStartFrame - 2);
_shoots[i].lastFrame = explosionLastFrame - 2;
} else {
- byte p[3] = {0x00, 0x00, 0x00}; // Always black?
- assert(_shoots[i].paletteSize == 1 || _shoots[i].paletteSize == 0);
- loadPalette((byte *) &p, _shoots[i].paletteOffset, _shoots[i].paletteSize);
- _objKillsCount[_objIdx] = _objKillsCount[_objIdx] + _shoots[i].objKillsCount;
if (!_shoots[i].explosionAnimation.empty()) {
_shoots[i].video = new MVideo(_shoots[i].explosionAnimation, mousePos, true, false, false);
playVideo(*_shoots[i].video);
int w = _shoots[i].video->decoder->getWidth();
int h = _shoots[i].video->decoder->getHeight();
_shoots[i].video->position = Common::Point(mousePos.x - w / 2, mousePos.y - h / 2);
+ } else if (_objIdx == 0 && !arc->hitBoss1Video.empty()) {
+ background.decoder->pauseVideo(true);
+ MVideo video(arc->hitBoss1Video, Common::Point(0, 0), false, true, false);
+ runIntro(video);
+ loadPalette(arc->backgroundPalette);
+ background.decoder->pauseVideo(false);
+ updateScreen(background);
+ drawScreen();
+ } else if (_objIdx == 1 && !arc->hitBoss2Video.empty()) {
+ background.decoder->pauseVideo(true);
+ MVideo video(arc->hitBoss2Video, Common::Point(0, 0), false, true, false);
+ runIntro(video);
+ loadPalette(arc->backgroundPalette);
+ background.decoder->pauseVideo(false);
+ updateScreen(background);
+ drawScreen();
}
+ byte p[3] = {0x00, 0x00, 0x00}; // Always black?
+ assert(_shoots[i].paletteSize == 1 || _shoots[i].paletteSize == 0);
+ loadPalette((byte *) &p, _shoots[i].paletteOffset, _shoots[i].paletteSize);
+ _objKillsCount[_objIdx] = _objKillsCount[_objIdx] + _shoots[i].objKillsCount;
}
}
}
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index c85e758437f..bdfb47219b5 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -220,7 +220,7 @@ public:
virtual bool clickedPrimaryShoot(const Common::Point &mousePos);
virtual bool clickedSecondaryShoot(const Common::Point &mousePos);
virtual void drawShoot(const Common::Point &mousePos);
- virtual void shoot(const Common::Point &mousePos);
+ virtual void shoot(const Common::Point &mousePos, ArcadeShooting *arc, MVideo &background);
virtual void hitPlayer();
// Segments
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 1d4a1bf3e38..e39882dffd7 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -55,7 +55,7 @@ WetEngine::WetEngine(OSystem *syst, const ADGameDescription *gd) : HypnoEngine(s
_screenW = 320;
_screenH = 200;
_lives = 2;
-
+
const chapterEntry *entry = rawChapterTable;
while (entry->id) {
_chapterTable[entry->id] = entry;
@@ -493,7 +493,7 @@ void WetEngine::runMainMenu(Code *code) {
}
}
-Common::String WetEngine::findNextLevel(const Transition *trans) {
+Common::String WetEngine::findNextLevel(const Transition *trans) {
if (trans->nextLevel.empty())
error("Invalid transition!");
return trans->nextLevel;
More information about the Scummvm-git-logs
mailing list