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-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);
}
|