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

Comparing deliantra/server/socket/request.C (file contents):
Revision 1.75 by root, Wed Mar 14 04:12:29 2007 UTC vs.
Revision 1.80 by root, Fri Mar 16 02:51:08 2007 UTC

132static void 132static void
133clear_map (player *pl) 133clear_map (player *pl)
134{ 134{
135 memset (&pl->ns->lastmap, 0, sizeof (pl->ns->lastmap)); 135 memset (&pl->ns->lastmap, 0, sizeof (pl->ns->lastmap));
136 136
137 pl->ns->force_newmap = false;
138
137 if (pl->ns->newmapcmd == 1) 139 if (pl->ns->newmapcmd == 1)
138 pl->ns->send_packet ("newmap"); 140 pl->ns->send_packet ("newmap");
139 141
140 pl->ns->floorbox_reset (); 142 pl->ns->floorbox_reset ();
141} 143}
146{ 148{
147 client &socket = *pl->ns; 149 client &socket = *pl->ns;
148 object *ob = pl->ob; 150 object *ob = pl->ob;
149 char buf[MAX_BUF]; /* eauugggh */ 151 char buf[MAX_BUF]; /* eauugggh */
150 152
151 if (socket.current_map != ob->map) 153 if (socket.force_newmap && 0)
152 { 154 {
155 // force newmap is used for clients that do not redraw their map
156 // after image uploads.
153 socket.current_map = ob->map; 157 socket.current_map = ob->map;
154
155 clear_map (pl); 158 clear_map (pl);
159 }
160 else if (socket.current_map != ob->map)
161 {
162 clear_map (pl);
163 socket.current_map = ob->map;
156 164
157 if (socket.mapinfocmd) 165 if (socket.mapinfocmd)
158 { 166 {
159 if (ob->map && ob->map->path[0]) 167 if (ob->map && ob->map->path[0])
160 { 168 {
459 char tmpbuf[20]; 467 char tmpbuf[20];
460 int q = atoi (param); 468 int q = atoi (param);
461 469
462 if (is_valid_faceset (q)) 470 if (is_valid_faceset (q))
463 ns->faceset = q; 471 ns->faceset = q;
472
464 sprintf (tmpbuf, "%d", ns->faceset); 473 sprintf (tmpbuf, "%d", ns->faceset);
465 safe_strcat (cmdback, tmpbuf, &slen, HUGE_BUF); 474 safe_strcat (cmdback, tmpbuf, &slen, HUGE_BUF);
466 /* if the client is using faceset, it knows about image2 command */ 475 /* if the client is using faceset, it knows about image2 command */
467 ns->image2 = 1; 476 ns->image2 = 1;
468 } 477 }
561 * This is what takes care of it. We tell the client how things worked out. 570 * This is what takes care of it. We tell the client how things worked out.
562 * I am not sure if this file is the best place for this function. however, 571 * I am not sure if this file is the best place for this function. however,
563 * it either has to be here or init_sockets needs to be exported. 572 * it either has to be here or init_sockets needs to be exported.
564 */ 573 */
565void 574void
566AddMeCmd (char *buf, int len, client * ns) 575AddMeCmd (char *buf, int len, client *ns)
567{ 576{
577 // face caching is mandatory
578 if (!ns->facecache)
579 {
580 ns->send_drawinfo (
581 "\n"
582 "\n"
583 "***\n"
584 "*** WARNING:\n"
585 "*** Your client does not support face/image caching,\n"
586 "*** or it has been disabled. Face caching is mandatory\n"
587 "*** so please enable it or use a newer client.\n"
588 "***\n"
589 "*** Look at your client preferences:\n"
590 "***\n"
591 "*** CFPlus: all known versions automatically enable the facecache.\n"
592 "*** cfclient: use the -cache commandline option.\n"
593 "*** cfclient: map will not redraw automatically (bug).\n"
594 "*** gcfclient: use -cache commandline option, or enable\n"
595 "*** gcfclient: Client=>Configure=>Map & Image=>Cache Images.\n"
596 "*** jcrossclient: your client is broken, use CFPlus or gcfclient.\n"
597 "***\n"
598 "***\n",
599 NDI_RED
600 );
601
602 if (strstr (ns->version, "jcrossclient"))
603 /* let them, for now*/;
604 else
605 {
606 ns->flush ();
607 //ns->destroy ();
608 }
609 //ns->facecache = true;
610 }
611
568 INVOKE_CLIENT (ADDME, ns, ARG_DATA (buf, len)); 612 INVOKE_CLIENT (ADDME, ns, ARG_DATA (buf, len));
569} 613}
570 614
571/** Reply to ExtendedInfos command */ 615/** Reply to ExtendedInfos command */
572void 616void
680 snprintf (temp, sizeof (temp), "%d", i); 724 snprintf (temp, sizeof (temp), "%d", i);
681 strcat (cmdback, temp); 725 strcat (cmdback, temp);
682 } 726 }
683 727
684 ns->send_packet (cmdback); 728 ns->send_packet (cmdback);
729}
730
731/**
732 * client requested an image. send it rate-limited
733 * before flushing.
734 */
735void
736AskFaceCmd (char *buf, int len, client *ns)
737{
738 ns->askface.push_back (atoi (buf));
685} 739}
686 740
687/** 741/**
688 * Tells client the picture it has to use 742 * Tells client the picture it has to use
689 * to smooth a picture number given as argument. 743 * to smooth a picture number given as argument.
1250 << uint8 (extendedinfos) 1304 << uint8 (extendedinfos)
1251 << uint8 (eentrysize); 1305 << uint8 (eentrysize);
1252 1306
1253 estartlen = esl.length (); 1307 estartlen = esl.length ();
1254 } 1308 }
1255 else
1256 {
1257 /* suppress compiler warnings */
1258 ewhatstart = 0;
1259 ewhatflag = 0;
1260 estartlen = 0;
1261 }
1262 1309
1263 /* x,y are the real map locations. ax, ay are viewport relative 1310 /* x,y are the real map locations. ax, ay are viewport relative
1264 * locations. 1311 * locations.
1265 */ 1312 */
1266 ay = 0; 1313 ay = 0;
1269 * but that started to get a bit messy to look at. 1316 * but that started to get a bit messy to look at.
1270 */ 1317 */
1271 max_x = pl->x + (socket.mapx + 1) / 2; 1318 max_x = pl->x + (socket.mapx + 1) / 2;
1272 max_y = pl->y + (socket.mapy + 1) / 2; 1319 max_y = pl->y + (socket.mapy + 1) / 2;
1273 1320
1321 maptile *plmap = pl->map;
1322
1274 for (y = pl->y - socket.mapy / 2; y < max_y; y++, ay++) 1323 for (y = pl->y - socket.mapy / 2; y < max_y; y++, ay++)
1275 { 1324 {
1276 ax = 0; 1325 ax = 0;
1277 for (x = pl->x - socket.mapx / 2; x < max_x; x++, ax++) 1326 for (x = pl->x - socket.mapx / 2; x < max_x; x++, ax++)
1278 { 1327 {
1284 /* If the coordinates are not valid, or it is too dark to see, 1333 /* If the coordinates are not valid, or it is too dark to see,
1285 * we tell the client as such 1334 * we tell the client as such
1286 */ 1335 */
1287 nx = x; 1336 nx = x;
1288 ny = y; 1337 ny = y;
1289 m = get_map_from_coord (pl->map, &nx, &ny); 1338 m = get_map_from_coord (plmap, &nx, &ny);
1290 1339
1291 if (!m) 1340 if (!m)
1292 { 1341 {
1293 /* space is out of map. Update space and clear values 1342 /* space is out of map. Update space and clear values
1294 * if this hasn't already been done. If the space is out 1343 * if this hasn't already been done. If the space is out

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines