Trying to compile an old GM editable of mine with enigma, I stumbled upon some problems. That is, stuff that GM is OK with but not ENIGMA.
1. Bogus for statment.
for (i = 0; i < stuff; i += 1;) {}
(Note the third semicolon.)
The generated C++ code was some weird crap like:
for ((i = 0; i < stuff; i += 1); ); {}
Don't know about you, but I find that hilarious.
Anyway.
2. Checking for inequality with <>.
if (a <> b) {}
That is equal to
if (a != b) {}
in GM. In ENIGMA, the generated C++ looks like this:
if (a < > b) {}
and of course doesn't compile. I also find this hilarious, specially how ENIGMA sticks a space between the symbols.
3. Giving a variable the name of a C++ data type or the name of a function.
I had a variable named int. Probably short for intelligence. The problem here is not that it doesn't work (because I guess it's only reasonable), but that ENIGMA didn't catch it at first, and it only became a problem during compilation.
A certain GML code looked like this:
alarm[0]=100-random(int);
and the resulting C++ was something like
alarm(0)= 100 - random;
(int);
and... yeah, I'm sorry but, that is, like, HILARIOUS. Console was all like "invalid operands of type 'int' and '<unresolved overloaded function type>' to binary 'operator-'".
(Also another variable named rand fucked things up too, apparently because it's the name of a function.)
4. Resources that would have the same name, if not for an asterisk one of them has.
e.g. sprCharacter and sprCharacter*. ENIGMA apparently removes the asterisk and ends up trying to define the same thing twice.
5. Other stuff you probably know about already.
dll functions (actually I'm using Linux so I'm not sure).
ini functions.
execute_string
variable_local_exists
user_event
event_inherited (why is this not implemented?)
sprite_create_from_screen
file_exists
And that's pretty much it. I'm posting because I thought this may be useful. Is it? Is there a specific place to put this stuff?