DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦6871ec1a5⟧ TextFile

    Length: 4507 (0x119b)
    Types: TextFile
    Names: »map.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Gb/map.c« 

TextFile

/*
 * Galactic Bloodshed (Robert Chansky, smq@b)
 *  map.c -- display sector map of current planet
 */

#include "vars.h"
#include "ships.h"
#include "races.h"
extern float compatibility();
extern int Ignore_filelocks;
char desshow();

map(APcount, argn,args)
int APcount;
int argn;
char args[MAXARGS][COMMANDSIZE];
{
int map_pdata;
planettype *p;
placetype where;

   where=Getplace(args[1],0);
   if (where.err) return;

   if (where.level==LEVEL_PLAN) {
  	openpdata(&map_pdata);
  	getplanet(map_pdata,&p,Stars[where.snum]->planetpos[where.pnum]);
  	close(map_pdata);

  	show_map(p,1);	/* 1 means display data */

  	free(p);

	if (Stars[where.snum]->stability > 50)
		printf("WARNING! This planet's primary is unstable.\n");

   } else {
	Dir.lastx = Dir.lasty = 0.0;
	orbit(APcount, argn,args);	/* make orbit map instead */
   }

}



show_map(p, show)
planettype *p;
register int show;
{
register int x,y,i,f;
int map_sectdata,map_shdata;
shiptype *s;
char shiplocs[MAX_X][MAX_Y];

  bzero((char *)shiplocs, sizeof(shiplocs));
  Ignore_filelocks = 1;

  opensectdata(&map_sectdata);
  getsmap(map_sectdata,Smap,p->sectormappos,p->Maxx*p->Maxy);
  close(map_sectdata);

  openshdata(&map_shdata);
  for (i=0; i<MAXPSHIPS; i++)
    if (p->shipnums[i]) {
      getship(map_shdata,&s, p->shipnums[i]);
      if (s->is_docked && s->whatdest==LEVEL_PLAN)
	shiplocs[(int)s->xpos][(int)s->ypos] = Shipltrs[s->type];
      free(s);
    }
  close(map_shdata);

  Ignore_filelocks = 0;

  printf("   ");
  for (x=0; x<p->Maxx; x++) 
	printf("%d",x/10);
  if (show)
  	printf("  Sects %s: %d", Race->Thing ? "covered" : "owned", 
			p->info[Playernum-1].numsectsowned);
  printf("\n   ");
  for (x=0; x<p->Maxx; x++) 
	printf("%d",x%10);
  if (show) { 
	int i,f=0;
	  printf("  Aliens:");
	  if (p->is_explored || Race->tech >= TECH_EXPLORE) {
		  for (i=1; i<MAXPLAYERS; i++)
			if (p->info[i-1].numsectsowned && i!=Playernum) {
			   f=1;
			   printf("%c%d", isset(Race->atwar,i) ? '*' : ' ', i);
			}
		  if (!f) printf("(none)");
	  } else printf("???");
  }
  putchr('\n');

  for (y=0; y<p->Maxy; y++) {
     printf("%2d ",y);
     for (x=0; x<p->Maxx; x++) {
	if (shiplocs[x][y])
		putchr(shiplocs[x][y]);
	else
	    	putchr(desshow(p, x, y));
     }
     if (show)
       switch (y) {	/* give stockpile info */
        case 0: printf("| Combat readiness:  %u", p->info[Playernum-1].comread);
	      break;
        case 1: printf("| Compatibility:   %.2f",compatibility(p,Race));
	      break;
        case 3:printf("| Resource stockpile:%u",p->info[Playernum-1].resource);
	      break;
        case 4: printf("| Fuel stockpile:    %u",p->info[Playernum-1].fuel);
	      break;
        case 5:printf("| Destruct cap:      %u",p->info[Playernum-1].destruct);
	      break;
        case 6:printf("| %s:  %u (%u)", Race->Thing ? "Tons of biomass" : 
				"Total Population", p->popn, p->maxpopn);
	      break;
        /*case 7: 
	      break;
        case 8: 
	      break;
        case 9: 
	      break;
        case 10: 
	      break;*/
        default: printf("|");
	      break;
       }
  putchr('\n');
  }


}


char desshow(p,x,y)
register planettype *p;
register int x,y;
{
register sectortype *s;

s = &Smap[y*p->Maxx+x];

	/*  owned by you */
if (s->owner==Playernum) {

  if (s->is_wasted) 
	return(CHAR_OWNED_WASTELAND);
  if (s->VN)
	return(Shipltrs[OTYPE_VN]);
   if (Race->Thing)
	return CHAR_OWNED_THING;
   switch (s->des) {
     	case DES_SEA: return CHAR_OWNED_SEA;
     	case DES_LAND: return CHAR_OWNED_LAND;
     	case DES_MOUNT: return CHAR_OWNED_MOUNT;
     	case DES_GAS: return CHAR_OWNED_GAS;
     	case DES_PLATED: return CHAR_PLATED;
     	case DES_ICE: return CHAR_OWNED_ICE;
     	default: return('!');
   }

	/* un-owned by anybody */

} else if (!s->owner) {
 if (s->VN)
	return Shipltrs[OTYPE_VN];
 if (!p->is_explored && Race->tech < TECH_EXPLORE) {
	if ( !( (x>0 && (s-1)->owner==Playernum) ||
	     (x<p->Maxx-1 && (s+1)->owner==Playernum) || 
	     (y>0 && (s-p->Maxx)->owner==Playernum) ||
	     (y<p->Maxy-1 && (s+p->Maxx)->owner==Playernum) ) )
			return CHAR_CLOAKED;
 }
 if (s->is_wasted) 
	return(CHAR_WASTELAND);
  switch (s->des) {
     case DES_SEA: return(CHAR_SEA);
     case DES_LAND: return(CHAR_LAND);
     case DES_MOUNT: return(CHAR_MOUNT);
     case DES_GAS: return(CHAR_GAS);
     case DES_ICE: return CHAR_ICE;
     case DES_PLATED: return(CHAR_PLATED);
     default: return('!');
  }

	/* different owner */

} else
    return CHAR_DIFFOWNED;

}