summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/guic-x11.cc
diff options
context:
space:
mode:
authorennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-02-09 17:50:53 +0000
committerennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-02-09 17:50:53 +0000
commit2da032e042b6fd699e14a73200770541af58530f (patch)
tree32585469ef87315bb99e0a1f35d3331547ff6b3b /crawl-ref/source/guic-x11.cc
parent0406c83edd618949fea3e801e9504c11179b192f (diff)
downloadcrawl-ref-2da032e042b6fd699e14a73200770541af58530f.tar.gz
crawl-ref-2da032e042b6fd699e14a73200770541af58530f.zip
Fixing tiles mini-map issues:
* Player markers no longer leave black trails. * Mini-map now displays the whole map and doesn't cut two cells off the edges. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3418 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/guic-x11.cc')
-rw-r--r--crawl-ref/source/guic-x11.cc49
1 files changed, 28 insertions, 21 deletions
diff --git a/crawl-ref/source/guic-x11.cc b/crawl-ref/source/guic-x11.cc
index 564754e3ab..275ca17f23 100644
--- a/crawl-ref/source/guic-x11.cc
+++ b/crawl-ref/source/guic-x11.cc
@@ -12,6 +12,7 @@
#include "AppHdr.h"
#include "debug.h"
+#include "externs.h"
#include "guic.h"
#include "version.h"
@@ -309,53 +310,59 @@ void MapRegionClass::redraw(int x1, int y1, int x2, int y2)
(x2-x1+1)*dx, (y2-y1+1)*dy);
}
-void MapRegionClass::draw_data(unsigned char *buf){
- int x, y, xx, yy;
+void MapRegionClass::draw_data(unsigned char *buf)
+{
static int px = 0;
static int py = 0;
if (!flag)
return;
- for(yy=0;yy<dy*2;yy++)
+ const int marker_length = 2;
+
+ for(int yy = 0; yy < dy * marker_length; yy++)
{
- XPutPixel(backbuf, px*dx+dx/2, yy, map_pix[MAP_BLACK]);
+ XPutPixel(backbuf, px*dx+dx/2 + x_margin, yy, map_pix[MAP_BLACK]);
}
- for(xx=0;xx<dx*2;xx++)
+ for(int xx = 0; xx < dx * marker_length; xx++)
{
- XPutPixel(backbuf, xx, py*dy+dy/2, map_pix[MAP_BLACK]);
+ XPutPixel(backbuf, xx, py*dy+dy/2 + y_margin, map_pix[MAP_BLACK]);
}
- for (y = 0; y < my; y++)
+ for (int y = 0; y < my; y++)
{
- unsigned char *ptr =
- &buf[x_margin + (y_margin + y)*(mx2 + x_margin*2)];
- for (x = 0; x < mx; x++)
+ unsigned char *ptr = &buf[y * (mx2 - x_margin)];
+ for (int x = 0; x < mx; x++)
{
- int col = ptr[x];
- // Hack :remember player position
- if (col == MAP_WHITE)
+ int col = (y >= my2 - y_margin || x >= mx2 - x_margin) ?
+ MAP_BLACK : ptr[x];
+ if (col == Options.tile_player_col)
{
px = x;
py = y;
}
- if(col != get_col(x, y) || force_redraw)
+ if(col != get_col(x, y) || force_redraw ||
+ x < marker_length || y < marker_length)
{
- for(xx=0; xx<dx; xx++)
- for(yy=0; yy<dy; yy++)
- XPutPixel(backbuf, x*dx+xx, y*dy+yy, map_pix[col]);
+ for(int xx=0; xx<dx; xx++)
+ for(int yy=0; yy<dy; yy++)
+ {
+ XPutPixel(backbuf, x_margin + x*dx+xx,
+ y_margin + y*dy+yy, map_pix[col]);
+ }
set_col(col, x, y);
}
}
}
- for(yy=0;yy<dy*2;yy++)
+
+ for(int yy = 0; yy < dy * marker_length; yy++)
{
- XPutPixel(backbuf, px*dx+dx/2, yy, map_pix[MAP_WHITE]);
+ XPutPixel(backbuf, px*dx+dx/2 + x_margin, yy, map_pix[MAP_WHITE]);
}
- for(xx=0;xx<dx*2;xx++)
+ for(int xx = 0; xx < dx * marker_length; xx++)
{
- XPutPixel(backbuf, xx, py*dy+dy/2, map_pix[MAP_WHITE]);
+ XPutPixel(backbuf, xx, py*dy+dy/2 + y_margin, map_pix[MAP_WHITE]);
}
redraw();