diff --git a/bin/hex b/bin/hex index 63f8dd6..ebc1734 100644 Binary files a/bin/hex and b/bin/hex differ diff --git a/makefile b/makefile index a6715db..db53758 100644 --- a/makefile +++ b/makefile @@ -5,7 +5,7 @@ LDFLAGS=-std=c99 -lm `sdl-config --cflags --libs` -lSDL_ttf -lSDL_gfx -lSDL_mixe EXEC=bin/hex SRCDIR=src OBJDIR=obj -SRC=hex.c affichage_plateau.c action_plateau.c affichage_menu_principal.c window.c param.c en_jeu.c menu_principal.c draw.c action_menu_principal.c sound.c testJeu.c sauvegarde.c +SRC=hex.c affichage_plateau.c action_plateau.c affichage_menu_principal.c window.c param.c en_jeu.c menu_principal.c draw.c action_menu_principal.c sound.c testJeu.c sauvegarde.c scrolling.c #$(wildcard src/*.c) OBJ=$(SRC:.c=.o) diff --git a/src/action_menu_principal.c b/src/action_menu_principal.c index 436d1c2..1737601 100644 --- a/src/action_menu_principal.c +++ b/src/action_menu_principal.c @@ -9,11 +9,12 @@ #include #include +#include +#include + #include "globals.h" #include "affichage_menu_principal.h" #include "sound.h" -#include "SDL/SDL_mixer.h" - void deplacement_menu_mouse (menu_t m, const SDL_Event* event) { char* entries [3][3] = {{"", "Charger", ""}, {"Jouer", "HEX", "Quitter"}, {"", "Options", ""}}; diff --git a/src/affichage_menu_principal.c b/src/affichage_menu_principal.c index 9ae89c3..1fa7531 100644 --- a/src/affichage_menu_principal.c +++ b/src/affichage_menu_principal.c @@ -259,137 +259,6 @@ void Affiche_menu_options (SDL_Surface* window, int rayon, int l) SDL_Flip (window); } -/* Scroll */ -/* Interne */ - -int Cadre_scroll (SDL_Surface* window) -{ - int size = window->h / 24; - SDL_Rect bande = {0, window->h * 45. / 48, window->w, size}; - SDL_FillRect (window, &bande, param->in); - SDL_Flip (window); - return size; -} - -void create_messages_surfaces (scrolling_t s, int size, int bpp) -{ - char* message [NBMESS] = {"Crédits : petite bite & gros chakal Corp.", "Breaking News : Le Soudan en manque de soudeurs", "lmqsdkmq", "There is nothing to see here ... BASTARD !"}; - // Also modify NBMESS - SDL_Color c [NBMESS] = {{170,10,107}, {60,255,1}, {0, 0, 0}, {200, 180, 201}}; - for (int i = 0; i < NBMESS; ++i) - { - assert (message [i] != NULL); - SDL_Surface* texte = TTF_RenderUTF8_Blended(param->font, message [i], c [i]);//, param->rgb_ex); - Redim_entry(&texte, size, texte->w); - s->msg [i] = SDL_CreateRGBSurface (SDL_HWSURFACE, texte->w + 1, texte->h, bpp, 0, 0, 0, 0); - SDL_Rect temp = {0, 0, s->msg [i]->w, s->msg [i]->h}; - SDL_FillRect (s->msg [i], &temp, param->in); - SDL_BlitSurface (texte, NULL, s->msg [i], &temp); - SDL_FreeSurface (texte); - } -} - -void nb_msg_max (scrolling_t s, SDL_Surface* window) -{ - s->nb_msg_max = 1; - for (int i = 0; i < NBMESS; ++i) - { - int nb_msg = 1; - int taille_cumule = s->msg [i]->w; - while (window->w > taille_cumule) - { - taille_cumule += s->msg [(i + nb_msg)%NBMESS]->w + 10; - ++nb_msg; - } - if (s->nb_msg_max < nb_msg) - s->nb_msg_max = nb_msg; - } - ++s->nb_msg_max; - while (s->nb_msg_max % NBMESS != 0) - ++s->nb_msg_max; -} - -void init_pos_dim (scrolling_t s, SDL_Surface* window) -{ - s->pos = malloc (sizeof (SDL_Rect) * s->nb_msg_max); - s->dim = malloc (sizeof (SDL_Rect) * s->nb_msg_max); - for (int i = 0; i < s->nb_msg_max; ++i) - { - s->pos [i].x = window->w; - s->pos [i].y = window->h * 45. / 48; - s->dim [i].x = 0; - s->dim [i].y = 0; - s->dim [i].w = s->msg [i%NBMESS]->w; - s->dim [i].h = s->msg [i%NBMESS]->h; - } -} - -/* Externe */ - -scrolling_t init_scroll (SDL_Surface* window) -{ - scrolling_t s = malloc (sizeof (struct s_scrolling)); - - int size = Cadre_scroll (window); - - /* Creation surfaces */ - create_messages_surfaces (s, size, window->format->BitsPerPixel); - - nb_msg_max (s, window); - - init_pos_dim (s, window); - - s->first_msg = 0; - s->nb_msg = 1; - return s; -} - -void free_scroll (scrolling_t s) -{ - free (s->pos); - free (s->dim); - - for (int i = 0; i < NBMESS; ++i) - SDL_FreeSurface(s->msg [i]); - - free (s); -} - -SDL_Event scroll_msg (SDL_Surface* window, scrolling_t s) -{ - int t0 = SDL_GetTicks(); - SDL_Event event = {0}; - bool delay; - while ((delay = !SDL_PollEvent(&event)) && SDL_GetTicks() - t0 < 200) - { - for (int i = s->first_msg; i < s->first_msg + s->nb_msg; ++i) - { - int c = i % (s->nb_msg_max); - SDL_BlitSurface (s->msg [c % NBMESS], s->dim + c, window, s->pos + c); - s->pos [c].x -= 1; - if (s->pos [c].x == -1) - s->dim [c].x += 1; - } - - if (s->dim [s->first_msg].x == s->msg [s->first_msg%NBMESS]->w) - { - s->dim [s->first_msg].x = 0; - s->pos [s->first_msg].x = window->w; - s->first_msg = (s->first_msg + 1) % (s->nb_msg_max); - --(s->nb_msg); - } - - int last = (s->first_msg + s->nb_msg - 1) % (s->nb_msg_max); - if (s->pos[last].x + s->msg [last%NBMESS]->w - s->dim[last].x < window->w - 20 && s->nb_msg < s->nb_msg_max) - s->nb_msg = (s->nb_msg + 1) % ((s->nb_msg_max) + 1); - - SDL_Flip(window); - if (delay) - SDL_Delay(5); - } - return event; -} - void banane (SDL_Surface* window) { SDL_Surface* gif [8]; diff --git a/src/affichage_menu_principal.h b/src/affichage_menu_principal.h index 1e11dbe..71f7d34 100644 --- a/src/affichage_menu_principal.h +++ b/src/affichage_menu_principal.h @@ -4,27 +4,12 @@ #include #include "globals.h" -#define NBMESS 4 - -typedef struct s_scrolling { - SDL_Surface* msg [NBMESS]; - SDL_Rect* pos; - SDL_Rect* dim; - int first_msg, nb_msg, nb_msg_max; -}* scrolling_t; - void Affiche_menu_principal (menu_t m); void Affiche_menu_options (SDL_Surface* window, int rayon, int l); void Affiche_entry (menu_t m, char* entry, bool pointe); -scrolling_t init_scroll (SDL_Surface* window); - -void free_scroll (scrolling_t s); - -SDL_Event scroll_msg (SDL_Surface* window, scrolling_t s); - void east1 (SDL_Surface* window, SDLKey key); #endif /* _AFFICHAGE_MENU_PRICIPAL_ */ diff --git a/src/affichage_plateau.c b/src/affichage_plateau.c index 476b7a3..2798a1a 100644 --- a/src/affichage_plateau.c +++ b/src/affichage_plateau.c @@ -12,22 +12,27 @@ void Define_rayon (plateau_t p) { - int decal_droite = 40; - p->marge_vert = p->window->h / 6; - int width = p->window->w - 2 * decal_droite; + p->marge_hori = p->window->w / 96; + p->marge_vert = p->window->h / 12; + int width = p->window->w - 2 * p->marge_hori; int height = p->window->h - 2 * p->marge_vert; - int r1 = (height - (NBSIDE - 1)) / (.5 + NBSIDE * 1.5); - int r2 = width / ((3 * NBSIDE - 1) * cos (PI/6)); + int r1 = height / (.5 + NBSIDE * 1.5); + int r2 = width / ((NBSIDE + NBSIDE / 2.) * RAC3); if (r1 < r2) { p->r = r1 - r1%2; - p->marge_hori = p->window->w - decal_droite - 1.5 * (NBSIDE) * 2 * p->r * cos(PI/6); + int l = p->r * RAC3; + p->marge_hori = (p->window->w - NBSIDE * l - NBSIDE * l / 2) / 2; + p->marge_vert = (p->window->h - 1.5 * (NBSIDE) * p->r - p->r / 2) / 2 - p->window->h / 24; } else { p->r = r2 - r2%2; - p->marge_hori = p->window->w - decal_droite - 1.5 * (NBSIDE) * 2 * p->r * cos(PI/6); + int l = p->r * RAC3; + p->marge_hori = (p->window->w - NBSIDE * l - NBSIDE * l / 2) / 2; + p->marge_vert = (p->window->h - 1.5 * (NBSIDE) * p->r - p->r / 2) / 2; } + printf ("%d - %d - %d\n", p->r, r1, r2); } void Bordures (plateau_t p) @@ -85,11 +90,6 @@ void Bordures (plateau_t p) y [0] -= 2 * RAC3 + 1; y [NBSIDE * 4 - 1] -= 1; - for (int i = 0; i < NBSIDE * 2; ++i) - { - printf ("%d - %d - %d - %d\n", x [i], x [NBSIDE * 2 + i], y [i], y [NBSIDE * 2 + i]); - } - filledPolygonRGBA(p->window, x, y, NBSIDE * 4, param->rgb_j1.r, param->rgb_j1.g, param->rgb_j1.b, 255); dx = p->marge_hori + p->r - p->l / 2 + NBSIDE * (p->l + 1) - p->l / 2 - 1; @@ -109,68 +109,6 @@ void Bordures (plateau_t p) filledPolygonRGBA(p->window, x, y, NBSIDE * 4 + 2, param->rgb_j1.r, param->rgb_j1.g, param->rgb_j1.b, 255); - - /*for (int i = 0; i < NBSIDE * 2 + 1; ++i) - { - printf ("%d - %d - %d - %d\n", x [i], x [NBSIDE * 2 + 1 + i], y [i], y [NBSIDE * 2 + 1 + i]); - }*/ - - /*// (horizontales) player 2 - int l = (cos (PI / 6) - cos (5 * PI / 6)) * p->r; - int dx = p->marge_hori+ p->r - l / 2; - Sint16 x1 [5] = {dx, - dx - l / 2, - dx, - dx + NBSIDE * (l + 1) - .25 * l, - dx + NBSIDE * (l + 1)}; - Sint16 y1 [5] = {p->marge_vert - p->r / 2, - p->marge_vert, - p->marge_vert + p->r / 2, - p->marge_vert + p->r / 2, - p->marge_vert - p->r / 2}; - filledPolygonRGBA(p->window, x1, y1, 5, param->rgb_j2.r, param->rgb_j2.g, param->rgb_j2.b, 255); - dx += (NBSIDE - 1) * (l + 1) / 2; - Sint16 x2 [5] = {dx + .25 * l, - dx + NBSIDE * (l + 1), - dx + NBSIDE * (l + 1) + l / 2, - dx + NBSIDE * (l + 1), - dx}; - int dy = p->marge_vert + 1.5 * p->r * NBSIDE + .5 * p->r; - Sint16 y2 [5] = {dy - p->r / 2, - dy - p->r / 2, - dy, - dy + p->r / 2, - dy + p->r / 2}; - filledPolygonRGBA(p->window, x2, y2, 5, param->rgb_j2.r, param->rgb_j2.g, param->rgb_j2.b, 255); - Sint16 x3 [5] = {x1 [1], - x1 [1] - l / 2, - x2 [4], - x2 [0], - x1 [2]}; - Sint16 y3 [5] = {y1 [1], - y1 [2], - y2 [4], - y2 [0], - y1 [2]}; - filledPolygonRGBA(p->window, x3, y3, 5, param->rgb_j1.r, param->rgb_j1.g, param->rgb_j1.b, 255);*/ - - /*x [0] = ; - x [1] = ; - x [2] = ; - x [3] = ; - x [4] = ; - y [0] = ; - y [1] = ; - y [2] = ; - y [3] = ; - y [4] = ; - pos.x += (NBSIDE - 1) * (l + 1) / 2.; - pos.y += 1.5 * p->r * NBSIDE + .5 * p->r; - SDL_FillRect (p->window, &pos, param->j2); - - // (Verticales) player 1 - filledPolygonRGBA(p->window, x, y, 4, 255, 0, 255, 255);*/ - SDL_Flip (p->window); } diff --git a/src/en_jeu.c b/src/en_jeu.c index 6f1b1f8..fce7976 100644 --- a/src/en_jeu.c +++ b/src/en_jeu.c @@ -13,6 +13,7 @@ #include "window.h" #include "param.h" #include "sauvegarde.h" +#include "scrolling.h" void en_jeu (SDL_Surface* window, int* hist) { @@ -24,10 +25,11 @@ void en_jeu (SDL_Surface* window, int* hist) plateau = load_plateau (window, hist); vec2 c = {0, 0}; bool end = false; + scrolling_t s = init_dynamic_scroll (window, plateau); while (!end) { - SDL_Event event; - SDL_WaitEvent (&event); + SDL_Event event = dynamic_scroll (window, s, plateau); + //SDL_WaitEvent (&event); switch (event.type) { case SDL_VIDEORESIZE: diff --git a/src/hex.c b/src/hex.c index 45b08e3..1d6a4c8 100644 --- a/src/hex.c +++ b/src/hex.c @@ -40,7 +40,7 @@ int main(int argc, char **argv) end = 1; } } - //en_jeu (window); + //en_jeu (window, NULL); save_param(window); Free_window (window); return 0; diff --git a/src/menu_principal.c b/src/menu_principal.c index 343bafb..de4472c 100644 --- a/src/menu_principal.c +++ b/src/menu_principal.c @@ -4,6 +4,7 @@ #include "affichage_menu_principal.h" #include "globals.h" #include "window.h" +#include "scrolling.h" menu_t init_menu_principal (SDL_Surface* window) { @@ -31,8 +32,11 @@ void free_menu (menu_t m) scrolling_t resize_scroll (SDL_Surface* w, scrolling_t s) { + char** msg = s->msgstr; + SDL_Color* c = s->c; + int nb = s->nb_surf; free_scroll (s); - s = init_scroll (w); + s = init_scroll (w, msg, c, nb); return s; } @@ -88,7 +92,9 @@ int menu_principal (SDL_Surface* window) Affiche_menu_principal(m); int retour; bool end = 0; - scrolling_t scroll = init_scroll (window); + char* message [] = {"Crédits : petite bite & gros chakal Corp.", "Breaking News : Le Soudan en manque de soudeurs", "lmqsdkmq", "There is nothing to see here ... BASTARD !"}; + SDL_Color c [] = {{170,10,107}, {60,255,1}, {0, 0, 0}, {200, 180, 201}}; + scrolling_t scroll = init_scroll (window, message, c, 4); while (!end) { SDL_Event event; diff --git a/src/sauvegarde.c b/src/sauvegarde.c index 5453cd3..adb716f 100644 --- a/src/sauvegarde.c +++ b/src/sauvegarde.c @@ -92,21 +92,17 @@ int chargement(char *nom , int **tab, int *IA) return ERROR_OPENFILE; a=fscanf(f_chargement, "%d", IA); - printf ("1\n"); if(!a || *IA>2 || *IA<0){ return ERROR_IA; } - printf ("2\n"); fscanf(f_chargement, "%d", &taille); - if(taille<1){ + if(taille<1 || taille > 25){ return ERROR_SIZE; } - printf ("3\n"); t=malloc(sizeof(int)*taille*taille); a=1, i = -1; - printf ("4\n"); while(a>0){ i++; a=fscanf(f_chargement, "%d" , &t[i]); diff --git a/src/scrolling.c b/src/scrolling.c new file mode 100644 index 0000000..e4d92a8 --- /dev/null +++ b/src/scrolling.c @@ -0,0 +1,239 @@ +/* + * scrolling.c + * + * Created on: 8 mai 2016 + * Author: nathan + */ + +#include "scrolling.h" + +#include +#include +#include +#include +#include + +/* Scroll */ +/* Interne */ + +void Redim (SDL_Surface** entry, int size) +{ + SDL_Surface* entry_dim; + entry_dim = rotozoomSurface(*entry, 0, size/(float)(*entry)->h, 1); + SDL_FreeSurface (*entry); + *entry = entry_dim; +} + +int Cadre_scroll (SDL_Surface* window) +{ + int size = window->h / 24; + SDL_Rect bande = {0, window->h * 45. / 48, window->w, size}; + SDL_FillRect (window, &bande, param->in); + SDL_Flip (window); + return size; +} + +void create_messages_surfaces (scrolling_t s, int size, int bpp) +{ + s->msg = malloc (sizeof (SDL_Surface*) * s->nb_surf); + for (int i = 0; i < s->nb_surf; ++i) + { + SDL_Surface* texte = TTF_RenderUTF8_Blended(param->font, s->msgstr [i], s->c [i]);//, param->rgb_ex); + Redim(&texte, size); + s->msg [i] = SDL_CreateRGBSurface (SDL_HWSURFACE, texte->w + 2, texte->h, bpp, 0, 0, 0, 0); + SDL_Rect temp = {0, 0, s->msg [i]->w, s->msg [i]->h}; + SDL_FillRect (s->msg [i], &temp, param->in); + SDL_BlitSurface (texte, NULL, s->msg [i], &temp); + SDL_FreeSurface (texte); + } +} + +SDL_Surface* create_one_surface (char* msgstr, SDL_Color c, int size, int bpp) +{ + SDL_Surface* texte = TTF_RenderUTF8_Blended(param->font, msgstr, c); + Redim(&texte, size); + SDL_Surface *msg = SDL_CreateRGBSurface (SDL_HWSURFACE, texte->w + 1, texte->h, bpp, 0, 0, 0, 0); + SDL_Rect temp = {0, 0, msg->w, msg ->h}; + SDL_FillRect (msg, &temp, param->in); + SDL_BlitSurface (texte, NULL, msg, &temp); + SDL_FreeSurface (texte); + return msg; + +} + +void nb_msg_max (scrolling_t s, SDL_Surface* window) +{ + s->nb_msg_max = 1; + for (int i = 0; i < s->nb_surf; ++i) + { + int nb_msg = 1; + int taille_cumule = s->msg [i]->w; + while (window->w > taille_cumule) + { + taille_cumule += s->msg [(i + nb_msg)%s->nb_surf]->w + 10; + ++nb_msg; + } + if (s->nb_msg_max < nb_msg) + s->nb_msg_max = nb_msg; + } + ++s->nb_msg_max; + while (s->nb_msg_max % s->nb_surf != 0) + ++s->nb_msg_max; +} + +void init_pos_dim (scrolling_t s, SDL_Surface* window) +{ + s->pos = malloc (sizeof (SDL_Rect) * s->nb_msg_max); + s->dim = malloc (sizeof (SDL_Rect) * s->nb_msg_max); + for (int i = 0; i < s->nb_msg_max; ++i) + { + s->pos [i].x = window->w; + s->pos [i].y = window->h * 45. / 48; + s->dim [i].x = 0; + s->dim [i].y = 0; + s->dim [i].w = s->msg [i%s->nb_surf]->w; + s->dim [i].h = s->msg [i%s->nb_surf]->h; + } +} + +/* Externe */ + +scrolling_t init_scroll (SDL_Surface* window, char** msg, SDL_Color* c, int nb_mess) +{ + scrolling_t s = malloc (sizeof (struct s_scrolling)); + + int size = Cadre_scroll (window); + s->nb_surf = nb_mess; + s->msgstr = msg; + s->c = c; + /* Creation surfaces */ + create_messages_surfaces (s, size, window->format->BitsPerPixel); + + nb_msg_max (s, window); + + init_pos_dim (s, window); + + s->first_msg = 0; + s->nb_msg = 1; + return s; +} + +void free_scroll (scrolling_t s) +{ + free (s->pos); + free (s->dim); + + for (int i = 0; i < s->nb_surf; ++i) + SDL_FreeSurface(s->msg [i]); + + free (s->msg); + free (s); +} + +SDL_Event scroll_msg (SDL_Surface* window, scrolling_t s) +{ + int t0 = SDL_GetTicks(); + SDL_Event event = {0}; + bool delay; + while ((delay = !SDL_PollEvent(&event)) && SDL_GetTicks() - t0 < 200) + { + for (int i = s->first_msg; i < s->first_msg + s->nb_msg; ++i) + { + int c = i % (s->nb_msg_max); + SDL_BlitSurface (s->msg [c % s->nb_surf], s->dim + c, window, s->pos + c); + s->pos [c].x -= 1; + if (s->pos [c].x == -1) + s->dim [c].x += 1; + } + + if (s->dim [s->first_msg].x == s->msg [s->first_msg%s->nb_surf]->w) + { + s->dim [s->first_msg].x = 0; + s->pos [s->first_msg].x = window->w; + s->first_msg = (s->first_msg + 1) % (s->nb_msg_max); + --(s->nb_msg); + } + + int last = (s->first_msg + s->nb_msg - 1) % (s->nb_msg_max); + if (s->pos[last].x + s->msg [last%s->nb_surf]->w - s->dim[last].x < window->w - 20 && s->nb_msg < s->nb_msg_max) + s->nb_msg = (s->nb_msg + 1) % ((s->nb_msg_max) + 1); + + SDL_Flip(window); + if (delay) + SDL_Delay(5); + } + return event; +} + +d_scrolling_t init_dynamic_scroll (SDL_Surface* window, plateau_t p) +{ + d_scrolling_t d = malloc (sizeof (struct s_d_scrolling)); + d->s = malloc (sizeof (struct s_scrolling)); + char* msg [2] = {"Au tour du Joueur 2", "Au tour du Joueur 1"}; + SDL_Color c [2] = {param->rgb_j2, param->rgb_j1}; + + int size = Cadre_scroll (window); + d->s->nb_surf = 2; + d->s->c = c; + d->s->msgstr = msg; + create_messages_surfaces (d->s, size, window->format->BitsPerPixel); + + d->id = 0; + d->precedent = NULL; + + nb_msg_max (d->s, window); + + SDL_Surface* j1 = d->s->msg [1]; + + char new [50] = "Dernier coup : joueur 2 en 00 - 00"; + d->s->msg[1] = create_one_surface (new, param->rgb_j1, d->s->msg[0]->h, window->format->BitsPerPixel); + + + init_pos_dim (d->s, window); + + d->s->first_msg = 0; + d->s->nb_msg = 1; + + d->s->msg [1] = j1; + d->s->nb_surf = 1; + + return d; +} + +SDL_Event dynamic_scroll (SDL_Surface* window, d_scrolling_t d, plateau_t p) +{ + SDL_Surface* j1 = d->s->msg [1]; + SDL_Surface* j2 = d->s->msg [0]; + if (p->nb_coups != 0) + { + if (d->id != p->nb_coups%2) + { + d->s->nb_surf = 2; + Cadre_scroll (window); + d->id = !d->id; + char new [50]; + sprintf (new, "Dernier coup : joueur %d en %2d - %2d", PLAYER(!p->player), p->hist[p->nb_coups - 1] / NBSIDE + 1, p->hist[p->nb_coups - 1] % NBSIDE + 1); + if (p->player) + d->s->msg[1] = create_one_surface (new, param->rgb_j1, d->s->msg[0]->h, window->format->BitsPerPixel); + else + d->s->msg[1] = create_one_surface (new, param->rgb_j2, d->s->msg[0]->h, window->format->BitsPerPixel); + } + else + d->s->msg [1] = d->precedent; + } + + if (PLAYER(p->player) == J1) + d->s->msg [0] = j1; + SDL_Event e = scroll_msg (window, d->s); + + if (p->nb_coups != 0) + { + if (d->precedent != NULL && d->precedent != d->s->msg [1]) + SDL_FreeSurface (d->precedent); + d->precedent = d->s->msg [1]; + } + d->s->msg [1] = j1; + d->s->msg [0] = j2; + + return e; +} diff --git a/src/scrolling.h b/src/scrolling.h new file mode 100644 index 0000000..0d05a2c --- /dev/null +++ b/src/scrolling.h @@ -0,0 +1,42 @@ +/* + * scrolling.h + * + * Created on: 8 mai 2016 + * Author: nathan + */ + +#ifndef _SCROLLING_H_ +#define _SCROLLING_H_ + +#include +#include "globals.h" + +typedef struct s_scrolling* scrolling_t; + +struct s_scrolling{ + char** msgstr; + SDL_Color* c; + SDL_Surface** msg; + int nb_surf; + SDL_Rect* pos; + SDL_Rect* dim; + int first_msg, nb_msg, nb_msg_max; +}; + +typedef struct s_d_scrolling{ + scrolling_t s; + SDL_Surface* precedent; + bool id; +}* d_scrolling_t; + +scrolling_t init_scroll (SDL_Surface* window, char** msg, SDL_Color* c, int nb_mess); + +void free_scroll (scrolling_t s); + +SDL_Event scroll_msg (SDL_Surface* window, scrolling_t s); + +d_scrolling_t init_dynamic_scroll (SDL_Surface* window, plateau_t p); + +SDL_Event dynamic_scroll (SDL_Surface* window, d_scrolling_t d, plateau_t p); + +#endif /* _SCROLLING_H_ */ diff --git a/src/sound.c b/src/sound.c index 194350c..720e171 100644 --- a/src/sound.c +++ b/src/sound.c @@ -13,7 +13,7 @@ void Load_sound (void) { param->music_vol = .5 * MIX_MAX_VOLUME; param->music = Mix_LoadMUS ("ressources/theme.mp3"); - Mix_VolumeMusic (param->music_vol);//param->music_vol); + Mix_VolumeMusic (0);//param->music_vol); param->chunk_vol = .25 * MIX_MAX_VOLUME; printf ("%d\n", param->chunk_vol);