ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/socket/image.C
(Generate patch)

Comparing deliantra/server/socket/image.C (file contents):
Revision 1.15 by root, Sat Dec 16 22:14:42 2006 UTC vs.
Revision 1.21 by root, Fri Feb 16 22:33:46 2007 UTC

1/* 1/*
2 CrossFire, A Multiplayer game for X-windows 2 * CrossFire, A Multiplayer game
3 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
4 Copyright (C) 2001 Mark Wedel 5 * Copyright (C) 2001 Mark Wedel
5 Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (C) 1992 Frank Tore Johansen
6 7 *
7 This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 10 * the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 11 * (at your option) any later version.
11 12 *
12 This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 16 * GNU General Public License for more details.
16 17 *
17 You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 21 *
21 The author can be reached via e-mail to <crossfire@schmorp.de> 22 * The author can be reached via e-mail to <crossfire@schmorp.de>
22*/ 23 */
23 24
24/** \file 25/** \file
25 * Image related communication 26 * Image related communication
26 * 27 *
27 * \date 2003-12-02 28 * \date 2003-12-02
32 * things like all the structures as globals. 33 * things like all the structures as globals.
33 */ 34 */
34 35
35#include <global.h> 36#include <global.h>
36#include <sproto.h> 37#include <sproto.h>
38
39#include "crc.h"
37 40
38#define MAX_FACE_SETS 20 /**< Maximum number of image sets the program will handle */ 41#define MAX_FACE_SETS 20 /**< Maximum number of image sets the program will handle */
39 42
40/** Information about one image */ 43/** Information about one image */
41typedef struct FaceInfo 44typedef struct FaceInfo
279 LOG (llevError, "read_client_images: Image num %d not in 0..%d\n%s", num, nrofpixmaps, buf); 282 LOG (llevError, "read_client_images: Image num %d not in 0..%d\n%s", num, nrofpixmaps, buf);
280 abort (); 283 abort ();
281 } 284 }
282 285
283 /* Skip accross the number data */ 286 /* Skip accross the number data */
284 for (cp = buf + 6; *cp != ' '; cp++); 287 for (cp = buf + 6; *cp != ' '; cp++)
288 ;
289
285 len = atoi (cp); 290 len = atoi (cp);
286 if (len == 0 || len > MAX_IMAGE_SIZE) 291 if (len == 0 || len > MAX_IMAGE_SIZE)
287 { 292 {
288 LOG (llevError, "read_client_images: length not valid: %d > %d \n%s", len, MAX_IMAGE_SIZE, buf); 293 LOG (llevError, "read_client_images: length not valid: %d > %d \n%s", len, MAX_IMAGE_SIZE, buf);
289 abort (); 294 abort ();
298 { 303 {
299 LOG (llevError, "read_client_images: Did not read desired amount of data, wanted %d, got %d\n%s", len, i, buf); 304 LOG (llevError, "read_client_images: Did not read desired amount of data, wanted %d, got %d\n%s", len, i, buf);
300 abort (); 305 abort ();
301 } 306 }
302 307
303 facesets[fileno].faces[num].checksum = 0; 308 crc32 chksum;
309
304 for (i = 0; i < len; i++) 310 for (i = 0; i < len; i++)
305 { 311 chksum (facesets[fileno].faces[num].data[i]);
306 ROTATE_RIGHT (facesets[fileno].faces[num].checksum); 312
307 facesets[fileno].faces[num].checksum += facesets[fileno].faces[num].data[i];
308 facesets[fileno].faces[num].checksum &= 0xffffffff; 313 facesets[fileno].faces[num].checksum = chksum;
309 }
310 } 314 }
311 315
312 close_and_delete (infile, compressed); 316 close_and_delete (infile, compressed);
313 } /* For fileno < MAX_FACE_SETS */ 317 } /* For fileno < MAX_FACE_SETS */
314} 318}
413void 417void
414send_image_info (client *ns, char *params) 418send_image_info (client *ns, char *params)
415{ 419{
416 packet sl; 420 packet sl;
417 421
418 sl.printf ("replyinfo image_info\n%d\n%d\n", nrofpixmaps - 1, bmaps_checksum); 422 sl.printf ("replyinfo image_info\n%d\n%u\n", nrofpixmaps - 1, (unsigned int)bmaps_checksum);
419 423
420 for (int i = 0; i < MAX_FACE_SETS; i++) 424 for (int i = 0; i < MAX_FACE_SETS; i++)
421 if (facesets[i].prefix) 425 if (facesets[i].prefix)
422 sl.printf ("%d:%s:%s:%d:%s:%s:%s", i, 426 sl.printf ("%d:%s:%s:%d:%s:%s:%s", i,
423 facesets[i].prefix, facesets[i].fullname , facesets[i].fallback, 427 facesets[i].prefix, facesets[i].fullname , facesets[i].fallback,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines