tGTK+ client high score table tidied up - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 66217b86a499f09cb59bab38a26fe5fedfeabf2b
(DIR) parent 297d354ef85bc0a228bfece05fe8aad0c7eb35c1
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Mon, 2 Apr 2001 22:29:22 +0000
GTK+ client high score table tidied up
Diffstat:
M src/gtk_client.c | 78 ++++++++++++++++++++++++++++---
1 file changed, 72 insertions(+), 6 deletions(-)
---
(DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
t@@ -1,5 +1,5 @@
/* gtk_client.c dopewars client using the GTK+ toolkit */
-/* Copyright (C) 1998-2000 Ben Webb */
+/* Copyright (C) 1998-2001 Ben Webb */
/* Email: ben@bellatrix.pcl.ox.ac.uk */
/* WWW: http://bellatrix.pcl.ox.ac.uk/~ben/dopewars/ */
t@@ -438,9 +438,9 @@ void PrepareHighScoreDialog() {
GTK_WINDOW(ClientData.window));
HiScoreDialog.vbox=vbox=gtk_vbox_new(FALSE,7);
- HiScoreDialog.table=table=gtk_table_new(NUMHISCORE,1,FALSE);
+ HiScoreDialog.table=table=gtk_table_new(NUMHISCORE,4,FALSE);
gtk_table_set_row_spacings(GTK_TABLE(table),5);
- gtk_table_set_col_spacings(GTK_TABLE(table),5);
+ gtk_table_set_col_spacings(GTK_TABLE(table),30);
gtk_box_pack_start(GTK_BOX(vbox),table,TRUE,TRUE,0);
hsep=gtk_hseparator_new();
t@@ -452,14 +452,80 @@ void PrepareHighScoreDialog() {
void AddScoreToDialog(char *Data) {
GtkWidget *label;
char *cp;
- int index;
+ gchar **spl1,**spl2;
+ int index,slen;
+ gboolean bold;
+
cp=Data;
index=GetNextInt(&cp,0);
- if (!cp || strlen(cp)<2) return;
- label=gtk_label_new(&cp[1]);
+ if (!cp || strlen(cp)<3) return;
+
+ bold = (*cp=='B'); /* Is this score "our" score? (Currently ignored) */
+
+/* Step past the 'bold' character, and the initial '>' (if present) */
+ cp+=2;
+ g_strchug(cp);
+
+/* Get the first word - the score */
+ spl1 = g_strsplit(cp," ",1);
+ if (!spl1 || !spl1[0] || !spl1[1]) {
+ g_warning(_("Corrupt high score!"));
+ g_strfreev(spl1);
+ return;
+ }
+ label=gtk_label_new(spl1[0]);
+ gtk_misc_set_alignment(GTK_MISC(label),1.0,0.5);
gtk_table_attach_defaults(GTK_TABLE(HiScoreDialog.table),label,
0,1,index,index+1);
gtk_widget_show(label);
+
+/* Remove any leading whitespace from the remainder, since g_strsplit
+ will split at every space character, not at a run of them */
+ g_strchug(spl1[1]);
+
+/* Get the second word - the date */
+ spl2 = g_strsplit(spl1[1]," ",1);
+ if (!spl2 || !spl2[0] || !spl2[1]) {
+ g_warning(_("Corrupt high score!"));
+ g_strfreev(spl2);
+ return;
+ }
+ label=gtk_label_new(spl2[0]);
+ gtk_misc_set_alignment(GTK_MISC(label),0.5,0.5);
+ gtk_table_attach_defaults(GTK_TABLE(HiScoreDialog.table),label,
+ 1,2,index,index+1);
+ gtk_widget_show(label);
+
+/* The remainder is the name, terminated with (R.I.P.) if the player died,
+ and '<' for the 'current' score */
+ g_strchug(spl2[1]);
+
+/* Remove '<' suffix if present */
+ slen=strlen(spl2[1]);
+ if (slen>=1 && spl2[1][slen-1]=='<') {
+ spl2[1][slen-1]='\0';
+ }
+ slen--;
+
+/* Check for (R.I.P.) suffix, and add it to the 4th column if found */
+ if (slen>8 && spl2[1][slen-1]==')' && spl2[1][slen-8]=='(') {
+ label=gtk_label_new(&spl2[1][slen-8]);
+ gtk_misc_set_alignment(GTK_MISC(label),0.5,0.5);
+ gtk_table_attach_defaults(GTK_TABLE(HiScoreDialog.table),label,
+ 3,4,index,index+1);
+ gtk_widget_show(label);
+ spl2[1][slen-8]='\0'; /* Remove suffix from the player name */
+ }
+
+/* Finally, add in what's left of the player name */
+ g_strchomp(spl2[1]);
+ label=gtk_label_new(spl2[1]);
+ gtk_misc_set_alignment(GTK_MISC(label),0,0.5);
+ gtk_table_attach_defaults(GTK_TABLE(HiScoreDialog.table),label,
+ 2,3,index,index+1);
+ gtk_widget_show(label);
+
+ g_strfreev(spl1); g_strfreev(spl2);
}
static void EndHighScore(GtkWidget *widget) {