hi I'm working on an RPG and I just made this simple tile editor which works fine but I am now trying to get loading/saving to work...Here's the code. I used writefile nd writeInt to try and save which 'frame' to use for each tile ie. which tile. The problem is that when I open the file after writing it with Blitz, all I get is a '[]' (wierd box)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Graphics 800,600,16,1
AppTitle "Editor"
SetBuffer BackBuffer()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Const width=800
Const height=600
Const kLeft=203
Const kRight=205
Const kUp=200
Const kDown=208
Const Kz=44
Const kx=45
Const Kc=46
Const Kspace=57
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Type tile
Field which
Field x#,y#
Field xn#
Field yn#
Field water
Field passable
Field ident
End Type
Global grasstiles=LoadAnimImage( "C:/RPG/tiles/grass.bmp",32,32,0,52 )
Global mudties=LoadAnimImage( "C:/RPG/tiles/mud.bmp",32,32,0,52 )
Global cursor=LoadImage( "C:/RPG/cursor.bmp" )
MaskImage cursor,255,0,255
Global cx=1,cy=1,cimg=0,curdent=100,status=0,set=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
While Not KeyHit(1)
Cls
Select set
Case 0
tiles=grasstiles
Case 1
tiles=mudtiles
Default
tiles=grasstiles
End Select
If Not status=1 Then
If KeyHit(15) And set=0 Then
set=1
EndIf
If KeyHit(15) And set=1 Then
set=0
EndIf
If KeyHit(31) And cimg<52 Then
cimg=cimg+1
EndIf
If KeyHit(30) And cimg>0 Then
cimg=cimg-1
EndIf
If KeyHit(57) Then
t.tile=New tile
t\x=cx
t\y=cy
t\which=cimg
t\ident=curdent
curdent=curdent+1
EndIf
If KeyHit(19) Then
EndIf
If KeyHit(Kz) Then
status=1
EndIf
For t.tile = Each tile
DrawImage tiles,t\x,t\y,t\which
Next
If KeyHit(Kright) Then
cx=cx+32
EndIf
If KeyHit(Kleft) Then
cx=cx-32
EndIf
If KeyHit(Kdown) Then
cy=cy+32
EndIf
If KeyHit(Kup) Then
cy=cy-32
EndIf
If KeyHit(42) Then
Color 100,140,150
Text width/2,height/2,">>Saving<<",True,True
name= WriteFile(CurrentDir()+"/levels/first_level")
For t.tile = Each tile
WriteByte(name,t\which)
Next
EndIf
DrawImage tiles,cx,cy,cimg
Color 255,255,255
Rect cx-1,cy-1,34,34,False
Text cx+35,cy,"Tile no: "+cimg
For t.tile = Each tile
If RectsOverlap(cx,cy,32,32,t\x,t\y,32,32) Then
Text cx+35,cy+15,"Tile ident: "+t\ident
EndIf
Next
Else
window(200,10,350,560,50,90,30,"Tile editor V1.0")
button(230,50,60,20,30,130,20,"Save")
If KeyHit(Kz) Then
status=0
EndIf
DrawImage cursor,MouseX(),MouseY()
EndIf
Flip
Wend
Function window(x#,y#,ys#,xs#,r#,g#,b#,title$)
Color 50,50,50
Rect x,y,ys,xs,True
Color 255,255,255
Text x+2,y-5,title,False
Color 255,255,255
Rect x+7,y+7,ys-7,xs-7,False
Color r,g,b
Rect x+17,y+17,ys-27,xs-27,True
End Function
Function button(x#,y#,xs#,ys#,r#,g#,b#,title$)
Color r,g,b
Rect x,y,xs,ys,True
Color 255,255,255
Rect x,y,xs,ys,False
Color 255,255,255
Text x+(xs/2),y+(ys/2),title,True,True
End Function
Please help me with this as it's pretty much the only thing stopping me from making a great RPG :[
|