+++ /dev/null
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-\r
-#include "config.h"\r
-#include "guicomp.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-#include "keyboard.h"\r
-\r
-#include "smalfont.h"\r
-#include "columns.h"\r
-#include "tilesel.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-struct message\r
-{\r
- char text[44]; // message text\r
- int exptime; // message expire time\r
-};\r
-\r
-struct message messages[6]; // 5-message buffer\r
-char num_msgs=0; // number of active messages\r
-char playingmod[80]; // currently playing mod.\r
-extern char scrollmode;\r
-\r
-// ================================= Code ====================================\r
-\r
-void CheckMessageExpirations()\r
-{ int i;\r
-\r
- for (i=0; i<num_msgs; i++)\r
- if (systemtime>messages[i].exptime)\r
- {\r
- memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1)));\r
- num_msgs--;\r
- }\r
-}\r
-\r
-void Message(char *text, int duration)\r
-{\r
- if (num_msgs<5)\r
- {\r
- memcpy(messages[num_msgs].text, text, strlen(text));\r
- messages[num_msgs].exptime=systemtime+duration;\r
- num_msgs++;\r
- return;\r
- }\r
-\r
- memcpy(&messages[0].text, &messages[1].text, 192);\r
- memcpy(messages[4].text, text, strlen(text)+1);\r
- messages[num_msgs].exptime=systemtime+duration;\r
-}\r
-\r
-void DrawScreenControls()\r
-{ int i;\r
- byte c;\r
-\r
- if (el<6)\r
- {\r
- if (pasting)\r
- {\r
- GotoXY(298-5,tsy-19+13);\r
- printstring("P");\r
- }\r
- }\r
-\r
- // Put current-tile boxes if applicable.\r
- if (el<6)\r
- {\r
- FilledBox(298,tsy-19,18,18,white);\r
- FilledBox(317,tsy-19,18,18,white);\r
- CopySprite(299,tsy-18,16,16,vsp+(256*lt));\r
- CopySprite(318,tsy-18,16,16,vsp+(256*rt));\r
- }\r
-\r
- if (el==7)\r
- {\r
- sprintf(strbuf,"Zone %d",curzone);\r
- GotoXY(280,tsy-16);\r
- printstring(strbuf);\r
- GotoXY(280,tsy-10);\r
- printstring(zones[curzone].name);\r
-\r
- c=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
- layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)/16)];\r
-\r
- if (c)\r
- {\r
- sprintf(strbuf,"zone %d",c);\r
- GotoXY(280,17);\r
- printstring(strbuf);\r
- GotoXY(280,23);\r
- printstring(zones[c].name);\r
- }\r
- }\r
-\r
- if (el==8)\r
- {\r
- sprintf(strbuf,"%d entities",entities);\r
- GotoXY(285,17); printstring(strbuf);\r
-\r
- if (c=EntityThere((mx+xwin-16)/16,(my+ywin-16)/16))\r
- {\r
- c--;\r
- GotoXY(285,tsy-10);\r
- printstring(entity[c].desc);\r
- }\r
- }\r
-\r
- // Put the current-tile mouse thingy.\r
- GotoXY(17,17);\r
- dec_to_asciiz((xwin+mx-16)/16,strbuf);\r
- printstring(strbuf); printstring(", ");\r
- dec_to_asciiz((ywin+my-16)/16,strbuf);\r
- printstring(strbuf);\r
-\r
- // Put the layer editor/selector.\r
-\r
- for (i=0; i<6; i++)\r
- {\r
- if (el==i) c=white; else c=darkw;\r
- FilledBox(17+(i*10),tsy-7,9,7,c);\r
- if (layertoggle[i]) c=darkred; else c=0;\r
- FilledBox(18+(i*10),tsy-6,7,6,c);\r
- GotoXY(20+(i*10),tsy-5); dec_to_asciiz(i+1,strbuf);\r
- if (i<numlayers) printstring(strbuf);\r
- }\r
-\r
- for (i=6; i<10; i++)\r
- {\r
- if (el==i) c=white; else c=darkw;\r
- FilledBox(17+(i*10),tsy-7,9,7,c);\r
- if (layertoggle[i]) c=darkred; else c=0;\r
- FilledBox(18+(i*10),tsy-6,7,6,c);\r
- GotoXY(20+(i*10),tsy-5);\r
- switch (i)\r
- {\r
- case 6: printstring("O"); break;\r
- case 7: printstring("N"); break;\r
- case 8: printstring("E"); break;\r
- case 9: printstring("T"); break;\r
- }\r
- }\r
-}\r
-\r
-void RenderMessages()\r
-{ int i;\r
-\r
- CheckMessageExpirations();\r
- for (i=0; i<num_msgs; i++)\r
- {\r
- GotoXY(17,23+(i*6));\r
- printstring(messages[i].text);\r
- }\r
-}\r
-\r
-void RenderGUI()\r
-{\r
- RenderMessages();\r
- DrawScreenControls();\r
- DrawMouse();\r
-}\r
-\r
-// ============================= Dialog Code =================================\r
-\r
-int mmxofs=60, mmyofs=50;\r
-\r
-void DoMainMenu()\r
-{\r
- key[SCAN_ESC]=0;\r
- MainMenu(mmxofs, mmyofs);\r
-}\r
-\r
-void MainMenu(int dx, int dy)\r
-{ char done=0;\r
- //int mxo, myo, cursorblink;\r
-\r
- mmxofs=dx;\r
- mmyofs=dy;\r
- do\r
- {\r
- if (dx<16) dx=16;\r
- if (dy<16) dy=16;\r
- if (dx+80>335) dx=336-80;\r
- if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
- RenderMap();\r
- RenderGUI();\r
- stdwindow(dx, dy, dx+80, dy+89);\r
-\r
- if (mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
- if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
- if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
- if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
- if (my>dy+29 && my<dy+36) FilledBox(dx+2, dy+29, 76, 7, darkw);\r
- if (my>dy+35 && my<dy+42) FilledBox(dx+2, dy+35, 76, 7, darkw);\r
- if (my>dy+41 && my<dy+48) FilledBox(dx+2, dy+41, 76, 7, darkw);\r
- if (my>dy+47 && my<dy+54) FilledBox(dx+2, dy+47, 76, 7, darkw);\r
- if (my>dy+53 && my<dy+60) FilledBox(dx+2, dy+53, 76, 7, darkw);\r
- if (my>dy+59 && my<dy+66) FilledBox(dx+2, dy+59, 76, 7, darkw);\r
- if (my>dy+65 && my<dy+72) FilledBox(dx+2, dy+65, 76, 7, darkw);\r
- if (my>dy+71 && my<dy+78) FilledBox(dx+2, dy+71, 76, 7, darkw);\r
- if (my>dy+80 && my<dy+87) FilledBox(dx+2, dy+80, 76, 7, darkw);\r
- }\r
-\r
- GotoXY(dx+3, dy+3); printstring("New MAP");\r
- GotoXY(dx+3, dy+9); printstring("Load MAP");\r
- GotoXY(dx+3, dy+15); printstring("Save MAP");\r
- GotoXY(dx+3, dy+21); printstring("Load VSP");\r
- HLine(dx+2, dy+28, 76, white);\r
- GotoXY(dx+3, dy+30); printstring("MAP Properties");\r
- GotoXY(dx+3, dy+36); printstring("Layers"); GotoXY(dx+73, dy+36); printstring(">");\r
- GotoXY(dx+3, dy+42); printstring("Options");\r
- GotoXY(dx+3, dy+48); printstring("MOD Player");\r
- GotoXY(dx+3, dy+54); printstring("CD Player");\r
- GotoXY(dx+3, dy+60); printstring("Columns");\r
- GotoXY(dx+3, dy+66); printstring("Execute"); GotoXY(dx+73, dy+66); printstring(">");\r
- GotoXY(dx+3, dy+72); printstring("Exit to DOS");\r
- HLine(dx+2, dy+79, 76, white);\r
- GotoXY(dx+3, dy+81); printstring("About MapEd");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- if (mb==1 && mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) { NewMAP(); done=1; WaitRelease(); break; }\r
- if (my>dy+8 && my<dy+15) { done=1; WaitRelease(); LoadMAPDialog(); break; }\r
- if (my>dy+14 && my<dy+21) { done=1; WaitRelease(); key[SCAN_F10]=1; break; }\r
- if (my>dy+20 && my<dy+26) { done=1; WaitRelease(); LoadVSPDialog(); break; }\r
- if (my>dy+29 && my<dy+36) { done=1; WaitRelease(); MapPropertiesDialog(); break; }\r
- if (my>dy+35 && my<dy+42) { done=1; WaitRelease(); LayersSubMenu(dx,dy); break; }\r
- if (my>dy+41 && my<dy+48) { done=1; WaitRelease(); OptionsDialog(); break; }\r
- if (my>dy+47 && my<dy+54) { done=1; WaitRelease(); MPDialog(); break; }\r
- if (my>dy+53 && my<dy+60) { done=1; WaitRelease(); CDDialog(); break; }\r
- if (my>dy+59 && my<dy+66) { done=1; WaitRelease(); Columns(); break; }\r
- if (my>dy+65 && my<dy+72) { done=1; WaitRelease(); ExecuteSubMenu(0, 0); break; }\r
- if (my>dy+71 && my<dy+78) { done=1; WaitRelease(); key[SCAN_X]=1; key[SCAN_ALT]=1; break; }\r
- if (my>dy+80 && my<dy+87) { done=1; About(); break; }\r
- }\r
-\r
- if (mb==1)\r
- {\r
- WaitRelease();\r
- done=1;\r
- }\r
- if (key[SCAN_ESC]==1) done=1;\r
- } while (!done);\r
- key[SCAN_ESC]=0;\r
-}\r
-\r
-// tilesel.c\r
-extern FILE *pcxf;\r
-extern int width, depth;\r
-extern int vidoffset;\r
-extern char *ovsp;\r
-extern char *t;\r
-extern word ontiles;\r
-\r
-static int TileMatch(int a, int b)\r
- { return !memcmp(ovsp+(a*256), ovsp+(b*256), 256); }\r
-\r
-int ilxsize=145, ilysize=122+10;\r
-int ilxofs=16, ilyofs=16;\r
-\r
-// make this configurable at some point\r
-#define MIN_TILE_X 50\r
-#define MIN_TILE_Y 50\r
-\r
-static int BitToNum(int num)\r
-{\r
- int i;\r
-\r
- if (!num)\r
- return 0;\r
-\r
- for (i=0; i<32; i++)\r
- {\r
- if (num & (1<<i))\r
- break;\r
- }\r
-\r
- return i+1;\r
-}\r
-\r
-//zero\r
-byte TileCmp(byte *one, byte *two)\r
- { return !memcmp(one,two, 256); }\r
-\r
-void ImageToLayer()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, tt, *str;\r
- char nstr1[80], nstr2[80];\r
-\r
- int i,j,k,m;\r
- FILE *f=0;\r
- int num_padx=0,num_pady=0; // in tiles\r
- int minpadx=0,minpady=0; // in tiles\r
- int tilesx=0,tilesy=0; // in tiles\r
- int totalx=0,totaly=0; // in tiles\r
- int excessx=0,excessy=0; // in pixels\r
- //int chk_1=1,chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0; // radio control\r
- int chk_layer=1;\r
- int chk_grabexcess=0,chk_centerinpad=0,chk_nodup=1; //,chk_padisblank=1;\r
- char txt_imagename[80];\r
- // ...\r
- int ly=0;\r
- int wide=0,deep=0;\r
- int lsz=0;\r
- int matched=0,plot=0; //,mapat=0;\r
- int tilesripped=0;\r
- int startx=0,starty=0;\r
- memset(txt_imagename,0,80);\r
- bmode=0; // for browser; update map/gui\r
- width=0; depth=0; // for pcx loading code\r
-\r
- sprintf(nstr1, "%d", num_padx);\r
- sprintf(nstr2, "%d", num_pady);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- ilxofs = (mx-mxo);\r
- ilyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (ilxofs<16) ilxofs = 16;\r
- if (ilyofs<16) ilyofs = 16;\r
- if (ilxofs+ilxsize>335) ilxofs = 336-ilxsize;\r
- if (ilyofs+ilysize>sy+16) ilyofs = (sy+16)-ilysize;\r
- }\r
-\r
- Window(ilxofs, ilyofs, ilxofs+ilxsize, ilyofs+ilysize, "Import Image As Layer");\r
- Button(ilxofs+109, ilyofs+12, "Browse");\r
- Button(ilxofs+109, ilyofs+30, "OK");\r
- GotoXY(ilxofs+5, ilyofs+25); printstring("Layer:");\r
- // layer select radio buttons\r
- for (i=0; i<6; i++)\r
- {\r
- CheckBox(ilxofs+29+(i*10), ilyofs+33, chk_layer & (1<<i));\r
- GotoXY(ilxofs+31+(i*10), ilyofs+25);\r
- sprintf(strbuf, "%i", i+1); printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+5, ilyofs+14); printstring("Image:");\r
- //TextField(ilxofs+29, ilyofs+12, 75, txt_imagename, ctf == 1 ? cb : 0);\r
- GotoXY(ilxofs+29, ilyofs+14); printstring(txt_imagename);\r
- HLine(ilxofs+1, ilyofs+44, 143, white);\r
- GotoXY(ilxofs+5, ilyofs+49); printstring("Image Dimensions:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+5+pixels("Image Dimensions:")+3, ilyofs+49);\r
- sprintf(strbuf, "%dx%d", width, depth);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+5, ilyofs+60); printstring("Tiles X:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+5+pixels("Tiles X:")+3, ilyofs+60);\r
- sprintf(strbuf, "%d", tilesx);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+5, ilyofs+71); printstring("Tiles Y:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+5+pixels("Tiles Y:")+3, ilyofs+71);\r
- sprintf(strbuf, "%d", tilesy);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+51, ilyofs+60); printstring("Pad X:");\r
- GotoXY(ilxofs+51, ilyofs+71); printstring("Pad Y:");\r
- TextField(ilxofs+74, ilyofs+58, 12, nstr1, ctf == 1 ? cb : 0);\r
- TextField(ilxofs+74, ilyofs+69, 12, nstr2, ctf == 2 ? cb : 0);\r
- GotoXY(ilxofs+95, ilyofs+60); printstring("Total X:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+95+pixels("Total X:")+3, ilyofs+60);\r
- sprintf(strbuf, "%d", totalx);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+95, ilyofs+71); printstring("Total Y:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+95+pixels("Total Y:")+3, ilyofs+71);\r
- sprintf(strbuf, "%d", totaly);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+5, ilyofs+81); printstring("Excess Pixels X:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+5+pixels("Excess Pixels X:")+3, ilyofs+81);\r
- sprintf(strbuf, "%d", excessx);\r
- printstring(strbuf);\r
- }\r
- GotoXY(ilxofs+5, ilyofs+91); printstring("Excess Pixels Y:");\r
- if (width+depth)\r
- {\r
- GotoXY(ilxofs+5+pixels("Excess Pixels Y:")+3, ilyofs+91);\r
- sprintf(strbuf, "%d", excessy);\r
- printstring(strbuf);\r
- }\r
- CheckBox(ilxofs+5, ilyofs+101, chk_grabexcess);\r
- GotoXY(ilxofs+17, ilyofs+102); printstring("Grab Excess");\r
- CheckBox(ilxofs+5, ilyofs+110, chk_centerinpad);\r
- GotoXY(ilxofs+17, ilyofs+111); printstring("Center Within Padding");\r
- CheckBox(ilxofs+5, ilyofs+119, chk_nodup);\r
- GotoXY(ilxofs+17, ilyofs+120); printstring("Eliminate Duplicates");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+12 && my<ilyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(ilxofs+109, ilyofs+12, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1, "*.pcx", "", "", "", txt_imagename);\r
- key[SCAN_ESC]=0; // just in case ESC exited\r
- f=fopen(txt_imagename, "rb");\r
- if (f)\r
- {\r
- LoadPCXHeaderNP(txt_imagename);\r
- fclose(pcxf);\r
-\r
- if (chk_grabexcess) i=15; else i=0;\r
- tilesx=((width+i)&~15)/16;\r
- tilesy=((depth+i)&~15)/16;\r
- excessx=width & 15;\r
- excessy=depth & 15;\r
- if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
- if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
- sprintf(nstr1, "%d", minpadx);\r
- sprintf(nstr2, "%d", minpady);\r
- totalx=tilesx+minpadx;\r
- totaly=tilesy+minpady;\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+30 && my<ilyofs+10+30 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(ilxofs+109, ilyofs+30, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
-\r
- if (strlen(txt_imagename))\r
- {\r
- done=1;\r
-\r
- ly=BitToNum(chk_layer) -1;\r
-\r
- startx=0;\r
- starty=0;\r
- if (chk_centerinpad)\r
- {\r
- startx=(totalx-tilesx)/2;\r
- starty=(totaly-tilesy)/2;\r
- }\r
-\r
- LoadPCXHeaderNP(txt_imagename);\r
-\r
- wide=width;\r
- deep=depth;\r
- if (chk_grabexcess)\r
- {\r
- // round up to the nearest multiple of 16 if grabbing excess\r
- wide=(width+15)&~15;\r
- deep=(depth+15)&~15;\r
- }\r
- // allocate transit image bay, which may have padding ^\r
- t=(char *) valloc(wide * deep,"img2layer",0);\r
-\r
- for (i=0; i<depth; i++)\r
- {\r
- vidoffset=wide*i;\r
- ReadPCXLine(t);\r
- }\r
- fclose(pcxf);\r
-\r
- deep=tilesy;\r
- wide=tilesx;\r
- ontiles=(wide*deep)+1; // +1 for our empty tile\r
-\r
- ovsp=(char *) valloc(ontiles*256,"img2layer2",0);\r
-\r
- layer[ly].pmultx=1; layer[ly].pmulty=1;\r
- layer[ly].pdivx=1; layer[ly].pdivy=1;\r
- // totalx & totaly are the sum of tilesx/tilesy & num_padx/num_pady\r
- layer[ly].sizex=totalx; layer[ly].sizey=totaly;\r
- layer[ly].trans=0; layer[ly].hline=0;\r
-\r
- lsz = totalx * totaly;\r
-\r
- if (layers[ly]) vfree(layers[ly]);\r
- layers[ly]=(unsigned short *) valloc((lsz*2)+4,"layer data",ly);\r
-\r
- tilesripped=0;\r
- memset(ovsp,0,256);\r
- tilesripped++;\r
-\r
- for (i=0; i<deep; i++)\r
- {\r
- for (j=0; j<wide; j++)\r
- {\r
- GrabTileAt((j*16), (i*16), tilesripped, 0);\r
- plot=tilesripped;\r
-\r
- // eliminate duplicates?\r
- if (chk_nodup)\r
- {\r
- matched=0;\r
- for (k=0; k<tilesripped; k++)\r
- {\r
- if (TileMatch(tilesripped, k))\r
- {\r
- matched=1;\r
- plot=k;\r
- break;\r
- }\r
- }\r
- //begin zero\r
- for(m=0; m<numtiles; m++)\r
- {\r
- if(TileCmp(vsp+m*256,ovsp+tilesripped*256))\r
- {\r
- matched=1;\r
- plot=m-numtiles;\r
-// plot=0;\r
- break;\r
- }\r
- }\r
- //end zero!\r
- if (!matched) tilesripped++;\r
- }\r
- // grabbing all; keep it regardless\r
- else tilesripped++;\r
-\r
- layers[ly][((i+starty)*totalx)+j+startx]=plot;\r
- }\r
- }\r
-\r
- // adjust indices past current tile amount\r
- for (i=0; i<(totalx*totaly); i++)\r
- layers[ly][i]+=numtiles;\r
-\r
- if (!ly)\r
- {\r
- if (obstruct) vfree(obstruct);\r
- obstruct=(char *) valloc(lsz+4,"obstruct",0);\r
- if (zone) vfree(zone);\r
- zone=(char *) valloc(lsz+4,"zone", 0);\r
- }\r
-\r
- // reallocate tilebay and patch in ovsp\r
- str=(char *)valloc((numtiles+tilesripped)*256,"vsp data",0);\r
- memcpy(str, vsp, (numtiles*256));\r
- vfree(vsp); vsp=str; str=0;\r
- memcpy(vsp+(numtiles*256), ovsp, (tilesripped*256));\r
- numtiles+=tilesripped;\r
-\r
- // did we make a new layer?\r
- if (ly+1>numlayers)\r
- {\r
- numlayers++;\r
- sprintf(rstring, "%s%i", rstring, ly+1); // update render-order\r
- }\r
-\r
- vfree(t);\r
- vfree(ovsp);\r
- }\r
- // ...\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+29 && mx<ilxofs+8+29 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- chk_layer ^= 1;\r
- chk_layer &= 1;\r
- //chk_1 ^= 1;\r
- //chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+39 && mx<ilxofs+8+39 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- if (numlayers+1 >= 2)\r
- {\r
- chk_layer ^= 2;\r
- chk_layer &= 2;\r
- //chk_2 ^= 1;\r
- //chk_1=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
- WaitRelease(); continue;\r
- }\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+49 && mx<ilxofs+8+49 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- if (numlayers+1 >= 3)\r
- {\r
- chk_layer ^= 4;\r
- chk_layer &= 4;\r
- //chk_3 ^= 1;\r
- //chk_1=0,chk_2=0,chk_4=0,chk_5=0,chk_6=0;\r
- WaitRelease(); continue;\r
- }\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+59 && mx<ilxofs+8+59 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- if (numlayers+1 >= 4)\r
- {\r
- chk_layer ^= 8;\r
- chk_layer &= 8;\r
- //chk_4 ^= 1;\r
- //chk_1=0,chk_2=0,chk_3=0,chk_5=0,chk_6=0;\r
- WaitRelease(); continue;\r
- }\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+69 && mx<ilxofs+8+69 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- if (numlayers+1 >= 5)\r
- {\r
- chk_layer ^= 16;\r
- chk_layer &= 16;\r
- //chk_5 ^= 1;\r
- //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_6=0;\r
- WaitRelease(); continue;\r
- }\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+79 && mx<ilxofs+8+79 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
- {\r
- if (numlayers+1 >= 6)\r
- {\r
- chk_layer ^= 32;\r
- chk_layer &= 32;\r
- //chk_6 ^= 1;\r
- //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_5=0;\r
- WaitRelease(); continue;\r
- }\r
- }\r
-\r
- // if no checkboxes are marked, mark the first.\r
- //if (!(chk_1+chk_2+chk_3+chk_4+chk_5+chk_6)) chk_1=1;\r
- if (!chk_layer) chk_layer=1;\r
-\r
-// if (mb==1 && mx>ilxofs+29 && mx<ilxofs+75+29 && my>ilyofs+12 && my<ilyofs+9+12 && !moving)\r
-// {\r
-// ctf=1; str=txt_imagename; cb=1;\r
-// cursorblink=systemtime+40; continue;\r
-// }\r
-\r
- if (mb==1)\r
- {\r
- if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+58 && my<ilyofs+9+58 && !moving)\r
- {\r
- if (ctf==2)\r
- {\r
- if (atoi(str)<minpady)\r
- sprintf(str, "%d", minpady);\r
- }\r
- ctf=1; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+69 && my<ilyofs+9+69 && !moving)\r
- {\r
- if (ctf==1)\r
- {\r
- if (atoi(str)<minpadx)\r
- sprintf(str, "%d", minpadx);\r
- }\r
- ctf=2; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- switch (ctf)\r
- {\r
- case 1: if (atoi(str) < minpadx) sprintf(str, "%d", minpadx); break;\r
- case 2: if (atoi(str) < minpady) sprintf(str, "%d", minpady); break;\r
- }\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+101 && my<ilyofs+7+101 && !moving)\r
- {\r
- chk_grabexcess ^= 1;\r
- // <barf>\r
- if (excessx+excessy)\r
- {\r
- if (chk_grabexcess)\r
- {\r
- if (excessx) tilesx++;\r
- if (excessy) tilesy++;\r
- }\r
- else\r
- {\r
- if (excessx) tilesx--;\r
- if (excessy) tilesy--;\r
- }\r
- if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
- if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
- sprintf(nstr1, "%d", minpadx);\r
- sprintf(nstr2, "%d", minpady);\r
- totalx=tilesx+minpadx;\r
- totaly=tilesy+minpady;\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+110 && my<ilyofs+7+110 && !moving)\r
- {\r
- chk_centerinpad ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+119 && my<ilyofs+7+119 && !moving)\r
- {\r
- chk_nodup ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(ilxofs+ilxsize-9) && (mx<ilxofs+ilxsize-2)\r
- && my>(ilyofs+1) && (my<ilyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>ilxofs && mx<ilxofs+ilxsize && my>ilyofs && my<(ilyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-ilxofs;\r
- myo=my-ilyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
-\r
- // keep minimally required padding\r
- if (ctf==1)\r
- {\r
- if (atoi(str)<minpadx)\r
- sprintf(str, "%d", minpadx);\r
- }\r
- if (ctf==2)\r
- {\r
- if (atoi(str)<minpady)\r
- sprintf(str, "%d", minpady);\r
- }\r
-\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=nstr1; break;\r
- case 1: ctf=2; str=nstr2; break;\r
- case 2: ctf=0; str=0; break;\r
- //case 3: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=2; str=nstr2; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=nstr1; break;\r
- //case 3: ctf=2; str=nstr1; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- tt=strlen(str);\r
- str[tt]=c;\r
- str[tt+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
-\r
- //num_padx=atoi(nstr1);\r
- //num_pady=atoi(nstr2);\r
-}\r
-\r
-int dtxsize=102, dtysize=52;\r
-int dtxofs=100, dtyofs=70;\r
-// aen\r
-void Destroyer()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
- int zn_check=0,zd_check=0,ob_check=0,ent_check=0;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- dtxofs = (mx-mxo);\r
- dtyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (dtxofs<16) dtxofs = 16;\r
- if (dtyofs<16) dtyofs = 16;\r
- if (dtxofs+dtxsize>335) dtxofs = 336-dtxsize;\r
- if (dtyofs+dtysize>sy+16) dtyofs = (sy+16)-dtysize;\r
- }\r
-\r
- Window(dtxofs, dtyofs, dtxofs+dtxsize, dtyofs+dtysize, "Destroyer");\r
- CheckBox(dtxofs+4, dtyofs+11, zn_check);\r
- CheckBox(dtxofs+4, dtyofs+31, ob_check);\r
- CheckBox(dtxofs+4, dtyofs+21, zd_check);\r
- GotoXY(dtxofs+15, dtyofs+12); printstring("Zones");\r
- GotoXY(dtxofs+15, dtyofs+32); printstring("Obstructions");\r
- GotoXY(dtxofs+15, dtyofs+22); printstring("Zone Data");\r
- Button(dtxofs+68, dtyofs+11, "ok");\r
- Button(dtxofs+68, dtyofs+24, "cancel");\r
- CheckBox(dtxofs+4, dtyofs+41, ent_check);\r
- GotoXY(dtxofs+15, dtyofs+42); printstring("Entities");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+11 && my<dtyofs+7+11 && !moving)\r
- {\r
- zn_check ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+21 && my<dtyofs+7+21 && !moving)\r
- {\r
- zd_check ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+31 && my<dtyofs+7+31 && !moving)\r
- {\r
- ob_check ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+41 && my<dtyofs+7+41 && !moving)\r
- {\r
- ent_check ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+11 && my<dtyofs+10+11 && !moving)\r
- {\r
- // insert code for button "ok" here\r
- ButtonPressed(dtxofs+68, dtyofs+11, "ok");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
-\r
- if (Confirm("Are you sure?"))\r
- {\r
- done=1;\r
- if (ob_check) memset(obstruct, 0, (layer[0].sizex*layer[0].sizey)+4);\r
- if (zn_check) memset(zone, 0, (layer[0].sizex*layer[0].sizey)+4);\r
- if (zd_check)\r
- {\r
- numzones=0;\r
- memset(&zones, 0, sizeof zones);\r
- }\r
- if (ent_check)\r
- {\r
- entities=0;\r
- nmchr=0;\r
- nms=0;\r
- memset(&ms, 0, sizeof ms);\r
- memset(&entity, 0, sizeof entities);\r
- memset(&chrlist, 0, sizeof chrlist);\r
- }\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+24 && my<dtyofs+10+24 && !moving)\r
- {\r
- done=1;\r
- // insert code for button "cancel" here\r
- ButtonPressed(dtxofs+68, dtyofs+24, "cancel");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(dtxofs+dtxsize-9) && (mx<dtxofs+dtxsize-2)\r
- && my>(dtyofs+1) && (my<dtyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>dtxofs && mx<dtxofs+dtxsize && my>dtyofs && my<(dtyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-dtxofs;\r
- myo=my-dtyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-void LayersSubMenu(int dx, int dy)\r
-{ char done=0;\r
- //int mxo, myo, cursorblink;\r
-\r
- do\r
- {\r
- if (dx<16) dx=16;\r
- if (dy<16) dy=16;\r
- if (dx+80>335) dx=336-80;\r
- if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
- RenderMap();\r
- RenderGUI();\r
- stdwindow(dx, dy, dx+80, dy+29);\r
-\r
- if (mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
- if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
- if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
- if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
- }\r
-\r
- GotoXY(dx+3, dy+3); printstring("Add Layer");\r
- GotoXY(dx+3, dy+9); printstring("Edit Layer");\r
- GotoXY(dx+3, dy+15); printstring("Import Image");\r
- GotoXY(dx+3, dy+21); printstring("Destroyer");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- if (mb==1 && mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) { AddLayer(); NoticeDialog(); done=1; WaitRelease(); break; }\r
- if (my>dy+8 && my<dy+15) { EditLayerProperties(); done=1; WaitRelease(); break; }\r
- if (my>dy+14 && my<dy+21) { ImageToLayer(); done=1; WaitRelease(); break; }\r
- if (my>dy+20 && my<dy+26) { Destroyer(); done=1; WaitRelease(); break; }\r
- }\r
-\r
- if (mb==1)\r
- {\r
- WaitRelease();\r
- done=1;\r
- }\r
- if (key[SCAN_ESC]==1) done=1;\r
- } while (!done);\r
- key[SCAN_ESC]=0;\r
-}\r
-\r
-void ExecuteSubMenu(int dx, int dy)\r
-{ char done=0;\r
- //int mxo, myo, cursorblink;\r
-\r
- do\r
- {\r
- if (dx<16) dx=16;\r
- if (dy<16) dy=16;\r
- if (dx+80>335) dx=336-80;\r
- if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
- RenderMap();\r
- RenderGUI();\r
- stdwindow(dx, dy, dx+80, dy+23);\r
-\r
- if (mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
- if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
- if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
- }\r
-\r
- GotoXY(dx+3, dy+3); printstring("MAP");\r
- GotoXY(dx+3, dy+9); printstring("VERGE");\r
- GotoXY(dx+3, dy+15); printstring("DOS");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- if (mb==1 && mx>dx && mx<dx+80)\r
- {\r
- if (my>dy+2 && my<dy+9) { ShellMAP(); done=1; WaitRelease(); break; }\r
- if (my>dy+8 && my<dy+15) { ShellVERGE(); done=1; WaitRelease(); break; }\r
- if (my>dy+14 && my<dy+21) { ShellToDOS(); done=1; WaitRelease(); break; }\r
- }\r
-\r
- if (mb==1)\r
- {\r
- WaitRelease();\r
- done=1;\r
- }\r
- if (key[SCAN_ESC]==1) done=1;\r
- } while (!done);\r
- key[SCAN_ESC]=0;\r
-}\r
-\r
-void AddLayer()\r
-{\r
- layers[numlayers]=(word *) valloc(layer[0].sizex * layer[0].sizey * 2,"layer data",numlayers);\r
- //memset(layers[numlayers], 0, layer[0].sizex * layer[0].sizey * 2);\r
- layer[numlayers].pmultx=1; layer[numlayers].pmulty=1;\r
- layer[numlayers].pdivx=1; layer[numlayers].pdivy=1;\r
- layer[numlayers].sizex=layer[0].sizex;\r
- layer[numlayers].sizey=layer[0].sizey;\r
- layer[numlayers].trans=0;\r
- layer[numlayers].hline=0;\r
- numlayers++;\r
-}\r
-\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink, i;\r
- char ctf=0, cb=0, c, t, *str;\r
- char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80],nstr6[80];\r
-\r
- i=el;\r
- if (i>5) i=0;\r
- if (i>=numlayers) i=0;\r
-\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- sprintf(nstr5, "%d", layer[i].trans);\r
- sprintf(nstr6, "%d", layer[i].hline);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- lpxofs = (mx-mxo);\r
- lpyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (lpxofs<16) lpxofs = 16;\r
- if (lpyofs<16) lpyofs = 16;\r
- if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
- if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
- }\r
-\r
- Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
- GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
- GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
- GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
- GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
- GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
- TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
- TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
- TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
- TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
- HLine(lpxofs+1, lpyofs+43, 188, white);\r
- GotoXY(lpxofs+9, lpyofs+48); printstring("Transparent");\r
- GotoXY(lpxofs+36, lpyofs+58); printstring("HLine");\r
- TextField(lpxofs+56, lpyofs+46, 60, nstr5, ctf == 5 ? cb : 0);\r
- TextField(lpxofs+56, lpyofs+56, 60, nstr6, ctf == 6 ? cb : 0);\r
- Button(lpxofs+156, lpyofs+55, "OK");\r
- GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
- sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
- {\r
- ctf=1; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
- {\r
- ctf=2; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
- {\r
- ctf=3; str=nstr3; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
- {\r
- ctf=4; str=nstr4; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+46 && my<lpyofs+9+46 && !moving)\r
- {\r
- ctf=5; str=nstr5; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+56 && my<lpyofs+9+56 && !moving)\r
- {\r
- ctf=6; str=nstr6; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
- DrawMouse(); done=1;\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
- && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-lpxofs;\r
- myo=my-lpyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_UP)\r
- {\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
- layer[i].trans=atoi(nstr5);\r
- layer[i].hline=atoi(nstr6);\r
- last_pressed=0; key[SCAN_UP]=0;\r
- if (i) i--; else i=numlayers-1;\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- sprintf(nstr5, "%d", layer[i].trans);\r
- sprintf(nstr6, "%d", layer[i].hline);\r
- }\r
- if (last_pressed==SCAN_DOWN)\r
- {\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
- layer[i].trans=atoi(nstr5);\r
- layer[i].hline=atoi(nstr6);\r
- last_pressed=0; key[SCAN_DOWN]=0;\r
- if (i<numlayers-1) i++; else i=0;\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- sprintf(nstr5, "%d", layer[i].trans);\r
- sprintf(nstr6, "%d", layer[i].hline);\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=nstr1; break;\r
- case 1: ctf=2; str=nstr2; break;\r
- case 2: ctf=3; str=nstr3; break;\r
- case 3: ctf=4; str=nstr4; break;\r
- case 4: ctf=5; str=nstr5; break;\r
- case 5: ctf=6; str=nstr6; break;\r
- case 6: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=6; str=nstr6; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=nstr1; break;\r
- case 3: ctf=2; str=nstr2; break;\r
- case 4: ctf=3; str=nstr3; break;\r
- case 5: ctf=4; str=nstr4; break;\r
- case 6: ctf=5; str=nstr5; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
- layer[i].trans=atoi(nstr5);\r
- layer[i].hline=atoi(nstr6);\r
-}\r
-/*\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink, i;\r
- char ctf=0, cb=0, c, t, *str;\r
- char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
- i=el;\r
- if (i>5) i=0;\r
- if (i>=numlayers) i=0;\r
-\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- lpxofs = (mx-mxo);\r
- lpyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (lpxofs<16) lpxofs = 16;\r
- if (lpyofs<16) lpyofs = 16;\r
- if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
- if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
- }\r
-\r
- Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
- GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
- GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
- GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
- GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
- GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
- TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
- TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
- TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
- TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
- HLine(lpxofs+1, lpyofs+43, 188, white);\r
- GotoXY(lpxofs+6, lpyofs+49); printstring("Transparent");\r
- GotoXY(lpxofs+32, lpyofs+56); printstring("HLine");\r
- CheckBox(lpxofs+56, lpyofs+48, layer[i].trans);\r
- CheckBox(lpxofs+56, lpyofs+56, layer[i].hline);\r
- Button(lpxofs+156, lpyofs+55, "OK");\r
- GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
- sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
- {\r
- ctf=1; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
- {\r
- ctf=2; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
- {\r
- ctf=3; str=nstr3; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
- {\r
- ctf=4; str=nstr4; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+48 && my<lpyofs+7+48 && !moving)\r
- {\r
- layer[i].trans ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+56 && my<lpyofs+7+56 && !moving)\r
- {\r
- layer[i].hline ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
- && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-lpxofs;\r
- myo=my-lpyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_UP)\r
- {\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
- last_pressed=0; key[SCAN_UP]=0;\r
- if (i) i--; else i=numlayers-1;\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- }\r
- if (last_pressed==SCAN_DOWN)\r
- {\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
- last_pressed=0; key[SCAN_DOWN]=0;\r
- if (i<numlayers-1) i++; else i=0;\r
- sprintf(nstr1, "%d", layer[i].pmultx);\r
- sprintf(nstr2, "%d", layer[i].pdivx);\r
- sprintf(nstr3, "%d", layer[i].pmulty);\r
- sprintf(nstr4, "%d", layer[i].pdivy);\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=nstr1; break;\r
- case 1: ctf=2; str=nstr2; break;\r
- case 2: ctf=3; str=nstr3; break;\r
- case 3: ctf=4; str=nstr4; break;\r
- case 4: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=4; str=nstr4; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=nstr1; break;\r
- case 3: ctf=2; str=nstr2; break;\r
- case 4: ctf=3; str=nstr3; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-\r
- layer[i].pmultx=atoi(nstr1);\r
- layer[i].pdivx=atoi(nstr2);\r
- layer[i].pmulty=atoi(nstr3);\r
- layer[i].pdivy=atoi(nstr4);\r
-}\r
- */\r
-void NewMAP()\r
-{ int cursorblink;\r
-\r
- if (Confirm("Lose existing MAP?"))\r
- {\r
- for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
- vfree(layers[cursorblink]);\r
- memcpy(mapname,"UNTITLED.MAP",13);\r
- memcpy(vspname,"UNTITLED.VSP",13);\r
- memcpy(musname,"\0",1);\r
- memcpy(rstring,"1E",2);\r
- xstart=1; ystart=1;\r
- numlayers=1;\r
- wrap=0;\r
-\r
- // aen: default newmap dimensions set to 100x100\r
- layer[0].pmultx=1; layer[0].pmulty=1;\r
- layer[0].pdivx=1; layer[0].pdivy=1;\r
- layer[0].sizex=100; layer[0].sizey=100;\r
- layer[0].trans=0; layer[0].hline=0;\r
-\r
- layers[0] = (unsigned short *)valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0);\r
- vfree(obstruct);\r
- obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct",0);\r
- vfree(zone);\r
- zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone",0);\r
- entities=0; // Mordred\r
-\r
- // aen: default number of tiles set to 100\r
- numtiles=100;\r
- vfree(vsp);\r
- vsp=(char *) valloc(256 * numtiles,"vsp data",0);\r
-\r
- // zero: was re-allocating same memory so gfx still visible in some places\r
- memset(vsp,0,256*numtiles);\r
- // zero: gotta clear that anim stuff man!\r
- memset(vspanim,0,800);\r
- InitTileIDX();\r
-\r
-\r
-\r
- layertoggle[0]=1; layertoggle[1]=0; layertoggle[2]=0; layertoggle[3]=0;\r
- layertoggle[4]=0; layertoggle[5]=0; layertoggle[6]=0; layertoggle[7]=0;\r
- xwin=0; ywin=0;\r
- }\r
-}\r
-\r
-int amxsize=150, amysize=88;\r
-int amxofs=60, amyofs=60;\r
-\r
-void About()\r
-{\r
- char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
-\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- amxofs = (mx-mxo);\r
- amyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (amxofs<16) amxofs = 16;\r
- if (amyofs<16) amyofs = 16;\r
- if (amxofs+amxsize>335) amxofs = 336-amxsize;\r
- if (amyofs+amysize>sy+16) amyofs = (sy+16)-amysize;\r
- }\r
-\r
- sprintf(strbuf, "About MapEd %s", ME2_VERSION);\r
- Window(amxofs, amyofs, amxofs+amxsize, amyofs+amysize, strbuf);\r
- sprintf(strbuf, "MapEd v.%s", ME2_VERSION);\r
- GotoXY(amxofs+52, amyofs+16); printstring(strbuf);\r
- GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna");\r
- GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved");\r
- GotoXY(amxofs+(75-pixels("Additional code by Ric")/2), amyofs+41);\r
- printstring("Additional code by Ric");\r
- GotoXY(amxofs+(75-pixels("Additional code by aen")/2), amyofs+47);\r
- printstring("Additional code by aen");\r
- GotoXY(amxofs+(75-pixels("Additional code by zeromus")/2), amyofs+53);\r
- printstring("Additional code by zeromus");\r
- Button(amxofs+60, amyofs+68, "OK");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if ((mb==1 && mx>amxofs+66 && mx<amxofs+30+66 && my>amyofs+68 && my<amyofs+10+68 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(amxofs+60, amyofs+68, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(amxofs+amxsize-9) && (mx<amxofs+amxsize-2) &&\r
- my>(amyofs+1) && (my<amyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>amxofs && mx<amxofs+amxsize && my>amyofs && my<(amyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-amxofs;\r
- myo=my-amyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB)\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
-}\r
-\r
-int cnxsize=125, cnysize=50;\r
-int cnxofs=114, cnyofs=70;\r
-\r
-int Confirm(char *message)\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- WaitRelease();\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- cnxofs = (mx-mxo);\r
- cnyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (cnxofs<16) cnxofs = 16;\r
- if (cnyofs<16) cnyofs = 16;\r
- if (cnxofs+cnxsize>335) cnxofs = 336-cnxsize;\r
- if (cnyofs+cnysize>sy+16) cnyofs = (sy+16)-cnysize;\r
- }\r
-\r
- Window(cnxofs, cnyofs, cnxofs+cnxsize, cnyofs+cnysize, "Confirm? (Y/N)");\r
- GotoXY(cnxofs+125/2-(pixels(message)/2), cnyofs+15); printstring(message);\r
-\r
- Button(cnxofs+24, cnyofs+30, "Yes");\r
- Button(cnxofs+69, cnyofs+30, "No");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>cnxofs+24 && mx<cnxofs+30+24 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
- {\r
- // insert code for button "Yes" here\r
- ButtonPressed(cnxofs+24, cnyofs+30, "Yes");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease();\r
- return 1;\r
- }\r
-\r
- if (mb==1 && mx>cnxofs+69 && mx<cnxofs+30+69 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
- {\r
- ButtonPressed(cnxofs+69, cnyofs+30, "No");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease();\r
- return 0;\r
- }\r
-\r
- if (mb==1 && mx>(cnxofs+cnxsize-9) && (mx<cnxofs+cnxsize-2)\r
- && my>(cnyofs+1) && (my<cnyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>cnxofs && mx<cnxofs+cnxsize && my>cnyofs && my<(cnyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-cnxofs;\r
- myo=my-cnyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
- if (last_pressed==SCAN_N)\r
- {\r
- key[SCAN_N]=0;\r
- done=1;\r
- break;\r
- }\r
- if (last_pressed==SCAN_Y)\r
- {\r
- key[SCAN_Y]=0;\r
- return 1;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB)\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
- return 0;\r
-}\r
-\r
-int lmxsize=145, lmysize=36;\r
-int lmxofs=80, lmyofs=50;\r
-\r
-void LoadMAPDialog()\r
-{ char lmapname[80];\r
- char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- memset(lmapname, 0, 80);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- lmxofs = (mx-mxo);\r
- lmyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (lmxofs<16) lmxofs = 16;\r
- if (lmyofs<16) lmyofs = 16;\r
- if (lmxofs+lmxsize>335) lmxofs = 336-lmxsize;\r
- if (lmyofs+lmysize>sy+16) lmyofs = (sy+16)-lmysize;\r
- }\r
-\r
- Window(lmxofs, lmyofs, lmxofs+lmxsize, lmyofs+lmysize, "Load MAP");\r
- GotoXY(lmxofs+2, lmyofs+13); printstring("Load MAP:");\r
- TextField(lmxofs+38, lmyofs+11, 70, lmapname, ctf == 1 ? cb : 0);\r
- Button(lmxofs+79, lmyofs+22, "OK");\r
- Button(lmxofs+111, lmyofs+22, "Cancel");\r
- Button(lmxofs+111, lmyofs+11, "Browse");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>lmxofs+38 && mx<lmxofs+70+38 && my>lmyofs+11 && my<lmyofs+9+11 && !moving)\r
- {\r
- ctf=1; str=lmapname; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>lmxofs+79 && mx<lmxofs+30+79 && my>lmyofs+22 && my<lmyofs+10+22 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- if (modified)\r
- if (!Confirm("Lose unsaved changes?")) { done=1; continue; }\r
- for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
- vfree(layers[cursorblink]);\r
- vfree(obstruct);\r
- vfree(zone);\r
- vfree(vsp);\r
-\r
- memcpy(mapname, lmapname, strlen(lmapname)+1);\r
- LoadMAP(mapname);\r
- InitTileIDX();\r
- xwin=0; ywin=0; done=1;\r
-\r
- ButtonPressed(lmxofs+79, lmyofs+22, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+22 && my<lmyofs+10+22 && !moving)\r
- {\r
- // insert code for button "Cancel" here\r
- ButtonPressed(lmxofs+111, lmyofs+22, "Cancel");\r
- DrawMouse(); done=1;\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+11 && my<lmyofs+10+11 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(lmxofs+111, lmyofs+11, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease();\r
- Browse(1,"*.map","","","",lmapname);\r
- continue;\r
- }\r
-\r
- if (mb==1 && mx>(lmxofs+lmxsize-9) && (mx<lmxofs+lmxsize-2)\r
- && my>(lmyofs+1) && (my<lmyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>lmxofs && mx<lmxofs+lmxsize && my>lmyofs && my<(lmyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-lmxofs;\r
- myo=my-lmyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB)\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=lmapname; break;\r
- case 1: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
-}\r
-\r
-int lvxsize=145, lvysize=35;\r
-int lvxofs=80, lvyofs=50;\r
-\r
-void LoadVSPDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
- char lvspname[80];\r
-\r
- last_pressed=0;\r
- memset(lvspname,0,80);\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- lvxofs = (mx-mxo);\r
- lvyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (lvxofs<16) lvxofs = 16;\r
- if (lvyofs<16) lvyofs = 16;\r
- if (lvxofs+lvxsize>335) lvxofs = 336-lvxsize;\r
- if (lvyofs+lvysize>sy+16) lvyofs = (sy+16)-lvysize;\r
- }\r
-\r
- Window(lvxofs, lvyofs, lvxofs+lvxsize, lvyofs+lvysize, "Load VSP");\r
- GotoXY(lvxofs+2, lvyofs+13); printstring("Load VSP:");\r
- TextField(lvxofs+38, lvyofs+11, 70, lvspname, ctf == 1 ? cb : 0);\r
- Button(lvxofs+79, lvyofs+21, "OK");\r
- Button(lvxofs+111, lvyofs+21, "Cancel");\r
- Button(lvxofs+111, lvyofs+10, "Browse");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>lvxofs+38 && mx<lvxofs+70+38 && my>lvyofs+11 && my<lvyofs+9+11 && !moving)\r
- {\r
- ctf=1; str=lvspname; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>lvxofs+79 && mx<lvxofs+30+79 && my>lvyofs+21 && my<lvyofs+10+21 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- vfree(vsp);\r
- memcpy(vspname, lvspname, strlen(lvspname)+1);\r
- LoadVSP(vspname);\r
- InitTileIDX();\r
- ButtonPressed(lvxofs+79, lvyofs+21, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- done=1;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+21 && my<lvyofs+10+21 && !moving)\r
- {\r
- // insert code for button "Cancel" here\r
- ButtonPressed(lvxofs+111, lvyofs+21, "Cancel");\r
- DrawMouse(); done=1;\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+10 && my<lvyofs+10+10 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(lvxofs+111, lvyofs+10, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.vsp","","","",lvspname);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(lvxofs+lvxsize-9) && (mx<lvxofs+lvxsize-2)\r
- && my>(lvyofs+1) && (my<lvyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>lvxofs && mx<lvxofs+lvxsize && my>lvyofs && my<(lvyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-lvxofs;\r
- myo=my-lvyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=lvspname; break;\r
- case 1: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=lvspname; break;\r
- case 1: ctf=0; str=lvspname; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-int mpxsize=175, mpysize=37;\r
-int mpxofs=60, mpyofs=60;\r
-\r
-void MPDialog()\r
-{ char done=0, moving=0, playmod[80];\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- memset(playmod, 0, 80);\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- mpxofs = (mx-mxo);\r
- mpyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (mpxofs<16) mpxofs = 16;\r
- if (mpyofs<16) mpyofs = 16;\r
- if (mpxofs+mpxsize>335) mpxofs = 336-mpxsize;\r
- if (mpyofs+mpysize>sy+16) mpyofs = (sy+16)-mpysize;\r
- }\r
-\r
- Window(mpxofs, mpyofs, mpxofs+mpxsize, mpyofs+mpysize, "MOD Player Controls");\r
- GotoXY(mpxofs+2, mpyofs+15); printstring("MOD Playing:");\r
- TextField(mpxofs+49, mpyofs+13, 90, playmod, ctf == 1 ? cb : 0);\r
- Button(mpxofs+110, mpyofs+24, "Play");\r
- Button(mpxofs+142, mpyofs+24, "Stop");\r
- Button(mpxofs+78, mpyofs+24, "OK");\r
- Button(mpxofs+142, mpyofs+12, "Browse");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>mpxofs+49 && mx<mpxofs+90+49 && my>mpyofs+13 && my<mpyofs+9+13 && !moving)\r
- {\r
- ctf=1; str=playmod; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>mpxofs+110 && mx<mpxofs+30+110 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
- {\r
- // insert code for button "Play" here\r
- ButtonPressed(mpxofs+110, mpyofs+24, "Play");\r
- PlayMusic(playmod);\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
- {\r
- // insert code for button "Stop" here\r
- memset(playingmod, 0, 80);\r
- memset(playmod, 0, 80);\r
- StopMusic();\r
- ButtonPressed(mpxofs+142, mpyofs+24, "Stop");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>mpxofs+78 && mx<mpxofs+30+78 && my>mpyofs+24 && my<mpyofs+10+24 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(mpxofs+78, mpyofs+24, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+12 && my<mpyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(mpxofs+142, mpyofs+12, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(4,"*.s3m","*.mod","*.xm",".it",playmod);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(mpxofs+mpxsize-9) && (mx<mpxofs+mpxsize-2)\r
- && my>(mpyofs+1) && (my<mpyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>mpxofs && mx<mpxofs+mpxsize && my>mpyofs && my<(mpyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-mpxofs;\r
- myo=my-mpyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=playmod; break;\r
- case 1: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=playmod; break;\r
- case 1: ctf=0; str=playmod; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-int zexsize=135, zeysize=86;\r
-int zexofs=80, zeyofs=40;\r
-\r
-void ZoneEdDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink, i=0;\r
- char ctf=0, cb=0, c, t, *str;\r
- char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
- i=curzone;\r
- sprintf(nstr1, "%d", zones[i].script);\r
- sprintf(nstr2, "%d", zones[i].percent);\r
- sprintf(nstr3, "%d", zones[i].delay);\r
- sprintf(nstr4, "%d", zones[i].entityscript);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- zexofs = (mx-mxo);\r
- zeyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (zexofs<16) zexofs = 16;\r
- if (zeyofs<16) zeyofs = 16;\r
- if (zexofs+zexsize>335) zexofs = 336-zexsize;\r
- if (zeyofs+zeysize>sy+16) zeyofs = (sy+16)-zeysize;\r
- }\r
-\r
- Window(zexofs, zeyofs, zexofs+zexsize, zeyofs+zeysize, "Zone Editor");\r
- GotoXY(zexofs+8, zeyofs+12); printstring("Name:");\r
- TextField(zexofs+30, zeyofs+10, 100, zones[i].name, ctf == 1 ? cb : 0);\r
- GotoXY(zexofs+5, zeyofs+22); printstring("Script:");\r
- TextField(zexofs+30, zeyofs+20, 100, nstr1, ctf == 2 ? cb : 0);\r
- GotoXY(zexofs+2, zeyofs+32); printstring("Chance:");\r
- TextField(zexofs+30, zeyofs+30, 100, nstr2, ctf == 3 ? cb : 0);\r
- GotoXY(zexofs+7, zeyofs+42); printstring("Delay:");\r
- TextField(zexofs+30, zeyofs+40, 100, nstr3, ctf == 4 ? cb : 0);\r
- GotoXY(zexofs+4, zeyofs+52); printstring("Entity:");\r
- TextField(zexofs+30, zeyofs+50, 100, nstr4, ctf == 5 ? cb : 0);\r
- CheckBox(zexofs+20, zeyofs+61, zones[i].aaa);\r
- GotoXY(zexofs+31, zeyofs+62); printstring("Allow Adjacent Activation");\r
- Button(zexofs+99, zeyofs+71, "OK");\r
- GotoXY(zexofs+12, zeyofs+73); printstring("Zone");\r
- GotoXY(zexofs+30, zeyofs+73);\r
- sprintf(strbuf,"%d",i); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+10 && my<zeyofs+9+10 && !moving)\r
- {\r
- ctf=1; str=zones[i].name; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+20 && my<zeyofs+9+20 && !moving)\r
- {\r
- ctf=2; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+30 && my<zeyofs+9+30 && !moving)\r
- {\r
- ctf=3; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+40 && my<zeyofs+9+40 && !moving)\r
- {\r
- ctf=4; str=nstr3; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+50 && my<zeyofs+9+50 && !moving)\r
- {\r
- ctf=5; str=nstr4; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>zexofs+20 && mx<zexofs+8+20 && my>zeyofs+61 && my<zeyofs+7+61 && !moving)\r
- {\r
- zones[i].aaa ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>zexofs+99 && mx<zexofs+30+99 && my>zeyofs+71 && my<zeyofs+10+71 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(zexofs+99, zeyofs+71, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(zexofs+zexsize-9) && (mx<zexofs+zexsize-2)\r
- && my>(zeyofs+1) && (my<zeyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>zexofs && mx<zexofs+zexsize && my>zeyofs && my<(zeyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-zexofs;\r
- myo=my-zeyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
- if (last_pressed==SCAN_UP)\r
- {\r
- zones[i].script=atoi(nstr1);\r
- zones[i].percent=atoi(nstr2);\r
- zones[i].delay=atoi(nstr3);\r
- zones[i].entityscript=atoi(nstr4);\r
- if (i<255) i++; else i=0;\r
- last_pressed=0; key[SCAN_UP]=0;\r
- sprintf(nstr1, "%d", zones[i].script);\r
- sprintf(nstr2, "%d", zones[i].percent);\r
- sprintf(nstr3, "%d", zones[i].delay);\r
- sprintf(nstr4, "%d", zones[i].entityscript);\r
- continue;\r
- }\r
- if (last_pressed==SCAN_DOWN)\r
- {\r
- zones[i].script=atoi(nstr1);\r
- zones[i].percent=atoi(nstr2);\r
- zones[i].delay=atoi(nstr3);\r
- zones[i].entityscript=atoi(nstr4);\r
- if (i) i--; else i=255;\r
- last_pressed=0; key[SCAN_DOWN]=0;\r
- sprintf(nstr1, "%d", zones[i].script);\r
- sprintf(nstr2, "%d", zones[i].percent);\r
- sprintf(nstr3, "%d", zones[i].delay);\r
- sprintf(nstr4, "%d", zones[i].entityscript);\r
- continue;\r
- }\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=zones[i].name; break;\r
- case 1: ctf=2; str=nstr1; break;\r
- case 2: ctf=3; str=nstr2; break;\r
- case 3: ctf=4; str=nstr3; break;\r
- case 4: ctf=5; str=nstr4; break;\r
- case 5: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=5; str=nstr4; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=zones[i].name; break;\r
- case 3: ctf=2; str=nstr1; break;\r
- case 4: ctf=3; str=nstr2; break;\r
- case 5: ctf=4; str=nstr3; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
- curzone=i;\r
- zones[i].script=atoi(nstr1);\r
- zones[i].percent=atoi(nstr2);\r
- zones[i].delay=atoi(nstr3);\r
- zones[i].entityscript=atoi(nstr4);\r
-}\r
-\r
-int exsize=180, eysize=175;\r
-int exofs=70, eyofs=30;\r
-\r
-void EntityEditor(int i)\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
- char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80], nstr6[80], nstr7[80], nstr8[80], nstr9[80], nstr10[80], nstr11[80], nstr12[80], nstr13[80];\r
-\r
- sprintf(nstr1, "%d", entity[i].x);\r
- sprintf(nstr2, "%d", entity[i].y);\r
- sprintf(nstr3, "%d", entity[i].chrindex);\r
- sprintf(nstr4, "%d", entity[i].speed);\r
- sprintf(nstr5, "%d", entity[i].actscript);\r
- sprintf(nstr6, "%d", entity[i].movecode);\r
- sprintf(nstr7, "%d", entity[i].step);\r
- sprintf(nstr8, "%d", entity[i].data2);\r
- sprintf(nstr9, "%d", entity[i].data3);\r
- sprintf(nstr10, "%d", entity[i].delay);\r
- sprintf(nstr11, "%d", entity[i].data5);\r
- sprintf(nstr12, "%d", entity[i].data6);\r
- sprintf(nstr13, "%d", entity[i].movescript);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- exofs = (mx-mxo);\r
- eyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (exofs<16) exofs = 16;\r
- if (eyofs<16) eyofs = 16;\r
- if (exofs+exsize>335) exofs = 336-exsize;\r
- if (eyofs+eysize>sy+16) eyofs = (sy+16)-eysize;\r
- }\r
-\r
- Window(exofs, eyofs, exofs+exsize, eyofs+eysize, "Entity Editor");\r
- GotoXY(exofs+7, eyofs+13); printstring("Desc:");\r
- TextField(exofs+26, eyofs+11, 80, entity[i].desc, ctf == 1 ? cb : 0);\r
- GotoXY(exofs+19, eyofs+23); printstring("X:");\r
- TextField(exofs+26, eyofs+21, 80, nstr1, ctf == 2 ? cb : 0);\r
- GotoXY(exofs+19, eyofs+33); printstring("Y:");\r
- TextField(exofs+26, eyofs+31, 80, nstr2, ctf == 3 ? cb : 0);\r
- GotoXY(exofs+11, eyofs+43); printstring("CHR:");\r
- TextField(exofs+26, eyofs+41, 80, nstr3, ctf == 4 ? cb : 0);\r
-\r
- // ***\r
- // entity image goes here (just above chr list button)\r
- // ***\r
-\r
- BigButton(exofs+116, eyofs+61, "CHR List");\r
- BigButton(exofs+115, eyofs+153, "Scripts");\r
- GotoXY(exofs+2, eyofs+155); printstring("Movescript:");\r
- HLine(exofs+1, eyofs+73, 178, white);\r
- GotoXY(exofs+3, eyofs+53); printstring("Speed:");\r
- TextField(exofs+26, eyofs+51, 80, nstr4, ctf == 5 ? cb : 0);\r
- TextField(exofs+26, eyofs+61, 80, nstr5, ctf == 6 ? cb : 0);\r
- GotoXY(exofs+107, eyofs+79); printstring("Is Obstruction");\r
- CheckBox(exofs+161, eyofs+87, entity[i].obsmode1);\r
- GotoXY(exofs+102, eyofs+88); printstring("Is Obstructable");\r
- CheckBox(exofs+161, eyofs+78, entity[i].obsmode2);\r
- GotoXY(exofs+24, eyofs+79); printstring("Auto Face");\r
- CheckBox(exofs+61, eyofs+78, entity[i].face);\r
- GotoXY(exofs+10, eyofs+88); printstring("Activ. Method");\r
- CheckBox(exofs+61, eyofs+87, entity[i].actm);\r
- HLine(exofs+1, eyofs+98, 178, white);\r
- GotoXY(exofs+126, eyofs+166); printstring("Entity");\r
- GotoXY(exofs+6, eyofs+104); printstring("Move Code:");\r
- TextField(exofs+47, eyofs+103, 80, nstr6, ctf == 7 ? cb : 0);\r
- TextField(exofs+30, eyofs+115, 40, nstr7, ctf == 8 ? cb : 0);\r
- TextField(exofs+30, eyofs+125, 40, nstr8, ctf == 9 ? cb : 0);\r
- TextField(exofs+30, eyofs+135, 40, nstr9, ctf == 10 ? cb : 0);\r
- TextField(exofs+113, eyofs+115, 40, nstr10, ctf == 11 ? cb : 0);\r
- TextField(exofs+113, eyofs+125, 40, nstr11, ctf == 12 ? cb : 0);\r
- TextField(exofs+113, eyofs+135, 40, nstr12, ctf == 13 ? cb : 0);\r
- HLine(exofs+1, eyofs+148, 178, white);\r
- TextField(exofs+46, eyofs+153, 60, nstr13, ctf == 14 ? cb : 0);\r
- GotoXY(exofs+5, eyofs+63); printstring("Activ:");\r
- GotoXY(exofs+152, eyofs+166);\r
- sprintf(strbuf, "%d/%d", i, entities-1); printstring(strbuf);\r
- entity[i].movecode=atoi(nstr6);\r
- if (ctf!=4) entity[i].chrindex=atoi(nstr3);\r
-\r
- switch (entity[i].movecode)\r
- {\r
- case 0: GotoXY(exofs+131, eyofs+104); printstring("Stopped"); break;\r
- case 1: GotoXY(exofs+131, eyofs+104); printstring("Wander");\r
- GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
- GotoXY(exofs+90, eyofs+116); printstring("Delay:"); break;\r
- case 2: GotoXY(exofs+131, eyofs+104); printstring("Wander Zone");\r
- GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
- GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
- GotoXY(exofs+10, eyofs+126); printstring("Zone:"); break;\r
- case 3: GotoXY(exofs+131, eyofs+104); printstring("Wander Box");\r
- GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
- GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
- GotoXY(exofs+21, eyofs+126); printstring("X1:");\r
- GotoXY(exofs+21, eyofs+136); printstring("Y1:");\r
- GotoXY(exofs+102, eyofs+126); printstring("X2:");\r
- GotoXY(exofs+102, eyofs+136); printstring("Y2:"); break;\r
- case 4: GotoXY(exofs+131, eyofs+104); printstring("Scripted"); break;\r
- }\r
- switch (entity[i].actm)\r
- {\r
- case 0: GotoXY(exofs+72, eyofs+88); printstring("Actv"); break;\r
- case 1: GotoXY(exofs+72, eyofs+88); printstring("Adjc"); break;\r
- }\r
-\r
- if (chrs[entity[i].chrindex].frame)\r
- TCopySprite(exofs+143-(chrs[entity[i].chrindex].fx/2),\r
- eyofs+31-(chrs[entity[i].chrindex].fy/2),\r
- chrs[entity[i].chrindex].fx, chrs[entity[i].chrindex].fy,\r
- chrs[entity[i].chrindex].frame);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+11 && my<eyofs+9+11 && !moving)\r
- {\r
- ctf=1; str=entity[i].desc; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+21 && my<eyofs+9+21 && !moving)\r
- {\r
- ctf=2; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+31 && my<eyofs+9+31 && !moving)\r
- {\r
- ctf=3; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+41 && my<eyofs+9+41 && !moving)\r
- {\r
- ctf=4; str=nstr3; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+116 && mx<exofs+50+116 && my>eyofs+61 && my<eyofs+10+61 && !moving)\r
- {\r
- // insert code for button "CHR List" here\r
- BigButtonPressed(exofs+116, eyofs+61, "CHR List");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- CHRList();\r
-// DoCHRdealy();\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+51 && my<eyofs+9+51 && !moving)\r
- {\r
- ctf=5; str=nstr4; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+61 && my<eyofs+9+61 && !moving)\r
- {\r
- ctf=6; str=nstr5; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+115 && mx<exofs+50+115 && my>eyofs+153 && my<eyofs+10+153 && !moving)\r
- {\r
- // insert code for button "Scripts..." here\r
- BigButtonPressed(exofs+115, eyofs+153, "Scripts");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- MoveScriptDialog();\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
- {\r
- entity[i].obsmode1 ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
- {\r
- entity[i].obsmode2 ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
- {\r
- entity[i].face ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
- {\r
- entity[i].actm ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+47 && mx<exofs+80+47 && my>eyofs+103 && my<eyofs+9+103 && !moving)\r
- {\r
- ctf=7; str=nstr6; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
- {\r
- ctf=8; str=nstr7; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
- {\r
- ctf=9; str=nstr8; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
- {\r
- ctf=10; str=nstr9; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
- {\r
- ctf=11; str=nstr10; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
- {\r
- ctf=12; str=nstr11; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
- {\r
- ctf=13; str=nstr12; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>exofs+46 && mx<exofs+60+46 && my>eyofs+153 && my<eyofs+9+153 && !moving)\r
- {\r
- ctf=14; str=nstr13; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>(exofs+exsize-9) && (mx<exofs+exsize-2)\r
- && my>(eyofs+1) && (my<eyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>exofs && mx<exofs+exsize && my>eyofs && my<(eyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-exofs;\r
- myo=my-eyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_UP)\r
- {\r
- entity[i].x=atoi(nstr1);\r
- entity[i].y=atoi(nstr2);\r
- entity[i].chrindex=atoi(nstr3);\r
- entity[i].speed=atoi(nstr4);\r
- entity[i].actscript=atoi(nstr5);\r
- entity[i].movecode=atoi(nstr6);\r
- entity[i].step=atoi(nstr7);\r
- entity[i].data2=atoi(nstr8);\r
- entity[i].data3=atoi(nstr9);\r
- entity[i].delay=atoi(nstr10);\r
- entity[i].data5=atoi(nstr11);\r
- entity[i].data6=atoi(nstr12);\r
- entity[i].movescript=atoi(nstr13);\r
-\r
- if (i<entities-1) i++; else i=0;\r
- last_pressed=0; key[SCAN_UP]=0;\r
-\r
- sprintf(nstr1, "%d", entity[i].x);\r
- sprintf(nstr2, "%d", entity[i].y);\r
- sprintf(nstr3, "%d", entity[i].chrindex);\r
- sprintf(nstr4, "%d", entity[i].speed);\r
- sprintf(nstr5, "%d", entity[i].actscript);\r
- sprintf(nstr6, "%d", entity[i].movecode);\r
- sprintf(nstr7, "%d", entity[i].step);\r
- sprintf(nstr8, "%d", entity[i].data2);\r
- sprintf(nstr9, "%d", entity[i].data3);\r
- sprintf(nstr10, "%d", entity[i].delay);\r
- sprintf(nstr11, "%d", entity[i].data5);\r
- sprintf(nstr12, "%d", entity[i].data6);\r
- sprintf(nstr13, "%d", entity[i].movescript);\r
- continue;\r
- }\r
- if (last_pressed==SCAN_DOWN)\r
- {\r
- entity[i].x=atoi(nstr1);\r
- entity[i].y=atoi(nstr2);\r
- entity[i].chrindex=atoi(nstr3);\r
- entity[i].speed=atoi(nstr4);\r
- entity[i].actscript=atoi(nstr5);\r
- entity[i].movecode=atoi(nstr6);\r
- entity[i].step=atoi(nstr7);\r
- entity[i].data2=atoi(nstr8);\r
- entity[i].data3=atoi(nstr9);\r
- entity[i].delay=atoi(nstr10);\r
- entity[i].data5=atoi(nstr11);\r
- entity[i].data6=atoi(nstr12);\r
- entity[i].movescript=atoi(nstr13);\r
-\r
- if (i) i--; else i=entities-1;\r
- last_pressed=0; key[SCAN_DOWN]=0;\r
-\r
- sprintf(nstr1, "%d", entity[i].x);\r
- sprintf(nstr2, "%d", entity[i].y);\r
- sprintf(nstr3, "%d", entity[i].chrindex);\r
- sprintf(nstr4, "%d", entity[i].speed);\r
- sprintf(nstr5, "%d", entity[i].actscript);\r
- sprintf(nstr6, "%d", entity[i].movecode);\r
- sprintf(nstr7, "%d", entity[i].step);\r
- sprintf(nstr8, "%d", entity[i].data2);\r
- sprintf(nstr9, "%d", entity[i].data3);\r
- sprintf(nstr10, "%d", entity[i].delay);\r
- sprintf(nstr11, "%d", entity[i].data5);\r
- sprintf(nstr12, "%d", entity[i].data6);\r
- sprintf(nstr13, "%d", entity[i].movescript);\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=entity[i].desc; break;\r
- case 1: ctf=2; str=nstr1; break;\r
- case 2: ctf=3; str=nstr2; break;\r
- case 3: ctf=4; str=nstr3; break;\r
- case 4: ctf=5; str=nstr4; break;\r
- case 5: ctf=6; str=nstr5; break;\r
- case 6: ctf=7; str=nstr6; break;\r
- case 7: ctf=8; str=nstr7; break;\r
- case 8: ctf=9; str=nstr8; break;\r
- case 9: ctf=10; str=nstr9; break;\r
- case 10: ctf=11; str=nstr10; break;\r
- case 11: ctf=12; str=nstr11; break;\r
- case 12: ctf=13; str=nstr12; break;\r
- case 13: ctf=14; str=nstr13; break;\r
- case 14: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=13; str=nstr12; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=entity[i].desc; break;\r
- case 3: ctf=2; str=nstr1; break;\r
- case 4: ctf=3; str=nstr2; break;\r
- case 5: ctf=4; str=nstr3; break;\r
- case 6: ctf=5; str=nstr4; break;\r
- case 7: ctf=6; str=nstr5; break;\r
- case 8: ctf=7; str=nstr6; break;\r
- case 9: ctf=8; str=nstr7; break;\r
- case 10: ctf=9; str=nstr8; break;\r
- case 11: ctf=10; str=nstr9; break;\r
- case 12: ctf=11; str=nstr10; break;\r
- case 13: ctf=12; str=nstr11; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
- entity[i].x=atoi(nstr1);\r
- entity[i].y=atoi(nstr2);\r
- entity[i].chrindex=atoi(nstr3);\r
- entity[i].speed=atoi(nstr4);\r
- entity[i].actscript=atoi(nstr5);\r
- entity[i].movecode=atoi(nstr6);\r
- entity[i].step=atoi(nstr7);\r
- entity[i].data2=atoi(nstr8);\r
- entity[i].data3=atoi(nstr9);\r
- entity[i].delay=atoi(nstr10);\r
- entity[i].data5=atoi(nstr11);\r
- entity[i].data6=atoi(nstr12);\r
- entity[i].movescript=atoi(nstr13);\r
-}\r
-\r
-int clxsize=170, clysize=78;\r
-int clxofs=105, clyofs=80;\r
-char base=0;\r
-\r
-void CHRList()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- clxofs = (mx-mxo);\r
- clyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (clxofs<16) clxofs = 16;\r
- if (clyofs<16) clyofs = 16;\r
- if (clxofs+clxsize>335) clxofs = 336-clxsize;\r
- if (clyofs+clysize>sy+16) clyofs = (sy+16)-clysize;\r
- }\r
-\r
- Window(clxofs, clyofs, clxofs+clxsize, clyofs+clysize, "Entity CHR Reference Index");\r
- TextField(clxofs+14, clyofs+11, 120, chrlist[base].t, ctf == 1 ? cb : 0);\r
- TextField(clxofs+14, clyofs+22, 120, chrlist[base+1].t, ctf == 2 ? cb : 0);\r
- TextField(clxofs+14, clyofs+33, 120, chrlist[base+2].t, ctf == 3 ? cb : 0);\r
- TextField(clxofs+14, clyofs+44, 120, chrlist[base+3].t, ctf == 4 ? cb : 0);\r
- TextField(clxofs+14, clyofs+55, 120, chrlist[base+4].t, ctf == 5 ? cb : 0);\r
- Button(clxofs+137, clyofs+65, "OK");\r
- Button(clxofs+137, clyofs+10, "Browse");\r
- Button(clxofs+137, clyofs+21, "Browse");\r
- Button(clxofs+137, clyofs+32, "Browse");\r
- Button(clxofs+137, clyofs+43, "Browse");\r
- Button(clxofs+137, clyofs+54, "Browse");\r
- GotoXY(clxofs+3, clyofs+11); sprintf(strbuf,"%d:", base); printstring(strbuf);\r
- GotoXY(clxofs+3, clyofs+22); sprintf(strbuf,"%d:", base+1); printstring(strbuf);\r
- GotoXY(clxofs+3, clyofs+33); sprintf(strbuf,"%d:", base+2); printstring(strbuf);\r
- GotoXY(clxofs+3, clyofs+44); sprintf(strbuf,"%d:", base+3); printstring(strbuf);\r
- GotoXY(clxofs+3, clyofs+55); sprintf(strbuf,"%d:", base+4); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+11 && my<clyofs+9+11 && !moving)\r
- {\r
- ctf=1; str=chrlist[base].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+22 && my<clyofs+9+22 && !moving)\r
- {\r
- ctf=2; str=chrlist[base+1].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+33 && my<clyofs+9+33 && !moving)\r
- {\r
- ctf=3; str=chrlist[base+2].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+44 && my<clyofs+9+44 && !moving)\r
- {\r
- ctf=4; str=chrlist[base+3].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+55 && my<clyofs+9+55 && !moving)\r
- {\r
- ctf=5; str=chrlist[base+4].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+65 && my<clyofs+10+65 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(clxofs+137, clyofs+65, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+10 && my<clyofs+10+10 && !moving)\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(clxofs+137, clyofs+10, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.chr","","","",chrlist[base].t);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+21 && my<clyofs+10+21 && !moving)\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(clxofs+137, clyofs+21, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.chr","","","",chrlist[base+1].t);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+32 && my<clyofs+10+32 && !moving)\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(clxofs+137, clyofs+32, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.chr","","","",chrlist[base+2].t);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+43 && my<clyofs+10+43 && !moving)\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(clxofs+137, clyofs+43, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.chr","","","",chrlist[base+3].t);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+54 && my<clyofs+10+54 && !moving)\r
- {\r
- // insert code for button "Browse" here\r
- ButtonPressed(clxofs+137, clyofs+54, "Browse");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- Browse(1,"*.chr","","","",chrlist[base+4].t);\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(clxofs+clxsize-9) && (mx<clxofs+clxsize-2)\r
- && my>(clyofs+1) && (my<clyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>clxofs && mx<clxofs+clxsize && my>clyofs && my<(clyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-clxofs;\r
- myo=my-clyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
- if (key[SCAN_UP])\r
- {\r
- key[SCAN_UP]=0;\r
- if (base) base--;\r
- last_pressed=0;\r
- continue;\r
- }\r
- if (key[SCAN_DOWN])\r
- {\r
- key[SCAN_DOWN]=0;\r
- if (base<95) base++;\r
- last_pressed=0;\r
- continue;\r
- }\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=chrlist[base].t; break;\r
- case 1: ctf=2; str=chrlist[base+1].t; break;\r
- case 2: ctf=3; str=chrlist[base+2].t; break;\r
- case 3: ctf=4; str=chrlist[base+3].t; break;\r
- case 4: ctf=5; str=chrlist[base+4].t; break;\r
- case 5: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=5; str=chrlist[base].t; break;\r
- case 1: ctf=0; str=chrlist[base].t; break;\r
- case 2: ctf=1; str=chrlist[base+1].t; break;\r
- case 3: ctf=2; str=chrlist[base+2].t; break;\r
- case 4: ctf=3; str=chrlist[base+3].t; break;\r
- case 5: ctf=4; str=chrlist[base+4].t; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-int msxsize=181, msysize=77;\r
-int msxofs=70, msyofs=50;\r
-char base1=0;\r
-\r
-void MoveScriptDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- msxofs = (mx-mxo);\r
- msyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (msxofs<16) msxofs = 16;\r
- if (msyofs<16) msyofs = 16;\r
- if (msxofs+msxsize>335) msxofs = 336-msxsize;\r
- if (msyofs+msysize>sy+16) msyofs = (sy+16)-msysize;\r
- }\r
-\r
- Window(msxofs, msyofs, msxofs+msxsize, msyofs+msysize, "Movement Script Editor");\r
- TextField(msxofs+15, msyofs+12, 160, ms[base1].t, ctf == 1 ? cb : 0);\r
- TextField(msxofs+15, msyofs+22, 160, ms[base1+1].t, ctf == 2 ? cb : 0);\r
- TextField(msxofs+15, msyofs+32, 160, ms[base1+2].t, ctf == 3 ? cb : 0);\r
- TextField(msxofs+15, msyofs+42, 160, ms[base1+3].t, ctf == 4 ? cb : 0);\r
- TextField(msxofs+15, msyofs+52, 160, ms[base1+4].t, ctf == 5 ? cb : 0);\r
- Button(msxofs+146, msyofs+63, "OK");\r
- GotoXY(msxofs+3, msyofs+11); sprintf(strbuf,"%d:", base1); printstring(strbuf);\r
- GotoXY(msxofs+3, msyofs+22); sprintf(strbuf,"%d:", base1+1); printstring(strbuf);\r
- GotoXY(msxofs+3, msyofs+33); sprintf(strbuf,"%d:", base1+2); printstring(strbuf);\r
- GotoXY(msxofs+3, msyofs+44); sprintf(strbuf,"%d:", base1+3); printstring(strbuf);\r
- GotoXY(msxofs+3, msyofs+55); sprintf(strbuf,"%d:", base1+4); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+12 && my<msyofs+10+12 && !moving)\r
- {\r
- ctf=1; str=ms[base1].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+22 && my<msyofs+9+22 && !moving)\r
- {\r
- ctf=2; str=ms[base1+1].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+32 && my<msyofs+9+32 && !moving)\r
- {\r
- ctf=3; str=ms[base1+2].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+42 && my<msyofs+9+42 && !moving)\r
- {\r
- ctf=4; str=ms[base1+3].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+52 && my<msyofs+9+52 && !moving)\r
- {\r
- ctf=5; str=ms[base1+4].t; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>msxofs+146 && mx<msxofs+30+146 && my>msyofs+63 && my<msyofs+10+63 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- done=1;\r
- ButtonPressed(msxofs+146, msyofs+63, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(msxofs+msxsize-9) && (mx<msxofs+msxsize-2)\r
- && my>(msyofs+1) && (my<msyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>msxofs && mx<msxofs+msxsize && my>msyofs && my<(msyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-msxofs;\r
- myo=my-msyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
- if (key[SCAN_UP])\r
- {\r
- key[SCAN_UP]=0;\r
- if (base1) base1--;\r
- last_pressed=0;\r
- continue;\r
- }\r
- if (key[SCAN_DOWN])\r
- {\r
- key[SCAN_DOWN]=0;\r
- if (base1<95) base1++;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=ms[base1].t; break;\r
- case 1: ctf=2; str=ms[base1+1].t; break;\r
- case 2: ctf=3; str=ms[base1+2].t; break;\r
- case 3: ctf=4; str=ms[base1+3].t; break;\r
- case 4: ctf=5; str=ms[base1+4].t; break;\r
- case 5: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=5; str=ms[base1+4].t; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=ms[base1].t; break;\r
- case 3: ctf=2; str=ms[base1+1].t; break;\r
- case 4: ctf=3; str=ms[base1+2].t; break;\r
- case 5: ctf=4; str=ms[base1+3].t; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-int prxsize=150, prysize=80;\r
-int prxofs=50, pryofs=60;\r
-\r
-void MapPropertiesDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- prxofs = (mx-mxo);\r
- pryofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (prxofs<16) prxofs = 16;\r
- if (pryofs<16) pryofs = 16;\r
- if (prxofs+prxsize>335) prxofs = 336-prxsize;\r
- if (pryofs+prysize>sy+16) pryofs = (sy+16)-prysize;\r
- }\r
-\r
- Window(prxofs, pryofs, prxofs+prxsize, pryofs+prysize, "MAP Properties");\r
- GotoXY(prxofs+10, pryofs+23); printstring("Music:");\r
- TextField(prxofs+33, pryofs+11, 112, mapname, ctf == 1 ? cb : 0);\r
- TextField(prxofs+33, pryofs+21, 112, musname, ctf == 2 ? cb : 0);\r
- GotoXY(prxofs+18, pryofs+33); printstring("VSP:");\r
- TextField(prxofs+33, pryofs+31, 112, vspname, ctf == 3 ? cb : 0);\r
- GotoXY(prxofs+3, pryofs+43); printstring("rstring:");\r
- TextField(prxofs+33, pryofs+41, 112, rstring, ctf == 4 ? cb : 0);\r
- BigButton(prxofs+97, pryofs+56, "Resize MAP");\r
- HLine(prxofs+1, pryofs+53, 148, white);\r
- GotoXY(prxofs+3, pryofs+58); printstring("xsize:");\r
- sprintf(strbuf,"%d",layer[0].sizex); printstring(strbuf);\r
- GotoXY(prxofs+49, pryofs+58); printstring("ysize:");\r
- sprintf(strbuf,"%d",layer[0].sizey); printstring(strbuf);\r
- Button(prxofs+117, pryofs+67, "OK");\r
- GotoXY(prxofs+16, pryofs+13); printstring("MAP:");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+11 && my<pryofs+9+11 && !moving)\r
- {\r
- ctf=1; str=mapname; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+21 && my<pryofs+9+21 && !moving)\r
- {\r
- ctf=2; str=musname; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+31 && my<pryofs+9+31 && !moving)\r
- {\r
- ctf=3; str=vspname; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+41 && my<pryofs+9+41 && !moving)\r
- {\r
- ctf=4; str=rstring; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>prxofs+97 && mx<prxofs+30+97 && my>pryofs+56 && my<pryofs+10+56 && !moving)\r
- {\r
- // insert code for button "Resize MAP" here\r
- BigButtonPressed(prxofs+97, pryofs+56, "Resize MAP");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease();\r
- ResizeMapDialog();\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>prxofs+117 && mx<prxofs+30+117 && my>pryofs+67 && my<pryofs+10+67 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(prxofs+117, pryofs+67, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- done=1;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(prxofs+prxsize-9) && (mx<prxofs+prxsize-2)\r
- && my>(pryofs+1) && (my<pryofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>prxofs && mx<prxofs+prxsize && my>pryofs && my<(pryofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-prxofs;\r
- myo=my-pryofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=mapname; break;\r
- case 1: ctf=2; str=musname; break;\r
- case 2: ctf=3; str=vspname; break;\r
- case 3: ctf=4; str=rstring; break;\r
- case 4: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=4; str=rstring; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=mapname; break;\r
- case 3: ctf=2; str=musname; break;\r
- case 4: ctf=3; str=vspname; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
-\r
- } while (!done);\r
-\r
-}\r
-\r
-int rsxsize=134, rsysize=44;\r
-int rsxofs=20, rsyofs=20;\r
-\r
-static void PutByte(byte *to, byte v, int x, int y, int w, int h)\r
-{\r
- if (x<0 || x>=w || y<0 || y>=h)\r
- return;\r
-\r
- to[(y*w)+x]=v;\r
-}\r
-\r
-static byte GetByte(byte *from, int x, int y, int w, int h)\r
-{\r
- if (x<0 || x>=w || y<0 || y>=h)\r
- return 0;\r
-\r
- return from[(y*w)+x];\r
-}\r
-\r
-static void PutWord(word *to, word v, int x, int y, int w, int h)\r
-{\r
- if (x<0 || x>=w || y<0 || y>=h)\r
- return;\r
-\r
- to[(y*w)+x]=v;\r
-}\r
-\r
-static word GetWord(word *from, int x, int y, int w, int h)\r
-{\r
- if (x<0 || x>=w || y<0 || y>=h)\r
- return 0;\r
-\r
- return from[(y*w)+x];\r
-}\r
-\r
-void ResizeMapDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink, basex, basey, i; //, xl, yl;\r
- char ctf=0, cb=0, c, t;\r
- char *str, *tb; //, *s1, *d1;\r
- char nstr1[80], nstr2[80];\r
- word *tbw; //, *s=NULL,*d=NULL;\r
- //int temp_width;\r
- int a,b;\r
-\r
- basex=layer[0].sizex;\r
- basey=layer[0].sizey;\r
- sprintf(nstr1, "%d", basex);\r
- sprintf(nstr2, "%d", basey);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- rsxofs = (mx-mxo);\r
- rsyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (rsxofs<16) rsxofs = 16;\r
- if (rsyofs<16) rsyofs = 16;\r
- if (rsxofs+rsxsize>335) rsxofs = 336-rsxsize;\r
- if (rsyofs+rsysize>sy+16) rsyofs = (sy+16)-rsysize;\r
- }\r
-\r
- Window(rsxofs, rsyofs, rsxofs+rsxsize, rsyofs+rsysize, "Resize MAP");\r
- GotoXY(rsxofs+4, rsyofs+12); printstring("Base X:");\r
- GotoXY(rsxofs+4, rsyofs+22); printstring("Base Y:");\r
- TextField(rsxofs+30, rsyofs+10, 100, nstr1, ctf == 1 ? cb : 0);\r
- TextField(rsxofs+30, rsyofs+20, 100, nstr2, ctf == 2 ? cb : 0);\r
- Button(rsxofs+69, rsyofs+31, "Resize");\r
- Button(rsxofs+101, rsyofs+31, "Cancel");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+10 && my<rsyofs+9+10 && !moving)\r
- {\r
- ctf=1; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+20 && my<rsyofs+9+20 && !moving)\r
- {\r
- ctf=2; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>rsxofs+69 && mx<rsxofs+30+69 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
- {\r
- printf("&");\r
- fflush(stdout);\r
- // insert code for button "Resize" here\r
- ButtonPressed(rsxofs+69, rsyofs+31, "Resize");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- done=1;\r
- basex=atoi(nstr1);\r
- basey=atoi(nstr2);\r
-\r
- tb = (char *)valloc(basex*basey,"tilebuf",0);\r
- for (b=0; b<basey; ++b)\r
- for (a=0; a<basex; ++a)\r
- PutByte(tb,\r
- GetByte(obstruct,a,b,layer[0].sizex,layer[0].sizey),\r
- a,b,basex,basey);\r
- vfree(obstruct);\r
- obstruct=tb;\r
-\r
- tb = (char *)valloc(basex*basey,"tilebuf",0);\r
- for (b=0; b<basey; ++b)\r
- for (a=0; a<basex; ++a)\r
- PutByte(tb,\r
- GetByte(zone,a,b,layer[0].sizex,layer[0].sizey),\r
- a,b,basex,basey);\r
- vfree(zone);\r
- zone=tb;\r
-\r
- for (i=0; i<numlayers; i++)\r
- {\r
- tbw=(word *)valloc(basex*basey*2,"tilebuf",0);\r
- //memset(tbw, 0, basex*basey*2);\r
- for (b=0; b<basey; ++b)\r
- for (a=0; a<basex; ++a)\r
- PutWord(tbw,\r
- GetWord(layers[i],a,b,layer[i].sizex,layer[i].sizey),\r
- a,b,basex,basey);\r
-\r
- vfree(layers[i]);\r
- layers[i]=tbw;\r
- }\r
- for (i=0; i<numlayers; ++i)\r
- {\r
- layer[i].sizex=basex;\r
- layer[i].sizey=basey;\r
- }\r
- xwin=0; ywin=0;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>rsxofs+101 && mx<rsxofs+30+101 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
- {\r
- // insert code for button "Cancel" here\r
- done=1;\r
- ButtonPressed(rsxofs+101, rsyofs+31, "Cancel");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(rsxofs+rsxsize-9) && (mx<rsxofs+rsxsize-2)\r
- && my>(rsyofs+1) && (my<rsyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>rsxofs && mx<rsxofs+rsxsize && my>rsyofs && my<(rsyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-rsxofs;\r
- myo=my-rsyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=nstr1; break;\r
- case 1: ctf=2; str=nstr2; break;\r
- case 2: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=2; str=nstr2; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=nstr1; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
- basex=atoi(nstr1);\r
- basey=atoi(nstr2);\r
-}\r
-\r
-int cdxsize=150, cdysize=45;\r
-int cdxofs=110, cdyofs=70;\r
-char curtrack=1;\r
-\r
-void CDDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- cdxofs = (mx-mxo);\r
- cdyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (cdxofs<16) cdxofs = 16;\r
- if (cdyofs<16) cdyofs = 16;\r
- if (cdxofs+cdxsize>335) cdxofs = 336-cdxsize;\r
- if (cdyofs+cdysize>sy+16) cdyofs = (sy+16)-cdysize;\r
- }\r
-\r
- Window(cdxofs, cdyofs, cdxofs+cdxsize, cdyofs+cdysize, "CD Player");\r
- Button(cdxofs+53, cdyofs+10, "Play");\r
- Button(cdxofs+53, cdyofs+21, "Stop");\r
- Button(cdxofs+85, cdyofs+10, "Eject");\r
- Button(cdxofs+85, cdyofs+21, "Close");\r
- Button(cdxofs+117, cdyofs+10, "Next");\r
- Button(cdxofs+117, cdyofs+21, "Prev");\r
- Button(cdxofs+117, cdyofs+32, "OK");\r
- GotoXY(cdxofs+4, cdyofs+18); printstring("Track ");\r
- sprintf(strbuf,"%d",curtrack); printstring(strbuf);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
- {\r
- // insert code for button "Play" here\r
- ButtonPressed(cdxofs+53, cdyofs+10, "Play");\r
- DrawMouse();\r
- ShowPage();\r
- //CD_Play(curtrack);\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
- {\r
- // insert code for button "Stop" here\r
- ButtonPressed(cdxofs+53, cdyofs+21, "Stop");\r
- DrawMouse();\r
- ShowPage();\r
- //CD_Stop();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
- {\r
- // insert code for button "Eject" here\r
- ButtonPressed(cdxofs+85, cdyofs+10, "Eject");\r
- DrawMouse();\r
- ShowPage();\r
- //CD_Open_Door();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
- {\r
- // insert code for button "Close" here\r
- ButtonPressed(cdxofs+85, cdyofs+21, "Close");\r
- DrawMouse();\r
- ShowPage();\r
- //CD_Close_Door();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
- {\r
- // insert code for button "Next" here\r
- ButtonPressed(cdxofs+117, cdyofs+10, "Next");\r
- curtrack++;\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
- {\r
- // insert code for button "Prev" here\r
- ButtonPressed(cdxofs+117, cdyofs+21, "Prev");\r
- DrawMouse();\r
- if (curtrack>1) curtrack--;\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if ((mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+32 && my<cdyofs+10+32 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(cdxofs+117, cdyofs+32, "OK");\r
- DrawMouse();\r
- done=1;\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(cdxofs+cdxsize-9) && (mx<cdxofs+cdxsize-2)\r
- && my>(cdyofs+1) && (my<cdyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>cdxofs && mx<cdxofs+cdxsize && my>cdyofs && my<(cdyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-cdxofs;\r
- myo=my-cdyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-int ntxsize=130, nytsize=51;\r
-int ntxofs=110, ntyofs=70;\r
-\r
-void NoticeDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- ntxofs = (mx-mxo);\r
- ntyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (ntxofs<16) ntxofs = 16;\r
- if (ntyofs<16) ntyofs = 16;\r
- if (ntxofs+ntxsize>335) ntxofs = 336-ntxsize;\r
- if (ntyofs+nytsize>sy+16) ntyofs = (sy+16)-nytsize;\r
- }\r
-\r
- Window(ntxofs, ntyofs, ntxofs+ntxsize, ntyofs+nytsize, "Notice!");\r
- GotoXY(ntxofs+20, ntyofs+20); printstring("Don't forget to add this");\r
- GotoXY(ntxofs+14, ntyofs+26); printstring("layer to the Render String!");\r
- Button(ntxofs+50, ntyofs+36, "OK");\r
- GotoXY(ntxofs+25, ntyofs+14); printstring("Layer has been added.");\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if ((mb==1 && mx>ntxofs+50 && mx<ntxofs+30+50 && my>ntyofs+36 && my<ntyofs+10+36 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(ntxofs+50, ntyofs+36, "OK");\r
- done=1;\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(ntxofs+ntxsize-9) && (mx<ntxofs+ntxsize-2)\r
- && my>(ntyofs+1) && (my<ntyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>ntxofs && mx<ntxofs+ntxsize && my>ntyofs && my<(ntyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-ntxofs;\r
- myo=my-ntyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r
-\r
-int oxsize=150, oysize=98;\r
-int oxofs=120, oyofs=70;\r
-extern char vcedprog[80];\r
-\r
-void OptionsDialog()\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
- char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
- sprintf(nstr1, "%d", winbg);\r
- sprintf(nstr2, "%d", titlebg);\r
- sprintf(nstr3, "%d", brightw);\r
- sprintf(nstr4, "%d", darkw);\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- oxofs = (mx-mxo);\r
- oyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (oxofs<16) oxofs = 16;\r
- if (oyofs<16) oyofs = 16;\r
- if (oxofs+oxsize>335) oxofs = 336-oxsize;\r
- if (oyofs+oysize>sy+16) oyofs = (sy+16)-oysize;\r
- }\r
-\r
- Window(oxofs, oyofs, oxofs+oxsize, oyofs+oysize, "MapEd Options");\r
- GotoXY(oxofs+16, oyofs+12); printstring("Smooth Scroll");\r
- CheckBox(oxofs+5, oyofs+11, scrollmode);\r
- GotoXY(oxofs+16, oyofs+20); printstring("Tile Highlight");\r
- CheckBox(oxofs+5, oyofs+19, mh);\r
- GotoXY(oxofs+38, oyofs+31); printstring("Window Background");\r
- TextField(oxofs+5, oyofs+29, 30, nstr1, ctf == 1 ? cb : 0);\r
- TextField(oxofs+5, oyofs+39, 30, nstr2, ctf == 2 ? cb : 0);\r
- GotoXY(oxofs+38, oyofs+41); printstring("Titlebar Background");\r
- CheckBox(oxofs+74, oyofs+11, vm);\r
- GotoXY(oxofs+84, oyofs+12); printstring("320x240 driver");\r
- CheckBox(oxofs+74, oyofs+19, mouse_scroll);\r
- GotoXY(oxofs+84, oyofs+20); printstring("Mouse Scrolling");\r
- TextField(oxofs+5, oyofs+49, 30, nstr3, ctf == 3 ? cb : 0);\r
- TextField(oxofs+5, oyofs+59, 30, nstr4, ctf == 4 ? cb : 0);\r
- GotoXY(oxofs+38, oyofs+51); printstring("White");\r
- GotoXY(oxofs+38, oyofs+61); printstring("Shadow");\r
- Button(oxofs+60, oyofs+85, "OK");\r
- HLine(oxofs+1, oyofs+71, 148, white);\r
- GotoXY(oxofs+3, oyofs+76); printstring("Editor:");\r
- TextField(oxofs+28, oyofs+74, 118, vcedprog, ctf == 5 ? cb : 0);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
- {\r
- xwin=xwin>>4; xwin=xwin<<4;\r
- ywin=ywin>>4; ywin=ywin<<4;\r
- scrollmode ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
- {\r
- mh ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+29 && my<oyofs+9+29 && !moving)\r
- {\r
- ctf=1; str=nstr1; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+39 && my<oyofs+9+39 && !moving)\r
- {\r
- ctf=2; str=nstr2; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
- {\r
- vm ^= 1; WaitRelease();\r
- ShutdownVideo();\r
- InitVideo(vm);\r
- set_intensity(63);\r
- InitMouse();\r
- continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
- {\r
- mouse_scroll ^= 1; WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+49 && my<oyofs+9+49 && !moving)\r
- {\r
- ctf=3; str=nstr3; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+59 && my<oyofs+9+59 && !moving)\r
- {\r
- ctf=4; str=nstr4; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if ((mb==1 && mx>oxofs+60 && mx<oxofs+30+60 && my>oyofs+85 && my<oyofs+10+85 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(oxofs+60, oyofs+85, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- done=1;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>oxofs+28 && mx<oxofs+118+28 && my>oyofs+74 && my<oyofs+9+74 && !moving)\r
- {\r
- ctf=5; str=vcedprog; cb=1;\r
- cursorblink=systemtime+40; continue;\r
- }\r
-\r
- if (mb==1 && mx>(oxofs+oxsize-9) && (mx<oxofs+oxsize-2)\r
- && my>(oyofs+1) && (my<oyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>oxofs && mx<oxofs+oxsize && my>oyofs && my<(oyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-oxofs;\r
- myo=my-oyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=1; str=nstr1; break;\r
- case 1: ctf=2; str=nstr2; break;\r
- case 2: ctf=3; str=nstr3; break;\r
- case 3: ctf=4; str=nstr4; break;\r
- case 4: ctf=5; str=vcedprog; break;\r
- case 5: ctf=0; str=0; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
- {\r
- switch (ctf)\r
- {\r
- case 0: ctf=5; str=vcedprog; break;\r
- case 1: ctf=0; str=0; break;\r
- case 2: ctf=1; str=nstr1; break;\r
- case 3: ctf=2; str=nstr2; break;\r
- case 4: ctf=3; str=nstr3; break;\r
- case 5: ctf=4; str=nstr4; break;\r
- }\r
- key[SCAN_TAB]=0;\r
- last_pressed=0;\r
- cb=1; cursorblink=systemtime+40;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
- winbg=atoi(nstr1);\r
- titlebg=atoi(nstr2);\r
- brightw=atoi(nstr3);\r
- darkw=atoi(nstr4);\r
-}\r
-\r
-int vcexsize=200, vceysize=60;\r
-int vcexofs=76, vceyofs=70;\r
-\r
-void VCNotify(char *msg)\r
-{ char done=0, moving=0;\r
- int mxo, myo, cursorblink;\r
- char ctf=0, cb=0, c, t, *str;\r
-\r
- last_pressed=0;\r
- do\r
- {\r
- RenderMap();\r
- RenderGUI();\r
-\r
- if (ctf && systemtime >= cursorblink)\r
- {\r
- cb ^= 1;\r
- cursorblink = systemtime+40;\r
- }\r
- if (moving)\r
- {\r
- vcexofs = (mx-mxo);\r
- vceyofs = (my-myo);\r
- if (!mb) moving=0;\r
- if (vcexofs<16) vcexofs = 16;\r
- if (vceyofs<16) vceyofs = 16;\r
- if (vcexofs+vcexsize>335) vcexofs = 336-vcexsize;\r
- if (vceyofs+vceysize>sy+16) vceyofs = (sy+16)-vceysize;\r
- }\r
-\r
- Window(vcexofs, vceyofs, vcexofs+vcexsize, vceyofs+vceysize, "VergeC Error Report");\r
- Button(vcexofs+85, vceyofs+41, "OK");\r
- GotoXY(vcexofs+29, vceyofs+17); printstring("VCC has reported the following error:");\r
- GotoXY(vcexofs+100-(pixels(msg)/2), vceyofs+23); printstring(msg);\r
-\r
- DrawMouse();\r
- ShowPage();\r
- CheckTimerStuff();\r
-\r
- // input phase\r
- if ((mb==1 && mx>vcexofs+85 && mx<vcexofs+30+85 && my>vceyofs+41 && my<vceyofs+10+41 && !moving) || (key[SCAN_ENTER] && !ctf))\r
- {\r
- // insert code for button "OK" here\r
- ButtonPressed(vcexofs+85, vceyofs+41, "OK");\r
- DrawMouse();\r
- while (mb)\r
- {\r
- ReadMouse();\r
- ShowPage();\r
- ReadMouse();\r
- }\r
- done=1;\r
- WaitRelease(); continue;\r
- }\r
-\r
- if (mb==1 && mx>(vcexofs+vcexsize-9) && (mx<vcexofs+vcexsize-2)\r
- && my>(vceyofs+1) && (my<vceyofs+8) && !moving)\r
- {\r
- done=1;\r
- WaitRelease();\r
- break;\r
- }\r
-\r
- if (mb==1 && mx>vcexofs && mx<vcexofs+vcexsize && my>vceyofs && my<(vceyofs+9) && !moving)\r
- {\r
- moving=1;\r
- mxo=mx-vcexofs;\r
- myo=my-vceyofs;\r
- continue;\r
- }\r
-\r
- if (mb==1 && !moving)\r
- {\r
- ctf=0;\r
- cb=0;\r
- str=0;\r
- WaitRelease();\r
- }\r
-\r
- if (last_pressed)\r
- {\r
- if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
- else c=key_ascii_tbl[last_pressed];\r
-\r
- if (last_pressed==SCAN_ESC)\r
- {\r
- key[SCAN_ESC]=0;\r
- done=1;\r
- break;\r
- }\r
-\r
- if (last_pressed==SCAN_ENTER)\r
- {\r
- key[SCAN_ENTER]=0;\r
- ctf=0;\r
- str=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- if (!ctf)\r
- continue;\r
-\r
- if (last_pressed==SCAN_BACKSP && strlen(str))\r
- {\r
- str[strlen(str)-1]=0;\r
- key[SCAN_BACKSP]=0;\r
- last_pressed=0;\r
- continue;\r
- }\r
- else if (last_pressed==SCAN_BACKSP)\r
- {\r
- last_pressed=0;\r
- continue;\r
- }\r
-\r
- t=strlen(str);\r
- str[t]=c;\r
- str[t+1]=0;\r
- last_pressed=0;\r
- }\r
- } while (!done);\r
-}\r