J'aurais besoin de votre aide pour savoir comment je peux m'y prendre pour rendre ce code beaucoup plus rapide.
Le principe est de filtrer les couleurs de quelques sprites une fois de temps à autre par rapport à un sprite de base que je clone.
Il y a aussi un assez gros sprite qui me sert de Tileset, ce qui ralentis l'ensemble des traitements que je fais à presque 1 seconde.
Voici le source de mes fonctions, pour l'instant :
Code : Tout sélectionner
; * retourne la valeur la plus petite des deux *
Procedure.l min(a.l ,b.l)
If a <= b
ProcedureReturn a
EndIf
ProcedureReturn b
EndProcedure
; * Appliquer un effet nuit bleutée à un sprite *
Procedure ApplyNight(spr.l)
StartDrawing(SpriteOutput(spr))
DrawingMode(#PB_2DDrawing_AllChannels)
For y.l = 0 To SpriteHeight(spr) - 1
For x.l = 0 To SpriteWidth(spr) - 1
col.l = Point(x, y)
moy.f = Int((Red(col) + Green(col) + Blue(col)) / 3)
Plot(x, y, RGBA(moy * 0.35, moy * 0.5, moy, Alpha(col)))
Next
Next
StopDrawing()
EndProcedure
; * Appliquer une ombre à une sprite *
Procedure ApplyCloudColor(spr.l)
StartDrawing(SpriteOutput(spr))
DrawingMode(#PB_2DDrawing_AllChannels)
For y.l = 0 To SpriteHeight(spr) - 1
For x.l = 0 To SpriteWidth(spr) - 1
col.l = Point(x, y)
r.l = min((Red(col) * 0.9 * 1.3), 255)
g.l = min((Green(col) * 0.7 * 1.3), 255)
b.l = min((Blue(col) * 0.8 * 1.3), 255)
Plot(x, y, RGBA(r, g, b, Alpha(col)))
Next
Next
StopDrawing()
EndProcedure
; * Redefinir la couleur d'un sprite *
Procedure ApplyColor(spr.l, r.l, g.l, b.l)
StartDrawing(SpriteOutput(spr))
DrawingMode(#PB_2DDrawing_AllChannels)
For y.l = 0 To SpriteHeight(spr) - 1
For x.l = 0 To SpriteWidth(spr) - 1
col.l = Point(x, y)
Plot(x, y, RGBA(r, g, b, Alpha(col)))
Next
Next
StopDrawing()
EndProcedure