1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#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();
void init() {
logger_log_begin(LOG_INFO);
logger_log_message("default radio skin.");
set_background_size(100, 100);
}
void render(int mouseX, int mouseY, float delta) {
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, 200, 100, -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, 200, 120, -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, 200, 140, -1, true);
text_free(t1);
text_free(t2);
text_free(t3);
}
|