[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