Autor: NiuWeb.
Versión de GM: Studio 1.4.9999.
Descripción: Invierte los componentes de un color representado como número entero. Es decir, el componente rojo pasará a ser azul, y viceversa.
Resulta que en la versión 1.4.9999 las funciones
effect_create_below() y
effect_create_above() tienen un error que les hace interpretar los colores al revés.
Es decir, este código de aquí:
[gml]
effect_create_above(ef_firework, 128, 128, 0, c_orange);
effect_create_below(ef_firework, 256, 128, 0, c_teal);
effect_create_above(ef_firework, 128, 256, 0, c_blue);
effect_create_below(ef_firework, 256, 256, 0, c_red);
[/gml]
Muestra en pantalla esta locura:
(https://dl.dropbox.com/s/egce7utaevln21f/coloresbug.png?dl=0)
Código: El problema se puede solucionar con este código.
[gml]
///color_rgb_fix(color);
//Invierte los componentes del color dado
//Obtener componentes iniciales
var red = argument0 & 255;
var green = (argument0 >> 8) & 255;
var blue = argument0 >> 16;
//Rehacer el color
return (red << 16) | (green << 8) | (blue);
[/gml]
Ejemplo:Esta sería la versión corregida de las constantes de color, para usar con estas funciones:
[gml]
aqua = color_rgb_fix(c_aqua);
black = color_rgb_fix(c_black);
blue = color_rgb_fix(c_blue);
dkgray = color_rgb_fix(c_dkgray);
fuchsia = color_rgb_fix(c_fuchsia);
gray = color_rgb_fix(c_gray);
green = color_rgb_fix(c_green);
lime = color_rgb_fix(c_lime);
ltgray = color_rgb_fix(c_ltgray);
maroon = color_rgb_fix(c_maroon);
navy = color_rgb_fix(c_navy);
olive = color_rgb_fix(c_olive);
orange = color_rgb_fix(c_orange);
purple = color_rgb_fix(c_purple);
red = color_rgb_fix(c_red);
silver = color_rgb_fix(c_silver);
teal = color_rgb_fix(c_teal);
white = color_rgb_fix(c_white);
yellow = color_rgb_fix(c_yellow);
[/gml]
Y así, cuando necesitemos usar constantes de color en las funciones de efectos, no usaríamos
c_yellow sino
yellow, por ejemplo.
Así que, el código que puse al principiose corregiría de esta forma:
[gml]
effect_create_above(ef_firework, 128, 128, 0, orange);
effect_create_below(ef_firework, 256, 128, 0, teal);
effect_create_above(ef_firework, 128, 256, 0, blue);
effect_create_below(ef_firework, 256, 256, 0, red);
[/gml]
Y en pantalla:
(https://dl.dropbox.com/s/1fgkogp50iflblh/coloresnobug.png?dl=0)
En GMS2 he visto ese error.
Habra que reportarlo a YoYoGames.
Pues Niu hizo este script PRECISAMENTE por que me pasó a mí yen GMS1.4 y le vino la idea y la vena altruista xd