99 lines
3.8 KiB
C
99 lines
3.8 KiB
C
/***************************************************************************
|
|
chart.h - description
|
|
-------------------
|
|
begin : Mon Sep 24 2001
|
|
copyright : (C) 2001 by Michael Speck
|
|
email : kulkanie@gmx.net
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/*
|
|
====================================================================
|
|
Highscore chart entry
|
|
====================================================================
|
|
*/
|
|
typedef struct {
|
|
char name[32];
|
|
int level;
|
|
int score;
|
|
int new_entry; /* newly entered the highscore */
|
|
} Chart_Entry;
|
|
/*
|
|
====================================================================
|
|
Levelset highscore chart.
|
|
====================================================================
|
|
*/
|
|
enum { CHART_ENTRY_COUNT = 10 };
|
|
typedef struct {
|
|
Chart_Entry entries[CHART_ENTRY_COUNT + 1]; /* last entry is space holder for new entry */
|
|
char *name;
|
|
} Set_Chart;
|
|
|
|
/*
|
|
====================================================================
|
|
Load highscore. If it doesn't exist try to create it in HI_DIR if
|
|
this fails fall back to ~/.lbreakout and create highscore there.
|
|
====================================================================
|
|
*/
|
|
void chart_load();
|
|
/*
|
|
====================================================================
|
|
Delete resources
|
|
====================================================================
|
|
*/
|
|
void chart_delete();
|
|
/*
|
|
====================================================================
|
|
Save chart in directory it was loaded from.
|
|
====================================================================
|
|
*/
|
|
void chart_save();
|
|
/*
|
|
====================================================================
|
|
Check if this player entered the highscore chart and update it.
|
|
====================================================================
|
|
*/
|
|
void chart_add( Set_Chart *chart, char *name, int level, int score );
|
|
/*
|
|
====================================================================
|
|
Sort chart with stable algorithm (bubble sort's ok) by wanted
|
|
value.
|
|
====================================================================
|
|
*/
|
|
enum { SORT_BY_LEVEL = 0, SORT_BY_SCORE };
|
|
void chart_sort( Set_Chart *chart, int type );
|
|
/*
|
|
====================================================================
|
|
Draw highscores centered in regio x,y,w,h
|
|
====================================================================
|
|
*/
|
|
void chart_show( Set_Chart *chart, int x, int y, int w, int h );
|
|
/*
|
|
====================================================================
|
|
Clear all new_entry flags (done before new players are added
|
|
to chart when game over).
|
|
====================================================================
|
|
*/
|
|
void chart_clear_new_entries();
|
|
/*
|
|
====================================================================
|
|
Query set chart by this name or if not found create a new one
|
|
by this name.
|
|
====================================================================
|
|
*/
|
|
Set_Chart* chart_set_query( char *name );
|
|
/*
|
|
====================================================================
|
|
Query chart by id. If id is invalid return 0.
|
|
====================================================================
|
|
*/
|
|
Set_Chart* chart_set_query_id( int id );
|