feat: Add Spear of Destiny demo support with dedicated asset registry and entity definitions
- Introduced SpearDemoAssetRegistry for managing assets specific to the Spear of Destiny demo. - Created SpearDemoEntityModule to define enemy animations with adjusted sprite ranges. - Implemented SpearDemoHudModule and SpearDemoMenuPicModule for HUD and menu assets. - Added SpearDemoSfxModule for sound effect mappings specific to the demo version. - Updated enemy classes (Guard, Mutant, Officer, SS) to support custom animation sets. - Modified entity registry to accept a custom AssetRegistry for spawning entities. - Enhanced rendering with CRT phosphor bloom effect in GLSL shaders. - Adjusted ASCII and software renderer layouts for improved UI spacing. - Added tests for SpearDemoAssetRegistry to ensure correct asset resolution and enemy spawning. Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -14,6 +14,9 @@ class WolfGlslRenderer extends BaseWolfRenderer {
|
||||
/// Whether CRT-like post effects are enabled in the shader pass.
|
||||
final bool effectsEnabled;
|
||||
|
||||
/// Whether CRT phosphor bloom is enabled in the shader pass.
|
||||
final bool bloomEnabled;
|
||||
|
||||
/// Callback when shader loading fails and software fallback should be used.
|
||||
final VoidCallback? onUnavailable;
|
||||
|
||||
@@ -21,6 +24,7 @@ class WolfGlslRenderer extends BaseWolfRenderer {
|
||||
const WolfGlslRenderer({
|
||||
required super.engine,
|
||||
this.effectsEnabled = false,
|
||||
this.bloomEnabled = false,
|
||||
super.onKeyEvent,
|
||||
this.onUnavailable,
|
||||
super.key,
|
||||
@@ -116,6 +120,7 @@ class _WolfGlslRendererState extends BaseWolfRendererState<WolfGlslRenderer> {
|
||||
frame: _renderedFrame!,
|
||||
shader: _shader!,
|
||||
effectsEnabled: widget.effectsEnabled,
|
||||
bloomEnabled: widget.bloomEnabled,
|
||||
elapsedSeconds: widget.engine.timeAliveMs / 1000.0,
|
||||
),
|
||||
child: const SizedBox.expand(),
|
||||
@@ -153,12 +158,14 @@ class _GlslFramePainter extends CustomPainter {
|
||||
final ui.Image frame;
|
||||
final ui.FragmentShader shader;
|
||||
final bool effectsEnabled;
|
||||
final bool bloomEnabled;
|
||||
final double elapsedSeconds;
|
||||
|
||||
_GlslFramePainter({
|
||||
required this.frame,
|
||||
required this.shader,
|
||||
required this.effectsEnabled,
|
||||
required this.bloomEnabled,
|
||||
required this.elapsedSeconds,
|
||||
});
|
||||
|
||||
@@ -173,6 +180,7 @@ class _GlslFramePainter extends CustomPainter {
|
||||
..setFloat(3, texelY)
|
||||
..setFloat(4, effectsEnabled ? 1.0 : 0.0)
|
||||
..setFloat(5, elapsedSeconds)
|
||||
..setFloat(6, bloomEnabled ? 1.0 : 0.0)
|
||||
..setImageSampler(0, frame);
|
||||
|
||||
final Paint paint = Paint()
|
||||
@@ -187,6 +195,7 @@ class _GlslFramePainter extends CustomPainter {
|
||||
return oldDelegate.frame != frame ||
|
||||
oldDelegate.shader != shader ||
|
||||
oldDelegate.effectsEnabled != effectsEnabled ||
|
||||
oldDelegate.bloomEnabled != bloomEnabled ||
|
||||
oldDelegate.elapsedSeconds != elapsedSeconds;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user