summaryrefslogtreecommitdiff
path: root/src/screen/screen_credits.c
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2009-01-10 17:00:10 +0100
committerTomas Chvatal <scarabeus@gentoo.org>2009-01-10 17:00:10 +0100
commit509890f14896d2064916555c04a3bfeec537cb1d (patch)
tree02004c36772311bdc1ba6b9a2508b20691cca5c6 /src/screen/screen_credits.c
parent5855f591b6d509633e3730346e18122768ec6e04 (diff)
Revert "First pass renaming sreen and widgets."
This reverts commit 5855f591b6d509633e3730346e18122768ec6e04.
Diffstat (limited to 'src/screen/screen_credits.c')
-rw-r--r--src/screen/screen_credits.c163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/screen/screen_credits.c b/src/screen/screen_credits.c
new file mode 100644
index 0000000..a3ed787
--- /dev/null
+++ b/src/screen/screen_credits.c
@@ -0,0 +1,163 @@
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "main.h"
+#include "list.h"
+#include "textFile.h"
+
+#include "interface.h"
+#include "screen.h"
+#include "image.h"
+#include "hotKey.h"
+
+#ifndef NO_SOUND
+# include "music.h"
+#endif
+
+#include "screen_credits.h"
+
+#include "widget.h"
+#include "widget_image.h"
+#include "widget_label.h"
+#include "widget_button.h"
+
+static widget_t *image_backgorund;
+static widget_t *button_back;
+static list_t *listWidgetLabel;
+static textFile_t *textFile;
+static int offset;
+static int creditExists;
+
+static void hotkey_escape()
+{
+ setScreen("mainMenu");
+}
+
+void startScreenCredits()
+{
+#ifndef NO_SOUND
+ playMusic("menu", MUSIC_GROUP_BASE);
+#endif
+ offset = 0;
+
+ registerHotKey(SDLK_ESCAPE, hotkey_escape);
+}
+
+void drawScreenCredits()
+{
+ int i;
+
+ drawWidgetImage(image_backgorund);
+
+ drawWidgetButton(button_back);
+
+ for (i = 0; i < listWidgetLabel->count; i++) {
+ int z;
+
+ widget_t *this;
+
+ this = (widget_t *) listWidgetLabel->list[i];
+
+ z = this->y;
+ this->y += offset;
+
+ if (this->y > SCREEN_CREDITS_OFFSET_MIN && this->y < SCREEN_CREDITS_OFFSET_MAX) {
+ drawWidgetLabel(this);
+ }
+
+ this->y = z;
+ }
+
+}
+
+void eventScreenCredits()
+{
+ eventWidgetButton(button_back);
+
+ offset -= SCREEN_CREDITS_OFFSET_SPEED;
+
+ if (offset < SCREEN_CREDITS_OFFSET_RESTART) {
+ offset = 0;
+ }
+
+ //printf("offset = %d\n", offset);
+}
+
+void stopScreenCredits()
+{
+ unregisterHotKey(SDLK_ESCAPE);
+}
+
+static void eventWidget(void *p)
+{
+ widget_t *button;
+
+ button = (widget_t *) (p);
+
+ if (button == button_back) {
+ setScreen("mainMenu");
+ }
+}
+
+void initScreenCredits()
+{
+ image_t *image;
+ int i;
+
+ image = getImage(IMAGE_GROUP_BASE, "screen_main");
+ image_backgorund = newWidgetImage(0, 0, image);
+
+ button_back = newWidgetButton(_("back"), WINDOW_SIZE_X / 2 - WIDGET_BUTTON_WIDTH / 2,
+ WINDOW_SIZE_Y - 80, eventWidget);
+
+ listWidgetLabel = newList();
+
+ if (tryExistFile(PATH_DOC SCREEN_CREDITS_FILE) == 0) {
+ creditExists = 1;
+ textFile = loadTextFile(PATH_DOC SCREEN_CREDITS_FILE);
+
+ for (i = 0; i < textFile->text->count; i++) {
+ widget_t *label;
+ char *line;
+
+ line = (char *) textFile->text->list[i];
+
+ label = newWidgetLabel(line, WINDOW_SIZE_X / 2 - WINDOW_SIZE_X / 4,
+ (WINDOW_SIZE_Y - 100) + i * 20,
+ WIDGET_LABEL_LEFT);
+
+ addList(listWidgetLabel, label);
+ }
+ } else {
+ for (i = 0; i < 5; i++) {
+ creditExists = 0;
+ widget_t *label;
+ char line[STR_SIZE];
+
+ sprintf(line, _("Credit file not found... %s/%s"), PATH_DOC,
+ SCREEN_CREDITS_FILE);
+
+ label = newWidgetLabel(line, WINDOW_SIZE_X / 2,
+ (WINDOW_SIZE_Y - 100) + i * 20,
+ WIDGET_LABEL_CENTER);
+
+ addList(listWidgetLabel, label);
+ }
+ }
+
+ registerScreen(newScreen ("credits", startScreenCredits, eventScreenCredits,
+ drawScreenCredits, stopScreenCredits));
+}
+
+void quitScreenCredits()
+{
+ destroyWidgetImage(image_backgorund);
+
+ destroyWidgetButton(button_back);
+ destroyListItem(listWidgetLabel, destroyWidgetLabel);
+
+ if (creditExists) {
+ destroyTextFile(textFile);
+ }
+}