Post by Mark Dunham on Apr 15, 2018 13:26:40 GMT -5
So this is a shortend version of the level editor my brother and I have been working on and I am in the middle of refactoring. This shortened version is so I can refactor the 600 lines of code test and make sure it works then implement the changes to the almost 9000 lines of code we already have. The issue I am having at the moment is that my drawsprites loops is clearing my grid no matter where I put the call. I cannot put the flush in the loop then I have a memory leak unless I am missing something which could be the case. The grid is supposed to make it easier to line up tiles. I am going to be changing code to case statements and subroutines to make it clearer and more organized just need to get past the DrawGrid issue. I have included a dropbox link to the whole project as well.
www.dropbox.com/s/w6ms16dk1niizsf/LevelEditor_3.1.4.0_Refactor.zip?dl=0
www.dropbox.com/s/w6ms16dk1niizsf/LevelEditor_3.1.4.0_Refactor.zip?dl=0
'LEVEL EDITOR
'BY: MARK A. DUNHAM
'ART BY: RUSSELL DUNHAM
'DATE: 3.3.2018
'UPDATED: 4.14.2018
Version$ = "3.1.4.0"
nomainwin
[ScreenRes]
graphicsX = 0
graphicsY = 0
WindowWidth = 640
WindowHeight = 480
UpperLeftX = int((DisplayWidth - WindowWidth)/2)
UpperLeftY = int((DisplayHeight - WindowHeight)/2)
BackgroundColor$ = "black"
ForegroundColor$ = "green"
'ComboboxColor$ = "black"
ListboxColor$ = "black"
dim ScreenH$(2)
ScreenH$(1) = "480"
ScreenH$(2) = "640"
dim ScreenW$(7)
ScreenW$(1) = "640"
ScreenW$(2) = "800"
ScreenW$(3) = "1024"
ScreenW$(4) = "1280"
ScreenW$(5) = "1366"
ScreenW$(6) = "1600"
ScreenW$(7) = "3200"
statictext #SR.1, "Please select the screen resolution", 100, 25, 450, 30
statictext #SR.2, " you are designing a level for. ", 100, 65, 450, 30
statictext #SR.3, "Screen Width", 25, 220, 100, 60
listbox #SR.screenhcmb, ScreenH$(), [], 400, 160, 100, 175
statictext #SR.4, "Screen Height", 300, 220, 100, 60
listbox #SR.screenwcmb, ScreenW$(), [], 125, 160, 100, 175
stylebits #SR.screenhcmb, 0, _LBS_DISABLENOSCROLL, 0, 0
stylebits #SR.screenwcmb, 0, _LBS_DISABLENOSCROLL, 0, 0
bmpbutton #SR.startbtn, "Buttons\StartButton.bmp", [Start], UL, 210, 400
bmpbutton #SR.quitbtn, "Buttons\QuitButton.bmp", [SR.Quit], UL 320, 400
open "Screen Resolution" for window_nf as #SR
#SR, "trapclose [SR.Quit]"
#SR, "font Comic_Sans_MS 12 0 bold"
#SR.screenhcmb, "singleClickSelect [SingleClickAction]"
#SR.screenwcmb, "singleClickSelect [SingleClickAction]"
wait
[SingleClickAction]
calldll #user32, "GetDoubleClickTime", delay as ulong
timer delay, [Combo.ScreenRes]
wait
[Combo.ScreenRes]
timer 0
#SR.screenhcmb, "selection? screenHSel$"
#SR.screenwcmb, "selection? screenWSel$"
select case screenHSel$
case "600" : graphicsY = 640
case else : graphicsY = 640
end select
select case screenWSel$
case "800" : graphicsX = 800
case "1024" : graphicsX = 1024
case "1280" : graphicsX = 1280
case "1366" : graphicsX = 1366
case "1600" : graphicsX = 1600
case "3200" : graphicsX = 3200
case else : graphicsX = 800
end select
wait
[Start]
if graphicsX <> 0 and graphicsY <> 0 then
close #SR
goto [Main]
end if
wait
[SR.Quit]
close #SR
end
'##############################################################################################
'### MAIN WINDOW SETUP ###
'##############################################################################################
[Main]
WindowWidth = 1366
WindowHeight = 768
UpperLeftX = int((DisplayWidth - WindowWidth)/2)
UpperLeftY = int((DisplayHeight - WindowHeight)/2)
BackgroundColor$ = "black"
ForegroundColor$ = "green"
ComboboxColor$ = "black"
'##############################################################################################
'### SETUP LEVEL EDITOR VARIABLES ###
'##############################################################################################
tileSelected$ = ""
previousTile$ = ""
MaxTiles = 1000
'##############################################################################################
'### VARIABLE ARRAYS FOR THE TILES NAME AND THE X AND Y POSITIONS AND THE VARIABLE FOR ###
'### THE COUNTWHEN ADDING NEW TILES NEED TO ADD THE NEW ARRAYS FOR THE NAME OF THE ###
'### TILE, THE TILE X THE TILE Y AND THE VARIABLE FOR THE TILE COUNT ###
'##############################################################################################
'Ground
dim Soils$(MaxTiles)
dim SoilsX(MaxTiles)
dim SoilsY(MaxTiles)
soilBlockCount = 0
dim GrassSoils$(MaxTiles)
dim GrassSoilsX(MaxTiles)
dim GrassSoilsY(MaxTiles)
grassSoilCount = 0
dim GreenGrass$(MaxTiles)
dim GreenGrassX(MaxTiles)
dim GreenGrassY(MaxTiles)
greenGrassCount = 0
dim DarkGrass$(MaxTiles)
dim DarkGrassX(MaxTiles)
dim DarkGrassY(MaxTiles)
darkGrassCount = 0
dim LightDesert$(MaxTiles)
dim LightDesertX(MaxTiles)
dim LightDesertY(MaxTiles)
lightDesertCount = 0
unit = 32
'##############################################################################################
'### LOAD BITMAPS FOR LEVEL EDITOR ###
'##############################################################################################
loadbmp "BG", "Images\BG_Black_640x480.bmp"
'GROUND BITMAPS
loadbmp "soilS", "Sprites\Ground\Soil_32X32.bmp"
loadbmp "grassS", "Sprites\Ground\SoilGrass_32X32.bmp"
loadbmp "GreenGrass", "Sprites\Ground\GreenGrass.bmp"
loadbmp "DarkGrass", "Sprites\Ground\DarkGrass.bmp"
loadbmp "LightDesert", "Sprites\Ground\LightDesert.bmp"
'##############################################################################################
'### SETUP MAIN LEVEL EDITOR WINDOW AND CONTROLS ###
'##############################################################################################
graphicbox #LE.GB, -1, -1, graphicsX, graphicsY
'bmpbutton #LE.wallsbtn, "Buttons\WallsButton.bmp", [Walls], UL 10, 705
'bmpbutton #LE.floorsbtn, "Buttons\FloorsButton.bmp", [Floors], UL 120, 705
'bmpbutton #LE.orebtn, "Buttons\OreButton.bmp", [Ore], UL 230, 705
bmpbutton #LE.groundbtn, "Buttons\GroundButton.bmp", [Ground], UL 340, 705
bmpbutton #LE.newbtn, "Buttons\NewMapButton.bmp", [NewMap], UL 1141, 640
bmpbutton #LE.undobtn, "Buttons\UndoTileButton.bmp", [UndoTile], UL 1141, 675
bmpbutton #LE.savebtn, "Buttons\SaveDataButton.bmp", [SaveData], UL 1251, 640
bmpbutton #LE.loadbtn, "Buttons\LoadDataButton.bmp", [LoadData], UL 1251, 675
bmpbutton #LE.quitbtn, "Buttons\SmQuitButton.bmp", [LE.Quit], UL 1251, 710
'bmpbutton #LE.miscbtn, "Buttons\MiscTilesButton.bmp", [Misc.Tiles], UL 450, 705
'bmpbutton #LE.Pipesbtn, "Buttons\PipesButton.bmp", [Pipes], UL 10, 670
'bmpbutton #LE.Lavabtn, "Buttons\LavaButton.bmp", [Lava], UL 120, 670
'bmpbutton #LE.Waterbtn, "Buttons\WaterButton.bmp", [Water], UL 230, 670
'bmpbutton #LE.PlatFormbtn, "Buttons\PlatFormButton.bmp", [PlatForms], UL 450, 670
'bmpbutton #LE.Doorsbtn, "Buttons\DoorButton.bmp", [Doors], UL 340, 670
'bmpbutton #LE.Potionsbtn, "Buttons\PotionButton.bmp", [Potions], UL 560, 705
open "Level Editor " + Version$ for window_nf as #LE
#LE, "trapclose [LE.Quit]"
#LE.GB, "when characterInput [KeyBoardInput]"
#LE.GB, "when mouseMove [MouseMove]"
#LE.GB, "when leftButtonDown [LeftMouseClick]"
#LE.GB, "when rightButtonDown [RightMouseClick]"
#LE, "font Comic_Sans_MS 0 0 bold"
if graphicsX > 1600 then #LE.GB, "Horizscrollbar on 0 600"
#LE.GB, "background BG"
#LE.GB, "locate -1 -1"
[LE.Main]
timer 0
#LE.GB, "setfocus"
'WE USE THE TIMER TO DRAW OUR SPRITES
timer 50, [LE.Loop]
wait
[LE.Loop]
#LE.GB, "drawsprites"
wait
[KeyBoardInput]
if len(Inkey$) = 2 then key = asc(right$(Inkey$,1)) else key = 0
char$ = Inkey$
if lower$(char$) = "b" then gosub[previousTile]
Inkey$ = ""
wait
'##############################################################################################
'### MAKE THE SPRITE TRACK WITH THE MOUSE POINTER ###
'##############################################################################################
[MouseMove]
scan
if tileSelected$ = "Soil" then
#LE.GB, "spritexy soil "; MouseX; " "; MouseY
end if
if tileSelected$ = "GrassSoil" then
#LE.GB, "spritexy grassSoil "; MouseX; " "; MouseY
end if
if tileSelected$ = "GreenGrass" then
#LE.GB, "spritexy GreenGrass "; MouseX; " "; MouseY
end if
if tileSelected$ = "DarkGrass" then
#LE.GB, "spritexy DarkGrass "; MouseX; " "; MouseY
end if
if tileSelected$ = "LightDesert" then
#LE.GB, "spritexy LightDesert "; MouseX; " "; MouseY
end if
wait
'##############################################################################################
'### PLACE THE SELECTED TILE AND SNAP IT TO THE MOUSE LOCATION ###
'##############################################################################################
[LeftMouseClick]
'##################################
'### SOIL TILE SECTION ###
'##################################
if tileSelected$ = "Soil" then
soilCount = soilCount + 1
Soils$(soilCount) = "soil" + str$(soilCount)
#LE.GB, "addsprite "; Soils$(soilCount); " soilS"
SoilsX(soilCount) = int(MouseX/unit)*unit
SoilsY(soilCount) = int(MouseY/unit)*unit
#LE.GB, "spritexy "; Soils$(soilCount); " "; SoilsX(soilCount); " "; SoilsY(soilCount)
tileSelected$ = " "
#LE.GB, "removesprite soil"
end if
'##################################
'### GROUND TILE SECTION ###
'##################################
if tileSelected$ = "GrassSoil" then
grassSoilCount = grassSoilCount + 1
GrassSoils$(grassSoilCount) = "grassSoil" + str$(grassSoilCount)
#LE.GB, "addsprite "; GrassSoils$(grassSoilCount); " grassS"
GrassSoilsX(grassSoilCount) = int(MouseX/unit)*unit
GrassSoilsY(grassSoilCount) = int(MouseY/unit)*unit
#LE.GB, "spritexy "; GrassSoils$(grassSoilCount); " "; GrassSoilsX(grassSoilCount); " "; GrassSoilsY(grassSoilCount)
tileSelected$ = " "
#LE.GB, "removesprite grassSoil"
end if
if tileSelected$ = "GreenGrass" then
greenGrassCount = greenGrassCount + 1
GreenGrass$(greenGrassCount) = "GreenGrass" + str$(greenGrassCount)
#LE.GB, "addsprite "; GreenGrass$(greenGrassCount); " GreenGrass"
GreenGrassX(greenGrassCount) = int(MouseX/unit)*unit
GreenGrassY(greenGrassCount) = int(MouseY/unit)*unit
#LE.GB, "spritexy "; GreenGrass$(greenGrassCount); " "; GreenGrassX(greenGrassCount); " "; GreenGrassY(greenGrassCount)
tileSelected$ = " "
#LE.GB, "removesprite GreenGrass"
end if
if tileSelected$ = "DarkGrass" then
darkGrassCount = darkGrassCount + 1
DarkGrass$(darkGrassCount) = "DarkGrass" + str$(darkGrassCount)
#LE.GB, "addsprite "; DarkGrass$(darkGrassCount); " DarkGrass"
DarkGrassX(darkGrassCount) = int(MouseX/unit)*unit
DarkGrassY(darkGrassCount) = int(MouseY/unit)*unit
#LE.GB, "spritexy "; DarkGrass$(darkGrassCount); " "; DarkGrassX(darkGrassCount); " "; DarkGrassY(darkGrassCount)
tileSelected$ = " "
#LE.GB, "removesprite DarkGrass"
end if
if tileSelected$ = "LightDesert" then
lightDesertCount = lightDesertCount + 1
LightDesert$(lightDesertCount) = "LightDesert" + str$(lightDesertCount)
#LE.GB, "addsprite "; LightDesert$(lightDesertCount); " LightDesert"
LightDesertX(lightDesertCount) = int(MouseX/unit)*unit
LightDesertY(lightDesertCount) = int(MouseY/unit)*unit
#LE.GB, "spritexy "; LightDesert$(lightDesertCount); " "; LightDesertX(lightDesertCount); " "; LightDesertY(lightDesertCount)
tileSelected$ = " "
#LE.GB, "removesprite LightDesert"
end if
wait
[RightMouseClick]
wait
'##############################################################################################
'### GROUND TILE TYPES WINDOW ###
'##############################################################################################
[Ground]
WindowWidth = 1366
WindowHeight = 768
UpperLeftX = 10
UpperLeftY = 10
statictext #Ground.titlest, "Ground", 175, 10, 75, 25
statictext #Ground.GrassSoilst, "Grass Soil", 20, 70, 100, 25
bmpbutton #Ground.GrassSoilbtn, "Buttons\Ground\SoilGrass_32X32.bmp", [GrassSoil], UL, 140, 70
statictext #Ground.Soilst, "Soil", 20, 140, 100, 25
bmpbutton #Ground.Soilbtn, "Buttons\Ground\Soil_32X32.bmp", [Soil], UL, 140, 140
statictext #Ground.GreenGrassst, "Green Grass", 20, 210, 100, 25
bmpbutton #Ground.GreenGrassbtn, "Buttons\Ground\GreenGrass.bmp", [GreenGrass], UL, 140, 210
statictext #Ground.DarkGrassst, "Dark Grass", 20, 280, 100, 25
bmpbutton #Ground.DarkGrassbtn, "Buttons\Ground\DarkGrass.bmp", [DarkGrass], UL, 140, 280
statictext #Ground.LightDesertst, "Light Desert", 20, 350, 100, 25
bmpbutton #Ground.LightDesertbtn, "Buttons\Ground\LightDesert.bmp", [LightDesert], UL, 140, 350
open "Ground" for dialog_nf_modal as #Ground
#Ground, "trapclose [Ground.Quit]"
#Ground, "font Comic_Sans_MS 0 0 bold"
#Ground.titlest, "!font Comic_Sans_MS 12 28 bold"
wait
[GrassSoil]
tileSelected$ = "GrassSoil"
previousTile$ = "GrassSoil"
#LE.GB, "addsprite grassSoil grassS"
#LE.GB, "spritexy grassSoil -100 -100"
close #Ground
wait
[Soil]
tileSelected$ = "Soil"
previousTile$ = "Soil"
#LE.GB, "addsprite soil soilS"
#LE.GB, "spritexy soil -100 -100"
close #Ground
wait
[GreenGrass]
tileSelected$ = "GreenGrass"
previousTile$ = "GreenGrass"
#LE.GB, "addsprite GreenGrass GreenGrass"
#LE.GB, "spritexy GreenGrass -100 -100"
close #Ground
wait
[DarkGrass]
tileSelected$ = "DarkGrass"
previousTile$ = "DarkGrass"
#LE.GB, "addsprite DarkGrass DarkGrass"
#LE.GB, "spritexy DarkGrass -100 -100"
close #Ground
wait
[LightDesert]
tileSelected$ = "LightDesert"
previousTile$ = "LightDesert"
#LE.GB, "addsprite LightDesert LightDesert"
#LE.GB, "spritexy LightDesert -100 -100"
close #Ground
wait
'##############################################################################################
'### SETS THE PREVIOUS TILE TO THE TILE SELECTED TO PLACE TILES FASTER ###
'##############################################################################################
[previousTile]
if previousTile$ = "Soil" then
tileSelected$ = "Soil"
#LE.GB, "addsprite soil soilS"
#LE.GB, "spritexy soil -100 -100"
end if
if previousTile$ = "GrassSoil" then
tileSelected$ = "GrassSoil"
#LE.GB, "addsprite grassSoil grassS"
#LE.GB, "spritexy grassSoil -100 -100"
end if
if previousTile$ = "GreenGrass" then
tileSelected$ = "GreenGrass"
#LE.GB, "addsprite GreenGrass GreenGrass"
#LE.GB, "spritexy GreenGrass -100 -100"
end if
if previousTile$ = "DarkGrass" then
tileSelected$ = "DarkGrass"
#LE.GB, "addsprite DarkGrass DarkGrass"
#LE.GB, "spritexy DarkGrass -100 -100"
end if
if previousTile$ = "LightDesert" then
tileSelected$ = "LightDesert"
#LE.GB, "addsprite LightDesert LightDesert"
#LE.GB, "spritexy LightDesert -100 -100"
end if
wait
'##############################################################################################
'### SAVE THE LEVEL TO .DAT FILE TYPE ###
'##############################################################################################
[SaveData]
filedialog "Save as... ", ".dat", fileName$
'IF THE FILE EXTENSION IS MISSING ADD IT TO THE FILENAME
if right$(fileName$,4) <> ".dat" then
fileName$ = fileName$ + ".dat"
end if
open fileName$ for output as #Save
'#####################################
'### SAVE GROUND'S ###
'#####################################
#Save, soilCount
for i = 1 to soilCount
#Save, SoilsX(i)/unit; ", ";SoilsY(i)/unit
next i
#Save, grassSoilCount
for i = 1 to grassSoilCount
#Save, GrassSoilsX(i)/unit; ", ";GrassSoilsY(i)/unit
next i
#Save, greenGrassCount
for i = 1 to greenGrassCount
#Save, GreenGrassX(i)/unit; ", ";GreenGrassY(i)/unit
next i
#Save, darkGrassCount
for i = 1 to darkGrassCount
#Save, DarkGrassX(i)/unit; ", ";DarkGrassY(i)/unit
next i
#Save, lightDesertCount
for i = 1 to lightDesertCount
#Save, LightDesertX(i)/unit; ", ";LightDesertY(i)/unit
next i
close #Save
wait
'##############################################################################################
'### LOAD SAVE LEVELS OF .DAT TYPE ###
'##############################################################################################
[LoadData]
'CLEAR ARRAYS SO YOU DO NOT GET GARBAGE DATA
gosub [ClearArrays]
filedialog "Open dat file...", "*.dat", fileName$
if fileName$<>"" then
open fileName$ for input as #Load
'#####################################
'### LOAD GROUND'S ###
'#####################################
input #Load, soilCount
for i = 1 to soilCount
input #Load, SoilsX(i), SoilsY(i)
next i
for i = 1 to soilCount
Soils$(i) = "soil" + str$(i)
SoilsX(i) = 32 * SoilsX(i) : SoilsY(i) = 32 * SoilsY(i)
#LE.GB, "addsprite "; Soils$(i); " soilS"
#LE.GB, "spritexy "; Soils$(i); " "; SoilsX(i); " "; SoilsY(i)
next i
input #Load, grassSoilCount
for i = 1 to grassSoilCount
input #Load, GrassSoilsX(i), GrassSoilsY(i)
next i
for i = 1 to grassSoilCount
GrassSoils$(i) = "grassSoil" + str$(i)
GrassSoilsX(i) = 32 * GrassSoilsX(i) : GrassSoilsY(i) = 32 * GrassSoilsY(i)
#LE.GB, "addsprite "; GrassSoils$(i); " grassS"
#LE.GB, "spritexy "; GrassSoils$(i); " "; GrassSoilsX(i); " "; GrassSoilsY(i)
next i
input #Load, greenGrassCount
for i = 1 to greenGrassCount
input #Load, GreenGrassX(i), GreenGrassY(i)
next i
for i = 1 to greenGrassCount
GreenGrass$(i) = "GreenGrass" + str$(i)
GreenGrassX(i) = 32 * GreenGrassX(i) : GreenGrassY(i) = 32 * GreenGrassY(i)
#LE.GB, "addsprite "; GreenGrass$(i); " GreenGrass"
#LE.GB, "spritexy "; GreenGrass$(i); " "; GreenGrassX(i); " "; GreenGrassY(i)
next i
input #Load, darkGrassCount
for i = 1 to darkGrassCount
input #Load, DarkGrassX(i), DarkGrassY(i)
next i
for i = 1 to darkGrassCount
DarkGrass$(i) = "DarkGrass" + str$(i)
DarkGrassX(i) = 32 * DarkGrassX(i) : DarkGrassY(i) = 32 * DarkGrassY(i)
#LE.GB, "addsprite "; DarkGrass$(i); " DarkGrass"
#LE.GB, "spritexy "; DarkGrass$(i); " "; DarkGrassX(i); " "; DarkGrassY(i)
next i
input #Load, lightDesertCount
for i = 1 to lightDesertCount
input #Load, LightDesertX(i), LightDesertY(i)
next i
for i = 1 to lightDesertCount
LightDesert$(i) = "LightDesert" + str$(i)
LightDesertX(i) = 32 * LightDesertX(i) : LightDesertY(i) = 32 * LightDesertY(i)
#LE.GB, "addsprite "; LightDesert$(i); " LightDesert"
#LE.GB, "spritexy "; LightDesert$(i); " "; LightDesertX(i); " "; LightDesertY(i)
next i
close #Load
else
notice "No file chosen!"
end if
#LE.GB, "drawsprites"
wait
'##############################################################################################
'### CLEARS THE ARRAYS THEN GOES BACK TO MAIN ###
'##############################################################################################
[NewMap]
timer 0
gosub [ClearArrays]
close #LE
goto [ScreenRes]
wait
'##############################################################################################
'### REMOVES THE LAST TYPE OF TILE SELECTED UNTIL THERE ARE 0 TILES OF THAT TYPE LEFT ###
'##############################################################################################
[UndoTile]
if previousTile$ = "Soil" and soilCount > 0 then
#LE.GB, "removesprite "; Soils$(soilCount); " "; SoilsX(soilCount); " "; SoilsY(soilCount)
soilCount = soilCount -1
end if
if previousTile$ = "GrassSoil" and grassSoilCount > 0 then
#LE.GB, "removesprite "; GrassSoils$(grassSoilCount); " "; GrassSoilsX(grassSoilCount); " "; GrassSoilsY(grassSoilCount)
grassSoilCount = grassSoilCount -1
end if
if previousTile$ = "GreenGrass" and greenGrassCount > 0 then
#LE.GB, "removesprite "; GreenGrass$(greenGrassCount); " "; GreenGrassX(greenGrassCount); " "; GreenGrassY(greenGrassCount)
greenGrassCount = greenGrassCount -1
end if
if previousTile$ = "DarkGrass" and darkGrassCount > 0 then
#LE.GB, "removesprite "; DarkGrass$(darkGrassCount); " "; DarkGrassX(darkGrassCount); " "; DarkGrassY(darkGrassCount)
darkGrassCount = darkGrassCount -1
end if
if previousTile$ = "LightDesert" and lightDesertCount > 0 then
#LE.GB, "removesprite "; LightDesert$(lightDesertCount); " "; LightDesertX(lightDesertCount); " "; LightDesertY(lightDesertCount)
lightDesertCount = lightDesertCount -1
end if
wait
[LE.Quit]
close #LE
end
[Ground.Quit]
close #Ground
wait
'##############################################################################################
'### SUB ROUTINE CALLED BY LOAD AND BY NEW TO CLEAR ARRAYS OF GARBAGE DATA ###
'##############################################################################################
[ClearArrays]
'#############################
'### CLEAR GROUND ARRAYS ###
'#############################
for i = 1 to soilCount
Soils$(i) = "soil" + str$(i)
SoilsX(i) = 32 * SoilsX(i) : SoilsY(i) = 32 *SoilsY(i)
#LE.GB, "removesprite "; Soils$(i); " soilS"
next i
for i = 1 to grassSoilsCount
GrassSoils$(i) = "grassSoil" + str$(i)
GrassSoilsX(i) = 32 * GrassSoilsX(i) : GrassSoilsY(i) = 32 *GrassSoilsY(i)
#LE.GB, "removesprite "; GrassSoils$(i); " grassS"
next i
for i = 1 to greenGrassCount
GreenGrass$(i) = "GreenGrass" + str$(i)
GreenGrassX(i) = 32 * GreenGrassX(i) : GreenGrassY(i) = 32 *GreenGrassY(i)
#LE.GB, "removesprite "; GreenGrass$(i); " GreenGrass"
next i
for i = 1 to darkGrassCount
DarkGrass$(i) = "DarkGrass" + str$(i)
DarkGrassX(i) = 32 * DarkGrassX(i) : DarkGrassY(i) = 32 *DarkGrassY(i)
#LE.GB, "removesprite "; DarkGrass$(i); " DarkGrass"
next i
for i = 1 to lightDesertCount
LightDesert$(i) = "LightDesert" + str$(i)
LightDesertX(i) = 32 * LightDesertX(i) : LightDesertY(i) = 32 *LightDesertY(i)
#LE.GB, "removesprite "; LightDesert$(i); " LightDesert"
next i
for i = 1 to MaxTiles
Soils$(i) = ""
SoilsX(i) = 0
SoilsY(i) = 0
GrassSoils$(i) = ""
GrassSoilsX(i) = 0
GrassSoilsY(i) = 0
GreenGrass$(i) = ""
GreenGrassX(i) = 0
GreenGrassY(i) = 0
DarkGrass$(i) = ""
DarkGrassX(i) = 0
DarkGrassY(i) = 0
LightDesert$(i) = ""
LightDesertX(i) = 0
LightDesertY(i) = 0
next i
soilCount = 0
grassSoilCount = 0
greenGrassCount = 0
darkGrassCount = 0
lightDesertCount = 0
return
sub DrawGrid
'DRAW LINES ON THE X AXIS
#LE.GB, "down; size 1"
for i = 1 to 20
#LE.GB, "place "; i*32; " 0; north; turn 180; go 480"
next i
'DRAW LINES ON THE Y AXIS
for i = 1 to 15
#LE.GB, "place 0 "; i*32; "; north; turn 90; go 640"
next i
#LE.GB, "flush"
end sub