DisplaySprite liefert anderes Ergebniss als ImageGadget
Verfasst: 10.07.2013 16:33
Hallo zusammen,
Ich habe einen WindowedScreen neben ein par ImageGadgets und wenn ich nun die gleichen Bilder als Sprites und Images laden lasse, werden sie aber unterschiedlich angezeigt. In den ImageGadgets funktioniert noch alles Prima, aber im Screen werden selbige in anderen Farben (hauptsächlich Lila/Rosa) angezeigt.
Nun habe ich mich gefragt was ich da falsch gemacht habe.
Hier der ganze Code:
Danke schon mal im Voraus für alle Antworten.
Ich habe einen WindowedScreen neben ein par ImageGadgets und wenn ich nun die gleichen Bilder als Sprites und Images laden lasse, werden sie aber unterschiedlich angezeigt. In den ImageGadgets funktioniert noch alles Prima, aber im Screen werden selbige in anderen Farben (hauptsächlich Lila/Rosa) angezeigt.
Nun habe ich mich gefragt was ich da falsch gemacht habe.
Hier der ganze Code:
Code: Alles auswählen
Global MaxKarteX, MaxKarteY, ZeigeKarte = #False
Global MaxTiles = 0
Global MausX, MausY, KMausX, KMausY, aktTile = 0, lastTile = 0
Procedure NeueKarte(groesse.i)
MaxKarteX = groesse
MaxKarteY = MaxKarteX
Global Dim Karte(MaxKarteX, MaxKarteY)
ZeigeKarte = #True
EndProcedure
Procedure ZeichneKarte()
If ZeigeKarte = #True
For y = 0 To MaxKarteY
For x = 0 To MaxKarteX
DisplaySprite(Karte(x, y), x*20, y*20)
Next
Next
EndIf
EndProcedure
Procedure LadeTiles()
ReadFile(0, "Sprites/Tilelist.txt")
While Eof(0) = 0
file.s = ReadString(0)
LoadSprite(maxTiles, "Sprites/" + file + ".bmp")
LoadImage(maxTiles, "Sprites/" + file + ".bmp")
maxTiles + 1
Wend
CloseFile(0)
maxTiles - 1
EndProcedure
Procedure Mouse()
MausX = WindowMouseX(0)
MausY = WindowMouseY(0)
KMausX = (MausX - 200)/20
KMausY = MausY/20
SetGadgetText(3, "Maus-X: " + Str(MausX))
SetGadgetText(4, "Maus-Y: " + MausY)
If KMausX >= 0
If KMausX <= MaxKarteX
SetGadgetText(5, "Koordinaten: " + KMausX + "|" + KMausY)
Else
SetGadgetText(5, "Koordinaten: | ")
EndIf
Else
SetGadgetText(5, "Koordinaten: NA")
EndIf
If neu = #False
If Not aktTile = lastTile
SetGadgetState(99, ImageID(aktTile))
lastTile = aktTile
EndIf
EndIf
EndProcedure
Procedure ChangeTile()
If KMausX >= 0
If KMausX <= MaxKarteX
Karte(KMausX, KMausY) = aktTile
EndIf
EndIf
EndProcedure
Procedure OeffneKarte()
OpenFileRequester("Karte laden", "Map.txt", "Text (*.txt)|*.txt", 1)
EndProcedure
InitSprite()
InitMouse()
If OpenWindow(0, 0, 0, 800, 620, "Map Editor", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 200, 0, 600, 600)
If CreateMenu(0, WindowID(0))
MenuTitle("Datei")
OpenSubMenu("Neu")
MenuItem(1, "10x10")
MenuItem(2, "15x15")
MenuItem(3, "20x20")
MenuItem(4, "25x25")
MenuItem(5, "30x30")
CloseSubMenu()
MenuItem(6, "Öffnen")
MenuItem(7, "Speichern")
MenuItem(8, "Beenden")
MenuTitle("Tile")
MenuItem(9, "Hinzufügen")
MenuItem(10, "Entfernen")
MenuTitle("Spawn")
MenuItem(11, "Hinzufügen")
MenuItem(12, "Entfernen")
EndIf
TextGadget(3, 5, 05, 60, 20, "Maus-X: " + Str(MausX))
TextGadget(4, 5, 30, 60, 20, "Maus-Y: " + MausY)
TextGadget(5, 5, 55, 100, 20, "Koordinaten: " + KMausX + "|" + KMausY)
TextGadget(7, 5, 80, 100, 20, "Aktuelles Tile:")
LadeTiles()
ImageGadget(99, 80, 80, 20, 20, ImageID(0))
For n = 0 To maxTiles
ImageGadget(n + 100, 5 + x*25, 105 + y*25, 20, 20, ImageID(n))
x + 1
If x > 5
x = 0
y + 1
EndIf
Next
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case 1 : NeueKarte(10)
Case 2 : NeueKarte(15)
Case 3 : NeueKarte(20)
Case 4 : NeueKarte(25)
Case 5 : NeueKarte(30)
Case 6 : OeffneKarte()
Case 8 : CloseWindow(0)
End
EndSelect
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_LeftClick
If Not EventGadget() = 99
aktTile = EventGadget() - 100
EndIf
EndSelect
Case #WM_LBUTTONDOWN : ChangeTile()
EndSelect
FlipBuffers()
ClearScreen(0)
ZeichneKarte()
Mouse()
Delay(1)
Until Event = #PB_Event_CloseWindow
EndIf