- Made map box scrollable.

This commit is contained in:
Rob Pearce 2005-10-31 02:20:14 +00:00
parent 82e6c3cfb3
commit d15155a03c
8 changed files with 111 additions and 39 deletions

View File

@ -1,9 +0,0 @@
UNIX:
1. cp Makefile.whatever Makefile
2. make
3. make install
4. Add the following to your profile:
NETMAPRDIR=/usr/local/share/netmapr
export NETMAPRDIR

16
INSTALL.txt Normal file
View File

@ -0,0 +1,16 @@
UNIX:
1. cp Makefile.whatever Makefile
2. make
3. make install
4. Add the following to your profile:
NETMAPRDIR=/usr/local/share/netmapr
export NETMAPRDIR
WINDOWS:
1. Unzip to C:\program files (or anywhere else)
2. Add the following environment variable
(my computer->properties->advanced->environment settings)
Name: NETMAPRDIR
Value: C:\program files\netmapr-1.0 (or wherever you unzipped it)

View File

@ -4,7 +4,7 @@ netmapr: netmapr.c constants.h netmapr.h Makefile
install: netmapr
install -C -D -o root -m 755 netmapr /usr/local/bin/netmapr
ln -f /usr/local/bin/netmapr /usr/local/bin/netmapr-viewer
install -C -D -o root -m 644 buttons.dat /usr/local/share/buttons.dat
install -C -D -o root -m 644 objects.dat /usr/local/share/objects.dat
install -C -D -o root -m 644 verdana.ttf /usr/local/share/verdana.ttf
install -C -D -o root -m 644 icon.bmp /usr/local/share/icon.bmp
install -C -D -o root -m 644 buttons.dat /usr/local/share/netmapr/buttons.dat
install -C -D -o root -m 644 objects.dat /usr/local/share/netmapr/objects.dat
install -C -D -o root -m 644 verdana.ttf /usr/local/share/netmapr/verdana.ttf
install -C -D -o root -m 644 icon.bmp /usr/local/share/netmapr/icon.bmp

View File

@ -5,7 +5,7 @@ netmapr: netmapr.c constants.h netmapr.h Makefile
install: netmapr
install -C -D -o root -m 755 netmapr /usr/local/bin/netmapr
ln -f /usr/local/bin/netmapr /usr/local/bin/netmapr-viewer
install -C -D -o root -m 644 buttons.dat /usr/local/share/buttons.dat
install -C -D -o root -m 644 objects.dat /usr/local/share/objects.dat
install -C -D -o root -m 644 verdana.ttf /usr/local/share/verdana.ttf
install -C -D -o root -m 644 icon.bmp /usr/local/share/icon.bmp
install -C -D -o root -m 644 buttons.dat /usr/local/share/netmapr/buttons.dat
install -C -D -o root -m 644 objects.dat /usr/local/share/netmapr/objects.dat
install -C -D -o root -m 644 verdana.ttf /usr/local/share/netmapr/verdana.ttf
install -C -D -o root -m 644 icon.bmp /usr/local/share/netmapr/icon.bmp

View File

View File

@ -1,4 +1,4 @@
#define VERSION "0.99e"
#define VERSION "1.0"
#define BUFLEN 512
@ -10,10 +10,10 @@
#define MAXPOINTS 20
#define MAXBUTTONS 40
#define MAXMAPS 20
#define MAXMAPS 60
#define MAXHISTORY 50
#define MAXCHILDREN 10
#define MAXCHILDREN 30
#define MAXOBJTYPES 30
#define MAXOBJECTS 512
@ -146,5 +146,7 @@
#define LA_DEST (2)
#define LA_BOTH (3)
#define LM_ARROW ()
#define THICKNESS
#define C_NONE (-1)
#define C_SCROLLUP (-2)
#define C_SCROLLDOWN (-3)

View File

@ -550,6 +550,8 @@ int main (int argc, char **argv) {
th = TTF_FontHeight(font[MAPBOXTEXTHEIGHT]);
/* change to child */
pos = (event.button.y - (mapbox.y+(th*2)+1)) / th;
/* adjust for offset if not a special value */
pos += mapbox.offset;
if (pos >= numchildren) {
sprintf(statustext, "ERROR: Invalid child map %d (max is %d).",pos,numchildren);
drawstatusbar();
@ -2551,7 +2553,7 @@ void drawmapbox(void) {
/* show .. */
if (numhistory >= 1) {
/* draw arrow */
/* draw back arrow */
drawline(screen, x+5,y+(lh/2),x+mapbox.width-15,y+(lh/2),white,1);
drawline(screen, x+5,y+(lh/2),x+15,y+1,white,1);
drawline(screen, x+5,y+(lh/2),x+15,y+(lh-1),white,1);
@ -2560,8 +2562,11 @@ void drawmapbox(void) {
y += th;
/* children ... */
/* first generate list of children */
numchildren = 0;
for (i = 0; i < map[curmap].numobjects; i++) {
if (map[curmap].obj[i].child != -1) {
/* make sure we haven't already drawn this name */
@ -2573,26 +2578,75 @@ void drawmapbox(void) {
}
}
if (!found) {
sprintf(temp.text, map[map[curmap].obj[i].child].name);
//temp.x = x+DEFTEXTW;
temp.x = x;
temp.y = y;
temp.h = lh;
TTF_SizeText(font[lh], temp.text, &tw,&th);
temp.w = tw;
temp.anchor = -1;
temp.c = white;
drawtext(screen, &temp);
children[numchildren] = map[curmap].obj[i].child;
numchildren++;
y += th;
}
}
}
/* now draw all children, starting at mapbox.offset */
for (i = mapbox.offset; i < numchildren; i++) {
if ((i == mapbox.offset) && (mapbox.offset > 0)) {
/* replace this entry with an arrow */
children[i] = C_SCROLLUP;
/* draw an up arrow */
TTF_SizeText(font[lh], "unused", &tw,&th);
drawline(screen, x + (mapbox.width / 2)-3, y+th-4,
x + (mapbox.width / 2), y+th-7,
white, 1);
drawline(screen, x + (mapbox.width / 2)+3, y+th-4,
x + (mapbox.width / 2), y+th-7,
white, 1);
} else {
/* get its name */
sprintf(temp.text, "*Unknown*"); /* default, shouldn't actually ever be used */
for (n = 0; n < map[curmap].numobjects; n++) {
if (map[curmap].obj[n].child == children[i]) {
sprintf(temp.text, map[map[curmap].obj[n].child].name);
break;
}
}
temp.x = x;
temp.y = y;
temp.h = lh;
TTF_SizeText(font[lh], temp.text, &tw,&th);
temp.w = tw;
temp.anchor = -1;
temp.c = white;
if (temp.y + temp.h >= (mapbox.y + mapbox.height)) {
SDL_Rect ar;
/* off the bottom of the page - replace previous item with an arrow */
printf("showing arrow\n"); fflush(stdout);
y = y - th - 1; /* go back one line */
/* clear previous text */
ar.x = x;
ar.y = y;
ar.w = mapbox.width - 3;
ar.h = th;
SDL_FillRect(screen, &ar, fillcol);
/* draw arrow */
drawline(screen, x + (mapbox.width / 2)-3, y+th-7,
x + (mapbox.width / 2), y+th-4,
white, 1);
drawline(screen, x + (mapbox.width / 2)+3, y+th-7,
x + (mapbox.width / 2), y+th-4,
white, 1);
children[i-1] = C_SCROLLDOWN;
break;
}
drawtext(screen, &temp);
}
y += th;
}
SDL_UpdateRect(screen, mapbox.x, mapbox.y, screen->w - mapbox.x,mapbox.height+2);
//SDL_Flip(screen);
}
@ -4589,6 +4643,7 @@ void initvars(void) {
mapbox.y = toolbox.y+toolbox.height+1;
mapbox.width = SIDEBARW;
mapbox.height = obox.y - mapbox.y - 20;
mapbox.offset = 0;
fgcol = black;
@ -5768,7 +5823,8 @@ int endlinkmove(int x, int y) {
}
void drillto(int mapnum) {
if (mapnum == -1) {
printf("drilling to: %d\n",mapnum);
if (mapnum == C_NONE) {
if (nummaps < (MAXMAPS-1)) {
/* push current map */
history[numhistory] = curmap;
@ -5797,6 +5853,12 @@ void drillto(int mapnum) {
sprintf(statustext, "ERROR: Maximum number of maps reached.");
drawstatusbar();
}
} else if (mapnum == C_SCROLLUP) {
mapbox.offset--;
drawmapbox();
} else if (mapnum == C_SCROLLDOWN) {
mapbox.offset++;
drawmapbox();
} else {
/* push current map */
history[numhistory] = curmap;

View File

@ -34,6 +34,7 @@ struct {
int y;
int width;
int height;
int offset;
} mapbox;