Skip to content

Commit

Permalink
v1.1.9-alpha.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Pololak committed Oct 13, 2024
1 parent 2f4543c commit 0ad5933
Show file tree
Hide file tree
Showing 17 changed files with 541 additions and 126 deletions.
14 changes: 11 additions & 3 deletions Hitboxes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#include "ObjectsIds.h"
#include "state.h"

//std::deque<cocos2d::CCRect> boo1;
//std::deque<cocos2d::CCRect> boo2;

void Hitboxes::drawRect(CCDrawNode* drawer, CCRect const& rect, ccColor4F col) {
constexpr size_t N = 4;
CCPoint vert[N];
Expand Down Expand Up @@ -121,9 +124,14 @@ void Hitboxes::drawPlayerHitbox(gd::PlayerObject* player, CCDrawNode* drawNode)
rectRectangle.setRect(player->getPositionX() - distance1 / 2, player->getPositionY() - distance2 / 2, distance1, distance2);
rectRectangleSmall.setRect(player->getPositionX() - distanceS1 / 2, player->getPositionY() - distanceS2 / 2, distanceS1, distanceS2);

Hitboxes::drawRect(drawNode, rectRectangleSmall, { 0, 0, 1, (setting().hitboxOpacity * 255.f) });
drawNode->drawPolygon(pointRectangle, 4, { 0, 0, 0, 0}, 0.5, {0.5, 0, 0, (setting().hitboxOpacity * 255.f)});
Hitboxes::drawRect(drawNode, rectRectangle, { 1, 0, 0, (setting().hitboxOpacity * 255.f) });
Hitboxes::drawRect(drawNode, rectRectangleSmall, { setting().solidsColor[0], setting().solidsColor[1], setting().solidsColor[2], (setting().hitboxOpacity * 255.f)});
drawNode->drawPolygon(pointRectangle, 4, { 0, 0, 0, 0}, 0.5, { (setting().hazardsColor[0] / 2), (setting().hazardsColor[1] / 2), (setting().hazardsColor[2] / 2), (setting().hitboxOpacity * 255.f)});
Hitboxes::drawRect(drawNode, rectRectangle, { setting().hazardsColor[0], setting().hazardsColor[1], setting().hazardsColor[2], (setting().hitboxOpacity * 255.f) });

//while (boo1.size() > 0 && boo1.front().origin.x < rectRectangle.origin.x - 400)
//{
// boo1.pop_front();
//}
}

//void Hitboxes::drawObjectHitbox(gd::GameObject* obj, CCDrawNode* drawNode) {
Expand Down
1 change: 1 addition & 0 deletions Hitboxes.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once
#include "pch.h"
//#include "HitboxNode.h"
#include <deque>

namespace Hitboxes {
void drawRect(CCDrawNode* drawer, CCRect const& rect, ccColor4F col);
Expand Down
182 changes: 175 additions & 7 deletions PlayLayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "CheckPoint.h"
#include "Hitboxes.h"
#include "imgui.h"
//#include "ObjectsIds.h"

CCArray* startPosArr;
gd::PlayLayer* playLayer;
Expand Down Expand Up @@ -34,6 +35,31 @@ std::vector<time_t> m_clickFrames;
int m_totalClicks = 0;
bool m_isHolding = false;

bool inPractice;
bool inTestmode;
int smoothOut;

std::set<int>pulseObjects = {
50, 51, 52, 53, 54, 60, 148, 149, 405,
37 // that pulse things on sticks
};

std::set<int>portalObjects = {
10, 11, //gravity portals
12, 13, 47, 111, 660, //gamemode portals
45, 46, //mirror portals
99, 101, //mini/big portals
286, 287 //dual portals
};

std::set<int>cornerObjects = {
472, 473, 474
};

std::vector<gd::StartPosObject*> sp;
std::vector<gd::GameObject*> gravityPortals, dualPortals, gamemodePortals, miniPortals, speedChanges, mirrorPortals;
std::vector<bool> willFlip;

void __fastcall PlayLayer::destroyPlayer_H(gd::PlayLayer* self, void* edx, gd::PlayerObject* player)
{
isPlayerDead = true;
Expand All @@ -56,6 +82,11 @@ void __fastcall PlayLayer::resetLevel_H(gd::PlayLayer* self) {
deathPos = 0.f;
m_clickFrames.clear();
m_totalClicks = 0;

//if (inTestmode || inPractice) {
// smoothOut = 2; // Account for 1 extra frame respawn
//}

PlayLayer::resetLevel(self);
}

Expand All @@ -66,6 +97,10 @@ bool __fastcall PlayLayer::init_H(gd::PlayLayer* self, void* edx, gd::GJGameLeve
fadedoutflag = 0;
currentBest = 0;

//inPractice = false;
//inTestmode = from<bool>(self, 0x2b8);
//smoothOut = 0;

if (!PlayLayer::init(self, level)) return false;

/*if (setting().onPracticeFix) {
Expand Down Expand Up @@ -207,6 +242,18 @@ bool __fastcall PlayLayer::init_H(gd::PlayLayer* self, void* edx, gd::GJGameLeve

}

if (setting().onHideAttempts) {
self->attemptsLabel()->setVisible(false);
}
else {
self->attemptsLabel()->setVisible(true);
}

if (setting().onHidePlayer) {
self->player1()->setVisible(0);
self->player2()->setVisible(0);
}

auto labelsMenu = CCMenu::create();
labelsMenu->setPosition({ 0, 0 });
labelsMenu->setTag(7900);
Expand Down Expand Up @@ -432,6 +479,49 @@ bool __fastcall PlayLayer::init_H(gd::PlayLayer* self, void* edx, gd::GJGameLeve
//speed->setPosition({ 2.f, 0 });
//self->addChild(speed);
}

//if (setting().onShowLayout) {
// self->getBackgroundSprite()->setColor(ccc3(40, 125, 255)); // BG
// from<CCSprite*>(self->getGroundBottom(), 0x118)->setColor(ccc3(0, 102, 255)); // Bottom G
// from<CCSprite*>(self->getGroundTop(), 0x118)->setColor(ccc3(0, 102, 255)); // Top G
// from<CCSprite*>(self->getGroundBottom(), 0x120)->setColor(ccc3(255, 255, 255)); // Bottom Line
// from<CCSprite*>(self->getGroundTop(), 0x120)->setColor(ccc3(255, 255, 255)); // Top Line


// for (int i = self->getFirstVisibleSection() + 1; i < self->getLastVisibleSection() - 1; i++)
// {
// if (i < 0) continue;
// if (i >= arrcount) break;
// auto objAtInd = secarr->objectAtIndex(i);
// auto objarr = reinterpret_cast<CCArray*>(objAtInd);

// for (int j = 0; j < objarr->count(); j++)
// {
// auto obj = reinterpret_cast<gd::GameObject*>(objarr->objectAtIndex(j));
// if (obj->getIsTintObject()) {
// obj->setObjectColor(ccc3(255, 255, 255));
// } // Setting OBJ to white.
// if (cornerObjects.contains(obj->getObjectID())) {
// obj->getGlowSprite()->setVisible(0);
// }
// if (obj->getType() == gd::GameObjectType::kGameObjectTypeDecoration) {
// obj->removeMeAndCleanup();
// if (obj->getChildSprite()) obj->getChildSprite()->removeMeAndCleanup();
// } // Hiding deco objects.
// if (pulseObjects.contains(obj->getObjectID())) {
// obj->removeMeAndCleanup();
// } // Hiding pulse objects (for some reason old pulse objs doesn't count as deco).
// if (obj->getHasColor()) {
// auto node = obj->getChildSprite();
// node->setColor(ccc3(255, 255, 255));
// //node->setBlendFunc({ GL_ONE, GL_ONE });
// } // Setting color to white and removing blending.

// }
// }
//}

//SmartStartPosSetup(self);
}

bool rKeyFlag = true;
Expand All @@ -443,10 +533,26 @@ inline bool playerTouchesObject(CCRect* playerRect, CCRect* hitboxRect)

}

void __fastcall PlayLayer::togglePracticeModeH(gd::PlayLayer* self, void* edx, bool practice) {
inPractice = practice;
PlayLayer::togglePracticeMode(self, practice);
}

void __fastcall PlayLayer::update_H(gd::PlayLayer* self, void*, float dt) {
layers().PauseLayerObject = nullptr;
isPlayerDead = false;

//if (!smoothOut) {
// PlayLayer::update(self, dt);
//}

//float time = CCDirector::sharedDirector()->getAnimationInterval();
//if (smoothOut != 0 && dt - time < 1) {
// smoothOut--;
//}

//PlayLayer::update(self, time);
PlayLayer::update(self, dt);
isPlayerDead = false;
if (!isPlayerDead) wasDead = false;

//const auto bar = gd::GameManager::sharedState()->getShowProgressBar();
Expand Down Expand Up @@ -503,6 +609,12 @@ void __fastcall PlayLayer::update_H(gd::PlayLayer* self, void*, float dt) {
self->setPlayerStartPosition({ 0, 105 });
self->setStartPosObject(nullptr);
}
if (currentStartPos == 0) {
from<bool>(self, 0x2b8) = false;
}
else {
from<bool>(self, 0x2b8) = true;
}
self->resetLevel();
spswitcherlbl->setString(CCString::createWithFormat("%d/%d", currentStartPos, startPosArr->count() - 1)->getCString());
spswitcherlbl->stopAllActions();
Expand All @@ -524,6 +636,12 @@ void __fastcall PlayLayer::update_H(gd::PlayLayer* self, void*, float dt) {
self->setPlayerStartPosition({ 0, 105 });
self->setStartPosObject(nullptr);
}
if (currentStartPos == 0) {
from<bool>(self, 0x2b8) = false;
}
else {
from<bool>(self, 0x2b8) = true;
}
self->resetLevel();
spswitcherlbl->setString(CCString::createWithFormat("%d/%d", currentStartPos, startPosArr->count() - 1)->getCString());
spswitcherlbl->stopAllActions();
Expand Down Expand Up @@ -804,6 +922,54 @@ void __fastcall PlayLayer::update_H(gd::PlayLayer* self, void*, float dt) {
}), m_clickFrames.end());

hasClicked = false;

//auto hardStreak_p1 = from<gd::HardStreak*>(self->player1(), 0x394);
//auto hardStreak_p2 = from<gd::HardStreak*>(self->player2(), 0x394);
//if (setting().onNoWavePulse) {
// hardStreak_p1->pulseSize() = setting().wavePulseSize;
// hardStreak_p2->pulseSize() = setting().wavePulseSize;
//}

//if (setting().onShowLayout) {
// self->getBackgroundSprite()->setColor(ccc3(40, 125, 255)); // BG
// from<CCSprite*>(self->getGroundBottom(), 0x118)->setColor(ccc3(0, 102, 255)); // Bottom G
// from<CCSprite*>(self->getGroundTop(), 0x118)->setColor(ccc3(0, 102, 255)); // Top G
// from<CCSprite*>(self->getGroundBottom(), 0x120)->setColor(ccc3(255, 255, 255)); // Bottom Line
// from<CCSprite*>(self->getGroundTop(), 0x120)->setColor(ccc3(255, 255, 255)); // Top Line


// for (int i = self->getFirstVisibleSection() + 1; i < self->getLastVisibleSection() - 1; i++)
// {
// if (i < 0) continue;
// if (i >= arrcount) break;
// auto objAtInd = secarr->objectAtIndex(i);
// auto objarr = reinterpret_cast<CCArray*>(objAtInd);

// for (int j = 0; j < objarr->count(); j++)
// {
// auto obj = reinterpret_cast<gd::GameObject*>(objarr->objectAtIndex(j));
// if (obj->getIsTintObject()) {
// obj->setObjectColor(ccc3(255, 255, 255));
// } // Setting OBJ to white.
// if (cornerObjects.contains(obj->getObjectID())) {
// obj->getGlowSprite()->setVisible(0);
// }
// if (obj->getType() == gd::GameObjectType::kGameObjectTypeDecoration) {
// obj->removeMeAndCleanup();
// if (obj->getChildSprite()) obj->getChildSprite()->removeMeAndCleanup();
// } // Hiding deco objects.
// if (pulseObjects.contains(obj->getObjectID())) {
// obj->removeMeAndCleanup();
// } // Hiding pulse objects (for some reason old pulse objs doesn't count as deco).
// if (obj->getHasColor()) {
// auto node = obj->getChildSprite();
// node->setColor(ccc3(255, 255, 255));
// //node->setBlendFunc({ GL_ONE, GL_ONE });
// } // Setting color to white and removing blending.

// }
// }
//}
}

void __fastcall PlayLayer::spawnPlayer2_H(gd::PlayLayer* self) {
Expand Down Expand Up @@ -983,12 +1149,9 @@ void __fastcall PlayerObject::updatePlayerRollFrame_H(gd::PlayerObject* self, vo
PlayerObject::updatePlayerRollFrame(self, frameID);
}

//void __fastcall GameObject::setOpacity_H(gd::GameObject* self, void* edx, GLubyte opacity) {
// if (setting().onDontFade) {
// return GameObject::setOpacity(self, 255.f);
// }
// GameObject::setOpacity((self->getObjectID() = 1), opacity);
//}
void __fastcall CCCircleWave::drawH(gd::CCCircleWave* self) {
if (!setting().onNoEffectCircle) CCCircleWave::draw(self);
}

void PauseLayer::mem_init() {
MH_CreateHook(
Expand Down Expand Up @@ -1043,6 +1206,7 @@ void PlayLayer::mem_init() {
PlayLayer::releaseButton_H,
reinterpret_cast<void**>(&PlayLayer::releaseButton));
MH_CreateHook(reinterpret_cast<void*>(gd::base + 0xec510), PlayLayer::applyEnterEffect_H, reinterpret_cast<void**>(&PlayLayer::applyEnterEffect));
MH_CreateHook(reinterpret_cast<void*>(gd::base + 0xf3610), PlayLayer::togglePracticeModeH, reinterpret_cast<void**>(&PlayLayer::togglePracticeMode));
// Hi.
}

Expand All @@ -1061,4 +1225,8 @@ void PlayerObject::mem_init() {
void GameObject::mem_init() {
//MH_CreateHook(reinterpret_cast<void*>(gd::base + 0x72a60), GameObject::setOpacity_H, reinterpret_cast<void**>(&GameObject::setOpacity));
//MH_CreateHook(reinterpret_cast<void*>(gd::base + 0x6ece0), GameObject::shouldBlendColor_H, reinterpret_cast<void**>(&GameObject::shouldBlendColor));
}

void CCCircleWave::mem_init() {
MH_CreateHook(reinterpret_cast<void*>(gd::base + 0xb4b0), CCCircleWave::drawH, reinterpret_cast<void**>(&CCCircleWave::draw));
}
12 changes: 11 additions & 1 deletion PlayLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@ namespace PlayLayer {
inline void(__thiscall* applyEnterEffect)(gd::PlayLayer*, gd::GameObject*);
void __fastcall applyEnterEffect_H(gd::PlayLayer* self, void* edx, gd::GameObject* obj);

inline void(__thiscall* togglePracticeMode)(gd::PlayLayer*, bool);
void __fastcall togglePracticeModeH(gd::PlayLayer* self, void* edx, bool practice);

void mem_init();

extern bool inPractice;
//extern bool inPractice;
}

namespace PauseLayer {
Expand Down Expand Up @@ -87,3 +90,10 @@ namespace GameObject {

void mem_init();
}

namespace CCCircleWave {
inline void(__thiscall* draw)(gd::CCCircleWave*);
void __fastcall drawH(gd::CCCircleWave* self);

void mem_init();
}
2 changes: 2 additions & 0 deletions PolzHax.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,7 @@
<ClInclude Include="PlayLayer.h" />
<ClInclude Include="preview-mode.hpp" />
<ClInclude Include="SimplePlayer.h" />
<ClInclude Include="Speedhack.hpp" />
<ClInclude Include="state.h" />
<ClInclude Include="utils.hpp" />
</ItemGroup>
Expand All @@ -680,6 +681,7 @@
<ClCompile Include="PlayLayer.cpp" />
<ClCompile Include="preview-mode.cpp" />
<ClCompile Include="SimplePlayer.cpp" />
<ClCompile Include="Speedhack.cpp" />
<ClCompile Include="state.cpp" />
</ItemGroup>
<ItemGroup>
Expand Down
12 changes: 9 additions & 3 deletions PolzHax.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -1527,6 +1527,9 @@
<ClInclude Include="SimplePlayer.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Speedhack.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
Expand Down Expand Up @@ -1580,9 +1583,6 @@
<ClCompile Include="ObjectToolbox.cpp">
<Filter>Header Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hitboxes.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MenuLayer.cpp">
<Filter>Header Files\Hooks</Filter>
</ClCompile>
Expand All @@ -1598,6 +1598,12 @@
<ClCompile Include="SimplePlayer.cpp">
<Filter>Header Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hitboxes.cpp">
<Filter>Header Files</Filter>
</ClCompile>
<ClCompile Include="Speedhack.cpp">
<Filter>Header Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Library Include="libs\MinHook\libMinHook-x86-v141-mtd.lib">
Expand Down
Loading

0 comments on commit 0ad5933

Please sign in to comment.