Skip to content
This repository has been archived by the owner on Jun 18, 2024. It is now read-only.

Commit

Permalink
make default codec and args nothing and add presets, also fix inithoo…
Browse files Browse the repository at this point in the history
…ks call
  • Loading branch information
maxnut committed Jan 13, 2024
1 parent ba7ee91 commit 17a38bb
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 7 deletions.
44 changes: 42 additions & 2 deletions src/Macrobot/Macrobot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,43 @@ void Macrobot::save(std::string file)
size = corrections.size();
f.write((const char*)&size, sizeof(size_t));
for (Correction& co : corrections)
f.write((const char*)&co, sizeof(Correction));
f.write((const char*)&co, 56);

f.close();

void* level = MBO(void*, Common::getBGL(), 1504); // found in playlayer_init

int levelId = MBO(int, level, 268) - MBO(int, level, 272);
std::string levelName = MBO(std::string, level, 0x118);

json macroJson = json::object();
macroJson["gameVersion"] = "2.204";
macroJson["version"] = 1.0;
macroJson["duration"] = actions[actions.size() - 1].frame;
macroJson["bot"]["name"] = "Macrobot";
macroJson["bot"]["version"] = 1.0;
macroJson["level"]["id"] = levelId;
macroJson["level"]["name"] = levelName;
macroJson["author"] = "maxnu";
macroJson["seed"] = 2;
macroJson["ldm"] = false;
macroJson["inputs"] = json::array();

for (Action& ac : actions)
{
json actionJson = json::object();
actionJson["frame"] = ac.frame;
actionJson["btn"] = ac.key;
actionJson["2p"] = !ac.player1;
actionJson["down"] = ac.press;
macroJson["inputs"].push_back(actionJson);
}

f.open("GDMO\\macros\\" + file + ".json");

f << macroJson.dump(4);

f.close();
}

void Macrobot::load(std::string file)
Expand All @@ -314,9 +350,13 @@ void Macrobot::load(std::string file)
for (size_t i = 0; i < size_c; i++)
{
Correction co;
f.read((char*)&co, sizeof(Correction));
f.read((char*)&co, 56);
corrections.push_back(co);
}

std::cout << size << std::endl;

f.close();
}

void Macrobot::drawWindow()
Expand Down
37 changes: 32 additions & 5 deletions src/Macrobot/record.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "sndfile.h"
#include <CCGL.h>
#include <MinHook.h>
#include "../types/GJGameLevel.hpp"

bool levelDone = false;

Expand Down Expand Up @@ -337,9 +338,9 @@ void Recorder::stop_audio()
{
AudioRecord::stop();

gd::GJGameLevel* level = MBO(void*, Common::getBGL(), 1504); // found in playlayer_init
gd::GJGameLevel* level = MBO(gd::GJGameLevel*, Common::getBGL(), 1504); // found in playlayer_init

std::string level_id = std::to_string(level->m_levelID);
std::string level_id = std::to_string(level->m_levelID.value());

std::string video_path = "GDMO/renders/" + level_id + "/final.mp4";

Expand Down Expand Up @@ -636,12 +637,21 @@ bool Recorder::generate_clicks(std::string outputPath)

void Record::renderWindow()
{
if (Record::recorder.m_recording_audio)
ImGui::BeginDisabled();

if (GUI::button("Start Recording") && Common::getBGL())
Record::recorder.start();

if (GUI::button("Stop Recording") && !Record::recorder.m_recording && Common::getBGL())
if (GUI::button("Stop Recording") && Record::recorder.m_recording && Common::getBGL())
Record::recorder.stop();

if (Record::recorder.m_recording_audio)
ImGui::EndDisabled();

if (Record::recorder.m_recording)
ImGui::BeginDisabled();

if (GUI::button("Start Audio") && Common::getBGL())
{
recorder.m_recording_audio = true;
Expand All @@ -655,6 +665,9 @@ void Record::renderWindow()
AudioRecord::stop();
}

if (Record::recorder.m_recording)
ImGui::EndDisabled();

int resolution[2];
resolution[0] = Settings::get<int>("recorder/resolution/x", 1920);
resolution[1] = Settings::get<int>("recorder/resolution/y", 1080);
Expand All @@ -672,13 +685,13 @@ void Record::renderWindow()
if (ImGui::IsItemDeactivatedAfterEdit())
Settings::set<int>("recorder/bitrate", bitrate);

std::string codec = Settings::get<std::string>("recorder/codec", "h264_nvenc");
std::string codec = Settings::get<std::string>("recorder/codec", "");

if (GUI::inputText("Codec", &codec))
Settings::set<std::string>("recorder/codec", codec);

std::string extraArgs =
Settings::get<std::string>("recorder/extraArgs", "-hwaccel cuda -hwaccel_output_format cuda");
Settings::get<std::string>("recorder/extraArgs", "");
if (GUI::inputText("Extra Args", &extraArgs))
Settings::set<std::string>("recorder/extraArgs", extraArgs);

Expand All @@ -698,6 +711,20 @@ void Record::renderWindow()
GUI::arrowButton("Clickpacks");
Clickpacks::drawGUI();

if(GUI::button("NVIDIA"))
{
Settings::set<std::string>("recorder/codec", "h264_nvenc");
Settings::set<std::string>("recorder/extraArgs", "-hwaccel cuda -hwaccel_output_format cuda");
}

ImGui::SameLine();

if(GUI::button("AMD"))
{
Settings::set<std::string>("recorder/codec", "h264_amf");
Settings::set<std::string>("recorder/extraArgs", "");
}

GUI::marker("[INFO]",
"Press start recording to get a smooth recording of the level with optionally added clicks. "
"To render music and sfx, press Start Music and wait for the level to finish again, then your "
Expand Down
1 change: 1 addition & 0 deletions src/dllmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ DWORD WINAPI my_thread(void* hModule)
GUI::initHooks();
Labels::initHooks();
DiscordRPCManager::initHooks();
Record::initHooks();

MH_EnableHook(MH_ALL_HOOKS);
}
Expand Down

0 comments on commit 17a38bb

Please sign in to comment.