Skip to content

Commit bbdbc99

Browse files
committed
idk
1 parent 071e414 commit bbdbc99

2 files changed

Lines changed: 42 additions & 4 deletions

File tree

src/core/checkpoint_system.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,35 @@ class $modify(MacroPlayLayer, PlayLayer) {
323323
? (engine->activeTTR && engine->activeTTR->recordedFromStartPos)
324324
: (engine->activeMacro && engine->activeMacro->recordedFromStartPos);
325325

326-
if (m_startPosObject && anchors && !anchors->empty()) {
326+
float recStartX = engine->ttrMode
327+
? (engine->activeTTR ? engine->activeTTR->startPosX : 0.f)
328+
: (engine->activeMacro ? engine->activeMacro->startPosX : 0.f);
329+
float recStartY = engine->ttrMode
330+
? (engine->activeTTR ? engine->activeTTR->startPosY : 0.f)
331+
: (engine->activeMacro ? engine->activeMacro->startPosY : 0.f);
332+
333+
bool startPosMatch = false;
334+
if (m_startPosObject && recordedFromStartPos) {
335+
float dx = m_startPosObject->getPositionX() - recStartX;
336+
float dy = m_startPosObject->getPositionY() - recStartY;
337+
startPosMatch = std::sqrt(dx * dx + dy * dy) < 50.0f;
338+
}
339+
340+
if (m_startPosObject && startPosMatch) {
341+
engine->tickOffset = 0;
342+
engine->startPosActive = true;
343+
if (anchors && !anchors->empty()) {
344+
engine->playbackAnchorIndex = findFirstAnchorAtTick(*anchors, 0);
345+
} else {
346+
engine->playbackAnchorIndex = 0;
347+
}
348+
if (engine->ttrMode && engine->activeTTR) {
349+
engine->executeIndex = 0;
350+
} else if (engine->activeMacro) {
351+
engine->executeIndex = 0;
352+
}
353+
engine->startPosWarning.clear();
354+
} else if (m_startPosObject && anchors && !anchors->empty()) {
327355
engine->tickOffset = computeStartPosOffset(this, *anchors);
328356
engine->startPosActive = true;
329357
engine->playbackAnchorIndex = findFirstAnchorAtTick(*anchors, engine->tickOffset);

src/hacks/physicsbypass.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ namespace {
203203
|| engine.singleTickStep
204204
|| engine.renderer.recording
205205
|| !nearlyEqual(engine.runtimeTickRate(), ReplayEngine::kBaseTickRate, 0.01)
206-
|| !nearlyEqual(engine.gameSpeed, 1.0, 0.0001);
206+
|| !nearlyEqual(engine.gameSpeed, 1.0, 0.0001)
207+
|| Autoclicker::get()->enabled;
207208
}
208209

209210
struct SimulationTimingController {
@@ -447,8 +448,17 @@ class $modify(PhysicsControlLayer, GJBaseGameLayer) {
447448
engine->totalTickCount = static_cast<int>(std::min<int64_t>(total, std::numeric_limits<int>::max()));
448449
}
449450

450-
controller.tickAutoclickerSteps(this, *engine, steps);
451-
GJBaseGameLayer::update(static_cast<float>(totalDelta));
451+
auto* ac = Autoclicker::get();
452+
if (ac->enabled && engine->engineMode != MODE_EXECUTE && steps > 1) {
453+
for (int64_t i = 0; i < steps; ++i) {
454+
setExpectedTicks(1);
455+
controller.tickAutoclickerSteps(this, *engine, 1);
456+
GJBaseGameLayer::update(static_cast<float>(timestep));
457+
}
458+
} else {
459+
controller.tickAutoclickerSteps(this, *engine, steps);
460+
GJBaseGameLayer::update(static_cast<float>(totalDelta));
461+
}
452462
}
453463

454464
if (renderer.recording) {

0 commit comments

Comments
 (0)