I seen this a while ago and I really like what you've got so far. I really like the dark theme the best though, the second Windows 95 theme looks a little too dated. May I ask what you are using for the UI?Thanks. :D I've also been working on GM: Studio files, it's almost done. Also the documentation for both formats are very clear. :)
Your embedding of the code editor in the object frame was something we considered before:
http://enigma-dev.org/forums/index.php?topic=910
Your choice of JSON is a good one too. If you need any help reading or writing the GMK formats, the LGM source code is publicly available on GitHub:
https://github.com/IsmAvatar/LateralGM/blob/master/org/lateralgm/file/GmFileReader.java
We also have some documentation on the Wiki:
http://enigma-dev.org/docs/Wiki/GM_format
Nice work so far, keep it up! Having lots of choices is really good for GameMaker users.
nice, you have plan port in linux?I tried to load my project in ENIGMA, but it simply crashes. It crashes when it reaches an empty script (it only contains a block comment followed by a line comment). :P I get many many errors:
...
8 Objects:
obj_controller: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_controller::create... Done. Parse... Done.
Event[2]: Parsing 1 sub-events:
Check `obj_controller::alarm_0... Done. Parse... Done.
Event[3]: Parsing 2 sub-events:
Check `obj_controller::step... Done. Parse... Done.
Check `obj_controller::endstep... Done. Parse... Done.
Event[7]: Parsing 3 sub-events:
Check `obj_controller::gameend... Done. Parse... Done.
Check `obj_controller::roomstart... Done. Parse... Done.
Check `obj_controller::asyncdialog... Done. Parse... Done.
Event[8]: Parsing 1 sub-events:
Check `obj_controller::draw... Done. Parse... Done.
Event[9]: Parsing 1 sub-events:
Check `obj_controller::keypress_122... Done. Parse... Done.
obj_overlay: 12 events:
Event[8]: Parsing 1 sub-events:
Check `obj_overlay::draw... Done. Parse... Done.
obj_project: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_project::create... Done. Parse... Done.
Event[1]: Parsing 1 sub-events:
Check `obj_project::destroy... Done. Parse... Done.
obj_data: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_data::create... Done. Parse... Done.
obj_window: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_window::create... Done. Parse... Done.
Event[1]: Parsing 1 sub-events:
Check `obj_window::destroy... Done. Parse... Done.
Event[3]: Parsing 1 sub-events:
Check `obj_window::step... Done. Parse... Done.
Event[7]: Parsing 1 sub-events:
Check `obj_window::userzero... Done. Parse... Done.
Event[8]: Parsing 1 sub-events:
Check `obj_window::draw... Done. Parse... Done.
obj_resize: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_resize::create... Done. Parse... Done.
Event[2]: Parsing 1 sub-events:
Check `obj_resize::alarm_0... Done. Parse... Done.
obj_scripts: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_scripts::create... Done. Parse... Done.
obj_highlighted: 12 events:
Event[0]: Parsing 1 sub-events:
Check `obj_highlighted::create... Done. Parse... Done.
Event[7]: Parsing 1 sub-events:
Check `obj_highlighted::userzero... Done. Parse... Done.
Creating room creation code scope and parsing
"Linking" scripts into the objects...
"Linking" timelines into the objects...
"Link" complete.
Tabulating maximum argument passes to each script
...
Writing events
Writing object data
Writing local accessors
Writing font data
Writing room data
Writing shader data
Running make from `mingw32-make.exe'
Full command line: mingw32-make.exe Game WORKDIR="C:/ProgramData/ENIGMA/" GMODE=Run GRAPHICS=OpenGL1 AUDIO=OpenAL COLLISION=Precise WIDGETS=Win32 NETWORKING=None PLATFORM=Win32 CXXFLAGS="-std=c++11 -I../Additional/i686-w64-mingw32/include" COMPILEPATH="Windows/Windows" EXTENSIONS=" Universal_System/Extensions/DateTime Universal_System/Extensions/Paths Universal_System/Extensions/DataStructures Universal_System/Extensions/MotionPlanning Universal_System/Extensions/Alarms Universal_System/Extensions/BasicGUI Universal_System/Extensions/ParticleSystems Universal_System/Extensions/Timelines" OUTPUTNAME="C:/Users/Michael/AppData/Local/Temp/egm4643029012246048737.exe" eTCpath=""
mingw32-make.exe -C ENIGMAsystem/SHELL
mingw32-make.exe[1]: Entering directory `D:/ENIGMA/ENIGMA/enigma-dev/ENIGMAsystem/SHELL'
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Audio_Systems/OpenAL/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Bridges/Win32-OpenGL1/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Collision_Systems/Precise/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Graphics_Systems/General/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Graphics_Systems/OpenGL1/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Platforms/Win32/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/Alarms/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/BasicGUI/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/DataStructures/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/DateTime/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/MotionPlanning/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/ParticleSystems/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/Paths/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Universal_System/Extensions/Timelines/
mkdir.exe -p C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/Widget_Systems/Win32/
g++ -std=c++11 -I../Additional/i686-w64-mingw32/include -Wall -s -O3 -fno-rtti -fno-exceptions -DPATH_EXT_SET -IPlatforms/Win32/Info -IGraphics_Systems/OpenGL1/Info -IAudio_Systems/OpenAL/Info -ICollision_Systems/Precise/Info -IWidget_Systems/Win32/Info -INetworking_Systems/None/Info -IUniversal_System/Info -I. -IC:/ProgramData/ENIGMA/ -Wall -s -O3 -fno-exceptions -MMD -MP -c -o C:/ProgramData/ENIGMA/.eobjs/Windows/Windows/Run/SHELLmain.o SHELLmain.cpp
In file included from SHELLmain.cpp:109:0:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h: In function 'variant _SCR_project_load(variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant)':
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:150:50: error: expected unqualified-id before 'delete'
enigma::varaccess_project(int(global)).delete = 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:150:50: error: expected ';' before 'delete'
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:157:102: error: 'recent' was not declared in this scope
for(enigma::varaccess_i(int(self))= min((enigma::varargs(), enigma::varaccess_length(int(recent))- 1, 6)); enigma::varaccess_i(int(self))>= 0; enigma::varaccess_i(int(self))-= 1)
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:163:40: error: 'recent' was not declared in this scope
enigma::varaccess_name(int(recent))[int(0)]="seperator";
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:168:100: error: 'recent' was not declared in this scope
for(enigma::varaccess_i(int(self))= min((enigma::varargs(), enigma::varaccess_length(int(recent))- 1, 6)); enigma::varaccess_i(int(self))>= 0; enigma::varaccess_i(int(self))-= 1)
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:186:38: error: 'recent' was not declared in this scope
enigma::varaccess_name(int(recent))[int(0)]= enigma::varaccess_name(int(other));
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h: In function 'variant _SCR_resources_draw(variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant)':
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:346:91: error: '_w' was not declared in this scope
enigma::varaccess_scale(int(self))= min((enigma::varargs(), size / (double) _w, size / (double) _h));
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:346:111: error: '_h' was not declared in this scope
enigma::varaccess_scale(int(self))= min((enigma::varargs(), size / (double) _w, size / (double) _h));
^
In file included from SHELLmain.cpp:109:0:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:356:91: error: '_w' was not declared in this scope
enigma::varaccess_scale(int(self))= min((enigma::varargs(), size / (double) _w, size / (double) _h));
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:356:111: error: '_h' was not declared in this scope
enigma::varaccess_scale(int(self))= min((enigma::varargs(), size / (double) _w, size / (double) _h));
^
In file included from SHELLmain.cpp:105:0:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:441:106: error: 'shift' was not declared in this scope
:: draw_line_dashed(xx - size / (double) 2, max((enigma::varargs(), yy + size / (double) 2, yy - shift)), xx - size / (double) 2, Y - size / (double) 2);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectdeclarations.h:70:62: note: in definition of macro 'draw_line_dashed'
#define draw_line_dashed(arguments...) _SCR_draw_line_dashed(arguments)
^
In file included from SHELLmain.cpp:109:0:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h: In function 'variant _SCR_data_add_from_json(variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant, variant)':
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:500:40: error: expected unqualified-id before 'char'
var data, jsonstr, jsonlen, level, char, i, str, endchar, control, searchname, _str;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:508:7: error: 'searchname' was not declared in this scope
searchname =! enigma::varaccess_array(int(self));
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:509:7: error: 'i' was not declared in this scope
i = 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:512:14: error: expected unqualified-id before '=' token
char = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:513:12: error: expected primary-expression before 'char'
if(char ==",")
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:513:12: error: expected ')' before 'char'
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:520:28: error: expected primary-expression before 'char'
else if(string_pos(char, "-1234567890.")
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:523:11: error: 'str' was not declared in this scope
str = char i += 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:523:17: error: expected primary-expression before 'char'
str = char i += 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:523:17: error: expected ';' before 'char'
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:524:16: error: expected unqualified-id before '=' token
char = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:525:29: error: expected primary-expression before 'char'
while((string_pos(char, "1234567890."))
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:528:20: error: expected primary-expression before 'char'
str += char i += 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:528:20: error: expected ';' before 'char'
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:529:18: error: expected unqualified-id before '=' token
char = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:536:28: error: expected primary-expression before 'char'
else if(string_pos(char, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_1234567890$")
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:539:11: error: 'str' was not declared in this scope
str ="";
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:540:29: error: expected primary-expression before 'char'
while((string_pos(char, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_1234567890$"))
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:543:20: error: expected primary-expression before 'char'
str += char i += 1;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:543:20: error: expected ';' before 'char'
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:544:18: error: expected unqualified-id before '=' token
char = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:554:15: error: 'endchar' was not declared in this scope
endchar = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:556:15: error: 'control' was not declared in this scope
control = 0;
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:557:20: error: expected unqualified-id before '=' token
char = string_char_at(jsonstr, i);
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:558:22: error: expected primary-expression before 'char'
while((char != endchar && i <= string_length(jsonstr)))
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectfunctionality.h:558:22: error: expected ')' before 'char'
SHELLmain.cpp:142:1: error: expected ')' at end of input
}
^
SHELLmain.cpp:142:1: error: expected statement at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: error: expected '}' at end of input
SHELLmain.cpp:142:1: warning: no return statement in function returning non-void [-Wreturn-type]
In file included from SHELLmain.cpp:105:0:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectdeclarations.h: At global scope:
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectdeclarations.h:514:17: warning: inline function 'bool enigma::OBJ_obj_controller::myevent_alarm_0_subcheck()' used but never defined [enabled by default]
inline bool myevent_alarm_0_subcheck();
^
C:/ProgramData/ENIGMA/Preprocessor_Environment_Editable/IDE_EDIT_objectdeclarations.h:1189:17: warning: inline function 'bool enigma::OBJ_obj_resize::myevent_alarm_0_subcheck()' used but never defined [enabled by default]
inline bool myevent_alarm_0_subcheck();
^
mingw32-make.exe[1]: Leaving directory `D:/ENIGMA/ENIGMA/enigma-dev/ENIGMAsystem/SHELL'
mingw32-make.exe: *** [Game] Error 2
It looks like a lot of those issues stem from the fact that ENIGMA uses C++. For example, the first issue is you have some variable named delete which is an operator and therefore a reserved keyword in C++.