Skip to content

Commit

Permalink
beta 5
Browse files Browse the repository at this point in the history
  • Loading branch information
ZiLko committed Oct 1, 2024
1 parent 5b69285 commit 9a8f725
Show file tree
Hide file tree
Showing 13 changed files with 54 additions and 34 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
with:
bindings: geode-sdk/bindings
bindings-ref: main
combine: true
combine: false
target: ${{ matrix.config.target }}

package:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/multi-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
push:
branches:
- "none"
- "main"

jobs:
build:
Expand Down
8 changes: 8 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# v2.0.0-beta.5

* Fixed render restore defaults button setting the wrong args.
* Fixed triggers stopping on death when not recording a macro.
* Fixed crash on level complete if you had practice attempts installed.
* Fixed holding on checkpoint respawn bug.
* Made auto safe mode text appear instantly instead of dropping down and lowered its opacity.

# v2.0.0-beta.4

* Fixed dual bug when replaying a macro.
Expand Down
4 changes: 2 additions & 2 deletions mod.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"geode": "3.7.1",
"geode": "3.8.0",
"gd": {
"win": "2.206",
"android": "2.206"
},
"version": "v2.0.0-beta.4",
"version": "v2.0.0-beta.5",
"id": "zilko.xdbot",
"name": "xdBot",
"developer": "Zilko",
Expand Down
2 changes: 1 addition & 1 deletion src/global.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ SettingNode* ButtonSettingValue::createNode(float width) {
g.mod->setSavedValue("macro_noclip_p2", true);
}

if (!g.mod->setSavedValue("defaults_set5", true))
if (!g.mod->setSavedValue("defaults_set6", true))
g.mod->setSavedValue("render_args", std::string("-pix_fmt yuv420p"));

if (!g.mod->setSavedValue("defaults_set3", true)) {
Expand Down
10 changes: 7 additions & 3 deletions src/hacks/other.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,11 @@ class $modify(PlayLayer) {
};

class $modify(EndLevelLayer) {

static void onModify(auto & self) {
if (!self.setHookPriority("EndLevelLayer::customSetup", -1))
log::warn("EndLevelLayer::customSetup hook priority fail xD.");
}

void customSetup() {
EndLevelLayer::customSetup();
Expand All @@ -170,13 +175,12 @@ class $modify(EndLevelLayer) {

CCLabelBMFont* lbl = CCLabelBMFont::create("Auto-safe-mode", "goldFont.fnt");
lbl->setPosition({ 3.5, 5 });
lbl->setOpacity(170);
lbl->setOpacity(155);
lbl->setID("safe-mode-label"_spr);
lbl->setScale(0.55f);
lbl->setAnchorPoint({ 0, 0.5 });

getChildOfType<CCLayer>(this, 0)->addChild(lbl);

addChild(lbl);
}

};
Expand Down
6 changes: 4 additions & 2 deletions src/macro.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ void Macro::recordAction(int frame, int button, bool player2, bool hold) {
void Macro::tryAutosave(GJGameLevel* level, CheckpointObject* cp) {
auto& g = Global::get();

if (g.state != state::recording || !g.checkpoints.contains(cp)) return;
if (!g.mod->getSavedValue<bool>("macro_auto_save") || g.checkpoints[cp].frame < g.lastAutoSave) return;
if (g.state != state::recording) return;
if (!Mod::get()->getSavedValue<bool>("macro_auto_save")) return;
if (!g.checkpoints.contains(cp)) return;
if (g.checkpoints[cp].frame < g.lastAutoSave) return;

std::filesystem::path autoSavesPath = g.mod->getSaveDir() / "autosaves";

Expand Down
2 changes: 1 addition & 1 deletion src/macro.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct input : gdr::Input {

struct Macro : gdr::Replay<Macro, input> {

Macro() : Replay("xdBot", "v2.0.0-beta.4") {}
Macro() : Replay("xdBot", "v2.0.0-beta.5") {}

public:

Expand Down
10 changes: 5 additions & 5 deletions src/practice_fixes/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void InputPracticeFixes::applyFixes(PlayLayer* pl, PlayerData p1Data, PlayerData
for (auto& it : notFoundButtons) {
if ((g.heldButtons[it] && twoPlayers) || ((g.heldButtons[it] || g.heldButtons[it + (it >= 3 ? -3 : 3)]) && !twoPlayers)) {
if (it == 0 || it == 3)
g.delayedFrameInput[static_cast<int>(it == 3 && twoPlayers)] = frame + 1;
g.delayedFrameInput[static_cast<int>(it == 3 && twoPlayers)] = frame + 2;
else
g.macro.inputs.push_back(input(frame, indexButton[it], !(it > 2), true));

Expand Down Expand Up @@ -116,21 +116,21 @@ std::vector<int> InputPracticeFixes::fixInputs(std::vector<button> foundButtons,
g.macro.inputs.push_back(input(frame, it.button, !player2, true));
}
else
g.delayedFrameInput[static_cast<int>(btnIndex == 3)] = frame + 1;
g.delayedFrameInput[static_cast<int>(btnIndex == 3)] = frame + 2;
}
else if (it.down && holdingButton && (btnIndex == 0 || btnIndex == 3))
g.delayedFrameInput[static_cast<int>(btnIndex == 3)] = frame + 1;
g.delayedFrameInput[static_cast<int>(btnIndex == 3)] = frame + 2;

if (it.down && !holdingButton) {
if (btnIndex == 0 || btnIndex == 3)
g.delayedFrameReleaseMain[player2] = frame + 1;
g.delayedFrameReleaseMain[player2] = frame + 2;
else {
bool rightKey = static_cast<bool>(btnIndex > 3 ? btnIndex - 4 : btnIndex - 1);
if (g.heldButtons[btnIndex + (rightKey ? -1 : 1)]) {
g.macro.inputs.push_back(input(frame, it.button, !player2, false));
}
else {
g.delayedFrameRelease[static_cast<int>(player2)][static_cast<int>(rightKey)] = frame + 1;
g.delayedFrameRelease[static_cast<int>(player2)][static_cast<int>(rightKey)] = frame + 2;
g.addSideHoldingMembers[static_cast<int>(player2)] = true;
}
}
Expand Down
36 changes: 21 additions & 15 deletions src/practice_fixes/play_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class $modify(GJBaseGameLayer) {
}

void processMoveActions() {
if (!m_player1->m_isDead || Global::get().state != state::none)
if (!m_player1->m_isDead || Global::get().state == state::none)
GJBaseGameLayer::processMoveActions();
}
void processMoveActionsStep(float v1, bool v2) {
Expand Down Expand Up @@ -116,33 +116,36 @@ class $modify(PlayLayer) {

}

void loadFromCheckpoint(CheckpointObject * cp) {
void loadFromCheckpoint(CheckpointObject* cp) {

if (!cp) return PlayLayer::loadFromCheckpoint(cp);

auto& g = Global::get();

Macro::tryAutosave(m_level, cp);

if (g.state == state::playing && g.checkpoints.contains(cp)) {
if (g.state == state::playing) {
PlayLayer::loadFromCheckpoint(cp);

if (g.checkpoints[cp].frame > 1) {
PlayerData p1Data = g.checkpoints[cp].p1;
PlayerData p2Data = g.checkpoints[cp].p2;
if (!g.checkpoints.contains(cp)) return;
if (g.checkpoints[cp].frame <= 1) return;

PlayerData p1Data = g.checkpoints[cp].p1;
PlayerData p2Data = g.checkpoints[cp].p2;

g.respawnFrame = g.checkpoints[cp].frame;
g.previousFrame = g.checkpoints[cp].previousFrame;
PlayerPracticeFixes::applyData(this->m_player1, p1Data, m_player2);
PlayerPracticeFixes::applyData(this->m_player2, p2Data, m_player2);
}
g.respawnFrame = g.checkpoints[cp].frame;
g.previousFrame = g.checkpoints[cp].previousFrame;
PlayerPracticeFixes::applyData(this->m_player1, p1Data, m_player2);
PlayerPracticeFixes::applyData(this->m_player2, p2Data, m_player2);

return;
}

if ((g.state != state::recording && !g.mod->getSavedValue<bool>("macro_always_practice_fixes")) || !g.checkpoints.contains(cp))
if ((g.state != state::recording && !Mod::get()->getSavedValue<bool>("macro_always_practice_fixes")))
return PlayLayer::loadFromCheckpoint(cp);

if (!g.checkpoints.contains(cp)) return PlayLayer::loadFromCheckpoint(cp);

Macro::resetVariables();

int frame = g.checkpoints[cp].frame;
Expand All @@ -153,10 +156,13 @@ class $modify(PlayLayer) {
g.previousFrame = g.checkpoints[cp].previousFrame;

#ifdef GEODE_IS_WINDOWS
uintptr_t seed = g.checkpoints[cp].seed;
*(uintptr_t*)((char*)geode::base::get() + seedAddr) = seed;
#endif

if (g.seedEnabled) {
uintptr_t seed = g.checkpoints[cp].seed;
*(uintptr_t*)((char*)geode::base::get() + seedAddr) = seed;
}

#endif

if (g.state == state::recording)
InputPracticeFixes::applyFixes(this, p1Data, p2Data, frame);
Expand Down
2 changes: 1 addition & 1 deletion src/ui/load_macro_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void LoadMacroLayer::onImportMacro(CCObject*) {
file::FilePickOptions::Filter textFilter;
file::FilePickOptions fileOptions;
textFilter.description = "Macro Files";
textFilter.files = { "*.gdr", "*.xd" };
textFilter.files = { "*.gdr", "*.xd", "*.json" };
fileOptions.filters.push_back(textFilter);

file::pick(file::PickMode::OpenFile, { dirs::getGameDir(), { textFilter } }).listen([this](Result<std::filesystem::path>* res) {
Expand Down
2 changes: 1 addition & 1 deletion src/ui/record_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ bool RecordLayer::setup() {
CCSprite* spriteOn = CCSprite::createWithSpriteFrameName("GJ_checkOn_001.png");
CCSprite* spriteOff = CCSprite::createWithSpriteFrameName("GJ_checkOff_001.png");

CCLabelBMFont* versionLabel = CCLabelBMFont::create("xdBot v2.0.0-beta.4", "chatFont.fnt");
CCLabelBMFont* versionLabel = CCLabelBMFont::create("xdBot v2.0.0-beta.5", "chatFont.fnt");
versionLabel->setOpacity(63);
versionLabel->setPosition(ccp(-217, -125));
versionLabel->setAnchorPoint({ 0, 0.5 });
Expand Down
2 changes: 1 addition & 1 deletion src/ui/render_settings_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ void RenderSettingsLayer::onDefaults(CCObject*) {
[this](auto, bool btn2) {
auto& g = Global::get();

g.mod->setSavedValue("render_args", std::string("pix_fmt yuv420p"));
g.mod->setSavedValue("render_args", std::string("-pix_fmt yuv420p"));
g.mod->setSavedValue("render_audio_args", std::string(""));
g.mod->setSavedValue("render_video_args", std::string("colorspace=all=bt709:iall=bt470bg:fast=1"));
g.mod->setSavedValue("render_fix_shaders", false);
Expand Down

0 comments on commit 9a8f725

Please sign in to comment.