diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2025-11-22 22:07:30 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-22 22:07:30 -0700 |
| commit | 52554e21cc0b515c95cf8108ff6255703f5465e3 (patch) | |
| tree | 1e78086575856a2a98160870b5ed4b40cf1a1fa4 /src/engine/objects | |
| parent | 5f60e30b59497d54b23097f8dbe5009faa43504d (diff) | |
Fix Mole Spawns and Tick Rate (#566)
* Fix Mole Spawns and Tick Rate
* Fix Compile
* Actually Fix Compile
Diffstat (limited to 'src/engine/objects')
| -rw-r--r-- | src/engine/objects/MoleGroup.cpp | 11 | ||||
| -rw-r--r-- | src/engine/objects/MoleGroup.h | 8 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/engine/objects/MoleGroup.cpp b/src/engine/objects/MoleGroup.cpp index af936ed3f..d1b8cb27d 100644 --- a/src/engine/objects/MoleGroup.cpp +++ b/src/engine/objects/MoleGroup.cpp @@ -10,8 +10,9 @@ extern "C" { size_t OMoleGroup::_count = 0; -OMoleGroup::OMoleGroup(std::vector<FVector>& spawns) { +OMoleGroup::OMoleGroup(std::vector<FVector>& spawns, size_t tickRate) { _idx = _count; + _tickRate = tickRate; for (auto& pos : spawns) { pos.x * xOrientation; OMole* ptr = reinterpret_cast<OMole*>(gWorldInstance.AddObject(new OMole(pos, this))); @@ -22,11 +23,11 @@ OMoleGroup::OMoleGroup(std::vector<FVector>& spawns) { } void OMoleGroup::Tick() { - for (auto &mole : _moles) { - if (gObjectList[mole.Mole->_objectIndex].state == 0) { - func_80081FF4(mole.Mole->_objectIndex); + for (size_t i = 0; i < std::min(_tickRate, _moles.size()); i++) { + if (gObjectList[_moles[i].Mole->_objectIndex].state == 0) { + OMoleGroup::func_80081FF4(_moles[i].Mole->_objectIndex); } else { - mole.Mole->func_800821AC(mole.Mole->_objectIndex, 1); + _moles[i].Mole->func_800821AC(_moles[i].Mole->_objectIndex, 1); } } diff --git a/src/engine/objects/MoleGroup.h b/src/engine/objects/MoleGroup.h index db14432cd..31d9c2819 100644 --- a/src/engine/objects/MoleGroup.h +++ b/src/engine/objects/MoleGroup.h @@ -16,7 +16,12 @@ public: bool Active; }; - explicit OMoleGroup(std::vector<FVector>& moles); + /** + * TickRate: + * How many moles can pop out per frame. + * The mole must also be ready to jump to be considered. + */ + explicit OMoleGroup(std::vector<FVector>& moles, size_t tickRate); virtual void Tick() override; @@ -24,6 +29,7 @@ public: std::vector<MoleEntry> _moles; + size_t _tickRate; private: static size_t _count; size_t _idx; |
