trying to make a "free hand" map editor =P

Blitz3D Forums/Blitz3D Beginners Area/trying to make a "free hand" map editor =P

er something of the sort... my problem is getting the darn file to save properly and then load it into another code.

What I've made so far is a 'test' program in an attempt to see what I can whip up. I want the program to save the 'x' and 'y' coordinates of each new object that I put on the edit screen.. then reload them into the loading program where it will place the graphics exactly where I placed them in the main editor..

If that didnt confuse you.. then let me go ahead and send the two pieces of code. Please note, I started coding this just yesturday.. so if it looks a bit newbish, please forgive me =P I'm still getting the hang of Blitz

The Editor:
Graphics 400,400

Type tile
Field ent
Field x
Field y
End Type 

tile=CreateImage(20,20,1)

SetBuffer ImageBuffer(tile)
Color 0,0,100
Rect 0,0,20,20,1
Color 200,200,200
Rect 0,0,20,20,0

SetBuffer BackBuffer()

While Not KeyHit(1)

If MouseHit(1) Then
ob=ob+1
t.tile=New tile
t\ent=CopyImage(tile) 
DrawImage t\ent,MouseX(),MouseY(),0
t\x=MouseX()
t\y=MouseY()
EndIf

If KeyHit(57)
For t.tile= Each tile
fileout=WriteFile("test3.dat")
WriteInt(fileout,ob)
WriteInt(fileout,t\x)
WriteInt(fileout,t\y)
CloseFile(fileout)
Next 
EndIf 

Flip
Wend



the loader:
Graphics 400,400

Type tile
Field ent
Field x
Field y
End Type

tile=CreateImage(20,20,1)

SetBuffer ImageBuffer(tile)
Color 0,0,100
Rect 0,0,20,20,1
Color 200,200,200
Rect 0,0,20,20,0

SetBuffer BackBuffer()

While Not KeyHit(1)

filein=ReadFile("test3.dat")
ob=ReadInt(filein)
If ob>0
For tt=1 To ob 
t.tile=New tile 
t\ent=CopyImage(tile)
t\x=ReadInt(filein)
t\y=ReadInt(filein)
DrawImage t\ent,t\x,t\y,0
ob=ob-1
Next
EndIf

Flip
Wend




The error is here:

Type tile
Field ent
Field x
Field y
End Type 

tile=CreateImage(20,20,1)


You must create a new tile, first:

t.tile = new tile
...


I dont quiet understand.. do you mean I need to make a new tile before creating the tile image?

Is that in the editor or loader? or both?

thanks for helping btw

With as little alteration to your code as possible...

Editor
Graphics 400,400

Type tile
Field ent
Field x
Field y
End Type 

tile=CreateImage(20,20,1)

SetBuffer ImageBuffer(tile)
Color 0,0,100
Rect 0,0,20,20,1
Color 200,200,200
Rect 0,0,20,20,0

SetBuffer BackBuffer()

While Not KeyHit(1)

If MouseHit(1) Then
ob=ob+1
t.tile=New tile
t\ent=CopyImage(tile) 
DrawImage t\ent,MouseX(),MouseY(),0
t\x=MouseX()
t\y=MouseY()
EndIf

If KeyHit(57)
fileout=WriteFile("test3.dat")
WriteInt(fileout,ob)
For t.tile= Each tile
WriteInt(fileout,t\x)
WriteInt(fileout,t\y)
Next 
CloseFile(fileout)
EndIf

Flip
Wend


Loader
Graphics 400,400

Type tile
Field ent
Field x
Field y
End Type

tile=CreateImage(20,20,1)

SetBuffer ImageBuffer(tile)
Color 0,0,100
Rect 0,0,20,20,1
Color 200,200,200
Rect 0,0,20,20,0

SetBuffer BackBuffer()

While Not KeyHit(1)

filein=ReadFile("test3.dat")
ob=ReadInt(filein)
If ob>0
For tt=1 To ob 
t.tile=New tile 
t\ent=CopyImage(tile)
t\x=ReadInt(filein)
t\y=ReadInt(filein)
DrawImage t\ent,t\x,t\y,0

Next
EndIf

Flip
Wend


Ah... that's more like it! ^^

thanks Shambler!

Fox, if you don't understand Types, or saving/loading data, then how about checking out the references on my programming tutorial. May help some.

Thanks, Ron.. I looked through your site and learned a few things ^^ I saved it to my favorites for future reference

again.. thanks!