|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 4097 (0x1001) Types: TextFile Names: »survey.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Gb/survey.c«
/* * Galactic Bloodshed (Robert Chansky, smq@b) * survey.c -- print out survey for planets */ #include "vars.h" #include "races.h" float compatibility(); extern char desshow(); survey(APcount, argn,args) int APcount; int argn; char args[MAXARGS][COMMANDSIZE]; { int lowx,hix,lowy,hiy,x2; sectortype *s; planettype *p; int survey_pdata,survey_sectdata; if (argn==1) { /* no args */ if (Dir.level==LEVEL_PLAN) { openpdata(&survey_pdata); getplanet(survey_pdata,&p,Stars[Dir.snum]->planetpos[Dir.pnum]); close(survey_pdata); printf("%s:\n",Stars[Dir.snum]->pnames[Dir.pnum]); printf("gravity x,y absolute x,y relative to %s\n",Stars[Dir.snum]->name); printf("%7.2f %7.1f,%7.1f %8.1f,%8.1f\n", gravity(p), p->xpos + Stars[Dir.snum]->xpos, p->ypos + Stars[Dir.snum]->ypos, p->xpos, p->ypos ); printf("======== planetary conditions: ========\n"); printf("atmosphere concentrations:\n"); printf(" methane %02d%%(%02d%%) oxygen %02d%%(%02d%%)\n", p->conditions[METHANE], Race->conditions[METHANE], p->conditions[OXYGEN], Race->conditions[OXYGEN] ); printf(" CO2 %02d%%(%02d%%) hydrogen %02d%%(%02d%%) temperature: %3d (%3d)\n", p->conditions[CO2], Race->conditions[CO2], p->conditions[HYDROGEN], Race->conditions[HYDROGEN], Temp(p->conditions[TEMP]), Temp(Race->conditions[TEMP]) ); printf(" nitrogen %02d%%(%02d%%) sulfur %02d%%(%02d%%) normal: %3d\n", p->conditions[NITROGEN], Race->conditions[NITROGEN], p->conditions[SULFUR], Race->conditions[SULFUR], Temp(p->conditions[RTEMP]) ); printf(" helium %02d%%(%02d%%) other %02d%%(%02d%%) %s: %d%%\n", p->conditions[HELIUM], Race->conditions[HELIUM], p->conditions[OTHER], Race->conditions[OTHER], p->conditions[TOXIC] > 80 ? "TOXICITY" : "toxicity", p->conditions[TOXIC]); printf("Total planetary compatibility: %.2f%%\n", compatibility(p, Race) ); printf("fuel_stock resource_stock dest_pot. %s ^%s\n", Race->Thing ? "biomass" : "popltn", Race->Thing ? "biomass" : "popltn"); printf("%10lu %14lu %9lu %7lu%11lu\n", p->info[Playernum-1].fuel, p->info[Playernum-1].resource, p->info[Playernum-1].destruct, p->popn, p->maxpopn); free(p); } else if (Dir.level==LEVEL_STAR) { printf("Star %s\n",Stars[Dir.snum]->name); printf("locn: %f,%f\n",Stars[Dir.snum]->xpos,Stars[Dir.snum]->ypos); printf("gravity: %.2f\tstability: ", Stars[Dir.snum]->gravity); if (Race->tech >= TECH_SEE_STABILITY) printf("%d%% (%s)\n", Stars[Dir.snum]->stability, Stars[Dir.snum]->stability<20 ? "stable" : Stars[Dir.snum]->stability<40 ? "unstable" : Stars[Dir.snum]->stability<60 ? "dangerous" : Stars[Dir.snum]->stability<100 ? "WARNING! nova iminent!" : "undergoing nova" ); else printf("(cannot determine)\n"); printf("%d planets are ",Stars[Dir.snum]->numplanets); for (x2=0; x2<Stars[Dir.snum]->numplanets; x2++) printf("%s\t", Stars[Dir.snum]->pnames[x2]); putchr('\n'); } else if (Dir.level==LEVEL_UNIV) printf("It's just _there_, you know?\n"); } else if (argn==2) /* argn==2, survey is on a sector */ if (Dir.level==LEVEL_PLAN) { openpdata(&survey_pdata); getplanet(survey_pdata,&p,Stars[Dir.snum]->planetpos[Dir.pnum]); close(survey_pdata); opensectdata(&survey_sectdata); getsmap(survey_sectdata,Smap,p->sectormappos,p->Maxx*p->Maxy); close(survey_sectdata); get4args(args[1],&x2,&hix,&lowy,&hiy); if (hix>=p->Maxx) hix=p->Maxx-1; if (x2<0) x2=0; if (lowy>=p->Maxy) lowy=p->Maxy-1; if (hiy<0) hiy=0; /* ^^^ translate to lowx:hix,lowy:hiy */ printf(" x,y des eff mob frt res popn ^popn\n"); for (; lowy<=hiy; lowy++) for (lowx=x2; lowx<=hix; lowx++) { s=(&(Smap[lowy*p->Maxx+lowx])); /*if (s->owner==Playernum)*/ printf("%2d,%-2d %c%4u%4u%4u%4u%5u%6d\n", lowx,lowy,desshow(p,lowx,lowy), s->eff, s->mobilization, s->fert, s->resource, s->popn, maxsupport(s) ); } free(p); } else printf("scope must be a planet.\n"); else if (argn>2) printf("survey: error in args.\n"); }