fertig-classic-games/tools
Brian Fertig a5b37038d2 Add object props (solid obstacles) to Wolfenstein E1M1
Introduces a new "Object" entity type that blocks movement but not sight/bullets, distinct from walls and pickups:

- **Data**: New `objects` array in level JSON (`{x, y, frame}`), with `data/wolfenstein-objects.json` as the frame registry (Tall Bush, Gold Eagle)
- **Artwork**: New `objects.png` spritesheet registered in `wolfenstein-artwork.json`; placeholder texture via `paintObject()` in WolfensteinArt.js
- **Logic**: Objects stored in `state.objects`, with a derived `map.objectBlocked` Set checked only by movement collision (`isWallCell`) — raycaster/sight/bullets never read it, so objects are see-through and shoot-through by construction
- **View**: Rendered as billboard sprites in `_drawSprites` with ground-anchored positioning (bottom edge on floor) and asymptotic depth sorting that stays below the weapon viewmodel
- **Editor**: New "Object" tool category with dynamic dropdown; click open floor to place/remove (toggle), click wall is a no-op; teal square indicator on board
- **Validation**: `validateLevel` checks objects sit on open floor; save/load round-trips with graceful degradation for pre-existing saves
- **Tests**: Verifies object blocks player movement but bullets pass through
2026-08-22 12:29:55 -06:00
..
data
…
lib
…
bloxorzMap.js
…
buildCommonWords.js
…
fetchStarControlAssets.js
…
genBloxorz.js
…
genDotLink.js
…
genExcitebikeTracks.js
…
genGooTower.js
…
genJumble.js
…
genKatamino.js
…
genMiniCrossword.js
…
genPeggleLevels.js
…
genPuddingMonsters.js
…
genRushHour.js
…
genSpireClimbCreatures.js
…
genSuperKartTracks.js
…
genTACampaign.js TAL: smooth obstacle collision push + in-place building upgrades (upgradesFrom) 2026-08-16 18:59:30 -06:00
genTetrisAttackPuzzles.js
…
genWolfenstein.js feat(wolfenstein): add enemy vision cone, patrol loop behavior, and weapon sprites 2026-08-21 20:23:02 -06:00
genZuma.js
…
readExcitebikeMaps.js
…
verifyAdvanceWars.js
…
verifyBalatro.js
…
verifyBejeweled.js
…
verifyBlockFighter.js
…
verifyBloxorz.js
…
verifyBookwork.js
…
verifyCanasta.js
…
verifyCivilization.js
…
verifyColoradoDefense.js
…
verifyCribbage.js
…
verifyDotLink.js
…
verifyDungeonBoss.js
…
verifyExcitebike.js
…
verifyGinRummy.js
…
verifyGooTower.js
…
verifyJewelQuest.js
…
verifyJumble.js
…
verifyMahjong.js
…
verifyMahjongMatch.js
…
verifyMasterOfVega.js feat(mastervega): add morale bonus system and espionage restraint diplomacy 2026-08-16 08:12:16 -06:00
verifyMiniMotorways.js
…
verifyPaiGowPoker.js
…
verifyPeggle.js
…
verifyPuddingMonsters.js
…
verifyRisk.js
…
verifyRummikub.js
…
verifyRushHour.js
…
verifySWDBG.js
…
verifySlots.js
…
verifySpireClimb.js
…
verifyStarControl.js
…
verifySuperKart.js
…
verifyTempest.js
…
verifyTetrisAttack.js
…
verifyTotalAnnihilation.js TA AI Updates 2026-08-17 21:15:32 -06:00
verifyWolfenstein.js Add object props (solid obstacles) to Wolfenstein E1M1 2026-08-22 12:29:55 -06:00
verifyZuma.js
…
wolfensteinMap.js feat(wolfenstein): add enemy vision cone, patrol loop behavior, and weapon sprites 2026-08-21 20:23:02 -06:00