@@ -376,5 +376,40 @@ class ViewLocation
376376 }
377377};
378378
379+ // TheSuperHackers @feature bobtista 31/01/2026
380+ // View that does nothing. Used for Headless Mode.
381+ class ViewDummy : public View
382+ {
383+ public:
384+ virtual Drawable *pickDrawable ( const ICoord2D *screen, Bool forceAttack, PickType pickType ) override
385+ {
386+ return nullptr ;
387+ }
388+ virtual Int iterateDrawablesInRegion ( IRegion2D *screenRegion, Bool (*callback)( Drawable *draw, void *userData ), void *userData ) override
389+ {
390+ return 0 ;
391+ }
392+ virtual void forceRedraw () override {}
393+ virtual const Coord3D& get3DCameraPosition () const override
394+ {
395+ static Coord3D zero = {0 ,0 ,0 };
396+ return zero;
397+ }
398+ virtual WorldToScreenReturn worldToScreenTriReturn (const Coord3D *w, ICoord2D *s ) override
399+ {
400+ return WTS_INVALID;
401+ }
402+ virtual void screenToTerrain ( const ICoord2D *screen, Coord3D *world ) override {}
403+ virtual void screenToWorldAtZ ( const ICoord2D *s, Coord3D *w, Real z ) override {}
404+ virtual void drawView ( void ) override {}
405+ virtual void updateView (void ) override {}
406+ virtual void stepView () override {}
407+ virtual void setGuardBandBias ( const Coord2D *gb ) override {}
408+ virtual Bool isDoingScriptedCamera () override { return false ; }
409+ virtual void stopDoingScriptedCamera () override {}
410+
411+ // Do not override View::xfer(). The base implementation must run to serialize valid view state for save file compatibility.
412+ };
413+
379414// EXTERNALS //////////////////////////////////////////////////////////////////////////////////////
380415extern View *TheTacticalView; // /< the main tactical interface to the game world
0 commit comments