Skip to content

Commit b5c0f91

Browse files
committed
stuff
1 parent 9489d38 commit b5c0f91

4 files changed

Lines changed: 58 additions & 6 deletions

File tree

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- Fixed Speedhack Keybinds not working correctly
44
- Fixed Keybinds activating on release
55
- Fixed Keybinds activating in the Edit Keybind UI
6+
- Fixed Show Trajectory Hitbox Trail not drawing if the player doesn't die
67

78
# 2.8.5
89

src/Hacks/Level/ShowTrajectory/Hooks.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,19 @@ class $modify(GJBaseGameLayer)
123123

124124
player->bumpPlayer(getBumpMod(player, (int)obj->m_objectType), (int)obj->m_objectType, true, nullptr);
125125
break;
126+
127+
case GameObjectType::YellowJumpRing:
128+
case GameObjectType::PinkJumpRing:
129+
case GameObjectType::GravityRing:
130+
case GameObjectType::GreenRing:
131+
case GameObjectType::DropRing:
132+
case GameObjectType::RedJumpRing:
133+
case GameObjectType::CustomRing:
134+
case GameObjectType::DashRing:
135+
case GameObjectType::GravityDashRing:
136+
case GameObjectType::SpiderOrb:
137+
playerTouchedRing(player, static_cast<RingObject*>(obj));
138+
break;
126139

127140
default:
128141
break;
@@ -184,8 +197,12 @@ class $modify(GJBaseGameLayer)
184197

185198
void playerTouchedRing(PlayerObject * p0, RingObject * p1)
186199
{
187-
if (TrajectoryNode::get() && !TrajectoryNode::get()->isSimulating())
200+
if (TrajectoryNode::get() ? !TrajectoryNode::get()->isSimulating() : true)
188201
GJBaseGameLayer::playerTouchedRing(p0, p1);
202+
else if (TrajectoryNode::get() && TrajectoryNode::get()->isSimulating())
203+
{
204+
TrajectoryNode::get()->simulateFromRing(p0, p1);
205+
}
189206
}
190207

191208
void playerTouchedTrigger(PlayerObject* p0, EffectGameObject* p1)

src/Hacks/Level/ShowTrajectory/TrajectoryNode.cpp

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ void TrajectoryNode::simulate(PlayerObject* plr, bool held)
8686
return;
8787

8888
simulating = true;
89+
ringSimulated = !held;
8990

9091
PlayerState state;
9192
state.saveState(plr);
@@ -102,8 +103,6 @@ void TrajectoryNode::simulate(PlayerObject* plr, bool held)
102103
player->m_isSwing = gjbgl->m_levelSettings->m_startMode == 7;
103104
}
104105

105-
CCPoint prevPoint = plr->getPosition();
106-
107106
if (
108107
(held && state.plMembers.m_dashRing) ||
109108
(held && state.plMembers.m_isRobot && state.plMembers.m_holdingButtons[(int)PlayerButton::Jump])
@@ -137,7 +136,35 @@ void TrajectoryNode::simulate(PlayerObject* plr, bool held)
137136
if (player->m_regularTrail)
138137
player->m_regularTrail->setVisible(false);
139138

140-
trailStates.clear();
139+
performSimulation(col, useTrail);
140+
141+
simulating = false;
142+
}
143+
144+
void TrajectoryNode::simulateFromRing(PlayerObject* player2, RingObject* ring)
145+
{
146+
return;
147+
148+
if (ringSimulated)
149+
return;
150+
151+
ringSimulated = true;
152+
153+
PlayerState state;
154+
state.saveState(player);
155+
156+
player->ringJump(ring, false);
157+
158+
performSimulation(ccc4f(1, 1, 0, 1), false);
159+
160+
state.loadState(this->player);
161+
}
162+
163+
void TrajectoryNode::performSimulation(cocos2d::ccColor4F colour, bool useTrail)
164+
{
165+
CCPoint prevPoint = player->getPosition();
166+
auto oldTrails = trailStates;
167+
bool drewTrails = false;
141168

142169
for (size_t i = 0; i < getIterCount(); i++)
143170
{
@@ -152,11 +179,12 @@ void TrajectoryNode::simulate(PlayerObject* plr, bool held)
152179
player->updateRotation(deltaIter);
153180
player->updatePlayerScale();
154181

155-
drawSegment(prevPoint, player->getPosition(), 1, col);
182+
drawSegment(prevPoint, player->getPosition(), 1, colour);
156183
prevPoint = player->getPosition();
157184

158185
if (player->m_isDead || player->m_maybeIsColliding)
159186
{
187+
drewTrails = true;
160188
drawPlayerTrails();
161189
drawPlayerHitbox(player);
162190
break;
@@ -171,7 +199,10 @@ void TrajectoryNode::simulate(PlayerObject* plr, bool held)
171199
}
172200
}
173201

174-
simulating = false;
202+
if (!drewTrails)
203+
drawPlayerTrails();
204+
205+
trailStates = oldTrails;
175206
}
176207

177208
bool TrajectoryNode::shouldDrawTrail()

src/Hacks/Level/ShowTrajectory/TrajectoryNode.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace qolmod
1313
bool simulating = false;
1414
float deltaIter = 0.5f;
1515
int iterCount = 240;
16+
bool ringSimulated = false;
1617

1718
~TrajectoryNode();
1819

@@ -24,6 +25,8 @@ namespace qolmod
2425

2526
bool isSimulating();
2627
void simulate(PlayerObject* plr, bool held);
28+
void simulateFromRing(PlayerObject* player, RingObject* ring);
29+
void performSimulation(cocos2d::ccColor4F colour, bool useTrail);
2730

2831
float getDeltaIter();
2932
int getIterCount();

0 commit comments

Comments
 (0)