#include <stdio.h>
enum logger_level : int {
LOG_TRACE = 0,
LOG_DEBUG = 10,
LOG_INFO = 20,
LOG_WARN = 30,
LOG_ERROR = 40,
};
[[clang::import_module("logger")]] [[clang::import_name("log")]]
extern void logger_log(void);
[[clang::import_module("logger")]] [[clang::import_name("log-message")]]
extern void logger_log_message(char *message);
[[clang::import_module("logger")]] [[clang::import_name("add-argument-int")]]
extern void logger_add_argument_int(int arg);
[[clang::import_module("logger")]] [[clang::import_name("begin")]]
extern void logger_log_begin(enum logger_level level);
[[clang::import_module("screen")]] [[clang::import_name("set-background-size")]]
extern void set_background_size(int width, int height);
[[clang::import_module("screen")]] [[clang::import_name("set-background-texture-size")]]
extern void set_background_texture_size(int width, int height);
[[clang::import_module("text")]] [[clang::import_name("free")]]
extern void text_free(int handle);
[[clang::import_module("text")]] [[clang::import_name("literal")]]
extern int text_literal(char *text);
[[clang::import_module("text")]] [[clang::import_name("translatable")]]
extern int text_translatable(char *key);
[[clang::import_module("text")]] [[clang::import_name("translatable-arguments")]]
extern int text_arguments(char *key, int size, int *args);
[[clang::import_module("screen")]] [[clang::import_name("render-text-object")]]
extern void render_text_object(int handle, int x, int y, int color, bool shadow);
enum simulator_mode : int {
SIMULATOR_FULL = 0,
SIMULATOR_FAST = 1,
SIMULATOR_DEAF = 2,
};
[[clang::import_module("simulator")]] [[clang::import_name("get-mode")]]
extern enum simulator_mode simulator_get_mode();
[[clang::import_module("simulator")]] [[clang::import_name("get-volume")]]
extern int simulator_get_volume();
[[clang::import_module("simulator")]] [[clang::import_name("get-frequency")]]
extern int simulator_get_frequency();
[[clang::import_module("screen")]] [[clang::import_name("get-width")]]
extern int screen_get_width();
[[clang::import_module("screen")]] [[clang::import_name("get-height")]]
extern int screen_get_height();
[[clang::import_module("volume-plus-widget")]] [[clang::import_name("set-dimensions")]]
extern void vp_set_dimensions(int x, int y, int width, int height);
[[clang::import_module("volume-minus-widget")]] [[clang::import_name("set-dimensions")]]
extern void vm_set_dimensions(int x, int y, int width, int height);
[[clang::import_module("frequency-plus-widget")]] [[clang::import_name("set-dimensions")]]
extern void fp_set_dimensions(int x, int y, int width, int height);
[[clang::import_module("frequency-minus-widget")]] [[clang::import_name("set-dimensions")]]
extern void fm_set_dimensions(int x, int y, int width, int height);
[[clang::import_module("toggle-widget")]] [[clang::import_name("set-dimensions")]]
extern void mode_set_dimensions(int x, int y, int width, int height);
#define BACKGROUND_WIDTH 200
#define BACKGROUND_HEIGHT 100
void init() {
logger_log_begin(LOG_INFO);
logger_log_message("placeholder radio skin.");
set_background_size(BACKGROUND_WIDTH, BACKGROUND_HEIGHT);
int width = screen_get_width();
int height = screen_get_height();
int base_x = (width - BACKGROUND_WIDTH) / 2;
int base_y = (height - BACKGROUND_HEIGHT) / 2;
fp_set_dimensions(base_x + 100 - 40, base_y, 20, 20);
fm_set_dimensions(base_x + 120 - 40, base_y, 20, 20);
vp_set_dimensions(base_x + 100 - 40, base_y + 20, 20, 20);
vm_set_dimensions(base_x + 120 - 40, base_y + 20, 20, 20);
mode_set_dimensions(base_x + 100 - 100, base_y + 40, 100, 20);
}
void render(int mouseX, int mouseY, float delta) {
int width = screen_get_width();
int height = screen_get_height();
int base_x = (width - BACKGROUND_WIDTH) / 2 + 100;
int base_y = (height - BACKGROUND_HEIGHT) / 2 + (20 - 9) / 2;
int t1;
switch (simulator_get_mode()) {
case SIMULATOR_FAST:
{
t1 = text_translatable("pirate-radio.mode.fast");
break;
}
case SIMULATOR_DEAF:
{
t1 = text_translatable("pirate-radio.mode.deaf");
break;
}
default:
{
t1 = text_translatable("pirate-radio.mode.full");
}
}
int t2 = text_arguments("pirate-radio.mode.selected", 1, &t1);
render_text_object(t2, base_x, base_y + 40, -1, true);
text_free(t1);
text_free(t2);
int volume = simulator_get_volume();
if (volume == 0) {
t1 = text_translatable("pirate-radio.volume.off");
} else {
char volume_text[30];
sprintf(volume_text, "%d", volume);
t1 = text_literal(volume_text);
}
t2 = text_arguments("pirate-radio.volume.selected", 1, &t1);
render_text_object(t2, base_x, base_y + 20, -1, true);
text_free(t1);
text_free(t2);
int frequency = simulator_get_frequency();
int freq_mhz = frequency/10;
int freq_step = frequency%10;
char freq_text[30];
sprintf(freq_text, "%d", freq_mhz);
t1 = text_literal(freq_text);
sprintf(freq_text, "%d", freq_step);
t2 = text_literal(freq_text);
int freq_args[2] = {t1, t2};
int t3 = text_arguments("pirate-radio.frequency.selected", 2, freq_args);
render_text_object(t3, base_x, base_y + 0, -1, true);
text_free(t1);
text_free(t2);
text_free(t3);
}