RequestFile() clone but without GUI?
BlitzMax Forums/BlitzMax Beginners Area/RequestFile() clone but without GUI?
| ||
Is there any sample code for loading files from a directory? I can code it to load one file but only if i know the filename. I have a factory where people can make maps for my game and save them with a custom filename. How would I go about coding a loader for maps so that I don't have to rely on RequestFile(). I've noticed that ReQuestFile doesn't show up during my game when in fullscreen. |
| ||
Is there any sample code for loading files from a directory? LoadDir()? |
| ||
Ok. Now when I use loadDir(), how could I display the contents on a graphical screen? |
| ||
Tried this but I doesn't work.Type LoadFD Global Files:String[] Global Xloc:Int = 100 Global YLoc:Int = 100 Function LoadMapDir() LoadFD.Files = LoadDir("data/userlvl/") End Function Function DrawMapFilesInArray() For Local x:Int = 0 To Len(loadfd.files) DrawText "MapName : "LoadFD.Files, XLoc, Yloc Yloc:+25 Next End Function End Type This one works Better. Type LoadFD Global Files:String[] Global Xloc:Int = 100 Global YLoc:Int = 100 Function LoadMapDir() LoadFD.Files = LoadDir("data/userlvl/") End Function Function DrawMapFilesInArray() For Local t$ = EachIn LoadFD.Files DrawText "MapName : "+t, XLoc, Yloc Yloc:+25 Next End Function End Type It still prints them all on the same line. :/ I'm working on it. :) |
| ||
Got this But I'm getting wierd results.Graphics 800,600,0 Global MapList:TList = CreateList() Type LoadFD Global Files:String[] Global Xloc:Int = 100 Global YLoc:Int = 100 Field MapName:String Global count:Int Global t:String Function LoadMapDir() LoadFD.Files = LoadDir("data/userlvl/") End Function Function GetMapName() For t = EachIn files Local file:LoadFD = New LoadFD file.MapName = t count:+1 maplist.AddLast(file) Next End Function Method DrawMapFiles() For Local xiter:Int = 0 To count - 1 DrawText "MapName " +t,100,100 Next End Method End Type LoadFD.LoadMapDir LoadFD.GetMapName While not KeyHit(KEY_ESCAPE) Cls For Local file:LoadFD = EachIn MapList file.DrawMapFiles Next Flip WEnd |
| ||
This one works. :)Graphics 800,600,0 Global MapList:TList = CreateList() Type LoadFD Global Files:String[] Field Xloc:Int = 100 Field YLoc:Int = 100 Field MapName:String Global count:Int Global t:String Global tempx:Int = 100 Global tempy:Int = 100 Function LoadMapDir() LoadFD.Files = LoadDir("data/userlvl/") End Function Function GetMapName() For t = EachIn files Local file:LoadFD = New LoadFD file.MapName = t file.Yloc = tempy maplist.AddLast(file) tempy:+25 Next End Function Method DrawMapFiles() DrawText MapName,Xloc,Yloc End Method End Type LoadFD.LoadMapDir LoadFD.GetMapName While not KeyHit(KEY_ESCAPE) Cls For Local file:LoadFD = EachIn MapList file.DrawMapFiles Next Flip WEnd Version 2 displays 2 colums of text if the list reaches the bottom. Gonna try and add pages so that it can display 100's of files. :) Graphics 800,600,0 Global MapList:TList = CreateList() Type LoadFD Global Files:String[] Field Xloc:Int = 100 Field YLoc:Int = 100 Field MapName:String Global count:Int Global t:String Global tempx:Int = 100 Global tempy:Int = 100 Function LoadMapDir() LoadFD.Files = LoadDir("data/temdir/") End Function Function GetMapName() For t = EachIn files Local file:LoadFD = New LoadFD file.MapName = t file.Yloc = tempy file.Xloc = tempx maplist.AddLast(file) tempy:+25 count:+1 If tempy > 500 tempy = 100 tempX:+300 EndIf Next End Function Method DrawMapFiles() DrawText MapName,Xloc,Yloc End Method End Type LoadFD.LoadMapDir LoadFD.GetMapName While not KeyHit(KEY_ESCAPE) Cls For Local file:LoadFD = EachIn MapList file.DrawMapFiles Next Flip WEnd |
| ||
I get a duplicate identifier 'file' found in this code. Why?Graphics 800,600,0 Global MapList:TList = CreateList() Type MapFile Global Files:String[] Field Xloc:Int = 100 Field YLoc:Int = 100 Field MapName:String Global count:Int = 0 Global t:String Global tempx:Int = 100 Global tempy:Int = 100 Function LoadMapDir() MapFile.Files = LoadDir("data/temdir/") End Function Function GetMapName() For t = EachIn files Local file:MapFile = New MapFile file.MapName = t file.Yloc = tempy file.Xloc = tempx maplist.AddLast(file) tempy:+25 count:+1 If tempy > 500 tempy = 100 tempX:+400 EndIf Next End Function Method DrawMapFiles() DrawText count+MapName,Xloc,Yloc End Method Function ShiftText() If KeyDown(KEY_LEFT) For Local file:MapFile = EachIn MapList file.Xloc:- 1 Next ElseIf KeyDown(KEY_RIGHT) For Local file:MapFile = EachIn MapList file.Xloc:+1 Next End If End Function End Type MapFile.LoadMapDir MapFile.GetMapName While not KeyHit(KEY_ESCAPE) Cls For Local file:MapFile = EachIn MapList file.DrawMapFiles Next DrawText "TempX = " + MapFile.tempx,0,0 MapFile.ShiftText Flip WEnd It points to this below. Function ShiftText() If KeyDown(KEY_LEFT) For Local file:MapFile = EachIn MapList file.Xloc:- 1 Next ElseIf KeyDown(KEY_RIGHT) For Local file:MapFile = EachIn MapList file.Xloc:+1 Next End If When I take out one of the conditions, example keydown(right) it works perfectly. |
| ||
Because you're not using Strict / SuperStrict, so your variables aren't lexically scoped. |
| ||
Ahh! I get what you mean but don't get the lexically scoped thingamy jig. Now, lexical is a greek word. so I'mm assuming you mean that the scope of blah is ...... Don't get it. :/ |
| ||
Lexical scope:Function ShiftText() 'Function scope starts here. If KeyDown(KEY_LEFT)'New If scope For Local file:MapFile = EachIn MapList 'New For Scope file.Xloc:- 1 Next 'End of For scope ElseIf KeyDown(KEY_RIGHT) 'End of if scope, New If scope For Local file:MapFile = EachIn MapList ' New For Scope file.Xloc:+1 Next 'End of For Scope End If 'End of If scope End Function'End of Function scopeNon-lexical scope: Function ShiftText() 'Function scope starts here. If KeyDown(KEY_LEFT) For Local file:MapFile = EachIn MapList file.Xloc:- 1 Next ElseIf KeyDown(KEY_RIGHT) For Local file:MapFile = EachIn MapList file.Xloc:+1 Next End If End Function'End of Function scopeThus since you're in non-strict mode your second for loop, is using a variable with the same name, and in the scope as the first one - which is an undefined operation, and thus an error. |
| ||
Can I clone you and have your clone as a pet? |