DEBUG_DEFINE_DEBUGF(struct)
-#define START_MAIN {200,100}
+#define START_MAIN {200,200}
#define MIN_COLUMNS 6
#define INTERESTING_COLUMNS 7
#define TEXT_COLUMNS 2
{ 0x6B828C, '*' }, /* background of ship status meter area */
{ 0x934405, '*' }, /* border of ship meter area */
{ 0x7D9094, '+' }, /* interbox */
+ { 0x022158, 'a' }, /* ahoy /w output foreground */
{ 0xBDC5BF, ' ' }, /* background - pale Sugar cane, etc. */
{ 0xADB5AF, ' ' }, /* background - dark */
debug_flush();
}
+static int commod_selector_matches(Rect search, const char *const *all,
+ int allh, int allw) {
+ int alloffy, alloffx;
+ for (alloffy=0; alloffy < search.br.y; alloffy++) {
+ if (alloffy+allh-1 < search.tl.y) continue;
+ for (alloffx=search.tl.x; alloffx+allw-1 <= search.br.x; alloffx++) {
+ int good=0, bad=0;
+ int x,y;
+ for (x=0; x<allw; x++)
+ for (y=0; y<allh; y++) {
+ int want= all[y][x];
+ if (want==' ') continue;
+ if (get(alloffx+x, alloffy+y) == want)
+ good++;
+ else
+ bad++;
+ }
+ debugf("CHECKCOMMOD alloff=%d,%d good=%d bad=%d\n",
+ alloffx,alloffy, good,bad);
+ if (good > 20*bad)
+ return 1;
+ }
+ }
+ return 0;
+}
+
#define WALK_UNTIL(point,coord,increm,last,edge) \
for (;;) { \
if ((point).coord == (last)+(increm)) break; \
debug_rect("commodselr",1, search);
- static const char *all[]= {
+ static const char *all_small[]= {
" ___________________________________ ",
" ________X____X__X____________________ ",
" ________ X___ X_ X_____XXXXXXXXXXX_____ ",
" ____X_____ _XX_ X______________________",
" __ _______ __ ______________________ ",
};
+ static const char *all_big[]= {
+ "???_______________________________________???",
+ "??_________________________________________??",
+ "?_________X______X___X______________________?",
+ "_________?X_____?X__?X______XXXXXXXXXXX______",
+ "_________X_X____?X__?X_______XXXXXXXXX_______",
+ "________?X?X____?X__?X________XXXXXXX________",
+ "________X_?_X___?X__?X_________XXXXX_________",
+ "_______?X__?X___?X__?X__________XXX__________",
+ "_______?XXXXX___?X__?X___________X___________",
+ "_______X????_X__?X__?X_______________________",
+ "?_____?X____?X__?X__?X_______________________",
+ "??____X_____?_X_?X__?X_______________________",
+ "???__?_______?__?___?_______________________?",
+ };
- static int allh= sizeof(all)/sizeof(all[0]);
- const int allw= strlen(all[0]);
-
- int alloffy, alloffx;
- for (alloffy=0; alloffy < search.br.y; alloffy++) {
- if (alloffy+allh-1 < search.tl.y) continue;
- for (alloffx=search.tl.x; alloffx+allw-1 <= search.br.x; alloffx++) {
- int good=0, bad=0;
- int x,y;
- for (x=0; x<allw; x++)
- for (y=0; y<allh; y++) {
- int want= all[y][x];
- if (want==' ') continue;
- if (get(alloffx+x, alloffy+y) == want)
- good++;
- else
- bad++;
- }
- debugf("CHECKCOMMOD alloff=%d,%d good=%d bad=%d\n",
- alloffx,alloffy, good,bad);
- if (good > 20*bad)
- goto all_found;
- }
- }
- fatal("Commodities selector not set to `All'.");
+#define COMMOD_SELECTOR_MATCHES(all) \
+ commod_selector_matches(search, all, \
+ sizeof((all))/sizeof((all)[0]), \
+ strlen((all)[0]))
- all_found:;
+ if (!(COMMOD_SELECTOR_MATCHES(all_small) ||
+ COMMOD_SELECTOR_MATCHES(all_big)))
+ fatal("Commodities selector not set to `All'.");
}
CanonImage *alloc_canon_image(int w, int h) {
ADJUST_BOX(islandnamer,"o",5, 0, MUST, tl,y,+1);
ADJUST_BOX(islandnamer,"o",5, cim->h, MUST, br,y,-1);
+ ADJUST_BOX(islandnamer,"o",1, 0, MUST, tl,x,+1);
+ ADJUST_BOX(islandnamer,"o",1, cim->w, MUST, br,x,-1);
+
debug_rect("islandnamer",0, islandnamer);
// int larger_islandnamebry= islandnamer.tl.y + 25;
// MUST(islandnamer.br.y < larger_islandnamebry,