November 25, 2020, 05:23:04 AM

Author Topic: [bb] Map editor to MonkeyX code by Pakz [ 1+ years ago ]  (Read 744 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Map editor to MonkeyX code by Pakz [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Map editor to MonkeyX code
Author : Pakz
Posted : 1+ years ago

Description : This tool is a map editor where you can place 10 different tiles with the mouse. The tabber takes you to the tile data in canvas or textarea.
If you change something in the text then the map is updated with this to.  If you change something in the map editor then the textarea text is updated to.

The text in the textarea contains the map tile data. I want to copy and paste it into my short projects in monkey-x. I also want in to be able to be pasted from my projects into this tool for modyfication. ctrl+c and ctrl+v works. Use scroll + ctrl to change text size of textarea.

In the code you can see how you can parse monkey 2 dimensional array code.

here a video of it :
<a href="
" target="_blank">
[/url]
here the github page where it is on (more code to):
<a href="https://github.com/Pakz001/blitzplusexamples" target="_blank">https://github.com/Pakz001/blitzplusexamples[/url]


Code :
Code: BlitzBasic
  1. ; This tool is a map editor that turns the data into a
  2. ; piece of copyable code. Its in the form of an
  3. ; multidimensional array.
  4. ;
  5. ;
  6. ;
  7.  
  8.  
  9. Global win = CreateWindow("Make Monkey array (tilemap) Example",100,100,800,600,0,1)
  10. Global txt = CreateTextArea(0,20,800,600,win)
  11. Global tab = CreateTabber(0,0,800,20,win)
  12. Global can = CreateCanvas(0,20,800,600,win)
  13.  
  14.  
  15. Global mw = 20
  16. Global mh = 15
  17. Global tw = 32
  18. Global th = 32
  19. Dim map(mw,mh)
  20. Global canim = CreateImage(800,600)
  21.  
  22. Global brushindex=0
  23. Global cmx
  24. Global cmy
  25.  
  26. Global tileim = CreateImage(32,32,11)
  27. For i = 0 To 10
  28.         SetBuffer ImageBuffer(tileim,i)
  29.         Rect 0,0,33,33,False
  30.         Text 16,16,i,1,1
  31. Next
  32.  
  33. InsertGadgetItem tab,0,"TextArea",0
  34. InsertGadgetItem tab,1,"Canvas",1
  35.  
  36.  
  37. Global mytxt$
  38.  
  39. makemonkeycode
  40.  
  41. Global timer = CreateTimer(60)
  42.  
  43. updateinterface
  44.  
  45. Repeat
  46.         we = WaitEvent()
  47.        
  48.         If we=$201
  49.                 If EventSource() = can
  50.                         If EventData() = 1
  51.                         End If
  52.                 End If
  53.         End If
  54.         If we=$202
  55.                 If EventSource() = can
  56.                         If EventData() = 1
  57.                                 If RectsOverlap(cmx,cmy,1,1,680,0,32,11*th)
  58.                                         brushindex=cmy/th
  59.                                         updateinterface
  60.                                 End If
  61.                         End If
  62.                 End If
  63.         End If
  64.         If we=$203
  65.                 If EventSource()=can
  66.                         cmx = EventX()
  67.                         cmy = EventY()
  68.                         If MouseDown(1) = True
  69.                         If RectsOverlap(cmx,cmy,1,1,0,0,(mw+1)*tw,(mh+1)*th)
  70.                                 map(cmx/tw,cmy/th) = brushindex
  71.                                 updateinterface
  72.                         End If
  73.                         End If
  74.                         If MouseDown(2) = True
  75.                         If RectsOverlap(cmx,cmy,1,1,0,0,(mw+1)*tw,(mh+1)*th)
  76.                                 map(cmx/tw,cmy/th) = 0
  77.                                 updateinterface
  78.                         End If
  79.                         End If
  80.                 End If
  81.         End If
  82.         If we=$401
  83.                 If EventSource() = tab
  84.                         sg = SelectedGadgetItem(tab)
  85.                         If sg = 0
  86.                                 makemonkeycode
  87.                                 HideGadget can
  88.                                 ShowGadget txt
  89.                         End If
  90.                         If sg = 1
  91.                                 readmonkeycode
  92.                                 HideGadget txt
  93.                                 ShowGadget can
  94.                                 updateinterface
  95.                                 FlipCanvas can
  96.                         End If
  97.                 End If
  98.         End If
  99.         If we=$4001
  100.         End If 
  101.         If we=$803 Then Exit
  102. Forever
  103. End
  104.  
  105. Function updateinterface()
  106.         SetBuffer ImageBuffer(canim)
  107.         Cls
  108.         Color 255,255,255
  109.         For y=0 To mh-1
  110.         For x=0 To mw-1
  111.                 DrawImage tileim,x*tw,y*th,map(x,y)
  112. ;               Rect x*tw,y*th,33,33,False
  113. ;               Text x*tw+tw/2,y*th+th/2,map(x,y),1,1
  114.         Next
  115.         Next
  116.         For y=0 To 10
  117.                 Rect 680,y*th,33,33,False
  118.                 Text 680+16,y*th+16,y,True,True
  119.                 If brushindex = y
  120.                 Rect 681,y*th,31,31,False
  121.                 End If
  122.         Next
  123.         SetBuffer CanvasBuffer(can)
  124.         Cls
  125.         DrawImage canim,0,0
  126.         FlipCanvas can
  127. End Function
  128.  
  129. Function makemonkeycode()
  130.         mytxt$="Global map:Int[][] = ["+Chr(13)+Chr(10)
  131.         For y=0 To mh-1
  132.         mytxt$=mytxt$+"["
  133.         For x=0 To mw-1
  134.                 mytxt$=mytxt$+map(x,y)
  135.                 mytxt$=mytxt$+","
  136.         Next
  137.                 mytxt$=Left(mytxt$,Len(mytxt$)-1)
  138.                 mytxt$=mytxt$+"]"
  139.                 mytxt$=mytxt$+","
  140.                 mytxt$=mytxt$+Chr(13)+Chr(10)
  141.         Next
  142.         mytxt$=Left(mytxt$,Len(mytxt$)-3)
  143.         mytxt$=mytxt$+"]"      
  144.         SetTextAreaText txt,mytxt$
  145. End Function
  146.  
  147. Function readmonkeycode()
  148.         mytxt$ = TextAreaText(txt)
  149.         Local cnt=0
  150.         Local stp=1
  151.         Local exitloop=False
  152.         While exitloop=False
  153.                 stp=Instr(mytxt$,",",stp)
  154.                 If stp=0 Then exitloop=True
  155.                 stp=stp+1
  156.                 cnt=cnt+1
  157.         Wend
  158.         If cnt <> ((mw)*(mh)) Then Notify "Not valid map data"
  159.         Local mytxt2$
  160.         Local a$=""
  161.         Local b$=""
  162.         Local c$=""
  163.         For i = 1 To Len(mytxt$)
  164.                 a$=Mid(mytxt$,i,1)
  165.                 If a$="," Then b$=b$+a$        
  166.                 If Asc(a$) >= 48 And Asc(a$)<= 57 Then b$=b$+a$
  167.         Next
  168.         For i=1 To Len(b$)
  169.                 a$=Mid(b$,i,1)
  170.                 If Asc(a$)>=48 And Asc(a$)<=57
  171.                         c$=c$+a$
  172.                 End If
  173.                 If a$="," Then
  174.                         map(x,y) = Int(c)
  175.                         c$=""
  176.                         x=x+1
  177.                         If x>=mw Then x=0:y=y+1
  178.                 End If
  179.         Next
  180. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal