Now supports animation delays, canceling, and forcibly finishing animations.
See GuiComponent::cancelAnimation(), finishAnimation(), and new parameters for setAnimation().
Like stopAnimation, but does not call finishedCallback.
All animations are now canceled when a GuiComponent is deleted (fixes a crash when closing ES while the "launch game" animation is playing).
TextListComponent::isScrolling() now only returns true if the key has been
held down long enough for scrolling to really start.
Fixed opacity for RatingComponent and DateTimeComponent.
Exposed some more of AnimationController.
Added LambdaAnimation (which lets you use a lambda for the apply method).
Useful for simple one-off animations.
Added animation slots - only one animation can play per slot. This way
you can have two animations run at the same time.
Moved Opacity logic from ImageComponent to GuiComponent so any extender
of GuiComponent che implement its opacity logic.
Implemented Opacity logic for TextComponent (now text can have fade
animation)
Folders should now be sorted alphabetically.
Will now fall back to a system font if LinLibertine.ttf is not found.
Added a Menu button.
Began working on a simple menu.
Scrolling will now occur if the input is held (not just keyboards anymore!).
Initial XML gamelist support. If a file named gamelist.xml is present in the directory ES is run from, it will be parsed and the detailed GuiGameList will be used. Games are matched by absolute path, and a name, description, and image path can be read.
PugiXML is used for parsing XML files - its license can be found in src/pugiXML/pugiXML_license.txt.
SDL_image is used for loading screenshots with the detailed GuiGameList.
Almost all invalid bash characters should be escaped in ROM paths now - including !$^&*()[]<>?;'"\.