; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1957&highlight= ; Author: bourbon (updated for PB4.00 by blbltheworm) ; Date: 09. August 2003 ; OS: Windows ; Demo: No ; PB export function for Tile Studio, doesn't run directly - main program, variables etc. ; PB Export Funktion für Tile Studio, läuft nicht direkt - siehe Hinweis ; -------------------------------------------------------- ; Tile Studio Definition file für Pure Basic ; (http://www.purebasic.de/) ; ; erwarten sie kein fertiges Programm, es gibt noch vieles ; für sie zu tun, Variablen angleichen, Hauptprogramm, es ; soll für sie auch nur einen Denkanstoß darstellen, letzt- ; endlich gewinnt die eigene Kreativität :-) ; ; Version 1.0 - Februar 2003 ; (c)by Bourbon ; Syntax wegen der Kompatibilität von BB übernommen ; -------------------------------------------------------- ; --- bitmap file ---------------------------------------- #tileset #tilebitmap Data\\TS_.bmp #end tilebitmap #end tileset ; -------------------------------------------------------- #file TS_.pb #; ---------- Generated by Tile Studio ---------- #; #; ACHTUNG, ein paar Werte müssen manuell angepaßt, bzw. ergänzt oder zugewiesen werden! #; #; --- Version 1.0 --- #; ************************************************************************************************* #; #; Aktuelles Projekt : #; Programmierer : #; Copyright : #; Datum der Erstellung : #; Uhrzeit : #; Anmerkungen : Keine #; #; ************************************************************************************************* #; #tileset ##_Bitmap = * 8 + 10 #map ##LAYER__ = * 16 + 10 + ##__Overlap = #end map #end tileset #; #; --- hier die richtigen Werte für unser Windows Fenster eintragen (fürs erste Level z.B.) --- #; map.l = #LAYER_Ch_Level1 ; als Beispiel der erste Level von Charlie mapOverlap.l = 0 ScrollSicht.l = 40 #; get map width (tiles) Procedure MapWidth(map) Select map #tileset #map Case #LAYER__ ret = #end map #end tileset EndSelect ProcedureReturn ret EndProcedure #; get map height (tiles) Procedure MapHeight(map) Select map #tileset #map Case #LAYER__ ret = #end map #end tileset EndSelect ProcedureReturn ret EndProcedure #; get tile width (pixels) Procedure TileWidth(map) Select map #tileset #map Case #LAYER__ ret = #end map #end tileset EndSelect ProcedureReturn ret EndProcedure #; get tile height (pixels) Procedure TileHeight(map) Select map #tileset #map Case #LAYER__ ret = #end map #end tileset EndSelect ProcedureReturn ret EndProcedure #; ; ----------------------------------------------------------------------------- ; *** check auf DirectX und Initialisierung von Sprites und Keyboard *** If InitSprite() = 0 Or InitKeyboard() = 0 MessageRequester("Error","Minimun DirectX Version 7 erforderlich!",#MB_ICONERROR) End : EndIf ; ----------------------------------------------------------------------------- SetFrameRate(75) ; zeige 75 Frames pro Sekunde an ScrBreit = ScrollSicht * TileWidth(map) ; bei scrolling "ScrollSicht" ansonst "MapWidth(map)" angeben ScrHoch = MapHeight(map) * (TileHeight(map) - mapOverlap) ; einen eventuellen Overlap&Scrollwert hier berücksichtigen hWnd=OpenWindow(0,(GetSystemMetrics_(#SM_CXSCREEN)-ScrBreit)/2,(GetSystemMetrics_(#SM_CYSCREEN)-ScrHoch)/2,ScrBreit,ScrHoch,"",#PB_Window_TitleBar) If OpenWindowedScreen(hWnd,0,0,ScrBreit,ScrHoch,0,0,0) = 0 MessageRequester("Error","Es konnte kein Arbeitsfenster geöffnet werden!",#MB_ICONERROR) End : EndIf TransparentSpriteColor(-1,RGB(,,)) #tileset #end tileset #tileset LoadSprite(#_Bitmap, "Data\\TS_.bmp", 0) #end tileset #tileset #map Global Dim _Map(, ) Restore _MapData For y = 1 To For x = 1 To Read _Map (x, y) Next Next Global Dim _Bounds(, ) Restore _BoundData For y = 1 To For x = 1 To Read _Bounds(x, y) Next Next #end map #sequence _Seq.s = Chr() + #sequencedata "" " + " "" Chr() + Chr() #end sequencedata #end sequence Global Dim Sequences.s() #sequence Sequences() = _Seq$ #end sequence #map #; _Layer #; movement (x, y) = (x = , y = ) #; #end map #end tileset #; get tile number at position (x,y) Procedure GetTile (map, x, y) Select map #tileset #map Case LAYER__ ret = _Map(x, y) #end map #end tileset EndSelect ProcedureReturn ret EndProcedure #; get bounds/map code at position (x,y) Procedure GetBounds(map, x, y) Select map #tileset #map Case LAYER__ ret = _Bounds(x, y) #end map #end tileset EndSelect ProcedureReturn ret EndProcedure Procedure DrawTile(map, x, y, tile) Select map #tileset #map Case LAYER__ ClipSprite(#_Bitmap, 0, tile * TileHeight(map), TileWidth(map), TileHeight(map)) DisplayTransparentSprite(#_Bitmap, x, y) #end map #end tileset EndSelect EndProcedure #; ************************************************************************************************ #; * HAUPTSCHLEIFE ... #; * #; man kann sofort etwas sehen, wenn man für die entsprechenden Werte das jeweilige Level und die #; entsprechenden Variablen dazu korrekt einsetzt (im Beispiel für Charlie) Repeat ClearScreen(RGB(0,0,0)) ExamineKeyboard() If KeyboardPushed(#PB_Key_Left) And Map_x > 0 Map_x - 1 EndIf If KeyboardPushed(#PB_Key_Right) And Map_x ? MapWidth(map) - ScrollSicht ; statt ? kleiner Zeichen einsetzen, liegt an TS :-( Map_x + 1 EndIf For datY = 1 To MapHeight(map) For datX = 1 To MapWidth(map) block = CHLevel1_Map(datX+Map_x, datY) - 1 ClipSprite(#CH_Bitmap, 0, block*TileHeight(map), TileWidth(map), TileHeight(map)) DisplayTransparentSprite(#CH_Bitmap, (datX-1)*TileWidth(map), (datY-1)*TileHeight(map)) Next Next FlipBuffers() Delay(1) Until KeyboardPushed(#PB_Key_Escape) End #; ************************************************************************************************ ; -------------------------------------------------------- #; Mapdaten #; DataSection #tileset #map _MapData: #mapdata "\nData.l " "," "\nData.l " "\nData.l " "" #end mapdata #; tile size: w = , h = #; Achtung: die Kollisionsdaten sind in Hex, wegen der Übersichtlichkeit _BoundData: #mapdata "\nData.l " "," "\nData.l " "\nData.l " "" $ #end mapdata #end map #end tileset EndDataSection #; ---------- end of generated file ---------- #end file ; IDE Options = PureBasic v4.00 (Windows - x86) ; Folding = --