• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

GameMaker how to get a constant name?

Suzaku

Member
I have a enumerator with some constants inside, and I would like to show their names in my console, not their values, something like

show_debug_message(getConstantName(parameterHere));

Is that possible? Thank you.
 

FrostyCat

Redemption Seeker
No, the name is translated away during the build process. You have to specify the result explicitly.

If you didn't set explicit values to any of the enum entries, you can do something like this:
Code:
enum ENUM {
  FOO,
  BAR,
  BAZ
}
#macro ENUM_NAME global.ENUM_NAME
gml_pragma("global", @'global.ENUM_NAME = [
  "FOO",
  "BAR",
  "BAZ"
];');
Code:
show_debug_message(ENUM_NAME[parameterHere]);
If you did set explicit values to one or more enum entries, you can do something similar with maps instead of arrays.
Code:
enum ENUM {
  FOO = 123,
  BAR = 456,
  BAZ = -789
}
#macro ENUM_NAME global.ENUM_NAME
gml_pragma("global", @'
  global.ENUM_NAME = ds_map_create();
  global.ENUM_NAME[? 123] = "FOO";
  global.ENUM_NAME[? 456] = "BAR";
  global.ENUM_NAME[? -789] = "BAZ";
');
Code:
show_debug_message(ENUM_NAME[? parameterHere]);
 
Top