feat: Implement ASCII theme cycling and add quadrant theme support
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -7,9 +7,12 @@ import 'package:wolf_3d_renderer/base_renderer.dart';
|
||||
|
||||
/// Displays the game using a text-mode approximation of the original renderer.
|
||||
class WolfAsciiRenderer extends BaseWolfRenderer {
|
||||
final AsciiTheme theme;
|
||||
|
||||
/// Creates an ASCII renderer bound to [engine].
|
||||
const WolfAsciiRenderer({
|
||||
required super.engine,
|
||||
this.theme = AsciiThemes.blocks,
|
||||
super.onKeyEvent,
|
||||
super.key,
|
||||
});
|
||||
@@ -30,6 +33,7 @@ class _WolfAsciiRendererState extends BaseWolfRendererState<WolfAsciiRenderer> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_asciiRenderer.activeTheme = widget.theme;
|
||||
// ASCII output uses a reduced logical framebuffer because glyph rendering
|
||||
// expands the final view significantly once laid out in Flutter text.
|
||||
if (widget.engine.frameBuffer.width != _renderWidth ||
|
||||
@@ -38,6 +42,14 @@ class _WolfAsciiRendererState extends BaseWolfRendererState<WolfAsciiRenderer> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant WolfAsciiRenderer oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.theme != widget.theme) {
|
||||
_asciiRenderer.activeTheme = widget.theme;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Color get scaffoldColor => widget.engine.difficulty == null
|
||||
? _colorFromRgb(widget.engine.menuBackgroundRgb)
|
||||
|
||||
Reference in New Issue
Block a user