void loadpalette(void) { enterfilename("LOAD PALETTE", palname); gfx_loadpalette(palname); gfx_calcpalette(64, 0, 0, 0); gfx_setpalette(); }
void loadpalette(void) { char textbuffer[13]; textbuffer[0] = 0; enterfilename("LOAD PALETTE", textbuffer); if (gfx_loadpalette(textbuffer)) { memcpy(map.palettename, textbuffer, 13); } gfx_calcpalette(64, 0, 0, 0); gfx_setpalette(); }
void mainloop(void) { gfx_calcpalette(64, 0, 0, 0); gfx_setpalette(); win_getspeed(60); for (;;) { speed = win_getspeed(60); key = kbd_getkey(); getmousemove(); getmousebuttons(); if ((key == KEY_ESC) || (win_quitted)) break; generalcommands(); gfx_fillscreen(0); printinfo(); printstatus(); gfx_drawsprite(mousex, mousey, 0x00010001); gfx_updatepage(); } }
int gfx_loadpalette(char *name) { int handle; handle = io_open(name); if (handle == -1) { bme_error = BME_OPEN_ERROR; return BME_ERROR; } if (io_read(handle, gfx_palette, sizeof gfx_palette) != sizeof gfx_palette) { bme_error = BME_READ_ERROR; io_close(handle); return BME_ERROR; } io_close(handle); gfx_calcpalette(64, 0, 0, 0); bme_error = BME_OK; return BME_OK; }
void initstuff(void) { FILE *handle; win_openwindow("Block-info Editor V1.26", NULL); win_fullscreen = 1; win_setmousemode(MOUSE_ALWAYS_HIDDEN); setscreenmode(); kbd_init(); mou_init(); if (!gfx_loadsprites(SPR_FONTS, "fonts.spr")) { win_messagebox("Sprite load error (FONTS.SPR)"); exit(1); } if (!gfx_loadsprites(SPR_EDITOR, "editor.spr")) { win_messagebox("Sprite load error (EDITOR.SPR)"); exit(1); } blkinfdata = malloc((MAXBLOCKS+1)*16); if (!blkinfdata) { win_messagebox("No memory for blockinfotable!"); exit(1); } memset(blkinfdata, 0, (MAXBLOCKS+1)*16); io_setfilemode(0); // Rest of file access happens without datafile gfx_loadblocks(blkname); gfx_loadpalette(palname); gfx_calcpalette(64,0,0,0); gfx_setpalette(); handle = fopen(infname, "rb"); if (!handle) return; fread(&blkinfdata[0], (gfx_nblocks+1) * 16, 1, handle); fclose(handle); }
void loadmap(void) { FILE *handle; int c; if (!strlen(mapname)) return; handle = fopen(mapname, "rb"); if (!handle) return; /* Load map header */ fread(&map, sizeof(MAPHEADER), 1, handle); /* Load each layer */ for (c = 0; c < MAX_LAYERS; c++) { layer[c].xsize = freadle32(handle); layer[c].ysize = freadle32(handle); layer[c].xdivisor = fread8(handle); layer[c].ydivisor = fread8(handle); layer[c].xwrap = fread8(handle); layer[c].ywrap = fread8(handle); if ((layer[c].xsize) && (layer[c].ysize)) { int d; for (d = 0; d < layer[c].xsize * layer[c].ysize; d++) { layerdataptr[c][d] = freadle16(handle); } } } fclose(handle); /* Load correct blocks & palette */ gfx_loadblocks((char *)map.blocksname); minxsize = (gfx_virtualxsize + (gfx_blockxsize-1)) / gfx_blockxsize; minysize = (gfx_virtualysize + (gfx_blockysize-1)) / gfx_blockysize; gfx_loadpalette((char *)map.palettename); gfx_calcpalette(64, 0, 0, 0); gfx_setpalette(); }
void mainloop(void) { gfx_calcpalette(64, 0, 0, 0); gfx_setpalette(); win_getspeed(60); for (;;) { speed = win_getspeed(60); if (speed > 10) speed = 10; key = kbd_getkey(); getmousemove(); getmousebuttons(); if ((key == KEY_ESC) || (win_quitted)) break; blockediting(); scrollmap(); generalcommands(); gfx_fillscreen(transparent); drawalllayers(); printstatus(); if (mark) { int mx, my; if (layer[cl].xdivisor) mx = markx1*gfx_blockxsize-xpos/layer[cl].xdivisor; else mx = markx1*gfx_blockxsize; if (layer[cl].xsize) { while (mx < 0) { mx += layer[cl].xsize*gfx_blockxsize; } mx %= (layer[cl].xsize*gfx_blockxsize); } if (layer[cl].ydivisor) my = marky1*gfx_blockysize-ypos/layer[cl].ydivisor; else my = marky1*gfx_blockysize; if (layer[cl].ysize) { while (my < 0) { my += layer[cl].ysize*gfx_blockysize; } my %= (layer[cl].ysize*gfx_blockysize); } gfx_drawsprite(mx,my,0x00010002); } if (mark==2) { int mx, my; if (layer[cl].xdivisor) mx = markx2*gfx_blockxsize-xpos/layer[cl].xdivisor; else mx = markx2*gfx_blockxsize; if (layer[cl].xsize) { while (mx < 0) { mx += layer[cl].xsize*gfx_blockxsize; } mx %= (layer[cl].xsize*gfx_blockxsize); } if (layer[cl].ydivisor) my = marky2*gfx_blockysize-ypos/layer[cl].ydivisor; else my = marky2*gfx_blockysize; if (layer[cl].ysize) { while (my < 0) { my += layer[cl].ysize*gfx_blockysize; } my %= (layer[cl].ysize*gfx_blockysize); } gfx_drawsprite(mx,my,0x00010003); } gfx_drawsprite(mousex,mousey,0x00010001); gfx_updatepage(); } }