All pastes #17420 Raw Edit

cfbot problem

public text v1 · immutable
#17420 ·published 2005-07-11 02:59 UTC
rendered paste body
Anybody know why this snippit from gtk/maps.c works:
void display_mapscroll(int dx,int dy)
{
    int x,y;
    int local_mapx= 0, local_mapy= 0;

    /* We don't need to memcopy any of this stuff around cause 
     * we are keeping it in memory. We do need to update our
     * virtual position though
     */
	
    if( need_recenter_map( dx, dy) == TRUE)
	recenter_virtual_map_view( &the_map);

    pl_pos.x+= dx;
    pl_pos.y+= dy;
    local_mapx= pl_pos.x + use_config[CONFIG_MAPWIDTH];
    local_mapy= pl_pos.y + use_config[CONFIG_MAPHEIGHT];
	
    /*
     * For cells about to enter the view, mark them as
     * needing an update. Cells that are already in 
     * view don't need to be updated since we just memcpy
     * the image data around. This is needed for proper 
     * drawing of blank or black tiles coming into view
     */
    for( x= pl_pos.x; x < pl_pos.x + use_config[CONFIG_MAPWIDTH]; x++) {
	for( y= pl_pos.y; y < pl_pos.y + use_config[CONFIG_MAPHEIGHT]; y++) {
	    if( (x + dx) < pl_pos.x || (x + dx) >= (use_config[CONFIG_MAPWIDTH] + pl_pos.x) ||
	       (y + dy) < pl_pos.y || (y + dy) >= (use_config[CONFIG_MAPHEIGHT] + pl_pos.y) )
	    {
		if( x < 0 || y < 0 || x >= the_map.x ||	y >= the_map.y)
		    continue;


		the_map.cells[x][y].need_update= 1;
		the_map.cells[x][y].cleared= 1;
		
		
-----------------------------------------------------------
And this python that should do the same thing isn't working:
	elif (data[0] == "map_scroll"):
		#data format: (plaintextint) (plaintextint)
		#print "map_scroll: " + data[1]
		vals = data[1].split(" ")
		oldcurx = self.curx
		oldcury = self.cury
		self.curx += int(vals[0]) #unlike in the normal client curx and cury are the location of the player, not the location of the top left corner of view
		self.cury += int(vals[1])
		self.leftbound = (self.curx-12) #assumes the 25x25 mapsize
		self.rightbound = (self.curx+12)
		self.topbound = (self.curx-12)
		self.bottombound = (self.curx+12)
		xtilerange = range(self.leftbound, self.rightbound)
		ytilerange = range(self.topbound, self.bottombound)
		
		
	
		for x in xtilerange:
			for y in ytilerange:
				if ((x+int(vals[0])) < self.leftbound) or ((x+int(vals[0])) >= self.rightbound) or ((y+int(vals[1])) < self.topbound) or ((y+int(vals[1])) >= self.bottombound):
					packloc2 = struct.pack("!3h",x,y,0)+"b"
					if (not mapfaces.has_key(packloc2)):
						mapfaces[packloc2]=True #same meaning as mapcells.cleared=1 in the normal client