diff options
Diffstat (limited to 'src/screen_credits.c')
| -rw-r--r-- | src/screen_credits.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/screen_credits.c b/src/screen_credits.c new file mode 100644 index 0000000..17c1bfe --- /dev/null +++ b/src/screen_credits.c @@ -0,0 +1,125 @@ + +#include <stdio.h> +#include <assert.h> + +#include "main.h" +#include "interface.h" +#include "list.h" +#include "textFile.h" +#include "screen.h" +#include "image.h" +#include "music.h" +#include "screen_credits.h" + +#include "widget_image.h" +#include "widget_label.h" +#include "widget_button.h" + +static widget_image_t *image_backgorund; +static widget_button_t *button_back; +static list_t *listWidgetLabel; +static textFile_t *textFile; +static int offset; + +void startScreenCredits() +{ + playMusic("menu", MUSIC_GROUP_BASE); + offset = 0; +} + +void drawScreenCredits() +{ + int i; + + drawWidgetImage(image_backgorund); + + drawWidgetButton(button_back); + + for( i = 0 ; i < listWidgetLabel->count ; i++ ) + { + int z; + + widget_label_t *this; + this = (widget_label_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() +{ +} + +static void eventWidget(void *p) +{ + widget_button_t *button; + + button = (widget_button_t *)(p); + + if( button == button_back ) + { + setScreen("mainMenu"); + } +} + +void initScreenCredits() +{ + SDL_Surface *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-100, eventWidget); + + listWidgetLabel = newList(); + textFile = loadTextFile(PATH_DATA SCREEN_CREDITS_FILE); + + for( i = 0 ; i < textFile->text->count ; i++ ) + { + widget_label_t *label; + char *line; + + line = (char *)textFile->text->list[i]; + 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); + destroyTextFile(textFile); +} + |