summaryrefslogtreecommitdiff
path: root/src/server/heightScore.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-06-28 16:38:35 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-06-28 16:38:35 +0000
commit2d776fcd61be168e1ff0ff2e4a5e71835e7cea19 (patch)
tree7cf274897bf540d5332d446f583ffd066e4e2e1d /src/server/heightScore.c
parentb877ae23ac5d380ab3aa48d7724045cf4883b186 (diff)
- prekopanie adresarovej struktury, prva cast
git-svn-id: http://opensvn.csie.org/tuxanci_ng@77 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/server/heightScore.c')
-rw-r--r--src/server/heightScore.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/server/heightScore.c b/src/server/heightScore.c
new file mode 100644
index 0000000..f36dcf7
--- /dev/null
+++ b/src/server/heightScore.c
@@ -0,0 +1,98 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "base/main.h"
+#include "base/list.h"
+#include "base/textFile.h"
+#include "server/heightScore.h"
+
+static textFile_t *textFile;
+
+void initHeightScore(char *file)
+{
+ int i;
+
+ textFile = loadTextFile(file);
+
+ if( textFile == NULL )
+ {
+ fprintf(stderr, "I can't load %s !\n", file);
+ fprintf(stderr, "I create %s\n", file);
+ textFile = newTextFile(file);
+ }
+ else
+ {
+ return;
+ }
+
+ if( textFile == NULL )
+ {
+ fprintf(stderr, "I can't create %s!\n", file);
+ return;
+ }
+
+ for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ )
+ {
+ addList(textFile->text, strdup("no_name 0") );
+ }
+
+ saveTextFile(textFile);
+}
+
+int addPlayerInHighScore(char *name, int score)
+{
+ int i;
+
+ if( score <= 0 )
+ {
+ return -1; // Ha ha ha
+ }
+
+ for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ )
+ {
+ char *line;
+ char thisName[STR_NAME_SIZE];
+ int thisCore;
+
+ line = (char *) textFile->text->list[i];
+ sscanf(line, "%s %d", thisName, &thisCore);
+
+ if( score >= thisCore )
+ {
+ char new[STR_SIZE];
+
+ sprintf(new, "%s %d", name, score);
+ insList(textFile->text, i, strdup(new) );
+ delListItem(textFile->text, HEIGHTSCORE_MAX_PLAYERS, free);
+ saveTextFile(textFile);
+
+ return 0;
+ }
+ }
+
+ return -1;
+}
+
+char* getTableItem(int index)
+{
+ if( textFile != NULL &&
+ index >= 0 &&
+ index < textFile->text->count )
+ {
+ return (char *)textFile->text->list[index];
+ }
+
+ return NULL;
+}
+
+void quitHeightScore()
+{
+ if( textFile != NULL )
+ {
+ saveTextFile(textFile);
+ destroyTextFile(textFile);
+ }
+}