'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'º ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ASCII TERRAIN ENGINE ÛÛßßÛÛ ÛÛßßÛÛ º
'º ÛÛ Û ÛÛ ® Editor Module v2.0 ¯ ÛÛ ÞÛÛ ÛÛÛÛÛ º
'º ÛÛ Û Û Û ÛÛ (to be integreated in ATE) ÛÛÜÞÛÛ ÛÛÜÜÛÛ º
'º Û Û Û Still rough but usable ßß º
'º ÛÛ Û Û Û ÛÛ ------------ ÛÛßßßß ÛÛ ÛÛ º
'º ÛÛ Û Û ÛÛ By Virtusoroca-Brazil, 2020 ÛÛßßÛÛ ÛÛÜÜÛÛ º
'º ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Made in QB64 ÛÛÜÜÛÛ ÛÛ º
'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 1. SYSTEM SETTINGS
SCREEN _NEWIMAGE(1280, 800, 256) ' Set Screen to 1280x800 resolution, 256 colors 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 2. SUBPROCEDURES
DECLARE SUB PrintMainMenu
' Prints options and settings on screen DECLARE SUB PrintPallete
' Prints color and ASCII palletes on screen DECLARE SUB HandleOptions
' Handles keyboard input (controls program flow) DECLARE SUB DrawOnCanvas
' Handles mouse input on canvas DECLARE SUB PrintImageDesign
' Prints image represented by its design (ASCII code) DECLARE SUB PrintImageStructure
' Prints image represented by its structure (0s and 1s for block property) DECLARE SUB SaveImageFile
' Saves image in CSV format file DECLARE SUB LoadImageFile
' Load image from CSV file DECLARE SUB LoadImageDefault
' Starts new project reloading default canvas DECLARE SUB ReloadFont
' Reloads font size as zoom increases or descreases 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 3. VARIABLES
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3.1. Basic variables declaration
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3.2. Basic variables default settings
Pallete = 0
CurrentFontColor = 7
CurrentBackColor = 0
CurrentASCII = 219
CurrentBlock = 0
CurrentSize = 1
ScreenMode = "Design"
FilePath = "./ATE_editor_files/"
FontSize = 16
FontResized
= _LOADFONT("PerfectDOSVGA437Win.ttf", FontSize
, "monospace")'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3.3. Type variables declaration
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3.4. Type arrays declaration and default settings
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 4. MAIN PROCEDURE
LoadImageDefault
PrintImageDesign
ReloadFont FontSize
DrawOnCanvas
PrintMainMenu
PrintPallete
HandleOptions
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5. SUBPROCEDURES
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.1. DrawOnCanvas
IF MouseX
>= 50 THEN MouseX
= 50 IF MouseY
>= 100 THEN MouseY
= 100 CheckX = MouseX + CurrentSize - 1
CheckY = MouseY + CurrentSize - 1
IF CheckX
>= 50 THEN CheckX
= 50 IF CheckY
>= 100 THEN CheckY
= 100 Tile(A, B).fc = CurrentFontColor
Tile(A, B).bc = CurrentBackColor
Tile(A, B).a = CurrentASCII
Tile(A, B).b = 0
FOR A
= MouseX
TO MouseX
+ CurrentSize
- 1 FOR B
= MouseY
TO MouseY
+ CurrentSize
- 1 Tile(A, B).fc = CurrentFontColor
Tile(A, B).bc = CurrentBackColor
Tile(A, B).a = CurrentASCII
Tile(A, B).b = 1
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.2. PrintMainMenu
COLOR 15, 0: MenuColumnY
= INT(1200 / 8) * 0.70 MenuTextX = 1: MenuTextY = MenuColumnY + 2
LOCATE MenuTextX
+ 0, MenuTextY:
PRINT "CURRENT STATUS" LOCATE MenuTextX
+ 2, MenuTextY:
PRINT "ScreenMode: "; ScreenMode
LOCATE MenuTextX
+ 4, MenuTextY:
PRINT "FontColor: "; CurrentFontColor
LOCATE MenuTextX
+ 5, MenuTextY:
PRINT "BackColor: "; CurrentBackColor
LOCATE MenuTextX
+ 7, MenuTextY:
PRINT "BrushSize: "; CurrentSize
LOCATE MenuTextX
+ 8, MenuTextY:
PRINT "FontSize: "; FontSize
LOCATE MenuTextX
+ 34, MenuTextY:
PRINT "MouseClick = PlaceTile";
LOCATE MenuTextX
+ 35, MenuTextY:
PRINT "LeftClick = no Block ";
LOCATE MenuTextX
+ 36, MenuTextY:
PRINT "RightClick = w/ Block" LOCATE MenuTextX
+ 37, MenuTextY:
PRINT "A = AsciiCode";
LOCATE MenuTextX
+ 38, MenuTextY:
PRINT "F = FontColor";
LOCATE MenuTextX
+ 39, MenuTextY:
PRINT "B = BackColor";
LOCATE MenuTextX
+ 40, MenuTextY:
PRINT "Z = BrushSize";
LOCATE MenuTextX
+ 43, MenuTextY:
PRINT "D = DesignScreen";
LOCATE MenuTextX
+ 44, MenuTextY:
PRINT "X = StructureScreen";
LOCATE MenuTextX
+ 45, MenuTextY:
PRINT "N = NewProject";
LOCATE MenuTextX
+ 46, MenuTextY:
PRINT "L = LoadFile";
LOCATE MenuTextX
+ 47, MenuTextY:
PRINT "S = SaveFile";
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.3. HandleOption
MenuInputX
= 13: MenuColumnY
= INT(1200 / 8) * 0.70: MenuTextY
= MenuColumnY
+ 2 CASE "A":
INPUT "AsciiCode: ", CurrentASCII: PrintImageDesign
CASE "F":
INPUT "FontColor: ", CurrentFontColor: PrintImageDesign
CASE "B":
INPUT "BackColor: ", CurrentBackColor: PrintImageDesign
CASE "D":
CLS: ScreenMode
= "Design": PrintImageDesign
CASE "X":
CLS: ScreenMode
= "Structure": PrintImageStructure
CASE "N": ScreenMode
= "Design": LoadImageDefault
CASE "S": ScreenMode
= "Design": SaveImageFile
CASE "L": ScreenMode
= "Design": LoadImageFile
FontSize = FontSize + 1
IF FontSize
> 16 THEN FontSize
= 16 IF ScreenMode
= "Design" THEN PrintImageDesign
ELSE PrintImageStructure
FontSize = FontSize - 1
IF FontSize
< 1 THEN FontSize
= 1 IF ScreenMode
= "Design" THEN PrintImageDesign
ELSE PrintImageStructure
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.4. PrintImageDesign
ReloadFont FontSize
COLOR Tile
(A
, B
).fc
, Tile
(A
, B
).bc
LOCATE Tile
(A
, B
).x
, Tile
(A
, B
).y
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.5. PrintImageStructute
ReloadFont FontSize
LOCATE Tile
(A
, B
).x
, Tile
(A
, B
).y
LOCATE Tile
(A
, B
).x
, Tile
(A
, B
).y
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.6. SaveImageFile
WRITE #1, Tile
(A
, B
).x
, Tile
(A
, B
).y
, Tile
(A
, B
).fc
, Tile
(A
, B
).bc
, Tile
(A
, B
).a
, Tile
(A
, B
).b
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.7. LoadImageFile
INPUT #1, Tile
(A
, B
).x
, Tile
(A
, B
).y
, Tile
(A
, B
).fc
, Tile
(A
, B
).bc
, Tile
(A
, B
).a
, Tile
(A
, B
).b
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.8. LoadImageDefault
Tile(A, B).x = A
Tile(A, B).y = B
Tile(A, B).a = 0
Tile(A, B).fc = 7
Tile(A, B).bc = 0
Tile(A, B).b = 0
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.9. RealoadFont
SUB ReloadFont
(FontSize
) IF FontSize
= 16 OR FontSize
= 14 OR FontSize
= 8 THEN FontResized
= _LOADFONT("PerfectDOSVGA437Win.ttf", FontSize
, "monospace")'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5.10. PrintPallete
X = 14: MenuColorY = MenuTextY
'Colors 0 to 15
X = X + 1
'Colors 16 to 31
'Colors 32 to 255
X = X + 1: L = 1
IF MenuColorY
= MenuTextY
+ 24 THEN X = X + 1
MenuColorY = MenuTextY
MenuAsciiY = MenuTextY
'Ascii 0 to 255
IF MenuAsciiY
= MenuTextY
+ 24 THEN X = X + 1
MenuAsciiY = MenuTextY
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6. END OF PROGRAM