[Scummvm-git-logs] scummvm master -> 6d8672bec9400414a49d2005e6b10ea17be9def2
neuromancer
noreply at scummvm.org
Mon Jan 31 10:58:12 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:
a2d4f16d68 HYPNO: improved animations for certain targets and added more levels in wet
6d8672bec9 HYPNO: initialize frameDelay
Commit: a2d4f16d68c7b1a973127aaa3f6a49016fda67cc
https://github.com/scummvm/scummvm/commit/a2d4f16d68c7b1a973127aaa3f6a49016fda67cc
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-01-31T11:55:37+01:00
Commit Message:
HYPNO: improved animations for certain targets and added more levels in wet
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/grammar.h
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index dc6446dc2db..fbfb92ab8fc 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -450,6 +450,13 @@ void HypnoEngine::shoot(const Common::Point &mousePos) {
assert(_shoots[i].paletteSize == 1 || _shoots[i].paletteSize == 0);
loadPalette((byte *) &p, _shoots[i].paletteOffset, _shoots[i].paletteSize);
_obj1KillsCount = _obj1KillsCount + _shoots[i].obj1KillsCount;
+ 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);
+ }
}
}
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index 91085a37f49..b31495704a5 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -364,6 +364,7 @@ public:
obj1KillsCount = 0;
obj1MissesCount = 0;
animation = "NONE";
+ explosionAnimation = "";
}
Common::String name;
Filename animation;
@@ -389,7 +390,7 @@ public:
MVideo *video;
uint32 attackFrame;
uint32 explosionFrame;
-
+ Filename explosionAnimation;
bool destroyed;
};
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 0c4f90f5728..31857ba0eeb 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -574,11 +574,11 @@ static const yytype_int16 yyrline[] =
0, 75, 75, 75, 76, 79, 80, 81, 84, 87,
88, 92, 93, 94, 95, 96, 101, 102, 103, 109,
114, 115, 119, 123, 126, 130, 131, 147, 159, 164,
- 167, 170, 177, 178, 181, 182, 183, 186, 192, 197,
- 202, 206, 210, 214, 218, 222, 226, 230, 234, 238,
- 242, 246, 250, 254, 258, 262, 266, 269, 273, 278,
- 279, 280, 286, 290, 293, 294, 297, 300, 304, 311,
- 312
+ 167, 170, 177, 178, 181, 182, 183, 186, 194, 199,
+ 204, 208, 212, 216, 220, 224, 228, 232, 236, 240,
+ 244, 248, 252, 256, 260, 264, 268, 271, 275, 280,
+ 281, 282, 288, 292, 295, 296, 299, 302, 306, 313,
+ 314
};
#endif
@@ -1444,275 +1444,277 @@ yyreduce:
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
shoot->animation = (yyvsp[0].s);
+ else if (Common::String("F4") == (yyvsp[-1].s))
+ shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1450 "engines/hypno/grammar_arc.cpp"
+#line 1452 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* bline: FNTOK NONETOK */
-#line 192 "engines/hypno/grammar_arc.y"
+#line 194 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1460 "engines/hypno/grammar_arc.cpp"
+#line 1462 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* bline: FTOK FILENAME */
-#line 197 "engines/hypno/grammar_arc.y"
+#line 199 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1470 "engines/hypno/grammar_arc.cpp"
+#line 1472 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* bline: ITOK NAME */
-#line 202 "engines/hypno/grammar_arc.y"
+#line 204 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1479 "engines/hypno/grammar_arc.cpp"
+#line 1481 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* bline: ITOK BNTOK */
-#line 206 "engines/hypno/grammar_arc.y"
+#line 208 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1488 "engines/hypno/grammar_arc.cpp"
+#line 1490 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* bline: ITOK ATOK */
-#line 210 "engines/hypno/grammar_arc.y"
+#line 212 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1497 "engines/hypno/grammar_arc.cpp"
+#line 1499 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* bline: ITOK CTOK */
-#line 214 "engines/hypno/grammar_arc.y"
+#line 216 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1506 "engines/hypno/grammar_arc.cpp"
+#line 1508 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* bline: ITOK DTOK */
-#line 218 "engines/hypno/grammar_arc.y"
+#line 220 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1515 "engines/hypno/grammar_arc.cpp"
+#line 1517 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* bline: ITOK FTOK */
-#line 222 "engines/hypno/grammar_arc.y"
+#line 224 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1524 "engines/hypno/grammar_arc.cpp"
+#line 1526 "engines/hypno/grammar_arc.cpp"
break;
case 46: /* bline: ITOK HTOK */
-#line 226 "engines/hypno/grammar_arc.y"
+#line 228 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1533 "engines/hypno/grammar_arc.cpp"
+#line 1535 "engines/hypno/grammar_arc.cpp"
break;
case 47: /* bline: ITOK ITOK */
-#line 230 "engines/hypno/grammar_arc.y"
+#line 232 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1542 "engines/hypno/grammar_arc.cpp"
+#line 1544 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* bline: ITOK JTOK */
-#line 234 "engines/hypno/grammar_arc.y"
+#line 236 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1551 "engines/hypno/grammar_arc.cpp"
+#line 1553 "engines/hypno/grammar_arc.cpp"
break;
case 49: /* bline: ITOK NTOK */
-#line 238 "engines/hypno/grammar_arc.y"
+#line 240 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1560 "engines/hypno/grammar_arc.cpp"
+#line 1562 "engines/hypno/grammar_arc.cpp"
break;
case 50: /* bline: ITOK OTOK */
-#line 242 "engines/hypno/grammar_arc.y"
+#line 244 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1569 "engines/hypno/grammar_arc.cpp"
+#line 1571 "engines/hypno/grammar_arc.cpp"
break;
case 51: /* bline: ITOK PTOK */
-#line 246 "engines/hypno/grammar_arc.y"
+#line 248 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1578 "engines/hypno/grammar_arc.cpp"
+#line 1580 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: ITOK QTOK */
-#line 250 "engines/hypno/grammar_arc.y"
+#line 252 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1587 "engines/hypno/grammar_arc.cpp"
+#line 1589 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: ITOK RTOK */
-#line 254 "engines/hypno/grammar_arc.y"
+#line 256 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1596 "engines/hypno/grammar_arc.cpp"
+#line 1598 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ITOK SNTOK */
-#line 258 "engines/hypno/grammar_arc.y"
+#line 260 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1605 "engines/hypno/grammar_arc.cpp"
+#line 1607 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ITOK TTOK */
-#line 262 "engines/hypno/grammar_arc.y"
+#line 264 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1614 "engines/hypno/grammar_arc.cpp"
+#line 1616 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: JTOK NUM */
-#line 266 "engines/hypno/grammar_arc.y"
+#line 268 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1622 "engines/hypno/grammar_arc.cpp"
+#line 1624 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: A0TOK NUM NUM */
-#line 269 "engines/hypno/grammar_arc.y"
+#line 271 "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 1631 "engines/hypno/grammar_arc.cpp"
+#line 1633 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: RTOK NUM NUM */
-#line 273 "engines/hypno/grammar_arc.y"
+#line 275 "engines/hypno/grammar_arc.y"
{
shoot->obj1KillsCount = (yyvsp[-1].i);
shoot->obj1MissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1641 "engines/hypno/grammar_arc.cpp"
+#line 1643 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: R0TOK NUM NUM */
-#line 278 "engines/hypno/grammar_arc.y"
+#line 280 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "R0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1647 "engines/hypno/grammar_arc.cpp"
+#line 1649 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: BNTOK NUM NUM */
-#line 279 "engines/hypno/grammar_arc.y"
+#line 281 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1653 "engines/hypno/grammar_arc.cpp"
+#line 1655 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: KNTOK NUM NUM */
-#line 280 "engines/hypno/grammar_arc.y"
+#line 282 "engines/hypno/grammar_arc.y"
{
shoot->explosionFrame = (yyvsp[0].i);
if (shoot->attackFrame == 0) // Override attack frame if it is not specified
shoot->attackFrame = (yyvsp[0].i) - 4;
debugC(1, kHypnoDebugParser, "KN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1664 "engines/hypno/grammar_arc.cpp"
+#line 1666 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: P0TOK NUM NUM */
-#line 286 "engines/hypno/grammar_arc.y"
+#line 288 "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 1673 "engines/hypno/grammar_arc.cpp"
+#line 1675 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: OTOK NUM NUM */
-#line 290 "engines/hypno/grammar_arc.y"
+#line 292 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1681 "engines/hypno/grammar_arc.cpp"
+#line 1683 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: CTOK NUM */
-#line 293 "engines/hypno/grammar_arc.y"
+#line 295 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1687 "engines/hypno/grammar_arc.cpp"
+#line 1689 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: HTOK NUM */
-#line 294 "engines/hypno/grammar_arc.y"
+#line 296 "engines/hypno/grammar_arc.y"
{
shoot->attackFrame = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1695 "engines/hypno/grammar_arc.cpp"
+#line 1697 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: WTOK NUM */
-#line 297 "engines/hypno/grammar_arc.y"
+#line 299 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1703 "engines/hypno/grammar_arc.cpp"
+#line 1705 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: DTOK NUM */
-#line 300 "engines/hypno/grammar_arc.y"
+#line 302 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1712 "engines/hypno/grammar_arc.cpp"
+#line 1714 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: SNTOK FILENAME enc */
-#line 304 "engines/hypno/grammar_arc.y"
+#line 306 "engines/hypno/grammar_arc.y"
{
if (Common::String("S1") == (yyvsp[-2].s))
shoot->deathSound = (yyvsp[-1].s);
@@ -1720,28 +1722,28 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1726 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: NTOK */
-#line 311 "engines/hypno/grammar_arc.y"
+#line 313 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "N"); }
-#line 1730 "engines/hypno/grammar_arc.cpp"
+#line 1732 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: ZTOK */
-#line 312 "engines/hypno/grammar_arc.y"
+#line 314 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 1741 "engines/hypno/grammar_arc.cpp"
+#line 1743 "engines/hypno/grammar_arc.cpp"
break;
-#line 1745 "engines/hypno/grammar_arc.cpp"
+#line 1747 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 0a481aa1f88..94b1fd1e2ae 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -187,6 +187,8 @@ bline: FNTOK FILENAME {
shoot = new Shoot();
if (Common::String("F0") == $1)
shoot->animation = $2;
+ else if (Common::String("F4") == $1)
+ shoot->explosionAnimation = $2;
debugC(1, kHypnoDebugParser, "FN %s", $2);
}
| FNTOK NONETOK {
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 1adb7ab7c1b..236cb3483c1 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -31,7 +31,9 @@ static const chapterEntry rawChapterTable[] = {
{20, {44, 172}, {218, 172}, {0, 0}}, // c20
{21, {70, 160}, {180, 160}, {220, 185}}, // c21
{22, {70, 160}, {180, 160}, {220, 185}}, // c22
+ {23, {70, 160}, {180, 160}, {220, 185}}, // c23
{31, {70, 160}, {180, 160}, {220, 185}}, // c31
+ {32, {70, 160}, {180, 160}, {220, 185}}, // c32
{52, {60, 167}, {190, 167}, {135, 187}}, // c52
{0, {0, 0}, {0, 0}, {0, 0}} // NULL
};
@@ -238,9 +240,26 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c211.mi_", "c22", "");
loadArcadeLevel("c212.mi_", "c22", "");
- loadArcadeLevel("c220.mi_", "???", "");
- loadArcadeLevel("c201.mi_", "???", "");
- loadArcadeLevel("c202.mi_", "???", "");
+ loadArcadeLevel("c220.mi_", "c23", "");
+ loadArcadeLevel("c221.mi_", "c23", "");
+ loadArcadeLevel("c222.mi_", "c23", "");
+
+ loadArcadeLevel("c230.mi_", "c20", "");
+ loadArcadeLevel("c231.mi_", "c20", "");
+ loadArcadeLevel("c232.mi_", "c20", "");
+
+ loadArcadeLevel("c200.mi_", "c31", "");
+ loadArcadeLevel("c201.mi_", "c31", "");
+ loadArcadeLevel("c202.mi_", "c31", "");
+
+ loadArcadeLevel("c310.mi_", "c32", "");
+ loadArcadeLevel("c311.mi_", "c32", "");
+ loadArcadeLevel("c312.mi_", "c32", "");
+
+ loadArcadeLevel("c320.mi_", "???", "");
+ loadArcadeLevel("c321.mi_", "???", "");
+ loadArcadeLevel("c322.mi_", "???", "");
+
loadLib("", "c_misc/fonts.lib", true);
loadLib("sound/", "c_misc/sound.lib", true);
Commit: 6d8672bec9400414a49d2005e6b10ea17be9def2
https://github.com/scummvm/scummvm/commit/6d8672bec9400414a49d2005e6b10ea17be9def2
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-01-31T11:58:12+01:00
Commit Message:
HYPNO: initialize frameDelay
Changed paths:
engines/hypno/grammar.h
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index b31495704a5..9ed77c1bceb 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -430,6 +430,7 @@ public:
id = 0;
obj1KillsRequired = 0;
obj1MissesAllowed = 0;
+ frameDelay = 0;
}
uint32 id;
uint32 frameDelay;
More information about the Scummvm-git-logs
mailing list