Match failure.

Match failure.

Match failure.

Match failure.

Match failure.

Match failure.

Remove Obsolete Proto2ES

Reporter: RobertBColton  |  Status: closed  |  Last Modified: February 12, 2019, 10:28:39 PM

Well, this is it, the dawn of a new ENIGMA and the final stage of the transition to Google Protocol Buffers. When Josh created the GameData structure (basically converts EnigmaStruct into a proto) in #1448, he made Proto2ES obsolete and no longer necessary. This pull request completes the transition by finally adding a new method to the compileEGMf DLL that accepts a protocol buffer and deleting Proto2ES from emake's sources. With this change, emake, RGM, and any new frontend tools should reach peak compiling performance as they are passing a proto directly to the compiler with no intermediate translation to other formats. Other tools, like LGM, will continue to use the outdated EnigmaStruct, subject to binary compatibility-breaking changes, for the foreseeable future until someone decides to migrate such tools to protos too.

Summary of Changes

  • Changed the EnigmaPlugin::BuildGame overload that accepts a proto game to no longer call Proto2ES and instead call the newly loaded plugin_CompileProto function. It's worth mentioning that, for some reason, we had this set up to take Game instead of Project so I didn't have a need to change the signature yet. I also wasn't sure the distinction fundies was making between Game and Project when he made the latter contain the former. For now, I just made a temporary Project and set the passed Game on it.
  • Deleted the Proto2ES header and source file from emake's sources.
  • Changed the CompilerSource makefile to link to zlib and lodepng since it now needs both in order to compile a proto game.
  • Changed the GameData structure to define all of the proto-based copy constructors and flatten the tree. Some resources had specific requirements, such as objects and timelines which needed their drag and drop actions converted to code. The actions to code conversion will probably later be moved into libEGM because RGM is not going to support the old drag and drop actions format. Sounds, Sprites, and Backgrounds also needed the code from Proto2ES in order to load their binary data in for the compiler.
  • Changed CompilerSource/compiler/compile.cpp to export a new compileProto DLL function for frontend tools that would like to use ENIGMA's new Protocol Buffers interface. The Protocol Buffers interface, as should be obvious, has several advantages including the ability to serialize and communicate the buffers to a remote client or to make changes without breaking binary compatibility.
  • Changed the object parsing and linking logic to deal with events that have a subname instead of a subid (collision events in GMX have the other object as a string). From the comments, it appears that Josh was confused and thought that name was the composite name of the main id and subid, when in reality it's just the name of the "other" object for collision events at the moment. Later I'd like to see this changed around to support what I call "templated" events where you could hypothetically have an event for any kind of resource (perhaps an event for when a selected sprite loads). Regardless, this specifically addresses being able to build AI Tutorial project from emake.
  • Addressed the "<undefined>" resource name edge case in the GMX reader using the new resource reference option provided by #1547 to know which string fields to compare.
  • Tweaked the top-level makefile to have liblodepng as a dependency of the default target (which is the compiler). This has to be done because GameData, which is part of the compiler backend, now requires lodepng in order to load the binary data for Sprites and Backgrounds.
  • Changed the emake makefile to no longer link to zlib and lodepng since it no longer has a direct dependency on them. Also removed the dependency in the main makefile too.
  • <
codecov[bot]  
>Codecov Report

Merging #1533 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #1533   +/-   ##
=======================================
  Coverage   17.56%   17.56%           
=======================================
  Files         165      165           
  Lines       17129    17129           
=======================================
  Hits         3008     3008           
  Misses      14121    14121

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ce15a46...b9f521e. Read the comment docs.

EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

9d8396c Master Diff
Image Diff Image Diff Screen Save

RobertBColton  

@JoshDreamland alright, I've regression tested the hell out of this. emake and LGM are both working just as good as master. Please take the time to review this when you can, thanks!
EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

be4b937 Master Diff
Image Diff Image Diff Screen Save

RobertBColton  

This bot is completely bonkers right now, just ignore everything it says.
EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

3c7c587 Master Diff
Image Diff Image Diff Screen Save

EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

8f1b707 Master Diff
Image Diff Image Diff Screen Save

RobertBColton  

I still don't know what's wrong with the bot, there is literally no difference in those images.
EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

c900259 Master Diff
Image Diff Image Diff Screen Save

EnigmaBot  

UNMATCHED: Regression tests have indicated that graphical changes have been introduced. Carefully review the following image comparison for anomalies and adjust the changeset accordingly.

ebba3b0 Master Diff
Image Diff Image Diff Screen Save

Please sign in to post comments, or you can view this issue on GitHub.