Bonjour,
Etant un grand fan de RPGmaker, j'ai pas mal roulé ma bosse dessus, en ayant également recoder beaucoup de chose en ruby, afin de supporter le clavier la souris et aussi les sockets. Cependant l'ENORME problème de la librairie RGSS, c'est que lorsque l'on quitte le focus de la fenêtre, l'exécution des scripts ruby est interrompu, ce qui devient catastrophique avec un jeu en client serveur.
J'ai donc commencer à coder une nouvelle librairie RGSS perso, afin de ne plus avoir cette interruption d'exécution mais aussi permettre la gestion du clavier/souris et network nativement en utilisant la librairie SFML.
Le binding se passe bien, mais je tombe sur quelques problèmes, du à ma faible connaissance des subtilités du SFML. En effet la classe Sprite de la RGSS, contient un bitmap source et un rectangle de sélection permettant d'afficher une portion du bitmap. De ce coté là, pas de soucis, avec les classes sf::Image sf::Texture, ya moyen que je m'en sorte facilement. Cependant, la RGSS propose ces subtilités :
flash(color, duration)
Begins flashing the sprite. duration specifies the number of frames flashing will last.
If color is set to nil, the sprite will disappear while flashing.
wave_amp
wave_length
wave_speed
wave_phase
Defines the amplitude, frequency, speed, and phase of the wave effect. A raster scroll effect is achieved by using a sinusoidal function to draw the sprite with each line's horizontal position slightly different from the last.
wave_amp is the wave amplitude and wave_length is the wave frequency, and each is specified by a number of pixels.
wave_speed specifies the speed of the wave animation. The default is 360, and the larger the value, the faster the effect.
wave_phase specifies the phase of the top line of the sprite using an angle of up to 360 degrees. This is updated each time the update method is called. It is not necessary to use this property unless it is required for two sprites to have their wave effects synchronized.
mirror
A flag denoting the sprite has been flipped horizontally. If TRUE, the sprite will be drawn flipped. The default is false.
bush_depth
bush_opacity
The bush depth and opacity of a sprite. This can be used to represent a situation such as the character's legs being hidden by bushes.
For bush_depth, the number of pixels for the bush section is specified. The default value is 0.
For bush_opacity, the opacity of the bush section from 0 to 255 is specified. Out-of-range values will be corrected automatically. The default value is 128.
The bush_opacity value will be multiplied by opacity. For example, if both opacity and bush_opacity are set to 128, it will be handled as a transparency on top of a transparency, for an actual opacity of 64.
opacity
The sprite's opacity (0-255). Out-of-range values are automatically corrected.
blend_type
The sprite's blending mode (0: normal, 1: addition, 2: subtraction).
color
The color (Color) to be blended with the sprite. Alpha values are used in the blending ratio.
Handled separately from the color blended into a flash effect. However, the color with the higher alpha value when displayed will have the higher priority when blended.
J'étais parti pour faire des transformations sur l'instance de sf::Image, mais je bloque sur le flash et la déformation par vague. Au pire, je peux faire les transformations au pixel, mais j'ai peur que ce soir très gourmand en temps processeur.
Est-ce que vous auriez des exemples de code permettant d'afficher un sf:Sprite avec un flash d'une certaine couleur, et/ou permettre une déformation courant dans le temps?