2022-09-01 15:03:18 +00:00
|
|
|
#include "flipfrid_scene_entrypoint.h"
|
|
|
|
|
|
|
|
string_t menu_items[4];
|
2022-09-20 18:45:16 +00:00
|
|
|
string_t menu_proto_items[2];
|
2022-09-01 15:03:18 +00:00
|
|
|
|
2022-09-20 20:24:34 +00:00
|
|
|
void flipfrid_scene_entrypoint_menu_callback(
|
|
|
|
FlipFridState* context,
|
|
|
|
uint32_t index,
|
|
|
|
uint32_t proto_index) {
|
2022-09-01 15:03:18 +00:00
|
|
|
switch(index) {
|
|
|
|
case FlipFridAttackDefaultValues:
|
|
|
|
context->attack = FlipFridAttackDefaultValues;
|
|
|
|
context->current_scene = SceneAttack;
|
|
|
|
string_set_str(context->attack_name, "Default Values");
|
|
|
|
break;
|
|
|
|
case FlipFridAttackBfCustomerId:
|
|
|
|
context->attack = FlipFridAttackBfCustomerId;
|
|
|
|
context->current_scene = SceneAttack;
|
|
|
|
string_set_str(context->attack_name, "Bad Customer ID");
|
|
|
|
break;
|
|
|
|
case FlipFridAttackLoadFile:
|
|
|
|
context->attack = FlipFridAttackLoadFile;
|
|
|
|
context->current_scene = SceneSelectFile;
|
|
|
|
string_set_str(context->attack_name, "Load File");
|
|
|
|
break;
|
2022-09-04 21:32:58 +00:00
|
|
|
case FlipFridAttackLoadFileCustomUids:
|
|
|
|
context->attack = FlipFridAttackLoadFileCustomUids;
|
|
|
|
context->current_scene = SceneLoadCustomUids;
|
|
|
|
string_set_str(context->attack_name, "Load Custom UIDs");
|
|
|
|
break;
|
2022-09-01 15:03:18 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
switch(proto_index) {
|
|
|
|
case EM4100:
|
|
|
|
context->proto = EM4100;
|
|
|
|
string_set_str(context->proto_name, "EM4100");
|
|
|
|
break;
|
|
|
|
case HIDProx:
|
|
|
|
context->proto = HIDProx;
|
|
|
|
string_set_str(context->proto_name, "HIDProx");
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_enter(FlipFridState* context) {
|
2022-09-04 21:32:58 +00:00
|
|
|
// Clear the previous payload
|
|
|
|
context->payload[0] = 0x00;
|
|
|
|
context->payload[1] = 0x00;
|
|
|
|
context->payload[2] = 0x00;
|
|
|
|
context->payload[3] = 0x00;
|
|
|
|
context->payload[4] = 0x00;
|
2022-09-20 18:45:16 +00:00
|
|
|
context->payload[5] = 0x00;
|
2022-09-04 21:32:58 +00:00
|
|
|
|
2022-09-01 15:03:18 +00:00
|
|
|
context->menu_index = 0;
|
2022-09-04 21:32:58 +00:00
|
|
|
for(uint32_t i = 0; i < 4; i++) {
|
2022-09-01 15:03:18 +00:00
|
|
|
string_init(menu_items[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
string_set(menu_items[0], "Default Values");
|
|
|
|
string_set(menu_items[1], "BF Customer ID");
|
|
|
|
string_set(menu_items[2], "Load File");
|
2022-09-04 21:32:58 +00:00
|
|
|
string_set(menu_items[3], "Load uids from file");
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
context->menu_proto_index = 0;
|
|
|
|
for(uint32_t i = 0; i < 2; i++) {
|
|
|
|
string_init(menu_proto_items[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
string_set(menu_proto_items[0], "EM4100");
|
|
|
|
string_set(menu_proto_items[1], "HIDProx");
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) {
|
|
|
|
UNUSED(context);
|
2022-09-04 21:32:58 +00:00
|
|
|
for(uint32_t i = 0; i < 4; i++) {
|
2022-09-01 15:03:18 +00:00
|
|
|
string_clear(menu_items[i]);
|
|
|
|
}
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
for(uint32_t i = 0; i < 2; i++) {
|
|
|
|
string_clear(menu_proto_items[i]);
|
|
|
|
}
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) {
|
|
|
|
UNUSED(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_event(FlipFridEvent event, FlipFridState* context) {
|
|
|
|
if(event.evt_type == EventTypeKey) {
|
|
|
|
if(event.input_type == InputTypeShort) {
|
|
|
|
switch(event.key) {
|
|
|
|
case InputKeyDown:
|
2022-09-04 21:32:58 +00:00
|
|
|
if(context->menu_index < FlipFridAttackLoadFileCustomUids) {
|
2022-09-01 15:03:18 +00:00
|
|
|
context->menu_index++;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case InputKeyUp:
|
|
|
|
if(context->menu_index > FlipFridAttackDefaultValues) {
|
|
|
|
context->menu_index--;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case InputKeyLeft:
|
2022-09-20 18:45:16 +00:00
|
|
|
if(context->menu_proto_index > EM4100) {
|
|
|
|
context->menu_proto_index--;
|
|
|
|
}
|
|
|
|
break;
|
2022-09-01 15:03:18 +00:00
|
|
|
case InputKeyRight:
|
2022-09-20 18:45:16 +00:00
|
|
|
if(context->menu_proto_index < HIDProx) {
|
|
|
|
context->menu_proto_index++;
|
|
|
|
}
|
2022-09-03 20:10:07 +00:00
|
|
|
break;
|
2022-09-01 15:03:18 +00:00
|
|
|
case InputKeyOk:
|
2022-09-20 20:24:34 +00:00
|
|
|
flipfrid_scene_entrypoint_menu_callback(
|
|
|
|
context, context->menu_index, context->menu_proto_index);
|
2022-09-01 15:03:18 +00:00
|
|
|
break;
|
|
|
|
case InputKeyBack:
|
|
|
|
context->is_running = false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_draw(Canvas* canvas, FlipFridState* context) {
|
|
|
|
canvas_clear(canvas);
|
|
|
|
canvas_set_color(canvas, ColorBlack);
|
|
|
|
|
|
|
|
if(context->menu_index > FlipFridAttackDefaultValues) {
|
|
|
|
canvas_set_font(canvas, FontSecondary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
24,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_items[context->menu_index - 1]));
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas, 64, 36, AlignCenter, AlignTop, string_get_cstr(menu_items[context->menu_index]));
|
2022-09-01 15:03:18 +00:00
|
|
|
|
2022-09-04 21:32:58 +00:00
|
|
|
if(context->menu_index < FlipFridAttackLoadFileCustomUids) {
|
2022-09-01 15:03:18 +00:00
|
|
|
canvas_set_font(canvas, FontSecondary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
48,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_items[context->menu_index + 1]));
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
if(context->menu_proto_index > EM4100) {
|
|
|
|
canvas_set_font(canvas, FontSecondary);
|
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
-12,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_proto_items[context->menu_proto_index - 1]));
|
|
|
|
}
|
|
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
2022-09-20 20:24:34 +00:00
|
|
|
canvas_draw_str_aligned(canvas, 34, 4, AlignCenter, AlignTop, "<");
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
|
canvas_draw_str_aligned(
|
2022-09-20 20:24:34 +00:00
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
4,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_proto_items[context->menu_proto_index]));
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
2022-09-20 20:24:34 +00:00
|
|
|
canvas_draw_str_aligned(canvas, 94, 4, AlignCenter, AlignTop, ">");
|
2022-09-20 18:45:16 +00:00
|
|
|
|
|
|
|
if(context->menu_proto_index < HIDProx) {
|
|
|
|
canvas_set_font(canvas, FontSecondary);
|
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
-12,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_proto_items[context->menu_proto_index + 1]));
|
|
|
|
}
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|