/* ** Command & Conquer Renegade(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ /*********************************************************************************************** *** Confidential - Westwood Studios *** *********************************************************************************************** * * * Project Name : Commando * * * * $Archive:: /Commando/Code/Commando/textdisplay.h $* * * * $Author:: Jani_p $* * * * $Modtime:: 9/27/01 9:41a $* * * * $Revision:: 29 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #ifndef TEXTDISPLAY_H #define TEXTDISPLAY_H #ifndef ALWAYS_H #include "always.h" #endif #ifndef GAMEMODE_H #include "gamemode.h" #endif #ifndef SLIST_H #include "slist.h" #endif #ifndef WWSTRING_H #include "wwstring.h" #endif #ifndef DEBUG_H #include "debug.h" #endif #ifndef VECTOR2_H #include "vector2.h" #endif #ifndef VECTOR4_H #include "vector4.h" #endif class Font3DInstanceClass; class Render2DTextClass; /* ** */ class TextDebugDisplayHandlerClass : public DebugDisplayHandlerClass { public: virtual void Display_Text( const char * string, const Vector4 & color = Vector4( 1,1,1,1 ) ); virtual void Display_Text( const WideStringClass & string, const Vector4 & color = Vector4( 1,1,1,1 ) ); }; /* ** TextDisplayLine */ class TextDisplayLine { public: TextDisplayLine( const WideStringClass & text, unsigned long color ); float Update_Time( float seconds ) { Time += seconds; return Time; } int Get_Line_Count( void ) { return LineCount; } WideStringClass Text; unsigned long Color; float Time; int LineCount; }; /* ** TextDisplayGameMode - Game (Sub) Mode to display text */ #define Get_Text_Display() TextDisplayGameModeClass::Get_Instance() class TextDisplayGameModeClass : public GameModeClass { public: virtual const char *Name() { return "TextDisplay"; } // the name of this mode virtual void Init(); // called when the mode is activated virtual void Shutdown(); // called when the mode is deactivated virtual void Think(); // called each time through the main loop virtual void Render(); // called each time through the main loop static TextDisplayGameModeClass * Get_Instance() { return Instance; } void Flush( void ); /* ** Scrolling Lines */ void Set_Max_Scroll_Lines( int count ) { MaxScrollLines = count; } int Get_Max_Scroll_Lines( void ) { return MaxScrollLines; } void Set_Scroll_Lines_Persist_Time( float time ) { ScrollLinesPersistTime = time; } float Get_Scroll_Lines_Persist_Time( void ) { return ScrollLinesPersistTime; } void Print( const char * text, const Vector4 & color = Vector4( 1,1,1,1 ) ); void Print( const WideStringClass & text, const Vector4 & color = Vector4( 1,1,1,1 ) ); void Print( const char * text, const Vector3 & color = Vector3( 1,1,1 ) ); void Print( const WideStringClass & text, const Vector3 & color = Vector3( 1,1,1 ) ); void Print_System( const char * text, ... ); void Print_System( const WideStringClass & string ); void Print_Informational( const char * text, ... ); void Print_Informational( const WideStringClass & string ); void Set_Input_Text( const char * text ) { TextChanged|=InputText!=text; InputText = text; } void Set_Help_Text( const char * text ) { TextChanged|=HelpText!=text; HelpText = text; } void Set_Verbose_Help_Text( const char * text ) { VerboseTextChanged|=VerboseHelpText!=text; VerboseHelpText = text; } void Display_Vis_Warning( bool on ) { DisplayVisWarning = on; } private: Font3DInstanceClass * Font; Font3DInstanceClass * MonoFont; Render2DTextClass * Display; Render2DTextClass * VerboseDisplay; Render2DTextClass * StatisticsDisplay; DynamicVectorClass RendererLines; DynamicVectorClass RendererColors; float DisplayY; SList ScrollLines; StringClass InputText; StringClass HelpText; StringClass VerboseHelpText; bool TextChanged; bool VerboseTextChanged; bool DisplayVisWarning; int MaxScrollLines; float ScrollLinesPersistTime; float VerticalScroll; static TextDisplayGameModeClass * Instance; /* */ int Count_Scroll_Lines( void ); void Load_Registry_Keys(void); void Save_Registry_Keys(void); }; /* ** Statistics Display */ class StatisticsDisplayManager { public: static void Render( Render2DTextClass * renderer ); static void Set_Display( const char * title ); static bool Is_Current_Display( const char* title); // Returns true if "title" is currently active static void Set_Stat( const char * title, const char * text, unsigned long color = 0xffffffff, const Vector2& location = Vector2( 0, -240 ) ); }; #endif