[Scummvm-git-logs] scummvm master -> a8920f4c2d457d8249aa6834df27022db131b42b
mduggan
mgithub at guarana.org
Sun Jun 13 04:27:39 UTC 2021
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
005ad17f7a ULTIMA8: Make INVINCIBLE flag work in Crusader games
0e61c999af ULTIMA8: Clear instance of singleton Crusader processes on destruction
c92bd29e2c ULTIMA8: Add a couple of consts
a8920f4c2d ULTIMA8: Fix Crusader selection with more than 2 candidates
Commit: 005ad17f7a04defd0ec7b593a6f2f567a81f95b1
https://github.com/scummvm/scummvm/commit/005ad17f7a04defd0ec7b593a6f2f567a81f95b1
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00
Commit Message:
ULTIMA8: Make INVINCIBLE flag work in Crusader games
Changed paths:
engines/ultima/ultima8/world/actors/actor.cpp
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 19222edffb..412cfe3683 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -920,7 +920,7 @@ void Actor::receiveHitCru(uint16 other, Direction dir, int damage, uint16 damage
world->setVargasShield(static_cast<uint32>(newval));
return;
} else if (GAME_IS_REGRET && shape == 0x5b1) {
- /* TODO: Finish special case for No Regret */
+ warning("TODO: Finish Shape 0x5b1 special case for No Regret.");
/*
_bossHealth = _bossHealth - damage;
if (_bossHealth < 1) {
@@ -982,7 +982,7 @@ void Actor::receiveHitCru(uint16 other, Direction dir, int damage, uint16 damage
damage = receiveShieldHit(damage, damage_type);
}
- if (hasActorFlags(ACT_IMMORTAL))
+ if (hasActorFlags(ACT_IMMORTAL | ACT_INVINCIBLE))
damage = 0;
if (damage > _hitPoints)
Commit: 0e61c999af455c70c1238c6a34f752e140c8265f
https://github.com/scummvm/scummvm/commit/0e61c999af455c70c1238c6a34f752e140c8265f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00
Commit Message:
ULTIMA8: Clear instance of singleton Crusader processes on destruction
Changed paths:
engines/ultima/ultima8/graphics/cycle_process.cpp
engines/ultima/ultima8/graphics/cycle_process.h
engines/ultima/ultima8/world/crosshair_process.cpp
engines/ultima/ultima8/world/crosshair_process.h
engines/ultima/ultima8/world/item_selection_process.cpp
engines/ultima/ultima8/world/item_selection_process.h
engines/ultima/ultima8/world/snap_process.cpp
engines/ultima/ultima8/world/snap_process.h
engines/ultima/ultima8/world/target_reticle_process.cpp
engines/ultima/ultima8/world/target_reticle_process.h
diff --git a/engines/ultima/ultima8/graphics/cycle_process.cpp b/engines/ultima/ultima8/graphics/cycle_process.cpp
index 2653e12ac1..2b63e7109f 100644
--- a/engines/ultima/ultima8/graphics/cycle_process.cpp
+++ b/engines/ultima/ultima8/graphics/cycle_process.cpp
@@ -57,6 +57,7 @@ static inline void copyColor(uint8 *dst, const uint8 *src) {
CycleProcess::CycleProcess() : Process(), _running(1) {
_instance = this;
_ticksPerRun = 2;
+ _type = 1; // persistent
for (int i = 0; i < 7; i++) {
copyColor(_cycleColData[i], CYCLE_INIT_COLS[i]);
}
diff --git a/engines/ultima/ultima8/graphics/cycle_process.h b/engines/ultima/ultima8/graphics/cycle_process.h
index 15624eea1b..c9267f7447 100644
--- a/engines/ultima/ultima8/graphics/cycle_process.h
+++ b/engines/ultima/ultima8/graphics/cycle_process.h
@@ -40,7 +40,7 @@ public:
// p_dynamic_class stuff
ENABLE_RUNTIME_CLASSTYPE()
CycleProcess();
- ~CycleProcess(void) override;
+ ~CycleProcess() override;
void run() override;
diff --git a/engines/ultima/ultima8/world/crosshair_process.cpp b/engines/ultima/ultima8/world/crosshair_process.cpp
index 93994e11dc..3db2f19076 100644
--- a/engines/ultima/ultima8/world/crosshair_process.cpp
+++ b/engines/ultima/ultima8/world/crosshair_process.cpp
@@ -44,6 +44,12 @@ CrosshairProcess *CrosshairProcess::_instance = nullptr;
CrosshairProcess::CrosshairProcess() : Process() {
_instance = this;
+ _type = 1; // persistent
+}
+
+CrosshairProcess::~CrosshairProcess() {
+ if (_instance == this)
+ _instance = nullptr;
}
void CrosshairProcess::run() {
diff --git a/engines/ultima/ultima8/world/crosshair_process.h b/engines/ultima/ultima8/world/crosshair_process.h
index b871545024..917bb5386f 100644
--- a/engines/ultima/ultima8/world/crosshair_process.h
+++ b/engines/ultima/ultima8/world/crosshair_process.h
@@ -37,6 +37,7 @@ namespace Ultima8 {
class CrosshairProcess : public Process {
public:
CrosshairProcess();
+ ~CrosshairProcess();
ENABLE_RUNTIME_CLASSTYPE()
diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index 4be8488818..c34b31bebd 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -46,6 +46,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(ItemSelectionProcess)
ItemSelectionProcess::ItemSelectionProcess() : Process(), _selectedItem(0),
_ax(0), _ay(0), _az(0) {
_instance = this;
+ _type = 1; // persistent
+}
+
+ItemSelectionProcess::~ItemSelectionProcess() {
+ if (_instance == this)
+ _instance = nullptr;
}
void ItemSelectionProcess::run() {
diff --git a/engines/ultima/ultima8/world/item_selection_process.h b/engines/ultima/ultima8/world/item_selection_process.h
index 509e2256bb..42219e1ad2 100644
--- a/engines/ultima/ultima8/world/item_selection_process.h
+++ b/engines/ultima/ultima8/world/item_selection_process.h
@@ -37,6 +37,7 @@ class Item;
class ItemSelectionProcess : public Process {
public:
ItemSelectionProcess();
+ ~ItemSelectionProcess();
ENABLE_RUNTIME_CLASSTYPE()
diff --git a/engines/ultima/ultima8/world/snap_process.cpp b/engines/ultima/ultima8/world/snap_process.cpp
index acdd1bfc16..7a5427c74e 100644
--- a/engines/ultima/ultima8/world/snap_process.cpp
+++ b/engines/ultima/ultima8/world/snap_process.cpp
@@ -35,6 +35,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(SnapProcess)
SnapProcess::SnapProcess() : Process(), _currentSnapEgg() {
_instance = this;
+ _type = 1; // persistent
+}
+
+SnapProcess::~SnapProcess() {
+ if (_instance == this)
+ _instance = nullptr;
}
void SnapProcess::run() {
diff --git a/engines/ultima/ultima8/world/snap_process.h b/engines/ultima/ultima8/world/snap_process.h
index 2801c13337..2747cb6697 100644
--- a/engines/ultima/ultima8/world/snap_process.h
+++ b/engines/ultima/ultima8/world/snap_process.h
@@ -34,6 +34,7 @@ class Item;
class SnapProcess : public Process {
public:
SnapProcess();
+ ~SnapProcess();
ENABLE_RUNTIME_CLASSTYPE()
diff --git a/engines/ultima/ultima8/world/target_reticle_process.cpp b/engines/ultima/ultima8/world/target_reticle_process.cpp
index e913b24014..21a4150798 100644
--- a/engines/ultima/ultima8/world/target_reticle_process.cpp
+++ b/engines/ultima/ultima8/world/target_reticle_process.cpp
@@ -41,6 +41,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(TargetReticleProcess)
TargetReticleProcess::TargetReticleProcess() : Process(), _reticleEnabled(true),
_lastUpdate(0), _reticleSpriteProcess(0), _lastTargetDir(dir_current), _lastTargetItem(0) {
_instance = this;
+ _type = 1; // persistent
+}
+
+TargetReticleProcess::~TargetReticleProcess() {
+ if (_instance == this)
+ _instance = nullptr;
}
void TargetReticleProcess::run() {
diff --git a/engines/ultima/ultima8/world/target_reticle_process.h b/engines/ultima/ultima8/world/target_reticle_process.h
index 7f5ce8258b..f151b95051 100644
--- a/engines/ultima/ultima8/world/target_reticle_process.h
+++ b/engines/ultima/ultima8/world/target_reticle_process.h
@@ -38,6 +38,7 @@ class Item;
class TargetReticleProcess : public Process {
public:
TargetReticleProcess();
+ ~TargetReticleProcess();
ENABLE_RUNTIME_CLASSTYPE()
Commit: c92bd29e2c9e1a83fd8de10227947052dc9721a3
https://github.com/scummvm/scummvm/commit/c92bd29e2c9e1a83fd8de10227947052dc9721a3
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00
Commit Message:
ULTIMA8: Add a couple of consts
Changed paths:
engines/ultima/ultima8/games/start_crusader_process.cpp
engines/ultima/ultima8/graphics/soft_render_surface.inl
diff --git a/engines/ultima/ultima8/games/start_crusader_process.cpp b/engines/ultima/ultima8/games/start_crusader_process.cpp
index 53a1c68ad9..148010450a 100644
--- a/engines/ultima/ultima8/games/start_crusader_process.cpp
+++ b/engines/ultima/ultima8/games/start_crusader_process.cpp
@@ -92,7 +92,7 @@ void StartCrusaderProcess::run() {
#if 0
// Give the avatar *all the weapons and ammo*.. (handy for testing)
- uint32 wpnshapes[] = {
+ static const uint32 wpnshapes[] = {
// Weapons
0x032E, 0x032F, 0x0330, 0x038C, 0x0332, 0x0333, 0x0334,
0x038E, 0x0388, 0x038A, 0x038D, 0x038B, 0x0386,
diff --git a/engines/ultima/ultima8/graphics/soft_render_surface.inl b/engines/ultima/ultima8/graphics/soft_render_surface.inl
index fee1fd7285..d0e6579607 100644
--- a/engines/ultima/ultima8/graphics/soft_render_surface.inl
+++ b/engines/ultima/ultima8/graphics/soft_render_surface.inl
@@ -194,7 +194,7 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
assert(_pixels00 && _pixels && srcpixels && srcmask);
for (int i = 0; i < height_; i++) {
- int line = y + i;
+ const int line = y + i;
if (NOT_CLIPPED_Y) {
const uint8 *srcline = srcpixels + i * width_;
Commit: a8920f4c2d457d8249aa6834df27022db131b42b
https://github.com/scummvm/scummvm/commit/a8920f4c2d457d8249aa6834df27022db131b42b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00
Commit Message:
ULTIMA8: Fix Crusader selection with more than 2 candidates
Changed paths:
engines/ultima/ultima8/world/item_selection_process.cpp
diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index c34b31bebd..7a1f6e7474 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -130,10 +130,10 @@ bool ItemSelectionProcess::selectNextItem(bool grab) {
if (_selectedItem) {
// Pick the next item
int offset = 0;
- for (Std::vector<Item *>::iterator iter = candidates.begin();
+ for (Std::vector<Item *>::const_iterator iter = candidates.begin();
iter != candidates.end();
offset++, iter++) {
- ObjId num = item->getObjId();
+ ObjId num = (*iter)->getObjId();
if (_selectedItem == num) {
offset++;
break;
More information about the Scummvm-git-logs
mailing list