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