Code: Alles auswählen
Enumeration
#MainWindow
#ProjectWindow
EndEnumeration
Enumeration
#MainMenu
EndEnumeration
Enumeration
#MenuNew
#MenuOpen
#MenuSave
#MenuProject
EndEnumeration
Enumeration
#ProjectOKButton
#ProjectCancelButton
#ProjectNameInfoText
#ProjectNameString
#ProjectWidthInfoText
#ProjectHeightInfoText
#ProjectWidthString
#ProjectHeightString
#EditorContainer
#EditorImage
#EditorVScroll
#EditorHScroll
#ToolPanel
#KarteList
#MapScrollArea
#MapImage
#ToolSplitter
#MainSplitter
EndEnumeration
Enumeration
#ImEditor
#ImMiniMap
EndEnumeration
CreateImage(#ImEditor,200,200)
CreateImage(#ImMiniMap,200,200)
Global MapWidth.l, MapHeight.l, MapName.s
#TileSize = 64
MapWidth = 200
MapHeight = 200
MapName = "Level"
Global MausX.l, MausY.l
OpenWindow(#MainWindow,0,0,800,600,"MapED v0.002", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
CreateMenu(#MainMenu,WindowID(#MainWindow))
MenuTitle("Datei")
MenuItem(#MenuNew,"Neu")
MenuItem(#MenuOpen,"Öffnen")
MenuItem(#MenuSave,"Speichern")
MenuBar()
MenuItem(#MenuProject,"Projekteigenschaften")
MenuBar()
ContainerGadget(#EditorContainer,0,0,400,600)
ImageGadget(#EditorImage,0,0, 200, 200, ImageID(#ImEditor))
ScrollBarGadget(#EditorVScroll,0,0,20,100,0,MapHeight * #TileSize,1,#PB_ScrollBar_Vertical)
ScrollBarGadget(#EditorHScroll,0,0,100,20,0,MapWidth * #TileSize,1)
CloseGadgetList()
ScrollAreaGadget(#MapScrollArea, 0, 0, 200,200,200,200,1,#PB_ScrollArea_BorderLess)
ImageGadget(#MapImage,0,0,150,150,ImageID(#ImMiniMap))
CloseGadgetList()
PanelGadget(#ToolPanel, 600, 5, 100, 100)
AddGadgetItem (#ToolPanel, -1, "Karte")
ListViewGadget(#KarteList,0,0,100,100)
TextGadget(687,0,0,100,15,"Preview:")
AddGadgetItem (#ToolPanel, -1, "Wand")
AddGadgetItem (#ToolPanel, -1, "Paralax")
AddGadgetItem (#ToolPanel, -1, "Funktion")
CloseGadgetList()
SplitterGadget(#ToolSplitter, 400,200,200,600,#ToolPanel,#MapScrollArea,#PB_Splitter_Separator)
SetGadgetState(#ToolSplitter,380)
SplitterGadget(#MainSplitter,0,0,600,480,#EditorContainer,#ToolSplitter,#PB_Splitter_Separator|#PB_Splitter_Vertical )
SetGadgetState(#MainSplitter,440)
Procedure.b ProjectWindow()
DisableWindow(#MainWindow, #True)
OpenWindow(#ProjectWindow,0,0,300,80,"Projekteigenschaften", #PB_Window_ScreenCentered, WindowID(#MainWindow))
ButtonGadget(#ProjectOKButton,225,30,70,20,"OK")
ButtonGadget(#ProjectCancelButton,225,55,70,20,"Abbrechen")
TextGadget(#ProjectNameInfoText,5,10,50,15,"Name:")
StringGadget(#ProjectNameString,55,5,240,20,MapName)
TextGadget(#ProjectWidthInfoText,5,35,50,15,"Breite = ")
StringGadget(#ProjectWidthString,55,30,50,20,Str(MapWidth), #PB_String_Numeric )
TextGadget(#ProjectHeightInfoText,5,60,50,15,"Höhe = ")
StringGadget(#ProjectHeightString,55,55,50,20,Str(MapHeight), #PB_String_Numeric )
Repeat
If WaitWindowEvent() = #PB_Event_Gadget
Select EventGadget()
Case #ProjectOKButton
If Val(GetGadgetText(#ProjectWidthString)) < 16 Or Val(GetGadgetText(#ProjectWidthString)) > 1024 Or Val(GetGadgetText(#ProjectHeightString)) < 16 Or Val(GetGadgetText(#ProjectHeightString)) > 1024
MessageRequester("Achtung","Die Höhe und Breite des Projektes muss zwischen 16 und 1024 liegen!")
Else
MapName = GetGadgetText(#ProjectNameString)
MapWidth = Val(GetGadgetText(#ProjectWidthString))
MapHeight = Val(GetGadgetText(#ProjectHeightString))
CloseWindow(#ProjectWindow)
DisableWindow(#MainWindow, #False)
ProcedureReturn #True
EndIf
Case #ProjectCancelButton
CloseWindow(#ProjectWindow)
DisableWindow(#MainWindow, #False)
ProcedureReturn #False
EndSelect
EndIf
ForEver
EndProcedure
Procedure DrawEditorImage()
Protected imWidth.l, imHeight.l, vScroll.l, hScroll.l, vModulo.l, hModulo.l
vScroll = GetGadgetState(#EditorVScroll)
hScroll = GetGadgetState(#EditorHScroll)
hModulo = hScroll%#TileSize
vModulo = vScroll%#TileSize
StartDrawing(ImageOutput(#ImEditor))
imWidth = ImageWidth(#ImEditor)
imHeight = ImageHeight(#ImEditor)
Box(0,0,imWidth,imHeight,0)
DrawingMode(#PB_2DDrawing_Transparent)
For x = 0 To Round(imWidth/#TileSize,1)
Line(x*#TileSize - hModulo,0,0,imHeight,$00009F)
Next
For y = 0 To Round(imHeight/#TileSize,0)
Line(0,y*#TileSize - vModulo,imWidth,0,$00009F)
Next
For x = 0 To Round(imWidth/#TileSize,1)
DrawText(x*#TileSize - hModulo, 0, Str(x + Round(hScroll/#TileSize,0)), $9CE259)
Next
For y = 0 To Round(imHeight/#TileSize,0)
DrawText(0,y*#TileSize - vModulo, Str(y + Round(vScroll/#TileSize,0)), $9CE259)
Next
StopDrawing()
SetGadgetState(#EditorImage, ImageID(#ImEditor))
StartDrawing(ImageOutput(#ImMiniMap))
Box(0,0,MapWidth,MapHeight,0)
DrawingMode(#PB_2DDrawing_Outlined)
Box(hScroll/#TileSize,vScroll/#TileSize,Round(imWidth/#TileSize,1), Round(imHeight/#TileSize,1),$00FFFF)
StopDrawing()
SetGadgetState(#MapImage, ImageID(#ImMiniMap))
EndProcedure
Repeat
MausX = WindowMouseX(#MainWindow)
MausY = WindowMouseY(#MainWindow)
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case #MenuProject
ProjectWindow()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #MapImage
If EventType() = #PB_EventType_LeftClick
spx.l = GetGadgetState(#MainSplitter)
spy.l = GetGadgetState(#ToolSplitter)
msx.l = GetGadgetAttribute(#MapScrollArea,#PB_ScrollArea_X)
msy.l = GetGadgetAttribute(#MapScrollArea,#PB_ScrollArea_Y)
eimw.l = GadgetWidth(#EditorImage)
eimh.l = GadgetHeight(#EditorImage)
SetGadgetState(#EditorHScroll, Round((MausX - spx + msx - 6)*#TileSize - eimw/2 ,0))
SetGadgetState(#EditorVScroll, Round((MausY - spy + msy - 6)*#TileSize - eimh/2 ,0))
EndIf
EndSelect
Case #PB_Event_CloseWindow
CloseWindow(#MainWindow)
End
Case #PB_Event_SizeWindow, #PB_Event_MoveWindow
winw.l = WindowWidth(#MainWindow)
winh.l = WindowHeight(#MainWindow) - MenuHeight()
edw.l = GadgetWidth(#EditorContainer)
edh.l = GadgetHeight(#EditorContainer)
If edw - 20> 1 And edh - 20 > 1
CreateImage(#ImEditor,edw - 20, edh - 20)
SetGadgetState(#EditorImage, ImageID(0))
EndIf
ResizeGadget(#EditorVScroll,edw-19,0,18,edh-20)
ResizeGadget(#EditorHScroll,0, edh-19, edw-20, 18)
ResizeGadget(#KarteList,0,0, GetGadgetAttribute(#ToolPanel,#PB_Panel_ItemWidth)-2,GetGadgetAttribute(#ToolPanel,#PB_Panel_ItemHeight)-30-#TileSize)
ResizeGadget(687,0,GetGadgetAttribute(#ToolPanel,#PB_Panel_ItemHeight)-25-#TileSize, 100,15)
SetGadgetAttribute(#EditorHScroll, #PB_ScrollBar_PageLength, edw-20)
SetGadgetAttribute(#EditorVScroll, #PB_ScrollBar_PageLength, edh-20)
ResizeGadget(#MainSplitter,0, 0, winw, winh)
EndSelect
DrawEditorImage()
ForEver