1 /* Pongix - clone of the "Pong" video game with net support
2 * Copyright (C) 2005 - Hugo Ruscitti (see AUTHORS file)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #include "paleta.h"
20 #include "mundo.h"
21 #include "juego.h"
22
paleta_iniciar(int jugador,struct juego * juego)23 Paleta * paleta_iniciar (int jugador, struct juego * juego)
24 {
25 Paleta * paleta;
26 paleta = (Paleta * )malloc (sizeof (Paleta));
27
28 if ( paleta == NULL)
29 {
30 printf("Error : Paleta\n");
31 return NULL;
32 }
33
34 if (jugador == 1 )
35 {
36 paleta->x = 20;
37 paleta->up = SDLK_w;
38 paleta->down = SDLK_s;
39 }
40 else
41 {
42 paleta->x = 620;
43 paleta->up = SDLK_UP;
44 paleta->down = SDLK_DOWN;
45 }
46
47 paleta->dy = 0;
48 paleta->y = 260;
49 paleta->juego = juego;
50
51 paleta->ima = cargar_imagen ("paleta.bmp");
52
53 if (paleta->ima == NULL )
54 {
55 printf("Error : %s\n", SDL_GetError());
56 return NULL;
57
58 }
59
60 paleta->jugador = jugador;
61
62 return paleta;
63 }
64
65
paleta_reiniciar(Paleta * data)66 void paleta_reiniciar (Paleta * data)
67 {
68 data->y = 260;
69 }
70
71
paleta_imprimir(Paleta * data,struct mundo * mundo)72 void paleta_imprimir (Paleta * data, struct mundo * mundo)
73 {
74 SDL_Rect rect = { data->x - data->ima->w / 2, \
75 data->y - data->ima->h / 2, 0, 0 };
76
77 SDL_BlitSurface (data->ima, NULL, mundo->screen, &rect);
78 dirty_agregar (mundo->dirty, rect);
79 }
80
paleta_terminar(Paleta * data)81 void paleta_terminar (Paleta * data)
82 {
83 SDL_FreeSurface (data->ima);
84 free (data);
85 }
86
87
paleta_manejar_con_teclado(Paleta * data,Uint8 * teclas)88 void paleta_manejar_con_teclado (Paleta * data, Uint8 * teclas)
89 {
90 }
91
paleta_recibir_pos(Paleta * data,TCPsocket origen)92 void paleta_recibir_pos (Paleta * data, TCPsocket origen)
93 {
94 char buffer [5];
95
96 if (SDLNet_TCP_Recv (origen, buffer, 5) < 5)
97 {
98 printf ("Fall� al recibir pos\n");
99 // SDLNet_TCP_Close (origen);
100 mundo_cambiar_estado (data->juego->mundo, MENU);
101 return;
102 }
103
104 data->y = atoi (buffer);
105 }
106
paleta_enviar_pos(Paleta * data,TCPsocket destino)107 void paleta_enviar_pos (Paleta * data, TCPsocket destino)
108 {
109 char buffer [5];
110
111 sprintf (buffer, "%d", data->y);
112
113 if (SDLNet_TCP_Send (destino, buffer, 5) < 5)
114 {
115 printf ("Fall� al enviar pos\n");
116 SDLNet_TCP_Close (destino);
117 mundo_cambiar_estado (data->juego->mundo, MENU);
118 return;
119 }
120 }
121
paleta_actualizar(Paleta * data,Uint8 * teclas)122 void paleta_actualizar (Paleta * data, Uint8 * teclas)
123 {
124 if (teclas [data->up] && data->dy > -5)
125 data->dy --;
126
127 if (teclas [data->down] && data->dy < 5)
128 data->dy ++;
129
130 data->y += data->dy;
131
132 if (!teclas [data->up] && !teclas [data->down])
133 {
134 if (data->dy > 0)
135 data->dy -= 0.3;
136
137 if (data->dy < 0)
138 data->dy += 0.3;
139 }
140
141
142 if ((data->y + data->ima->h / 2 ) > 480)
143 {
144 data->y = 479 - data->ima->h / 2;
145 data->dy *= -1;
146 }
147
148 if ((data->y - data->ima->h / 2 ) < 40)
149 {
150 data->y = data->ima->h / 2 + 40;
151 data->dy *= -1;
152 }
153
154
155
156
157 /*
158 switch (data->juego->tipo)
159 {
160 case NORED:
161 paleta_manejar_con_teclado (data, teclas);
162 break;
163
164 case JUEGO_CLIENTE:
165
166 if (data->jugador == 1)
167 {
168 paleta_recibir_pos (data, \
169 data->juego->mundo->cliente->socket);
170 }
171 else
172 {
173 paleta_manejar_con_teclado (data, teclas);
174 paleta_enviar_pos (data, \
175 data->juego->mundo->cliente->socket);
176
177 }
178
179 break;
180
181 case JUEGO_SERVIDOR:
182
183 if (data->jugador == 1)
184 {
185 paleta_manejar_con_teclado (data, teclas);
186 paleta_enviar_pos (data, \
187 data->juego->mundo->servidor->cliente);
188 }
189 else
190 {
191 paleta_recibir_pos (data, \
192 data->juego->mundo->servidor->cliente);
193 }
194
195 break;
196
197 }
198 */
199 }
200