summaryrefslogtreecommitdiff
path: root/src/screen/analyze.c
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2008-12-11 19:38:00 +0100
committerTomas Chvatal <scarabeus@gentoo.org>2008-12-11 19:38:00 +0100
commit3ba6105170ecac2fb124d9eb7e81ba72dd4700b8 (patch)
treeec30e2b1dda198c9646ea3447308368bbe334500 /src/screen/analyze.c
parentb2d2cf4f53748051ace835d27564cb2922c13db9 (diff)
First pass for renaming screen/widget.
Diffstat (limited to 'src/screen/analyze.c')
-rw-r--r--src/screen/analyze.c185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/screen/analyze.c b/src/screen/analyze.c
new file mode 100644
index 0000000..9af6aee
--- /dev/null
+++ b/src/screen/analyze.c
@@ -0,0 +1,185 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "main.h"
+#include "list.h"
+
+#include "interface.h"
+#include "screen.h"
+#include "image.h"
+#include "hotKey.h"
+
+#ifndef NO_SOUND
+# include "music.h"
+#endif
+
+#include "mainMenu.h"
+#include "analyze.h"
+
+#include "widget.h"
+#include "widget_label.h"
+#include "widget_button.h"
+#include "widget_image.h"
+
+static widget_t *image_backgorund;
+
+static list_t *listWidgetLabelName;
+static list_t *listWidgetLabelScore;
+static list_t *listAnalyze;
+static widget_t *widgetLabelMsg;
+
+static widget_t *button_ok;
+
+static analyze_t *newAnalyze(char *name, int score)
+{
+ analyze_t *new;
+
+ new = malloc(sizeof(analyze_t));
+ new->name = strdup(name);
+ new->score = score;
+
+ return new;
+}
+
+static void destroyAnalyze(analyze_t * p)
+{
+ free(p->name);
+ free(p);
+}
+
+static void hotkey_escape()
+{
+ setScreen("mainMenu");
+}
+
+void startScreenAnalyze()
+{
+#ifndef NO_SOUND
+ playMusic("menu", MUSIC_GROUP_BASE);
+#endif
+
+ registerHotKey(SDLK_ESCAPE, hotkey_escape);
+}
+
+void drawScreenAnalyze()
+{
+ widget_t *this;
+ int i;
+
+ drawWidgetImage(image_backgorund);
+
+ for (i = 0; i < listWidgetLabelName->count; i++) {
+ this = (widget_t *) (listWidgetLabelName->list[i]);
+ drawWidgetLabel(this);
+ }
+
+ for (i = 0; i < listWidgetLabelScore->count; i++) {
+ this = (widget_t *) (listWidgetLabelScore->list[i]);
+ drawWidgetLabel(this);
+ }
+
+ drawWidgetLabel(widgetLabelMsg);
+ drawWidgetButton(button_ok);
+}
+
+void eventScreenAnalyze()
+{
+ eventWidgetButton(button_ok);
+}
+
+void stopScreenAnalyze()
+{
+ destroyWidgetLabel(widgetLabelMsg);
+ widgetLabelMsg = newWidgetLabel("", WINDOW_SIZE_X / 2, 250, WIDGET_LABEL_CENTER);
+
+ unregisterHotKey(SDLK_ESCAPE);
+}
+
+static void eventWidget(void *p)
+{
+ widget_t *button;
+
+ button = (widget_t *) (p);
+
+ if (button == button_ok) {
+ setScreen("mainMenu");
+ }
+}
+
+void restartAnalyze()
+{
+ destroyListItem(listWidgetLabelName, destroyWidgetLabel);
+ destroyListItem(listWidgetLabelScore, destroyWidgetLabel);
+ destroyListItem(listAnalyze, destroyAnalyze);
+
+ listWidgetLabelName = newList();
+ listWidgetLabelScore = newList();
+ listAnalyze = newList();
+}
+
+void addAnalyze(char *name, int score)
+{
+ addList(listAnalyze, newAnalyze(name, score));
+}
+
+void setMsgToAnalyze(char *msg)
+{
+ destroyWidgetLabel(widgetLabelMsg);
+ widgetLabelMsg = newWidgetLabel(msg, WINDOW_SIZE_X / 2, 250, WIDGET_LABEL_CENTER);
+}
+
+void endAnalyze()
+{
+ int i;
+
+ for (i = 0; i < listAnalyze->count; i++) {
+ analyze_t *this;
+ char *str;
+
+ this = (analyze_t *) (listAnalyze->list[i]);
+
+ addList(listWidgetLabelName, newWidgetLabel(this->name, 100,
+ 200 + 20 * i, WIDGET_LABEL_LEFT));
+
+ str = getString(this->score);
+
+ addList(listWidgetLabelScore, newWidgetLabel(str, WINDOW_SIZE_X - 100,
+ 200 + 20 * i, WIDGET_LABEL_RIGHT));
+
+ free(str);
+ }
+}
+
+void initScreenAnalyze()
+{
+ image_t *image;
+
+ image = getImage(IMAGE_GROUP_BASE, "main");
+ image_backgorund = newWidgetImage(0, 0, image);
+
+ listWidgetLabelName = newList();
+ listWidgetLabelScore = newList();
+ listAnalyze = newList();
+
+ button_ok = newWidgetButton("OK", WINDOW_SIZE_X / 2 - WIDGET_BUTTON_WIDTH / 2,
+ WINDOW_SIZE_Y - 100, eventWidget);
+
+ registerScreen( newScreen("analyze", startScreenAnalyze, eventScreenAnalyze,
+ drawScreenAnalyze, stopScreenAnalyze));
+
+ widgetLabelMsg = newWidgetLabel("", WINDOW_SIZE_X / 2, 250, WIDGET_LABEL_CENTER);
+}
+
+void quitScreenAnalyze()
+{
+ destroyWidgetImage(image_backgorund);
+
+ destroyListItem(listWidgetLabelName, destroyWidgetLabel);
+ destroyListItem(listWidgetLabelScore, destroyWidgetLabel);
+ destroyListItem(listAnalyze, destroyAnalyze);
+
+ destroyWidgetButton(button_ok);
+ destroyWidgetLabel(widgetLabelMsg);
+}