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:
@@ -4,6 +4,7 @@ library;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_engine.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_renderer.dart';
|
||||
import 'package:wolf_3d_flutter/wolf_3d_flutter.dart';
|
||||
import 'package:wolf_3d_renderer/wolf_3d_ascii_renderer.dart';
|
||||
import 'package:wolf_3d_renderer/wolf_3d_flutter_renderer.dart';
|
||||
@@ -33,6 +34,7 @@ class GameScreen extends StatefulWidget {
|
||||
class _GameScreenState extends State<GameScreen> {
|
||||
late final WolfEngine _engine;
|
||||
_RendererMode _rendererMode = _RendererMode.software;
|
||||
AsciiTheme _asciiTheme = AsciiThemes.blocks;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -104,7 +106,7 @@ class _GameScreenState extends State<GameScreen> {
|
||||
top: 16,
|
||||
right: 16,
|
||||
child: Text(
|
||||
'TAB: ${_modeLabel(_rendererMode)} `: FPS ${_engine.showFpsCounter ? 'On' : 'Off'}',
|
||||
'TAB: ${_modeLabel(_rendererMode)} T: ${_asciiTheme.name} `: FPS ${_engine.showFpsCounter ? 'On' : 'Off'}',
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: 0.5),
|
||||
),
|
||||
@@ -131,6 +133,7 @@ class _GameScreenState extends State<GameScreen> {
|
||||
case _RendererMode.ascii:
|
||||
return WolfAsciiRenderer(
|
||||
engine: _engine,
|
||||
theme: _asciiTheme,
|
||||
onKeyEvent: _handleRendererKeyEvent,
|
||||
);
|
||||
case _RendererMode.glsl:
|
||||
@@ -155,6 +158,13 @@ class _GameScreenState extends State<GameScreen> {
|
||||
if (event.logicalKey == LogicalKeyboardKey.backquote ||
|
||||
event.character == '`') {
|
||||
setState(_toggleFpsCounter);
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.logicalKey == LogicalKeyboardKey.keyT ||
|
||||
event.character == 't' ||
|
||||
event.character == 'T') {
|
||||
setState(_cycleAsciiTheme);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,6 +195,10 @@ class _GameScreenState extends State<GameScreen> {
|
||||
_engine.showFpsCounter = !_engine.showFpsCounter;
|
||||
}
|
||||
|
||||
void _cycleAsciiTheme() {
|
||||
_asciiTheme = AsciiThemes.nextOf(_asciiTheme);
|
||||
}
|
||||
|
||||
String _modeLabel(_RendererMode mode) {
|
||||
switch (mode) {
|
||||
case _RendererMode.software:
|
||||
|
||||
Reference in New Issue
Block a user