Skip to content

Commit c0c8f07

Browse files
committed
add buttons for switching the mode
1 parent ea76de7 commit c0c8f07

File tree

5 files changed

+59
-7
lines changed

5 files changed

+59
-7
lines changed

src/Replay.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ inline T bin_read(std::ifstream& stream) {
4545
*/
4646

4747
constexpr uint8_t format_ver = 2;
48-
constexpr const char format_magic[4] = {'R', 'P', 'L', 'Y'};
48+
constexpr const char* format_magic = "RPLY";
4949

5050
void Replay::save(const std::string& path) {
5151
std::ofstream file;

src/dllmain.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
DWORD WINAPI thread_entry(void* module) {
99
#ifdef _DEBUG
1010
AllocConsole();
11-
static std::ofstream conout("CONOUT$", std::ios::out);
12-
static std::ifstream conin("CONIN$", std::ios::in);
11+
std::ofstream conout("CONOUT$", std::ios::out);
12+
std::ifstream conin("CONIN$", std::ios::in);
1313
std::cout.rdbuf(conout.rdbuf());
1414
std::cin.rdbuf(conin.rdbuf());
1515
#endif
1616

17+
DisableThreadLibraryCalls(cast<HMODULE>(module));
18+
1719
MH_Initialize();
1820

1921
Hooks::init();

src/overlay_layer.cpp

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,34 @@ bool OverlayLayer::init() {
7171
label->setPosition({win_size.width - 55, win_size.height - 85});
7272
addChild(label);
7373

74+
auto check_off_sprite = CCSprite::createWithSpriteFrameName("GJ_checkOff_001.png");
75+
auto check_on_sprite = CCSprite::createWithSpriteFrameName("GJ_checkOn_001.png");
76+
77+
m_x_pos_toggle = gd::CCMenuItemToggler::create(check_off_sprite, check_on_sprite, this, menu_selector(OverlayLayer::on_x_pos));
78+
m_x_pos_toggle->setPosition({win_size.width - 35, -120});
79+
menu->addChild(m_x_pos_toggle);
80+
81+
m_frame_toggle = gd::CCMenuItemToggler::create(check_off_sprite, check_on_sprite, this, menu_selector(OverlayLayer::on_frame));
82+
m_frame_toggle->setPosition({win_size.width - 35, -155});
83+
menu->addChild(m_frame_toggle);
84+
85+
if (rs.get_default_type() == ReplayType::XPOS)
86+
m_x_pos_toggle->toggle(true);
87+
else
88+
m_frame_toggle->toggle(true);
89+
90+
label = CCLabelBMFont::create("X Pos", "bigFont.fnt");
91+
label->setAnchorPoint({1, 0.5});
92+
label->setScale(0.8f);
93+
label->setPosition({win_size.width - 55, win_size.height - 120});
94+
addChild(label);
95+
96+
label = CCLabelBMFont::create("Frame", "bigFont.fnt");
97+
label->setAnchorPoint({1, 0.5});
98+
label->setScale(0.8f);
99+
label->setPosition({win_size.width - 55, win_size.height - 155});
100+
addChild(label);
101+
74102
sprite = CCSprite::create("square02b_001.png");
75103
sprite->setColor({0, 0, 0});
76104
sprite->setOpacity(69);
@@ -113,7 +141,9 @@ void OverlayLayer::update_info_text() {
113141
auto& rs = ReplaySystem::get_instance();
114142
auto& replay = rs.get_replay();
115143
std::stringstream stream;
116-
stream << "Current Replay:\nFPS: " << replay.get_fps() << "\nActions: " << replay.get_actions().size();
144+
stream << "Current Replay:\nFPS: " << replay.get_fps();
145+
stream << "\nActions: " << replay.get_actions().size();
146+
stream << "\nMode: " << (replay.get_type() == ReplayType::XPOS ? "X Pos" : "Frame");
117147
m_replay_info->setString(stream.str().c_str());
118148
}
119149

@@ -203,4 +233,16 @@ void OverlayLayer::on_load(CCObject*) {
203233
void OverlayLayer::keyBackClicked() {
204234
_update_default_fps();
205235
gd::FLAlertLayer::keyBackClicked();
236+
}
237+
238+
void OverlayLayer::on_x_pos(CCObject*) {
239+
m_x_pos_toggle->toggle(false);
240+
m_frame_toggle->toggle(false);
241+
ReplaySystem::get_instance().set_default_type(ReplayType::XPOS);
242+
}
243+
244+
void OverlayLayer::on_frame(CCObject*) {
245+
m_x_pos_toggle->toggle(false);
246+
m_frame_toggle->toggle(false);
247+
ReplaySystem::get_instance().set_default_type(ReplayType::FRAME);
206248
}

src/overlay_layer.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
class OverlayLayer : public gd::FLAlertLayer, public CCTextFieldDelegate, public gd::FLAlertLayerProtocol {
55
gd::CCTextInputNode* m_fps_input;
66
CCLabelBMFont* m_replay_info;
7+
gd::CCMenuItemToggler* m_x_pos_toggle;
8+
gd::CCMenuItemToggler* m_frame_toggle;
79

810
inline void _update_default_fps();
911
void _handle_load_replay();
@@ -37,6 +39,9 @@ class OverlayLayer : public gd::FLAlertLayer, public CCTextFieldDelegate, public
3739
void on_save(CCObject*);
3840
void on_load(CCObject*);
3941

42+
void on_x_pos(CCObject*);
43+
void on_frame(CCObject*);
44+
4045
virtual void keyBackClicked();
4146
virtual void keyDown(enumKeyCodes key) {
4247
// keyDown overwrites keyBackClicked, how fun

src/replay_system.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ class ReplaySystem {
1414

1515
Replay replay;
1616
RSState state = NOTHING;
17-
ReplayType replay_type;
17+
ReplayType default_type;
1818

1919
size_t action_index = 0;
2020

2121
PracticeFixes practice_fixes;
2222

2323
bool frame_advance = false;
2424

25-
ReplaySystem() : default_fps(120.f), replay(default_fps), replay_type(replay.get_type()) {}
25+
ReplaySystem() : default_fps(120.f), replay(default_fps), default_type(replay.get_type()) {}
2626

2727
void _update_status_label();
2828

@@ -37,6 +37,9 @@ class ReplaySystem {
3737
inline auto get_default_fps() { return default_fps; }
3838
inline void set_default_fps(float fps) { default_fps = fps; }
3939

40+
inline auto get_default_type() { return default_type; }
41+
inline void set_default_type(ReplayType type) { default_type = type; }
42+
4043
inline bool is_playing() { return state == PLAYING; }
4144
inline bool is_recording() { return state == RECORDING; }
4245

@@ -48,7 +51,7 @@ class ReplaySystem {
4851
void toggle_recording() {
4952
state = is_recording() ? NOTHING : RECORDING;
5053
if (!is_recording()) frame_advance = false;
51-
else replay = Replay(default_fps);
54+
else replay = Replay(default_fps, default_type);
5255
frame_offset = 0;
5356
_update_status_label();
5457
}

0 commit comments

Comments
 (0)