summaryrefslogtreecommitdiff
path: root/src/screen_credits.c
blob: 7cd44ea1f311a6770cc513bd99be1d8abce99483 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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-80, 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);
}