Added ability to switch ascii themes by pressing tab

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-17 23:12:35 +01:00
parent 1b75a41cd1
commit f9e4f08363
2 changed files with 21 additions and 4 deletions

View File

@@ -5,10 +5,12 @@ import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
import 'package:wolf_3d_dart/wolf_3d_engine.dart';
class AsciiTheme {
final String name;
/// The character ramp, ordered from most dense (index 0) to least dense (last index).
final String ramp;
const AsciiTheme(this.ramp);
const AsciiTheme(this.name, this.ramp);
/// Always returns the densest character (e.g., for walls, UI, floors)
String get solid => ramp[0];
@@ -27,9 +29,18 @@ class AsciiTheme {
/// A collection of pre-defined character sets
abstract class AsciiThemes {
static const AsciiTheme blocks = AsciiTheme("█▓▒░ ");
static const AsciiTheme classic = AsciiTheme("@%#*+=-:. ");
static const AsciiTheme dense = AsciiTheme("█▇▆▅▄▃▂ ");
static const AsciiTheme blocks = AsciiTheme('Blocks', "█▓▒░ ");
static const AsciiTheme classic = AsciiTheme('Classic', "@%#*+=-:. ");
static const List<AsciiTheme> values = [blocks, classic];
static AsciiTheme nextOf(AsciiTheme current) {
final int currentIndex = values.indexOf(current);
final int nextIndex = currentIndex == -1
? 0
: (currentIndex + 1) % values.length;
return values[nextIndex];
}
}
class ColoredChar {