Pancake is the basis for all libGDX games developed by eskalon.
Pancake uses the following libraries and frameworks :
- libGDX
- libgdx-screenmanager
- guacamole
- gdx-vfx (in a forked version)
- freetype-skin
- reflections (for
DesktopFieldAnnotationScanner
which is used in for asset loading)
A selection of what Pancake offers:
- AbstractEskalonApplication: the core application; has to be created via
EskalonApplicationStarter
to take advantage of its features. Dependency injection is used to provide various useful objects, for instance a sprite batch, an asset manager, a sound manager, an event bus, a post processing pipeline etc. - AnnotationAssetManager
@Asset("cool_texture.jpg")
,@Asset(value = "ui/skin/skin.json", params = "ui/skin/skin.atlas")
#loadAnnotatedAssets(Class<T> clazz)
#injectAssets(Class<T> clazz, @Nullable T instance)
; superseded byIInjector#injectMembers(Object)
#registerAssetLoaderParametersFactory(Class<T> clazz, AssetLoaderParametersFactory<T> factory)
- DefaultSoundManager & Playlist
#playSoundEffect(String name)
#playMusic(String playlistName)
- Playlist files (loaded via
PlaylistDefinitionLoader
):
{
name: "best_playlist_ever",
shuffle: true,
repeat: true,
music: [
[
"My favourite song",
"my_favourite_song.mp3"
],
]
}
- EskalonInjector: a simple dependency injection system; the most common classes are registered by
EskalonApplicationStarter
andAbstractEskalonApplication
- EventBus: a simple event bus system
- PostProcessingPipeline: A simple post processing pipeline based on gdx-vfx
- DefaultInputHandler; provides mappable key bindings which can be handled via
IInputListener
- Lang, ILocalizable & ILocalized
Lang#get(String key, Object... args)
- DebugInfoRenderer: renders some debug information, including a neat FPS graph
- AbstractAssetLoadingScreen: a screen loading all assets annotated with
@Asset
in a specified package - AbstractEskalonUIScreen: a screen rendering a background image & a stage
- AbstractImageScreen: a simple screen rendering one image
- EskalonSplashScreen: a splash screen showing the eskalon logo as well as loading some internal assets
- EskalonSettings: handles settings via simple property objects
- RandomUtils: contains various methods dealing with random values
- GL32CMacIssueHandler: provides updated versions of the default shaders that are compatible with OpenGL 3.2
- Audio implementations that support spatial audio
- A field annotation scanner utilising reflections
- A deferred renderer [WIP]
A list of all of our current contributors and the used external assets can be found in CONTRIBUTORS.md.