Skip to content
This repository was archived by the owner on Mar 20, 2022. It is now read-only.

Commit fc6b9d5

Browse files
committed
Add Gallium HUD options.
Who likes type punning? :)
1 parent 66eb204 commit fc6b9d5

File tree

6 files changed

+93
-103
lines changed

6 files changed

+93
-103
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ endif
5454
# for internal functions, so let's "ignore" it.
5555
CFLAGS+=-Wno-error=deprecated-declarations
5656

57-
VERSION:=0.10.0-rc1
57+
VERSION:=0.10.1
5858

5959
.PHONY: ./build/gmcpil
6060

src/callbacks.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,18 +151,24 @@ void settings_cb(__attribute__((unused)) GtkWidget* button, __attribute__((unuse
151151
{
152152
const char* username;
153153
const char* distance;
154-
GtkEntryBuffer* gtk_buff;
154+
const char* hud;
155+
GtkEntryBuffer* username_buff;
156+
GtkEntryBuffer* hud_buff;
155157

156-
gtk_buff = gtk_entry_get_buffer(GTK_ENTRY(settings_box.username_entry));
158+
username_buff = gtk_entry_get_buffer(GTK_ENTRY(settings_box.username_entry));
159+
hud_buff = gtk_entry_get_buffer(GTK_ENTRY(settings_box.hud_entry));
157160

158-
username = gtk_entry_buffer_get_text(gtk_buff);
161+
username = gtk_entry_buffer_get_text(username_buff);
159162
distance = gtk_combo_box_text_get_active_text(settings_box.distance_combo);
163+
hud = gtk_entry_buffer_get_text(hud_buff);
160164

161165
setenv("MCPI_USERNAME", username, 1);
162166
setenv("MCPI_RENDER_DISTANCE", distance, 1);
167+
setenv("GALLIUM_HUD", hud, 1);
163168

164169
mcpil_config_set_username(config, username);
165170
mcpil_config_set_distance(config, distance);
171+
mcpil_config_set_hud(config, hud);
166172
mcpil_config_save(config);
167173
return;
168174
}

src/config.c

Lines changed: 40 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,16 @@
2828
#include <json-glib/json-gobject.h>
2929
#include <config.h>
3030

31-
struct MCPILConfigPrivate
31+
struct __attribute__((packed)) MCPILConfigPrivate
3232
{
3333
gchar* ip;
3434
gchar* port;
3535
gchar* username;
3636
gchar* features;
3737
gchar* distance;
38-
gchar* filename;
3938
gchar* last_profile;
39+
gchar* hud;
40+
gchar* filename;
4041
};
4142

4243
enum
@@ -47,7 +48,9 @@ enum
4748
PROP_USERNAME,
4849
PROP_FEATURES,
4950
PROP_DISTANCE,
50-
PROP_LAST_PROFILE
51+
PROP_LAST_PROFILE,
52+
PROP_HUD,
53+
PROP_LAST
5154
};
5255

5356
G_DEFINE_TYPE_WITH_CODE(MCPILConfig, mcpil_config, G_TYPE_OBJECT, G_ADD_PRIVATE(MCPILConfig))
@@ -83,57 +86,42 @@ static void mcpil_config_class_init(MCPILConfigClass* klass)
8386

8487
pspec = g_param_spec_string("last_profile", "Last profile", "Last selected profile", NULL, G_PARAM_READWRITE);
8588
g_object_class_install_property(gobject_class, PROP_LAST_PROFILE, pspec);
89+
90+
pspec = g_param_spec_string("hud", "Gallium HUD", "Gallium HUD options", NULL, G_PARAM_READWRITE);
91+
g_object_class_install_property(gobject_class, PROP_HUD, pspec);
8692
return;
8793
}
8894

8995
static void mcpil_config_init(MCPILConfig* self)
9096
{
97+
int i = 0;
9198
MCPILConfigPrivate* private = MCPIL_CONFIG_PRIVATE(self);
99+
gchar** private_gchar = (gchar**)(private);
92100

93-
private->ip = NULL;
94-
private->port = 0;
95-
private->username = NULL;
96-
private->features = NULL;
97-
private->distance = NULL;
98-
private->last_profile = NULL;
101+
while (i < PROP_LAST - 1)
102+
{
103+
private_gchar[i] = NULL;
104+
i++;
105+
}
99106
return;
100107
}
101108

102109
static void mcpil_config_finalize(GObject* obj)
103110
{
111+
int i = 0;
104112
MCPILConfig* self = MCPIL_CONFIG(obj);
105113
MCPILConfigPrivate* private = MCPIL_CONFIG_PRIVATE(self);
106114
GObjectClass* parent_class = G_OBJECT_CLASS(mcpil_config_parent_class);
115+
gchar** private_gchar = (gchar**)(private);
107116

108-
if (private->ip != NULL)
109-
{
110-
g_free(private->ip);
111-
}
112-
if (private->port != NULL)
113-
{
114-
g_free(private->port);
115-
}
116-
if (private->username != NULL)
117-
{
118-
g_free(private->username);
119-
}
120-
if (private->features != NULL)
121-
{
122-
g_free(private->features);
123-
}
124-
if (private->distance != NULL)
117+
while (i < PROP_LAST - 1)
125118
{
126-
g_free(private->distance);
119+
if (private_gchar[i] != NULL)
120+
{
121+
g_free(private_gchar[i]);
122+
}
123+
i++;
127124
}
128-
if (private->filename != NULL)
129-
{
130-
g_free(private->filename);
131-
}
132-
if (private->last_profile != NULL)
133-
{
134-
g_free(private->last_profile);
135-
}
136-
137125
(*parent_class->finalize)(obj);
138126
return;
139127
}
@@ -144,34 +132,20 @@ GETTER_SETTER(gchar*, username);
144132
GETTER_SETTER(gchar*, features);
145133
GETTER_SETTER(gchar*, distance);
146134
GETTER_SETTER(gchar*, last_profile);
135+
GETTER_SETTER(gchar*, hud);
147136

148137
static void mcpil_config_set_property(GObject* obj, guint prop_id, const GValue* value, GParamSpec* pspec)
149138
{
150139
MCPILConfig* self = MCPIL_CONFIG(obj);
140+
MCPILConfigPrivate* private = MCPIL_CONFIG_PRIVATE(self);
141+
gchar** private_gchar = (gchar**)(private);
151142

152-
switch (prop_id)
143+
if (prop_id <= PROP_LAST)
153144
{
154-
case PROP_IP:
155-
mcpil_config_set_ip(self, g_value_get_string(value));
156-
break;
157-
case PROP_PORT:
158-
mcpil_config_set_port(self, g_value_get_string(value));
159-
break;
160-
case PROP_USERNAME:
161-
mcpil_config_set_username(self, g_value_get_string(value));
162-
break;
163-
case PROP_FEATURES:
164-
mcpil_config_set_features(self, g_value_get_string(value));
165-
break;
166-
case PROP_DISTANCE:
167-
mcpil_config_set_distance(self, g_value_get_string(value));
168-
break;
169-
case PROP_LAST_PROFILE:
170-
mcpil_config_set_last_profile(self, g_value_get_string(value));
171-
break;
172-
default:
173-
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
174-
break;
145+
private_gchar[prop_id - 1] = g_strdup((gchar*)g_value_get_string(value));
146+
} else
147+
{
148+
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
175149
}
176150
return;
177151
}
@@ -180,29 +154,15 @@ static void mcpil_config_get_property(GObject* obj, guint prop_id, GValue* value
180154
{
181155
MCPILConfig* self = MCPIL_CONFIG(obj);
182156

183-
switch (prop_id)
157+
MCPILConfigPrivate* private = MCPIL_CONFIG_PRIVATE(self);
158+
gchar** private_gchar = (gchar**)(private);
159+
160+
if (prop_id <= PROP_LAST)
161+
{
162+
g_value_set_string(value, private_gchar[prop_id - 1]);
163+
} else
184164
{
185-
case PROP_IP:
186-
g_value_set_string(value, mcpil_config_get_ip(self));
187-
break;
188-
case PROP_PORT:
189-
g_value_set_string(value, mcpil_config_get_port(self));
190-
break;
191-
case PROP_USERNAME:
192-
g_value_set_string(value, mcpil_config_get_username(self));
193-
break;
194-
case PROP_FEATURES:
195-
g_value_set_string(value, mcpil_config_get_features(self));
196-
break;
197-
case PROP_DISTANCE:
198-
g_value_set_string(value, mcpil_config_get_distance(self));
199-
break;
200-
case PROP_LAST_PROFILE:
201-
g_value_set_string(value, mcpil_config_get_last_profile(self));
202-
break;
203-
default:
204-
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
205-
break;
165+
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
206166
}
207167
return;
208168
}

src/include/config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,15 @@ void mcpil_config_set_username(MCPILConfig* self, const gchar* username);
7676
void mcpil_config_set_features(MCPILConfig* self, const gchar* features);
7777
void mcpil_config_set_distance(MCPILConfig* self, const gchar* distance);
7878
void mcpil_config_set_last_profile(MCPILConfig* self, const gchar* profile);
79+
void mcpil_config_set_hud(MCPILConfig* self, const gchar* hud);
7980

8081
gchar* mcpil_config_get_ip(MCPILConfig* self);
8182
gchar* mcpil_config_get_port(MCPILConfig* self);
8283
gchar* mcpil_config_get_username(MCPILConfig* self);
8384
gchar* mcpil_config_get_features(MCPILConfig* self);
8485
gchar* mcpil_config_get_distance(MCPILConfig* self);
8586
gchar* mcpil_config_get_last_profile(MCPILConfig* self);
87+
gchar* mcpil_config_get_hud(MCPILConfig* self);
8688

8789
int mcpil_config_save(MCPILConfig* self);
8890

src/include/mcpil.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
#include <gtk/gtk.h>
2828
#include <config.h>
2929

30-
#define MCPIL_MAJOR 0
31-
#define MCPIL_MINOR 10
32-
#define MCPIL_PATCH 0
33-
#define MCPIL_VERSION "v0.10.0"
30+
#define GMCPIL_MAJOR 0
31+
#define GMCPIL_MINOR 10
32+
#define GMCPIL_PATCH 0
33+
#define GMCPIL_VERSION "v0.10.0"
3434

3535
#define STR(str) #str
3636
#define SAFE_ATOI(str) strtol(str ? str : "", NULL, 10)
@@ -68,9 +68,10 @@ typedef void* feature_t[2];
6868

6969
typedef struct settings_box_t
7070
{
71-
GtkWidget* ip_entry;
72-
GtkWidget* port_entry;
71+
GtkEntry* ip_entry;
72+
GtkEntry* port_entry;
7373
GtkEntry* username_entry;
74+
GtkEntry* hud_entry;
7475
GtkComboBoxText* distance_combo;
7576
char* buff;
7677
} settings_box_t;
@@ -113,7 +114,6 @@ GtkWidget* Features_tab(GtkWidget* notebook);
113114
GtkWidget* Multiplayer_tab(GtkWidget* notebook);
114115
GtkWidget* Settings_tab(GtkWidget* notebook);
115116
GtkWidget* About_tab(GtkWidget* notebook);
116-
GtkWidget* advanced_settings(GtkWidget* parent);
117117

118118
/* Variable declarations */
119119
GtkWidget* window;

src/tabs.c

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,15 @@ TAB(Multiplayer, "Multiplayer", "Save", multiplayer_cb, {
181181
}
182182

183183
ip_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
184-
ip_label = gtk_label_new("IP Address:");
184+
ip_label = gtk_label_new("IP Address");
185185
ip_entry = gtk_entry_new_with_buffer(gtk_entry_buffer_new(default_ip, strlen(default_ip)));
186+
gtk_entry_set_width_chars(GTK_ENTRY(ip_entry), 25);
186187

187188
port_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
188-
port_label = gtk_label_new("Port:");
189+
port_label = gtk_label_new("Port");
189190
port_entry = gtk_entry_new_with_buffer(gtk_entry_buffer_new(default_port, strlen(default_port)));
191+
gtk_entry_set_width_chars(GTK_ENTRY(port_entry), 25);
192+
gtk_entry_set_input_purpose(GTK_ENTRY(port_entry), GTK_INPUT_PURPOSE_DIGITS);
190193

191194
gtk_box_pack_start(GTK_BOX(ip_hbox), ip_label, FALSE, FALSE, 10);
192195
gtk_box_pack_end(GTK_BOX(ip_hbox), ip_entry, FALSE, FALSE, 10);
@@ -203,8 +206,8 @@ TAB(Multiplayer, "Multiplayer", "Save", multiplayer_cb, {
203206
gtk_box_pack_start(GTK_BOX(tab), port_hbox, FALSE, FALSE, 0);
204207
gtk_box_pack_start(GTK_BOX(tab), notice_label, FALSE, FALSE, 10);
205208

206-
settings_box.ip_entry = ip_entry;
207-
settings_box.port_entry = port_entry;
209+
settings_box.ip_entry = GTK_ENTRY(ip_entry);
210+
settings_box.port_entry = GTK_ENTRY(port_entry);
208211
setenv("GMCPIL_SERVER_IP", default_ip, 1);
209212
setenv("GMCPIL_SERVER_PORT", default_port, 1);
210213
});
@@ -214,15 +217,20 @@ TAB(Settings, "Settings", "Save", settings_cb, {
214217
int distance_int;
215218
char* default_username;
216219
char* default_distance;
220+
char* default_hud;
217221
GtkWidget* username_hbox;
218222
GtkWidget* username_label;
219223
GtkWidget* username_entry;
220224
GtkWidget* distance_hbox;
221225
GtkWidget* distance_label;
222226
GtkWidget* distance_combo;
227+
GtkWidget* hud_hbox;
228+
GtkWidget* hud_label;
229+
GtkWidget* hud_entry;
223230

224231
default_distance = mcpil_config_get_distance(config);
225232
default_username = mcpil_config_get_username(config);
233+
default_hud = mcpil_config_get_hud(config);
226234
if (default_distance == NULL)
227235
{
228236
default_distance = "Normal";
@@ -233,40 +241,54 @@ TAB(Settings, "Settings", "Save", settings_cb, {
233241
default_username = "StevePi";
234242
mcpil_config_set_username(config, default_username);
235243
}
244+
if (default_hud == NULL)
245+
{
246+
default_hud = "simple,fps";
247+
mcpil_config_set_username(config, default_hud);
248+
}
236249

237250
distance_int = get_distance(default_distance);
238251

239252
username_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
240-
username_label = gtk_label_new("Username:");
241-
253+
username_label = gtk_label_new("Username");
242254
username_entry = gtk_entry_new_with_buffer(gtk_entry_buffer_new(default_username, strlen(default_username)));
255+
gtk_entry_set_width_chars(GTK_ENTRY(username_entry), 25);
243256

244257
distance_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
245-
distance_label = gtk_label_new("Rendering distance:");
246-
258+
distance_label = gtk_label_new("Rendering distance");
247259
distance_combo = gtk_combo_box_text_new();
248-
249260
while (i < 4)
250261
{
251262
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(distance_combo), distances[i]);
252263
i++;
253264
}
254265
gtk_combo_box_set_active(GTK_COMBO_BOX(distance_combo), distance_int);
255266

267+
hud_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
268+
hud_label = gtk_label_new("Gallium HUD options");
269+
hud_entry = gtk_entry_new_with_buffer(gtk_entry_buffer_new(default_hud, strlen(default_hud)));
270+
gtk_entry_set_width_chars(GTK_ENTRY(hud_entry), 25);
271+
256272
gtk_box_pack_start(GTK_BOX(username_hbox), username_label, FALSE, FALSE, 10);
257-
gtk_box_pack_start(GTK_BOX(username_hbox), username_entry, TRUE, TRUE, 10);
273+
gtk_box_pack_end(GTK_BOX(username_hbox), username_entry, FALSE, FALSE, 10);
258274

259275
gtk_box_pack_start(GTK_BOX(distance_hbox), distance_label, FALSE, FALSE, 10);
260-
gtk_box_pack_start(GTK_BOX(distance_hbox), distance_combo, TRUE, TRUE, 10);
276+
gtk_box_pack_end(GTK_BOX(distance_hbox), distance_combo, FALSE, FALSE, 10);
277+
278+
gtk_box_pack_start(GTK_BOX(hud_hbox), hud_label, FALSE, FALSE, 10);
279+
gtk_box_pack_end(GTK_BOX(hud_hbox), hud_entry, FALSE, FALSE, 10);
261280

262281
gtk_box_pack_start(GTK_BOX(tab), username_hbox, FALSE, FALSE, 0);
263282
gtk_box_pack_start(GTK_BOX(tab), distance_hbox, FALSE, FALSE, 0);
283+
gtk_box_pack_start(GTK_BOX(tab), hud_hbox, FALSE, FALSE, 0);
264284

265285
settings_box.username_entry = GTK_ENTRY(username_entry);
266286
settings_box.distance_combo = GTK_COMBO_BOX_TEXT(distance_combo);
287+
settings_box.hud_entry = GTK_ENTRY(hud_entry);
267288

268289
setenv("MCPI_USERNAME", default_username, 1);
269290
setenv("MCPI_RENDER_DISTANCE", distances[distance_int], 1);
291+
setenv("GALLIUM_HUD", default_hud, 1);
270292
});
271293

272294
TAB(About, "Minecraft Pi Launcher", "Help", about_cb, {
@@ -293,7 +315,7 @@ TAB(About, "Minecraft Pi Launcher", "Help", about_cb, {
293315
}
294316

295317
info_label = gtk_label_new(NULL);
296-
gtk_label_set_markup(GTK_LABEL(info_label), "<b>" MCPIL_VERSION "</b>\nby all its contributors");
318+
gtk_label_set_markup(GTK_LABEL(info_label), "<b>" GMCPIL_VERSION "</b>\nby all its contributors");
297319
gtk_label_set_justify(GTK_LABEL(info_label), GTK_JUSTIFY_CENTER);
298320

299321
link = gtk_link_button_new_with_label(MCPIL_REPO_URL, MCPIL_REPO_URL);

0 commit comments

Comments
 (0)