Aktuelle Zeit: 17.11.2019 17:56

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Grafikbugs
BeitragVerfasst: 23.09.2018 20:27 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Leute,

ich wollte eigentlich mal an meinem TMX-Loader weiter programmieren.

Es treten aber diverse unerklärliche Grafikbugs auf, die beim laden der TMX-Dateien unter Tiled nicht existieren.

Siehe hier: (Zeltbug)

https://workupload.com/file/FzQSnvGu

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 21:55 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Mit Debugger komme ich gar nicht so weit.
In DecodeMap() übergibst du eine String-Adresse als Size an AllocateMemory().

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 22:02 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo #NULL,

korrigiere es gegen:

Code:
*bmap = AllocateMemory(MemoryStringLength(@bdata))

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 22:05 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Code:
*bmap = AllocateMemory(MemorySize(@bdata) * 4)

Damit sehe ich wenigstens was. Ob das so richtig ist, weiß ich aber nicht. Vielleicht lieber Base64DecoderBuffer() verwenden?

<edit>Mit MemoryStringLength() geht es auch :)

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 22:11 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
So! Das war zwar ein uncooler Bug (der bei mir aber funktioniert hat ;) ), aber nicht der eigentliche Fehler.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 22:44 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Wenn ich den Screen kleiner mache
Code:
OpenWindowedScreen(WindowID(0), 0, 0, 800,600)
dann verschwinden die Schwarzen bereiche, die Transparenz funktioniert dann und die Tiles zucken auch nicht mehr.

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 23.09.2018 22:50 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
dann verschwinden die Schwarzen bereiche, die Transparenz funktioniert dann und die Tiles zucken auch nicht mehr.


Das sind wieder andere Umstände und nicht der eigentliche Fehler.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 24.09.2018 00:05 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Ich seh da nicht ganz durch aber hiermit kannst du dir die clipping informationen anzeigen lassen:
(z.b. ist tid in deinem programm eins höher als in tiled angezeigt)
Code:
...

Global NewMap m.s()

Procedure DisplayTile(tid, x, y)
  If tid > 0
    ding=#False
    If tid <= (sw / tileset(0)\tileWidth)
      calcX = (tid * tileset(0)\tileWidth)-tileset(0)\tileWidth
      ClipSprite(0, calcX, 0, tileset(0)\tileWidth, tileset(0)\tileHeight)
      ding=#True
    EndIf
    For q = 2 To (sh / tileset(0)\tileHeight)-1
      If tid > (sw / tileset(0)\tileWidth) And tid <= (sw / tileset(0)\tileWidth)*q
        tcalc = (sw / tileset(0)\tileWidth) * (q-1)
        calcX = ((tid - tcalc) * tileset(0)\tileWidth)-tileset(0)\tileWidth
        calcY = tileset(0)\tileHeight * (q-1)
        ClipSprite(0, calcX, calcY, tileset(0)\tileWidth, tileset(0)\tileHeight)
        Break
      EndIf
    Next q
    DisplayTransparentSprite(0, x, y)
    key.s = ""+x+","+y
    m(key) = ""
    ;m(key) + ""+x+","+y+","
    m(key) + ""+tid+","
    ;m(key) + ""+calcX+","+calcY+","
    ;m(key) + ""+tileset(0)\tileWidth+","+tileset(0)\tileHeight
    ;m(key) + ""+","+ding

  EndIf
EndProcedure



...



      ClearScreen($66)
     
      ClearMap(m())
     
      ;DrawIsoMap(xmap1, cx, cy)
      DrawIsoMap(xmap2, cx, cy)
      ;DrawIsoMap(xmap3, cx, cy)
     
      StartDrawing(ScreenOutput())
      ForEach m()
        _x = Val(StringField(MapKey(m()),1,","))
        _y = Val(StringField(MapKey(m()),2,","))
        DrawText(_x,
                 _y,
                 m())
        Box(_x,_y,1,1,$ffffffff)
      Next
      StopDrawing()


_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 24.09.2018 02:03 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Das Sprite mit Alphakanal laden:
Code:
LoadSprite(0, *tset\image\source, #PB_Sprite_AlphaBlending)

Und das Clipping geht auch einfacher:
Code:
Procedure DisplayTile(tid, x, y)
  If tid > 0
    _x = 64 * ((tid-1) % 16)
    _y = 32 * ((tid-1) / 16)
    _w = 64
    _h = 32
    ClipSprite(0, _x, _y, _w, _h)
    DisplayTransparentSprite(0, x, y)
  EndIf
EndProcedure

ebeno deine DrawIsoMap(), war irgendwie rückwärts von links gezeichnet
Code:
Procedure DrawIsoMap(level.s, x_start, y_start)
  t = 1
  For y = 0 To 31
    For x = 0 To 31
      xpos = x_start + x * 32 - y * 32
      ypos = y_start + x * 16 + y * 16
      If Val(StringField(level, t, ",")) <> 0
        DisplayTile(Val(StringField(level, t, ",")), xpos, ypos)
      EndIf
      t + 1
    Next x
  Next y
EndProcedure
Mußt dann nur den Startpunkt anpassen:
Code:
    Global cx = ScreenWidth() / 2
    Global cy = 0


Das entscheidende war aber #PB_Sprite_AlphaBlending.

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Grafikbugs
BeitragVerfasst: 24.09.2018 05:42 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
Das Sprite mit Alphakanal laden


Autsch!

Danke!

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye