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(); } }
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(); } }
int gfx_init(unsigned xsize, unsigned ysize, unsigned framerate, unsigned flags) { int sdlflags = SDL_HWSURFACE; // Prevent re-entry (by window procedure) if (gfx_initexec) return BME_OK; gfx_initexec = 1; gfx_last_xsize = xsize; gfx_last_ysize = ysize; gfx_last_framerate = framerate; gfx_last_flags = flags & ~(GFX_FULLSCREEN | GFX_WINDOW); // Store the options contained in the flags gfx_scanlinemode = flags & (GFX_SCANLINES | GFX_DOUBLESIZE); if (flags & GFX_NOSWITCHING) gfx_preventswitch = 1; else gfx_preventswitch = 0; if (win_fullscreen) sdlflags |= SDL_FULLSCREEN; if (flags & GFX_FULLSCREEN) sdlflags |= SDL_FULLSCREEN; if (flags & GFX_WINDOW) sdlflags &= ~SDL_FULLSCREEN; if (sdlflags & SDL_FULLSCREEN) { sdlflags |= SDL_DOUBLEBUF; gfx_fullscreen = 1; } else gfx_fullscreen = 0; // Calculate virtual window size gfx_virtualxsize = xsize; gfx_virtualxsize /= 16; gfx_virtualxsize *= 16; gfx_virtualysize = ysize; gfx_vscreen = NULL; if ((!gfx_virtualxsize) || (!gfx_virtualysize)) { gfx_initexec = 0; gfx_uninit(); bme_error = BME_ILLEGAL_CONFIG; return BME_ERROR; } // Calculate actual window size (for scanline mode & doublesize mode // this is double the virtual) gfx_windowxsize = gfx_virtualxsize; gfx_windowysize = gfx_virtualysize; if (gfx_scanlinemode) { gfx_windowxsize <<= 1; gfx_windowysize <<= 1; } gfx_vscreen = malloc(gfx_virtualysize*gfx_virtualxsize); if (!gfx_vscreen) { gfx_initexec = 0; gfx_uninit(); bme_error = BME_OUT_OF_MEMORY; return BME_ERROR; } gfx_setclipregion(0, 0, gfx_virtualxsize, gfx_virtualysize); // Colors 0 & 255 are always black & white gfx_sdlpalette[0].r = 0; gfx_sdlpalette[0].g = 0; gfx_sdlpalette[0].b = 0; gfx_sdlpalette[255].r = 255; gfx_sdlpalette[255].g = 255; gfx_sdlpalette[255].b = 255; gfx_screen = SDL_SetVideoMode(gfx_windowxsize, gfx_windowysize, 8, sdlflags); gfx_initexec = 0; if (gfx_screen) { gfx_initted = 1; gfx_setpalette(); win_setmousemode(win_mousemode); return BME_OK; } else return BME_ERROR; }