Couleur

draw_set_color(color);
Selectionne la couleur à utiliser pour les primitives de dessin.
draw_get_color();
Retourne la couleur actuellement selectionnée.

Alpha

draw_set_alpha(alpha);
Selectionne l'alpha à utiliser pour les primitives de dessin. Valeur entre 0 et 1 inclus (0=invisible, 1=visible).
draw_get_alpha();
L'alpha actuellement selectionnée.

Police

La police utilisée par défaut est Helvetica-Lite, en taille 16, gras et italic désactivés.
L'ancienne police utilisée par défaut sur Script était Opificio avec les mêmes paramètres.

import_font(font, size, bold, italic);
Importe et retourne la police de texte font avec la taille size en pixels. bold et italic sont des valeurs booléennes qui activent ou non le gras et l'italique. font est le chemin relatif de la police dans le dossier res/fnt/ ou simplement le nom d'une police déjà existante dans Script ("Arial", "Opificio", etc). Si font est 0, alors la police par défaut sera choisie. Les arguments sont tous facultatifs de la droite vers la gauche.
draw_set_font(font);
Selectionne la police de texte à utiliser pour les primitives de dessin.
draw_get_font();
Retourne la police de texte par défaut.

Formes

draw_pixel(x, y);
Dessine un pixel aux coordonnées (x, y).
draw_line(x1, y1, x2, y2);
Dessine une ligne droite reliant les points (x1, y1) et (x2, y2).
draw_rectangle(x1, y1, x2, y2, outline);
Dessine un rectangle dont les points (x1, y1) et (x2, y2) sont deux sommets opposés. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).
draw_circle(x, y, radius, outline);
Dessine un cercle à la position (x, y) et de rayon radius. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).
draw_triangle(x1, y1, x2, y2, x3, y3, outline);
Dessine un triangle dont les points (x1, y1), (x2, y2) et (x3, y3) sont les trois sommets. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).
draw_ellipse(x1, y1, x2, y2, outline);
Dessine une ellipse. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).
draw_arrow(x1, y1, x2, y2, size);
Dessine une flèche de la position (x1, y1) à la position (x2, y2). size est la taille de la flèche en pixels.
draw_roundrect(x1, y1, x2, y2, outline);
Dessine un rectangle avec bords arrondis. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).
draw_rectangle_round(x1, y1, x2, y2, outline, radius, precision);
Dessine un rectangle avec bords arrondis avec un rayon et une precision modifiables. La precision est le nombre de segments qui forment un arrondi. Outline indique si seule la bordure doit être affichée (valeur true) ou si le rectangle doit être plein (valeur false).

Textes

draw_text(x, y, text);
Dessine le texte à la position (x, y). Le symbole '#' ou le retour chariot chr(13) ou encore le saut à la ligne chr(10) seront interprétés comme des caractères de nouvelle ligne (Utilisez '\#' pour afficher le symbole '#' lui-même).
draw_text_ext(x, y, text, sep, w);
Dessine le texte à la position (x, y). sep est la distance en pixels séparants deux lignes (-1 pour laisser la distance par défaut). w est la largeur du texte en pixels. Les lignes dépassant cette longueur seront sectionnées avc un espace ou un trait d'union (-1 pour interdire le sectionnement des lignes).
draw_text_transformed(x, y, text, xscale, yscale, angle);
Dessine le texte à la position (x, y) en effectuant une mise à l'échelle horizontale et verticale à l'aide des facteurs xscale et yscale et en inclinant le texte de angle degrés dans le sens contraire des aiguilles d'une montre.
draw_text_ext_transformed(x, y, text, sep, w, xscale, yscale, angle);
Combine les fonctions draw_text_ext et draw_text_transformed. Cela permet d'afficher du texte sur plusieurs lignes tout en appliquant une orientation et une mise à l'échelle du texte.
draw_text_color(x, y, text, c1, c2, c3, c4, alpha);
Dessine le texte à la position (x, y). Les quatres couleurs indiquent respectivement les couleurs du coin supérieur gauche, supérieur droit, inférieur droit et inférieur gauche du texte. alpha correspond à la transparence du texte (valeur entre 0 et 1).
draw_text_ext_color(x, y, text, sep, w, c1, c2, c3, c4, alpha);
Similaire à la fonction draw_text_ext mais avec des vertices de couleurs.
draw_text_transformed_color(x, y, text, xscale, yscale, angle, c1, c2, c3, c4, alpha);
Similaire à la fonction draw_text_transformed mais avec des vertices de couleurs.
draw_text_ext_transformed_color(x, y, text, sep, w, xscale, yscale, angle, c1, c2, c3, c4, alpha);
Similaire à la fonction draw_text_ext_transformed mais avec des vertices de couleurs.

Images

import_sprite(filename, transparent, blur);
Importe et retourne le sprite filename. Filename est le chemin relatif du sprite dans le dossier res/spr/. Les arguments transparent et blur sont des valeurs booléennes facultatives qui activent ou non la transparence et le flou. Le flou permet de dépixeliser un sprite ayant une résolution trop faible.
draw_sprite(sprite, subimg, x, y);
Dessine le sprite dont le sommet supérieur gauche de l'image sera positionné aux coordonnées (x, y). Si l'image est un GIF animé, subimg est le numéro de l'image à afficher (-1 laissera les images défiler), dans le cas ou l'image n'est pas animée, laissez -1.
draw_sprite_stretched(sprite, subimg, x, y, w, h);
Dessine le sprite en l'étirant de telle manière qu'il remplisse la zone située au coin supérieur gauche (x, y), de largeur w et de hauteur h.
draw_sprite_tiled(sprite, subimg, x, y);
Dessine le sprite sous forme de tuiles de façon qu'il remplisse entièrement la fenêtre d'affichage. (x, y) correspond aux coordonnées où le sprite de départ est affiché.
draw_sprite_part(sprite, subimg, left, top, width, height, x, y);
Dessine le sprite avec la position et les dimensions renseignées.
draw_better_sprite(sprite, subimg, x1, y1, xradius, yradius, zoom, rotation);
Dessine le sprite aux coordonnées (x1, y1) selon un zoom et une rotation spécifique. xradius et yradius renseignent la position du centre de rotation du sprite.

Surfaces

Dans certains cas, vous souhaiterez ne pas dessiner directement à l'écran mais plutôt sur un canevas qui pourra ultérieurement être réutilisé pour dessiner d'autres choses sur l'écran.
Ce type de canevas est appelé une surface. Par exemple, imaginons que vous souhaitiez que l'utilisateur puisse dessiner sur l'écran. Il ne devra pas pouvoir le faire directement sur l'écran (car le dessin sera supprimé à chaque nouveau step).
Vous souhaiterez donc que le dessin soit fait sur une surface distincte qui sera ensuite copiée à l'écran à chaque step. Ou bien encore vous voudrez utiliser une texture qui devra changer à intervalles réguliers.

L'utilisation de surfaces vous permettra de réaliser tout ceci et de plus, c'est assez simple à utiliser.
Vous devrez créer en premier lieu une surface. Ensuite, vous indiquerez les opérations de dessin qui devront s'afficher sur cette surface. A partir de ce moment là, toutes les fonctions de dessin opéreront sur la surface en question.
Une fois que vous en aurez terminé, vous réinitialiserez la cible de dessin et les opérations de dessin ultérieurs s'afficheront de nouveau sur cet écran.
Vous pouvez dessiner sur la surface de l'écran de différentes manières ou encore utiliser la surface comme une texture.

A ce sujet, il y a certaines choses pour lesquelles vous devrez être prudent:

  • Pour des raisons de vitesse, la surface est conservée uniquement en mémoire vidéo. Aussi, vous pourriez perdre la surface si par exemple, vous modifiez la résolution d'écran ou encore si votre effaceur d'écrans se met en fonction.
  • Les surfaces ne fonctionnent pas dans le mode 3D, ça sera rendu compatible lors d'une prochaine mise à jour de Script.
surface_create(w, h);
Crée une surface de largeur et hauteur indiquées. Retourne l'ID de la surface qui devra être utilisé dans tous les appels ultérieurs de fonctions. Veuillez prendre note que la surface ne sera pas effacée. Ceci incombe à l'utilisateur de le faire délibérément (définissez-la comment une cible puis appelez la fonction d'effacement appropriée.)
surface_free(id);
Libère la mémoire utilisée par la surface.
surface_exists(id);
Retourne si la surface identifiée par l'ID indiqué existe déjà.
surface_get_width(id);
Retourne la largeur de la surface.
surface_get_height(id);
Retourne la hauteur de la surface.
surface_get_texture(id);
Retourne la texture correspondant à la surface. Ceci peut être utilisé pour afficher des objets texturés avec l'image de la surface.
surface_set_target(id);
Définit la surface indiquée comme étant la cible d'affichage. Ainsi, toutes les opérations futures d'affichages opéreront sur cette surface. Cette commande réinitialise la projection afin de couvrir simplement la surface.
surface_reset_target();
Réinitialise la cible d'affichage sur l'écran de destination courant.
surface_getpixel(id, x, y);
Retourne la couleur du pixel correspondant à la position (x, y) de la surface. A utiliser avec précaution car cela n'est pas très rapide.
surface_save(id, fname);
Sauvegarde la surface en tant qu'image BMP dans le fichier de nom filename. Utile pour faire une copie d'écran de la surface.
surface_save_part(id, fname, x, y, w, h);
Sauvegarde une partie de la surface dans le fichier de nom filename.
draw_surface(id, x, y);
Affiche la surface à la position (x, y). (sans mélange de couleur (pas de fondu) ni transparence alpha).
draw_surface_stretched(id, x, y, w, h);
Affiche la surface étendue à la région indiquée.
draw_surface_tiled(id, x, y);
Affiche la surface sous forme de tuiles (tiles) de manière à ce qu'elle remplisse entièrement l'écran.
draw_surface_part(id, left, top, width, height, x, y);
Affiche la partie indiquée de la surface avec origine en position (x, y).
draw_surface_ext(id, x, y, xscale, yscale, rot, color, alpha);
Affiche la surface avec mise à l'échelle et orientation tout en utilisant une couleur de mélange (utilisez c_white pour ne pas avoir de couleur de fondu) et une transparence alpha (0 à 1).
draw_surface_stretched_ext(id, x, y, w, h, color, alpha);
Affiche la surface étendue à la région indiquée. La couleur est celle de la couleur de fondu et alpha correspond aux paramètres de la transparence.
draw_surface_tiled_ext(id, x, y, xscale, yscale, color, alpha);
Affiche la surface sous forme de tuiles (tiled) de façon à remplir complètement l'écran mais désormais avec une mise à l'échelle à l'aide des facteurs xscale et yscale et un paramétrage de la couleur et de la transparence.
draw_surface_part_ext(id, left, top, width, height, x, y, xscale, yscale, color, alpha);
Affiche la partie indiquée de la surface avec origine en position (x, y) mais maintenant avec une mise à l'échelle à l'aide des facteurs xscale et yscale et un paramétrage de la couleur et de la transparence.
draw_surface_general(id, left, top, width, height, x, y, xscale, yscale, rot, c1, c2, c3, c4, alpha);
La fonction d'affichage la plus couramment utilisée. Elle affiche la partie indiquée de la surface avec origine en position (x, y) mais désormais avec une mise à l'échelle à l'aide des facteurs xscale et yscale, un angle de rotation rot, une couleur pour chacun des quatre vertices (supérieur gauche, supérieur droit, inférieur droit et inférieur gauche) et une valeur de transparence alpha.
surface_copy(destination, x, y, source);
Effectue une copie de la surface source à la position (x, y) dans la surface de destination. (sans aucune possibilité de fondu ou de mélange de couleur).
surface_copy_part(destination, x, y, source, xs, ys, ws, hs);
Copie la partie indiquée de la surface source à la position (x, y) dans la surface de destination. (sans fondu ni mélange de couleur).

Blendmode

Prochainement