Problem mit Scrolling beim Tile-Editor...
Übersicht

DarthshootBetreff: Problem mit Scrolling beim Tile-Editor... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Mein Tile-Editor soll Levels erstellen ![]() Naja auf jedenfall sind die Karten manchmal größer als der Bildschirm und deshalb muss man das ganze Scrollen können. Dazu habe ich diese Routine (nur für die X Achse am Anfang) gebaut: (Übrigens XLevel ist z.B. 25 groß [also ist XLevel die Tileanzahl]) Code: [AUSKLAPPEN] global ScrollX = 0
Code: [AUSKLAPPEN] ; Map muss man scrollen können!
If MouseX() >= 1023 Then ScrollX = ScrollX + 1 If MouseX() <= 0 Then ScrollX = ScrollX - 1 Und hier das Rendern der Karte: Code: [AUSKLAPPEN] ; Map wird gerendert
For YMap = 0 To (YLevel - 1) For XMap = 0 To (XLevel - 1) DrawBlock Tex(Map(XMap, YMap)), (XMap - ScrollX) * 32, YMap * 32 Next Next Das geht schonmal perfekt. Jetzt ist aber das Problem, dass die Maus mit der aktuell selectierten Tiletexture NICHT außerhalb der Karte darf. Dazu die funktionierende Routine ohne Scrolling: Code: [AUSKLAPPEN] ; Maus initialisieren
If MouseX() < XLevel * 32 Then XMaus = MouseX() / 32 If MouseY() < YLevel * 32 Then YMaus = MouseY() / 32 Meine Frage ist jetzt.. wie mach ich, dass er auch mit Scrolling die Karte nicht verlassen kann? Also die Maus.. ich hab schon soo viel probiert :/ ihr seid meine letze Hoffnung! Danke im Voraus. MfG Darthshoot |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich dich richtig verstanden habe, so mache eine Abfrage die das überprüft. Irgendwo hast du ja bestimmt paar Codezeilen die die Mapposition aus den Daten der Mausposition und Scrollposition die ausgewählte Mapposition berechnet. So nimm diese und überprüfe auf Überlauf der Werte. Eine andere Möglichkeit ist auch, dass Scrollen ausserhalb des möglichen gleich zu unterbinden. | ||
Darthshoot |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ehm also meine Abfrage ist etwa so, aber sie klappt nicht (warum auch immer)
Code: [AUSKLAPPEN] ; Maus initialisieren
If MouseX() < (XLevel + ScrollX) * 32 Then XMaus = MouseX() / 32 If MouseY() < YLevel * 32 Then YMaus = MouseY() / 32 Eigendlich sollte er jetz net mehr außerhalb der zu zeichnenden Map hingehen dürfen, oder? Also die Maus... |
||
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
moin,
mach doch einfach ne Abfrage ob XMaus und YMaus innerhalb des TileMaps sind und wenn nicht, dann setzte Sie einfach entsprechend auf das Minimum oder Maximum Bildschirmbreite und Hoehe in Tiles ermitteln Code: [AUSKLAPPEN] Global ScreenWidth = GraphicsWidth()/32+1
Global ScreenHeight = GraphicsHeight()/32+1 Aktuelle Tile Position, wenn außerhalb des Map, dann innerhalb machen... Code: [AUSKLAPPEN] XMaus = ( MouseX() - ScrollX ) / 32 YMaus = ( MouseY() - ScrollY ) / 32 If XMaus > XLevel-1 Then XMaus = XLevel -1 If XMaus < 0 Then XMaus = 0 EndIf If YMaus > YLevel-1 Then YMaus = YLevel -1 If YMaus < 0 Then YMaus = 0 EndIf Beim einzeichnen des Maps darauf achten, das nur Sichtbare Tiles eingezeichnet werden. Code: [AUSKLAPPEN] x1 = ScrollX / 32 x2 = x2 + ScreenWidth If x2 > XLevel-1 Then x2 = XLevel -1 y1 = ScrollX / 32 y2 = y1 + ScreenHeight If y2 > YLevel-1 Then y2 = YLevel -1 For y1 = 0 To y2 For x1 = 0 To y2 DrawBlock Tex(Map(XMap, YMap)), (XMap - ScrollX) * 32, (YMap - ScrollX) * 32 Next Next Beim scrollen des Maps aufpassen, dass nicht zu weit gescrolled wird... Code: [AUSKLAPPEN] ;Map muss man scrollen können,
If MouseX() >= 1023 Then ScrollX = ScrollX + 1 If ScrollX > (XLevel -1)*32 Then ScrollX = (XLevel -1 - ScreenWidth)*32 EndIf If MouseX() <= 0 Then ScrollX = ScrollX - 1 If ScrollY > (YLevel -1)*32 Then ScrollY = (YLevel -1 - ScreenHeight)*32 EndIf hab jetzt nichts getestet, aber müsste eigendlich funktionieren... mfg Rone |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group