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.61 by root, Mon Jan 8 18:18:36 2007 UTC vs.
Revision 1.62 by root, Wed Jan 10 01:16:54 2007 UTC

1552 } 1552 }
1553 1553
1554 return result; 1554 return result;
1555} 1555}
1556 1556
1557// prefetch (and touch) all maps within a specific distancd
1558static void
1559prefetch_surrounding_maps (maptile *map, int distance)
1560{
1561 map->last_access = runtime;
1562
1563 if (--distance)
1564 for (int dir = 4; --dir; )
1565 if (const shstr &path = map->tile_path [dir])
1566 if (maptile *&neigh = map->tile_map [dir])
1567 prefetch_surrounding_maps (neigh, distance);
1568 else
1569 neigh = maptile::find_async (path, map);
1570}
1571
1572// prefetch a generous area around the player
1573static void
1574prefetch_surrounding_maps (object *op)
1575{
1576 prefetch_surrounding_maps (op->map, 3);
1577}
1578
1557/** 1579/**
1558 * This function uses the new map1 protocol command to send the map 1580 * This function uses the new map1 protocol command to send the map
1559 * to the client. It is necessary because the old map command supports 1581 * to the client. It is necessary because the old map command supports
1560 * a maximum map size of 15x15. 1582 * a maximum map size of 15x15.
1561 * This function is much simpler than the old one. This is because 1583 * This function is much simpler than the old one. This is because
1592 1614
1593 if (!pl->active) 1615 if (!pl->active)
1594 return; 1616 return;
1595 1617
1596 check_map_change (pl->contr); 1618 check_map_change (pl->contr);
1619 prefetch_surrounding_maps (pl);
1597 1620
1598 packet sl (socket.mapmode == Map1Cmd ? "map1" : "map1a"); 1621 packet sl (socket.mapmode == Map1Cmd ? "map1" : "map1a");
1599 packet esl; 1622 packet esl;
1600 1623
1601 startlen = sl.length (); 1624 startlen = sl.length ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines