[Scummvm-git-logs] scummvm master -> 7919e9f0d025b634fb6bc9e477285f56524cca1f
mduggan
mgithub at guarana.org
Fri Feb 12 10:38:32 UTC 2021
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e55a7d1f50 ULTIMA8: Start Crusader on correct egg no
72ddb928ed ULTIMA8: Don't break to debugger on show-touching-items command
74ba8b8c39 ULTIMA8: Dump item info for clicks even in stasis
8dc727acae ULTIMA8: Don't apply 0 splash damage in Crusader
ec65e71efa ULTIMA8: Support longer text on Crusader ComputerGump
fcc9e6a9e3 ULTIMA8: Don't leak text widgets in Crusader inventory gumps
070c348dcd ULTIMA8: JANITORIAL: whitespace, comments
fa7bcbdc09 ULTIMA8: Try to fix clearing of pickup gumps
7919e9f0d0 ULTIMA8: Fix music restore when closing Crusader menu
Commit: e55a7d1f500cbb8f99f9de48a7ff72354a80e937
https://github.com/scummvm/scummvm/commit/e55a7d1f500cbb8f99f9de48a7ff72354a80e937
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T15:35:26+09:00
Commit Message:
ULTIMA8: Start Crusader on correct egg no
Changed paths:
engines/ultima/ultima8/games/start_crusader_process.cpp
diff --git a/engines/ultima/ultima8/games/start_crusader_process.cpp b/engines/ultima/ultima8/games/start_crusader_process.cpp
index 9efdd34dea..1ffb48af9c 100644
--- a/engines/ultima/ultima8/games/start_crusader_process.cpp
+++ b/engines/ultima/ultima8/games/start_crusader_process.cpp
@@ -89,13 +89,10 @@ void StartCrusaderProcess::run() {
Item *smiley = ItemFactory::createItem(0x598, 0, 0, 0, 0, mapnum, 0, true);
smiley->moveToContainer(avatar);
- if (GAME_IS_REMORSE) {
- // TODO: The game actually teleports to egg 0x1e (30) which has another
- // egg to teleport to egg 99. Is there any purpose to that?
- Kernel::get_instance()->addProcess(new TeleportToEggProcess(1, 99));
- } else if (GAME_IS_REGRET) {
- Kernel::get_instance()->addProcess(new TeleportToEggProcess(1, 0x1e));
- }
+ avatar->teleport(1, 0x1e);
+ // The first level 0x1e teleporter in No Remorse goes straight to another
+ // teleport, so undo the flag that normally stops that.
+ avatar->setJustTeleported(false);
Process *fader = new PaletteFaderProcess(0x003F3F3F, true, 0x7FFF, 60, false);
Kernel::get_instance()->addProcess(fader);
Commit: 72ddb928edbd9e078dfc1d39dee82a3e92ca1e65
https://github.com/scummvm/scummvm/commit/72ddb928edbd9e078dfc1d39dee82a3e92ca1e65
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T15:35:52+09:00
Commit Message:
ULTIMA8: Don't break to debugger on show-touching-items command
Changed paths:
engines/ultima/ultima8/misc/debugger.cpp
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 9fd4bc0fe7..8f82349127 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -313,7 +313,7 @@ bool Debugger::cmdToggleShowTouchingItems(int argc, const char **argv) {
Ultima8Engine *g = Ultima8Engine::get_instance();
g->toggleShowTouchingItems();
debugPrintf("ShowTouchingItems = %s\n", strBool(g->isShowTouchingItems()));
- return true;
+ return false;
}
bool Debugger::cmdCloseItemGumps(int argc, const char **argv) {
Commit: 74ba8b8c39dce911f5b9630981d5bd6dc3a73864
https://github.com/scummvm/scummvm/commit/74ba8b8c39dce911f5b9630981d5bd6dc3a73864
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T15:36:50+09:00
Commit Message:
ULTIMA8: Dump item info for clicks even in stasis
Changed paths:
engines/ultima/ultima8/gumps/container_gump.cpp
engines/ultima/ultima8/gumps/game_map_gump.cpp
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index f7f61fbf20..0dd20ad030 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -309,30 +309,23 @@ Gump *ContainerGump::onMouseDown(int button, int32 mx, int32 my) {
void ContainerGump::onMouseClick(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT) {
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- return;
- }
-
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
if (item) {
item->dumpInfo();
- // call the 'look' event
- item->callUsecodeEvent_look();
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ pout << "Can't look: avatarInStasis" << Std::endl;
+ } else {
+ item->callUsecodeEvent_look();
+ }
}
}
}
void ContainerGump::onMouseDouble(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT) {
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- return;
- }
-
uint16 objID = TraceObjId(mx, my);
if (objID == getObjId()) {
@@ -343,6 +336,11 @@ void ContainerGump::onMouseDouble(int button, int32 mx, int32 my) {
if (item) {
item->dumpInfo();
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ pout << "Can't use: avatarInStasis" << Std::endl;
+ return;
+ }
+
MainActor *avatar = getMainActor();
if (objID == _owner || avatar->canReach(item, 128)) { // CONSTANT!
// call the 'use' event
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.cpp b/engines/ultima/ultima8/gumps/game_map_gump.cpp
index 60771f0d4f..694d060c8b 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.cpp
+++ b/engines/ultima/ultima8/gumps/game_map_gump.cpp
@@ -298,11 +298,6 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
if (Mouse::get_instance()->isMouseDownEvent(Shared::BUTTON_RIGHT)) break;
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- break;
- }
-
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
if (item) {
@@ -310,8 +305,11 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
item->getLocation(xv, yv, zv);
item->dumpInfo();
- // call the 'look' event
- item->callUsecodeEvent_look();
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ pout << "Can't look: avatarInStasis" << Std::endl;
+ } else {
+ item->callUsecodeEvent_look();
+ }
}
break;
}
@@ -366,11 +364,6 @@ void GameMapGump::onMouseDouble(int button, int32 mx, int32 my) {
if (Mouse::get_instance()->isMouseDownEvent(Shared::BUTTON_RIGHT)) break;
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- break;
- }
-
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
if (item) {
@@ -383,6 +376,11 @@ void GameMapGump::onMouseDouble(int button, int32 mx, int32 my) {
range = 512;
}
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ pout << "Can't use: avatarInStasis" << Std::endl;
+ break;
+ }
+
if (dynamic_cast<Actor *>(item) ||
avatar->canReach(item, range)) {
// call the 'use' event
Commit: 8dc727acae5833892b19b80b1d5b3eee3f1bed20
https://github.com/scummvm/scummvm/commit/8dc727acae5833892b19b80b1d5b3eee3f1bed20
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T15:39:02+09:00
Commit Message:
ULTIMA8: Don't apply 0 splash damage in Crusader
Changed paths:
engines/ultima/ultima8/world/fire_type.cpp
diff --git a/engines/ultima/ultima8/world/fire_type.cpp b/engines/ultima/ultima8/world/fire_type.cpp
index a9cc12e8e6..3c1fd0e7b8 100644
--- a/engines/ultima/ultima8/world/fire_type.cpp
+++ b/engines/ultima/ultima8/world/fire_type.cpp
@@ -202,6 +202,9 @@ void FireType::applySplashDamageAround(const Point3 &pt, int damage, const Item
if (splashrange)
splashitemdamage /= splashrange;
}
+ if (!splashitemdamage)
+ continue;
+
Direction splashdir = src->getDirToItemCentre(pt);
splashitem->receiveHit(0, splashdir, splashitemdamage, _typeNo);
}
Commit: ec65e71efa55b306a9ceb433be62f6a8e9fc09e7
https://github.com/scummvm/scummvm/commit/ec65e71efa55b306a9ceb433be62f6a8e9fc09e7
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T16:05:58+09:00
Commit Message:
ULTIMA8: Support longer text on Crusader ComputerGump
Changed paths:
engines/ultima/ultima8/gumps/computer_gump.cpp
engines/ultima/ultima8/gumps/computer_gump.h
diff --git a/engines/ultima/ultima8/gumps/computer_gump.cpp b/engines/ultima/ultima8/gumps/computer_gump.cpp
index 85df7566df..16ed4cf89d 100644
--- a/engines/ultima/ultima8/gumps/computer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/computer_gump.cpp
@@ -79,7 +79,8 @@ void ComputerGump::InitGump(Gump *newparent, bool take_focus) {
botGump->SetShape(shape, 1);
botGump->InitGump(this, false);
- _textWidget = new TextWidget(41, 38, _text, true, COMPUTER_FONT, _dims.width() - 100, 0, Font::TEXT_LEFT);
+ _textWidget = new TextWidget(41, 38, _text, true, COMPUTER_FONT, _dims.width() - 100,
+ _dims.height() - 100, Font::TEXT_LEFT);
_textWidget->InitGump(this);
AudioProcess *audio = AudioProcess::get_instance();
@@ -101,13 +102,20 @@ void ComputerGump::run() {
// * Add <MORE> if there is too many lines of text
}
+void ComputerGump::nextText() {
+ TextWidget *textWidget = dynamic_cast<TextWidget *>(_textWidget);
+
+ if (!textWidget->setupNextText())
+ Close();
+}
+
Gump *ComputerGump::onMouseDown(int button, int32 mx, int32 my) {
- Close();
+ nextText();
return this;
}
bool ComputerGump::OnKeyDown(int key, int mod) {
- Close();
+ nextText();
return true;
}
diff --git a/engines/ultima/ultima8/gumps/computer_gump.h b/engines/ultima/ultima8/gumps/computer_gump.h
index d58c86907c..1189da26e6 100644
--- a/engines/ultima/ultima8/gumps/computer_gump.h
+++ b/engines/ultima/ultima8/gumps/computer_gump.h
@@ -57,6 +57,8 @@ public:
void saveData(Common::WriteStream *ws) override;
private:
+ void nextText();
+
/*
TODO: Implement stepping through the text
int _charOff;
Commit: fcc9e6a9e35f31121f9c097dbab965a40e25f150
https://github.com/scummvm/scummvm/commit/fcc9e6a9e35f31121f9c097dbab965a40e25f150
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T16:06:39+09:00
Commit Message:
ULTIMA8: Don't leak text widgets in Crusader inventory gumps
Changed paths:
engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
engines/ultima/ultima8/gumps/cru_inventory_gump.cpp
diff --git a/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp b/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
index 4319ff260a..efd4f87adb 100644
--- a/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
@@ -84,6 +84,7 @@ void CruAmmoGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
const Std::string bulletstr = Std::string::format("%d", bullets);
if (!bulletstr.equals(_bulletsText->getText())) {
RemoveChild(_bulletsText);
+ _bulletsText->Close();
_bulletsText = new TextWidget(22, _dims.height() / 2 - 3, bulletstr, true, 15);
_bulletsText->InitGump(this, false);
}
@@ -100,6 +101,7 @@ void CruAmmoGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
const Std::string clipstr = Std::string::format("%d", clips);
if (!clipstr.equals(_clipsText->getText())) {
RemoveChild(_clipsText);
+ _clipsText->Close();
_clipsText = new TextWidget(_dims.width() / 2 + 22, _dims.height() / 2 - 3, clipstr, true, 15);
_clipsText->InitGump(this, false);
}
diff --git a/engines/ultima/ultima8/gumps/cru_inventory_gump.cpp b/engines/ultima/ultima8/gumps/cru_inventory_gump.cpp
index b00cca7907..ced54b8744 100644
--- a/engines/ultima/ultima8/gumps/cru_inventory_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_inventory_gump.cpp
@@ -132,12 +132,14 @@ void CruInventoryGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sc
const Std::string ¤ttext = _inventoryText->getText();
if (!qtext.equals(currenttext)) {
RemoveChild(_inventoryText);
+ _inventoryText->Close();
_inventoryText = new TextWidget(_dims.width() / 2 + 22, _dims.height() / 2 + 3, qtext, true, INVENTORY_TEXT_FONT);
_inventoryText->InitGump(this, false);
}
} else {
if (_inventoryText->getText().length() > 0) {
RemoveChild(_inventoryText);
+ _inventoryText->Close();
_inventoryText = new TextWidget();
_inventoryText->InitGump(this, false);
}
Commit: 070c348dcd22ca29e36ee9f66efa7a4ef3c856e6
https://github.com/scummvm/scummvm/commit/070c348dcd22ca29e36ee9f66efa7a4ef3c856e6
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T16:09:04+09:00
Commit Message:
ULTIMA8: JANITORIAL: whitespace, comments
Changed paths:
engines/ultima/ultima8/world/container.cpp
engines/ultima/ultima8/world/egg_hatcher_process.cpp
engines/ultima/ultima8/world/item.cpp
diff --git a/engines/ultima/ultima8/world/container.cpp b/engines/ultima/ultima8/world/container.cpp
index 99095363a6..3e9aabcd0c 100644
--- a/engines/ultima/ultima8/world/container.cpp
+++ b/engines/ultima/ultima8/world/container.cpp
@@ -350,7 +350,7 @@ bool Container::loadData(Common::ReadStream *rs, uint32 version) {
uint32 contentcount = rs->readUint32LE();
- // read _contents
+ // read contents
for (unsigned int i = 0; i < contentcount; ++i) {
Object *obj = ObjectManager::get_instance()->loadObject(rs, version);
Item *item = dynamic_cast<Item *>(obj);
diff --git a/engines/ultima/ultima8/world/egg_hatcher_process.cpp b/engines/ultima/ultima8/world/egg_hatcher_process.cpp
index a4d9578fae..8f47c76856 100644
--- a/engines/ultima/ultima8/world/egg_hatcher_process.cpp
+++ b/engines/ultima/ultima8/world/egg_hatcher_process.cpp
@@ -80,9 +80,11 @@ void EggHatcherProcess::run() {
if (x1 <= ax && ax - axs < x2 && y1 <= ay && ay - ays < y2 &&
z - 48 < az && az <= z + 48) { // CONSTANTS!
- if (tegg && tegg->isTeleporter()) nearteleporter = true;
+ if (tegg && tegg->isTeleporter())
+ nearteleporter = true;
- if (tegg && av->hasJustTeleported()) continue;
+ if (tegg && av->hasJustTeleported())
+ continue;
egg->hatch();
} else {
@@ -90,7 +92,8 @@ void EggHatcherProcess::run() {
}
}
- if (!nearteleporter) av->setJustTeleported(false); // clear flag
+ if (!nearteleporter)
+ av->setJustTeleported(false); // clear flag
}
void EggHatcherProcess::saveData(Common::WriteStream *ws) {
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index a51dc35e22..80a76f6905 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -1788,6 +1788,9 @@ void Item::enterFastArea() {
actor->setActivity(lastactivity);
}
+ // TODO: For eggs, Crusader also resets the NPC info if a
+ // certain global is set. For now just skip that.
+
//
// TODO: Check this. The original games only call usecode for actors or
// NOISY types. Calling for all types like this shouldn't cause any issues
Commit: fa7bcbdc09242f187e093b5e2ef560032f3e0e2e
https://github.com/scummvm/scummvm/commit/fa7bcbdc09242f187e093b5e2ef560032f3e0e2e
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T16:09:11+09:00
Commit Message:
ULTIMA8: Try to fix clearing of pickup gumps
Changed paths:
engines/ultima/ultima8/gumps/cru_pickup_gump.cpp
engines/ultima/ultima8/gumps/cru_pickup_gump.h
diff --git a/engines/ultima/ultima8/gumps/cru_pickup_gump.cpp b/engines/ultima/ultima8/gumps/cru_pickup_gump.cpp
index 7cb27ead09..83c96c9a7b 100644
--- a/engines/ultima/ultima8/gumps/cru_pickup_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_pickup_gump.cpp
@@ -123,8 +123,10 @@ void CruPickupGump::updateForNewItem(const Item *item) {
assert(item);
assert(item->getShape() == _itemShapeNo);
TextWidget *oldtext = dynamic_cast<TextWidget *>(FindGump(&FindByIndex<COUNT_TEXT_INDEX>));
- if (oldtext)
+ if (oldtext) {
+ RemoveChild(oldtext);
oldtext->Close();
+ }
// TODO: should we add current q? + currentq;
// It seems like the items are hacked to give the right "q" for
// this gump from the last item, which is why the add process
diff --git a/engines/ultima/ultima8/gumps/cru_pickup_gump.h b/engines/ultima/ultima8/gumps/cru_pickup_gump.h
index 5ffc050af6..2e47f8addf 100644
--- a/engines/ultima/ultima8/gumps/cru_pickup_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_pickup_gump.h
@@ -41,6 +41,8 @@ public:
CruPickupGump();
CruPickupGump(const Item *item, int y);
+ ~CruPickupGump() override {};
+
// Init the gump, call after construction
void InitGump(Gump *newparent, bool take_focus = true) override;
Commit: 7919e9f0d025b634fb6bc9e477285f56524cca1f
https://github.com/scummvm/scummvm/commit/7919e9f0d025b634fb6bc9e477285f56524cca1f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-12T19:34:18+09:00
Commit Message:
ULTIMA8: Fix music restore when closing Crusader menu
Changed paths:
engines/ultima/ultima8/audio/remorse_music_process.cpp
diff --git a/engines/ultima/ultima8/audio/remorse_music_process.cpp b/engines/ultima/ultima8/audio/remorse_music_process.cpp
index abc8d8df04..0c51114983 100644
--- a/engines/ultima/ultima8/audio/remorse_music_process.cpp
+++ b/engines/ultima/ultima8/audio/remorse_music_process.cpp
@@ -124,9 +124,9 @@ void RemorseMusicProcess::saveTrackState() {
}
void RemorseMusicProcess::restoreTrackState() {
- _currentTrack = _savedTrack;
+ int saved = _savedTrack;
_savedTrack = 0;
- playMusic_internal(_currentTrack);
+ playMusic_internal(saved);
}
void RemorseMusicProcess::playMusic_internal(int track) {
More information about the Scummvm-git-logs
mailing list