Refactor menu rendering and asset registry structure
- Updated SoftwareRenderer to incorporate MenuHeaderBand for handling spear variant menus and improved backdrop drawing. - Refactored asset registry imports to organize menu-related assets under a dedicated menu structure. - Enhanced game session snapshot tests to validate menu theme restoration for spear variant games. - Added tests for classic menu presentation module to ensure palette consistency with canonical constants. - Implemented tests for spear asset registry to verify correct menu VGA index resolutions. - Created unit tests for MenuHeaderBand to validate functionality in rendering menu headers and sidebars. - Adjusted HUD module imports to align with new menu structure. Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/wolf/classic_menu_presentation_module.dart';
|
||||
|
||||
void main() {
|
||||
test('classic menu palette matches canonical WL_MENU.H constants', () {
|
||||
const module = ClassicMenuPresentationModule();
|
||||
|
||||
expect(module.backgroundIndex, 0x2D); // BKGDCOLOR
|
||||
expect(module.panelIndex, 0x23); // BORD2COLOR
|
||||
expect(module.borderIndex, 0x29); // BORDCOLOR
|
||||
expect(module.disabledTextIndex, 0x2B); // DEACTIVE
|
||||
|
||||
expect(module.unselectedTextIndex, 0x17); // TEXTCOLOR
|
||||
expect(module.selectedTextIndex, 0x13); // HIGHLIGHT
|
||||
expect(module.headerTextIndex, 0x47); // READHCOLOR
|
||||
});
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/shareware_hud_module.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/wolf/shareware_hud_module.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
|
||||
|
||||
void main() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/shareware_menu_module.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/wolf/shareware_menu_module.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
|
||||
|
||||
void main() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/spear_menu_presentation_module.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/spear/spear_menu_presentation_module.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_entities.dart';
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/spear/spear_asset_registry.dart';
|
||||
import 'package:wolf_3d_dart/src/registry/built_in/menu/spear/spear_menu_presentation_module.dart';
|
||||
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
|
||||
|
||||
void main() {
|
||||
group('SpearAssetRegistry', () {
|
||||
test('resolves full SOD menu VGA indices', () {
|
||||
final SpearAssetRegistry registry = SpearAssetRegistry();
|
||||
|
||||
expect(registry.menu.resolve(MenuPicKey.title)?.pictureIndex, 76);
|
||||
expect(registry.menu.resolve(MenuPicKey.pg13)?.pictureIndex, 88);
|
||||
expect(registry.menu.resolve(MenuPicKey.credits)?.pictureIndex, 89);
|
||||
expect(
|
||||
registry.menu.resolve(MenuPicKey.controlBackground)?.pictureIndex,
|
||||
12,
|
||||
);
|
||||
expect(registry.menu.resolve(MenuPicKey.optionsLabel)?.pictureIndex, 13);
|
||||
expect(registry.menuPresentation, isA<SpearMenuPresentationModule>());
|
||||
});
|
||||
});
|
||||
|
||||
group('BuiltInAssetRegistryResolver full SOD selection', () {
|
||||
test('uses full Spear registry for game-version fallback', () {
|
||||
const BuiltInAssetRegistryResolver resolver =
|
||||
BuiltInAssetRegistryResolver();
|
||||
|
||||
final AssetRegistry registry = resolver.resolve(
|
||||
const RegistrySelectionContext(
|
||||
gameVersion: GameVersion.spearOfDestiny,
|
||||
dataVersion: DataVersion.unknown,
|
||||
),
|
||||
);
|
||||
|
||||
expect(registry, isA<SpearAssetRegistry>());
|
||||
expect(registry.menu.resolve(MenuPicKey.title)?.pictureIndex, 76);
|
||||
expect(registry.menu.resolve(MenuPicKey.pg13)?.pictureIndex, 88);
|
||||
expect(registry.menu.resolve(MenuPicKey.credits)?.pictureIndex, 89);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user