Progress thus far on my map editor (BN2 V2.0)
`====================================== ______====
`===____====___=====_=====______====== |____ ===
`==| __ ==| ===| |== / ____|========== |==
`==|| |=| | ==| |==| / ___======= ___/ /===
`==|| ||=| |= | |==| | |__ |======|___ |====
`==||__/ |=| |== | |==| ___/ |======= == ===
`==|____/==|_|===___|===______/=======____/ |==
`======================================|______/===
`=================MAP MAKER=======================
`=================================================
REMSTART
MANAGED BY: BN2 PRODUCTIONS
LEAD ARTIST: ASHINGDA
LEAD PROGRAMMERS: OBESE
NOOBS: THAT1SMARTGUY
RAZERX
ASHINGDA
BN2 PRODUCTIONS
ARBITER CHEWBACA HYBRID
THANKS TO: LATCH
THE ENTIRE TGC DarkBASIC BOARD!
REMEND
SYNC ON : SYNC RATE 0
GOSUB Init_Vars
GOSUB Prep_Constants
GOSUB Media
GOSUB Prep_Media
GOSUB Zones
DO
mousex=MouseX() : mousey=MouseY()
click=MouseClick()
zone=GetZone()
GOSUB RefScreen
SELECT ZONE
CASE 1 : GOSUB Z1_Main : ENDCASE
CASE 2 : GOSUB Z2_Tools : ENDCASE
CASE 3 : GOSUB Z3_Tiles : ENDCASE
CASE 4 : GOSUB Z4_Map : ENDCASE
CASE 6 : GOSUB Z6_Layers : ENDCASE
ENDSELECT
SYNC
CLS
LOOP
END
Init_Vars:
REM Key: Zone, Start/END, X/Y
DIM ZoneBounds(4,2,2)
DIM Tools(4)
DIM LayerName$(100)
Tools(1)=2
Pencil=2
Csel=1
Box=0
Fill=0
Eraser=0
TTL_Layers=0
CLayer=0
LayerScroll=0
Ybound=0
RETURN
Prep_Constants:
BMP_Zones=1
BMP_Layers=2
P_Pencil=41
P_Box=44
P_Fill=47
P_Eraser=50
P_LayerListing=119
C_Main=RGB(20,0,0)
C_Tools=RGB(40,0,0)
C_Tiles=RGB(60,0,0)
C_Dungeon=RGB(80,0,0)
C_Layers=RGB(100,0,0)
RETURN
Media:
LOAD IMAGE "GUIMainBack.png",20
LOAD IMAGE "GUITOOLSBack.png",40
LOAD IMAGE "GUITOOLSPencil.png",41
LOAD IMAGE "GUITOOLSPencil_H.png",42
LOAD IMAGE "GUITOOLSPencil_S.png",43
LOAD IMAGE "GUITOOLSBox.png",44
LOAD IMAGE "GUITOOLSBox_H.png",45
LOAD IMAGE "GUITOOLSBox_S.png",46
LOAD IMAGE "GUITOOLSFill.png",47
LOAD IMAGE "GUITOOLSFill_H.png",48
LOAD IMAGE "GUITOOLSFill_S.png",49
LOAD IMAGE "GUITOOLSEraser.png",50
LOAD IMAGE "GUITOOLSEraser_H.png",51
LOAD IMAGE "GUITOOLSEraser_S.png",52
LOAD IMAGE "GUITilesBack.png",60
LOAD IMAGE "GUIDungeonBack.png",80
LOAD IMAGE "GUILayersBack.png",100
LOAD IMAGE "GUILayersNew.png",101
LOAD IMAGE "GUILayersDelete.png",102
LOAD IMAGE "GUILayersLayerNamePrompt.png",103
LOAD SOUND "SoundsUncap.mp3",1
RETURN
Prep_Media:
RETURN
RefScreen:
PASTE IMAGE 20,0,1
PASTE IMAGE 40,0,21
PASTE IMAGE P_Pencil+Pencil,1,21
PASTE IMAGE P_Box+Box,21,21
PASTE IMAGE P_Fill+Fill,41,21
PASTE IMAGE P_Eraser+Eraser,61,21
PASTE IMAGE 60,0,41
PASTE IMAGE 80,500,21
PASTE IMAGE 100,500,300
PASTE IMAGE 101,500,470
PASTE IMAGE 102,570,470
IF IMAGE EXIST(P_LayerListing) then PASTE IMAGE P_LayerListing,502,302
IF TTL_Layers>0
IF BITMAP EXIST(BMP_Layers)=1 then DELETE BITMAP BMP_Layers
IF (TTL_Layers*Text Height("|"))>=110
Ybound=TTL_Layers*Text Height("|")
ELSE
Ybound=110
ENDIF
CREATE BITMAP BMP_Layers,130,Ybound
INK 0,RGB(195,195,195)
CLS
FOR I=1 to TTL_Layers
IF I=CLayer
INK RGB(0,255,255),0
BOX 0,(I-1)*TEXT HEIGHT("|"),129,(I)*TEXT HEIGHT("|")
ENDIF
INK 0,0
TEXT 0,(I-1)*TEXT HEIGHT("|"),str$(I)+". "+LayerName$(i)
NEXT I
GET IMAGE P_LayerListing,0,LayerScroll*TEXT HEIGHT("|"),127,(LayerScroll*TEXT HEIGHT("|"))+110
` GrabImage(BMP_Layers,0,LayerScroll*TEXT HEIGHT("|"),125,(LayerScroll*TEXT HEIGHT("|"))+110,P_LayerListing)
` SYNC
SET CURRENT BITMAP 0
PASTE IMAGE P_LayerListing,502,302
ENDIF
RETURN
Z1_Main:
RETURN
Z2_Tools:
H=1+(MouseX/20)
IF H<5
IF click=1
Tools(Csel)=0
Tools(H)=2
Csel=H
ENDIF
FOR I=1 to 4
IF Tools(I)<>2
IF I=H
Tools(I)=1
ELSE
Tools(I)=0
ENDIF
ENDIF
NEXT I
Pencil=Tools(1)
Box=Tools(2)
Fill=Tools(3)
Eraser=Tools(4)
ENDIF
RETURN
Z3_Tiles:
RETURN
Z4_Map:
RETURN
Z6_Layers:
LocY=1+((MouseY-300)/10)
LocX=MouseX-500
IF click=1
IF LocY=18
IF LocX/70=0
`NEW LAYER
IF TTL_Layers<100
GOSUB Z6_NewLayer
ENDIF
ELSE
`Delete Layer
ENDIF
ELSE
LocY=1+((MouseY-300)/TEXT HEIGHT("|"))
IF LocX<=130
IF LocY<=TTL_Layers
CLayer=LocY+LayerScroll
ENDIF
ELSE
REM Scroll Bar
ENDIF
ENDIF
ENDIF
RETURN
Z6_NewLayer:
PASTE IMAGE 103,320-76,240-27
REPEAT : UNTIL ReturnKey()=0
Name$=""
CancelFlag=0
REPEAT
Text 320-65,240+1,Name$
Name$=Name$+Entry$()
CLEAR ENTRY BUFFER
IF EscapeKey()=1
CancelFlag=1
ENDIF
SYNC
UNTIL ReturnKey()=1 or CancelFlag=1
IF CancelFlag<>1
INC TTL_Layers
CLayer=TTL_Layers
IF LEN(Name$)>0
LayerName$(TTL_Layers)=Name$
ELSE
LayerName$(TTL_Layers)="Layer "+str$(TTL_Layers)
ENDIF
ENDIF
RETURN
Zones:
IF BITMAP EXIST(BMP_Zones)=1 THEN DELETE BITMAP BMP_Zones
CREATE BITMAP BMP_ZONES,Screen Width(),Screen Height()
INK C_Main,0
BOX 0,0,639,20
INK C_TOOLS,0
BOX 0,21,115,40
INK C_TILES,0
BOX 0,41,115,479
INK C_DUNGEON,0
BOX 500,21,639,160
INK C_LAYERS,0
BOX 500,300,639,479
SET CURRENT BITMAP 0
RETURN
FUNCTION GetZone()
Zone=0
X=MouseX() : Y=MouseY()
case=0
ZONE=NewPoint(1,X,Y)/4096
ENDFUNCTION ZONE
FUNCTION NewPoint(bmp,x,y)
IF BITMAP EXIST(bmp)
MAKE MEMBLOCK FROM BITMAP 1,bmp
width=MEMBLOCK DWORD(1,0)
height=MEMBLOCK DWORD(1,4)
depth=MEMBLOCK DWORD(1,8)
IF x>=0 and x<=(width-1) and y>=0 and y<=height-1
IF depth=16
COLOR=MEMBLOCK WORD(1,12+2*(y*width+x))
ELSE
COLOR=MEMBLOCK DWORD(1,12+4*(y*width+x))
ENDIF
ENDIF
DELETE MEMBLOCK 1
ENDIF
ENDFUNCTION color
FUNCTION GrabImage(BMP,x1,y1,x2,y2,IMG)
IF BITMAP EXIST(BMP)
MAKE MEMBLOCK FROM BITMAP 1,BMP
width=MEMBLOCK DWORD(1,0)
height=MEMBLOCK DWORD(1,4)
depth=MEMBLOCK DWORD(1,8)
IF X2<X1
TX=X1
X1=X2
X2=TX
ENDIF
IF Y2<Y1
TY=Y1
Y1=Y2
Y2=TY
ENDIF
IF X1<0 THEN X1=0
IF Y1<0 THEN Y1=0
IF X2>width THEN X2=width
IF Y2>height then Y2=height
IF depth=16
mult=2
ELSE
mult=4
ENDIF
MAKE MEMBLOCK 2,12+mult*((Y2-Y1)*(X2-X1))
WRITE MEMBLOCK DWORD 2,0,(X2-X1)
WRITE MEMBLOCK DWORD 2,4,(Y2-Y1)
WRITE MEMBLOCK DWORD 2,8,depth
FOR Y=Y1 TO Y2
FOR X=X1 TO X2
IF depth=16
COLOR=MEMBLOCK WORD(1,12+mult*((Y)*width+(x)))
WRITE MEMBLOCK WORD 2,12+mult*((y-y1)*width+(x-x1)),COLOR
ELSE
COLOR=MEMBLOCK DWORD(1,12+mult*((y)*width+(x)))
WRITE MEMBLOCK DWORD 2,12+mult*((y-y1)*width+(x-x1)),COLOR
ENDIF
NEXT X
NEXT Y
ENDIF
ENDFUNCTION
Sorry for the uncommented...ness, but I have been putting all available time into actually programming this. Tried to keep it decently organized and understandable though. Let me know if you guys have any issues running it so that they can be addressed now.
There isn't a WHOLE lot that you can do, except cycle through the Drawing Tools and Create New Layers. Watch Out, I haven't added in the backspace stuff yet

. Kinda feel like I am ripping off Photoshop with this one though. Let me know what you guys think.
Oh yeah, and with the GrabImage function. Can anyone good with memblocks tell why it isn't working? I was going to use it because Get Image was giving me problems, but when I couldn't get it to work I figured a work around for Get image. I keep getting an Out Of Bounds error, can't figure out why.
Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose