Load And Save Done... just needs a little work on them
Here are all the functions to do with loading, saving and exporting, the export to DBSource Function needs to be updated due to changes
Function LoadDBWSelect()
File$ = OpenDialog("Load DBW Project...","DarkBasic World Project (*.dbw)|*.dbw",0,AppPath$+"Projects\")
If File$ = "" Then ExitFunction ""
LoadDBW(File$)
EndFunction File$
Function SaveDBWSelect()
File$ = SaveDialog("Save DBW Project...","DarkBasic World Project (*.dbw)|*.dbw",AppPath$+"Projects\")
If File$ = "" Then ExitFunction ""
SaveDBW(File$)
EndFunction File$
Function SaveDBW(File$)
If File Exist(File$) = 1 Then Delete File File$
Fn = Find Free File()
Open To Write Fn,File$
Write String Fn,"[DARKBASIC WORLD CREATOR]" : Write String Fn,""
If SkySphereObject > 0 : Write String Fn,"[ADD SKYSPHERE]" : Write String Fn,SkySphereTexture$ : EndIf
If BSPFile$ <> "" : Write String Fn,"[LOAD BSP]" : Write String Fn,BSPFile$ : EndIf
If TerrainHeightmap$ <> "" : Write String Fn,"[LOAD TERRAIN]" : Write String Fn,TerrainHeightmap$
If TerrainTexture$ <> "" : Write String Fn,"[TEXTURE TERRAIN]" : Write String Fn,TerrainTexture$ : EndIf : EndIf
For n = 0 to Array Count(ObjectData()) : NewObj = 0
If ObjectData(n).Type$ = "LIGHT" : Write String Fn,"[ADD LIGHT]"
Write String Fn,"[POSITION LIGHT]" : Write String Fn,Str$(Object Position X(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Position Y(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Position Z(ObjectData(n).ObjNum))
Write String Fn,"[ROTATE LIGHT]" : Write String Fn,Str$(Object Angle X(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Angle Y(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Angle Z(ObjectData(n).ObjNum))
EndIf
If ObjectData(n).Type$ = "PLAIN" Then NewObj = 1 : Write String Fn,"[NEW OBJECT PLAIN]"
If ObjectData(n).Type$ = "BOX" Then NewObj = 1 : Write String Fn,"[NEW OBJECT BOX]"
If ObjectData(n).Type$ = "SPHERE" Then NewObj = 1 : Write String Fn,"[NEW OBJECT SPHERE]"
If ObjectData(n).Type$ = "CYLINDER" Then NewObj = 1 : Write String Fn,"[NEW OBJECT CYLINDER]"
If ObjectData(n).Type$ = "CONE" Then NewObj = 1 : Write String Fn,"[NEW OBJECT CONE]"
If ObjectData(n).Type$ = "LOAD" Then NewObj = 1 : Write String Fn,"[NEW OBJECT LOAD]" : Write String Fn,ObjectData(n).File$
If NewObj = 1
If ObjectData(n).Texture$ <> "" Then Write String Fn,"[TEXTURE OBJECT]" : Write String Fn,ObjectData(n).Texture$
Write String Fn,"[POSITION OBJECT]" : Write String Fn,Str$(Object Position X(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Position Y(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Position Z(ObjectData(n).ObjNum))
Write String Fn,"[ROTATE OBJECT]" : Write String Fn,Str$(Object Angle X(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Angle Y(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Angle Z(ObjectData(n).ObjNum))
Write String Fn,"[SCALE OBJECT]" : Write String Fn,Str$(Object Size X(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Size Y(ObjectData(n).ObjNum)) : Write String Fn,Str$(Object Size Z(ObjectData(n).ObjNum))
EndIf
Next n : Close File Fn
EndFunction
Function LoadDBW(File$)
Fn = Find Free File()
Open To Read Fn,File$
Repeat : s$ = ReadString(Fn)
` Object Commands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If s$ = "[NEW OBJECT PLAIN]" Then Obj = AddObject("PLAIN" )
If s$ = "[NEW OBJECT BOX]" Then Obj = AddObject("BOX" )
If s$ = "[NEW OBJECT SPHERE]" Then Obj = AddObject("SPHERE" )
If s$ = "[NEW OBJECT CYLINDER]" Then Obj = AddObject("CYLINDER")
If s$ = "[NEW OBJECT CONE]" Then Obj = AddObject("CONE" )
If s$ = "[NEW OBJECT LOAD]" Then Obj = LoadObject(ReadString(Fn))
If s$ = "[TEXTURE OBJECT]" Then TextureObject(Obj,ReadString(Fn))
If s$ = "[POSITION OBJECT]" Then Position Object Obj,ReadFloat(Fn),ReadFloat(Fn),ReadFloat(Fn)
If s$ = "[ROTATE OBJECT]" Then Rotate Object Obj,ReadFloat(Fn),ReadFloat(Fn),ReadFloat(Fn)
If s$ = "[SCALE OBJECT]" Then Scale Object Obj,ReadFloat(Fn),ReadFloat(Fn),ReadFloat(Fn)
` BPS World Commands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If s$ = "[LOAD BSP]" Then LoadBSP(ReadString(Fn))
` Light Commands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If s$ = "[ADD LIGHT]" Then AddLight()
If s$ = "[ROTATE LIGHT]" Then Rotate Light Obj,ReadFloat(Fn),ReadFloat(Fn),ReadFloat(Fn)
If s$ = "[POSITION LIGHT]" Then Position Light Obj,ReadFloat(Fn),ReadFloat(Fn),ReadFloat(Fn)
` SkySphere Commands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If s$ = "[ADD SKYSPHERE]" Then LoadSkySphere(ReadString(Fn))
` Terrain Commands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If s$ = "[LOAD TERRAIN]" Then LoadTerrain(ReadString(Fn))
If s$ = "[TEXTURE TERRAIN]" Then LoadTerrainTexture(ReadString(Fn))
` ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Until File End(Fn) = 1 : Close File Fn
EndFunction
Function ExportFPSC(Obj)
Path$ = Get Registry$("SOFTWARE\Dark Basic\FPSCREATOR","INSTALL-PATH")
If Path$ = "" Then ErrorMessage "FPSCreator is not installed..." : ExitFunction 0
If Path Exist(Path$+"Files\texturebank\DarkBasic World Creator\") = 0 Then Make Directory Path$+"Files\texturebank\DarkBasic World Creator\"
If Path Exist(Path$+"Files\entitybank\DarkBasic World Creator\" ) = 0 Then Make Directory Path$+"Files\entitybank\DarkBasic World Creator\"
` Select a FileName
Repeat
File$ = Input$("Export FPSC Entity","Enter FPSC Entity Name","")
If File$ = "" Then ExitFunction
If File Exist(Path$+"Files\entitybank\DarkBasic World Creator\"+File$+".dbo") = 1 : ErrorMessage "There is Already an Entity with that Name, Please pick a Different Entity Name."
Else Pass = 1 : EndIf
Until Pass = 1
` Get Objects Dim Number
For n = 0 to Array Count(ObjectData())
If ObjectData(n).ObjNum = Obj Then Exit
Next n
` Save Item
Save Object Path$+"Files\entitybank\DarkBasic World Creator\"+File$+".dbo",Obj
File = Find Free File()
Open To Read File,Path$+"Files\entitybank\DarkBasic World Creator\"+File$+".fpe"
Write String File,""
Write String File,";header"
Write String File,""
Write String File,"desc = itemj"
Write String File,""
Write String File,";ai"
Write String File,"aiinit = appear1.fpi"
Write String File,"aimain = default.fpi"
Write String File,"aidestroy = disappear1.fpi"
Write String File,""
Write String File,";spawn"
Write String File,"spawnmax = 0"
Write String File,"spawndelay = 0"
Write String File,"spawnqty = 0"
Write String File,""
Write String File,";orientation"
Write String File,""
Write String File,"model = entitybank\DarkBasic World Creator\"+File$+".dbo"
Write String File,"offx = 0"
Write String File,"offy = 0"
Write String File,"offz = 0"
Write String File,"rotx = 0"
Write String File,"roty = 0"
Write String File,"rotz = 0"
Write String File,"defaultstatic = 1"
Write String File,"materialindex = 2"
Write String File,"collisionmode = 1"
Write String File,""
Write String File,";visualinfo"
Write String File,""
Write String File,"textured = entitybank\DarkBasic World Creator\"+File$+".bmp"
Write String File,"effect = "
Write String File,"castshadow = 1"
Write String File,""
Close File File
` Complete
AdvancedMessageBox("FPSC Entity Exported.","FPSC Entity Successfully Exported.","","&OK","","",DBWin)
EndFunction 1
Function ExportDarkBasicCode()
s$ = "` This Level was Created Using DarkBasic World Creator, An Open Source Editor for DarkBasic Pro, by Michael Mihalyfi, (MSon), [email protected]"+CHR$(10)
s$ = s$+"` Export Date was "+Get Date$()+CHR$(10)
s$ = s$+"` ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"+CHR$(10)+CHR$(10)+CHR$(10)
s$ = s$+"GoSub LoadMap"+CHR$(10)+CHR$(10)
s$ = s$+"Do"+CHR$(10)
s$ = s$+"Control Camera Using ArrowKeys 0,1,1"+CHR$(10)
If SkySphereObject > 0 Then s$ = s$+"Position Object SkySphereObj,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)"+Chr$(10)
s$ = s$+"Sync : Loop"+CHR$(10)+CHR$(10)+CHR$(10)
s$ = s$+"LoadMap: ` Loads a PreMade Level"+CHR$(10)
If BSPFile$ <> ""
s$ = s$+" ` Loading BSP Object ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"+CHR$(10)
s$ = s$+" Load BSP "+CHR$(34)+CHR$(34)+","+BSPFile$+CHR$(10)
EndIf
If SkySphereObject > 0
s$ = s$+" ` Loading SkySphere ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"+CHR$(10)
s$ = s$+" SkySphereObj = Find Free Object() : Make Object Sphere SkySphereObj,-1000"+CHR$(10)
s$ = s$+" SkySphereImg = Find Free Image() : Load Image "+SkySphereTexture$+",SkySphereImg,1"+CHR$(10)
s$ = s$+" Texture Object SkySphereObj,SkySphereImg"+CHR$(10)
EndIf
s$ = s$+" ` Loading Objects ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"+CHR$(10)
For n = 0 to Array Count(ObjectData())
If ObjectData(n).ObjNum > 0 : s$ = s$+" "+ObjectData(n).Name$+ " = Find Free Object()+"+CHR$(10)
If ObjectData(n).Type$ = "LOAD" : s$ = s$+" Load Object " +ObjectData(n).File$+","+ObjectData(n).Name$+CHR$(10) : EndIf
If ObjectData(n).Type$ = "PLAIN" : s$ = s$+" Make Object Plain "+ObjectData(n).Name$+","+STR$(Object Size X(ObjectData(n).ObjNum))+","+STR$(Object Size Y(ObjectData(n).ObjNum))+CHR$(10) : EndIf
If ObjectData(n).Type$ = "BOX" : s$ = s$+" Make Object Box " +ObjectData(n).Name$+","+STR$(Object Size X(ObjectData(n).ObjNum))+","+STR$(Object Size Y(ObjectData(n).ObjNum))+","+STR$(Object Size Z(ObjectData(n).ObjNum))+CHR$(10) : EndIf
If ObjectData(n).Texture > 0 : s$ = s$+" "+ObjectData(n).Name$+"Img = Find Free Image() : Load Image " +ObjectData(n).Texture$+","+ObjectData(n).Name$+"Img,1"+CHR$(10)
s$ = s$+" Texture Object "+ObjectData(n).Name$+","+ObjectData(n).Name$+"Img"+CHR$(10) : EndIf
s$ = s$+" Position Object "+ObjectData(n).Name$+","+STR$(Object Position X(ObjectData(n).ObjNum))+","+STR$(Object Position Y(ObjectData(n).ObjNum))+","+STR$(Object Position Z(ObjectData(n).ObjNum))+CHR$(10)
s$ = s$+" Rotate Object "+ObjectData(n).Name$+","+STR$(Object Angle X(ObjectData(n).ObjNum))+","+STR$(Object Angle Y(ObjectData(n).ObjNum))+","+STR$(Object Angle Z(ObjectData(n).ObjNum))+CHR$(10)
s$ = s$+" ` ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"+CHR$(10)
EndIf Next n
s$ = s$+" Return"+CHR$(10)+CHR$(10)+CHR$(10)
Win = CreateWindow(0,0,500,500,"Exported DarkBasic Code",0,0,1,0)
Edit = CreateRichEdit(0,0,400,400,Win)
SetGadgetText Edit,s$
EndFunction
Heres an Example of a saved level
[DARKBASIC WORLD CREATOR]
[NEW OBJECT LOAD]
C:\Users\Michael\Desktop\DarkBasic World Creator\Resources\Models\Terrain Objects\Terrain.x
[TEXTURE OBJECT]
C:\Users\Michael\Desktop\DarkBasic World Creator\Resources\Textures\Box 3.bmp
[POSITION OBJECT]
0
0
19.9999980927
[ROTATE OBJECT]
0
0
0
[SCALE OBJECT]
79.9999923706
3.18749976158
79.9999923706
[NEW OBJECT BOX]
[TEXTURE OBJECT]
C:\Users\Michael\Desktop\DarkBasic World Creator\Resources\Textures\Box 2.bmp
[POSITION OBJECT]
0
6.19999837875
19.9999980927
[ROTATE OBJECT]
0
0
0
[SCALE OBJECT]
4.99999952316
4.99999952316
4.99999952316
Everyone Be Cool, You, Be Cool.