summaryrefslogtreecommitdiff
path: root/src/screen/analyze.c
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2009-02-03 13:56:55 +0100
committerTomas Chvatal <scarabeus@gentoo.org>2009-02-03 13:56:55 +0100
commit87821f04c9565450d8e724be76993ae5ea2c20c4 (patch)
treecd98fd39a789464294fd05ae00eeea5bd9411138 /src/screen/analyze.c
parent509890f14896d2064916555c04a3bfeec537cb1d (diff)
Revert "Revert "First pass renaming sreen and widgets.""
This reverts commit 509890f14896d2064916555c04a3bfeec537cb1d.
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..516f7b9
--- /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 "label.h"
+#include "button.h"
+#include "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);
+}