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! |