2018-01-05 19:21:07 +02:00
/*
* CreditsScreen . cpp , part of VCMI engine
*
* Authors : listed in file AUTHORS in main folder
*
* License : GNU General Public License v2 .0 or later
* Full text of license available in license . txt file , in main folder
*
*/
# include "StdInc.h"
# include "CreditsScreen.h"
2022-09-18 14:47:49 +02:00
# include "CMainMenu.h"
2018-01-05 19:21:07 +02:00
# include "../gui/CGuiHandler.h"
# include "../widgets/TextControls.h"
# include "../widgets/ObjectLists.h"
# include "../../lib/filesystem/Filesystem.h"
2023-09-12 11:52:19 +02:00
# include "../../AUTHORS.h"
2018-04-07 13:42:11 +02:00
CreditsScreen : : CreditsScreen ( Rect rect )
2023-06-11 17:20:10 +02:00
: CIntObject ( LCLICK ) , positionCounter ( 0 )
2018-01-05 19:21:07 +02:00
{
2018-04-07 13:42:11 +02:00
pos . w = rect . w ;
pos . h = rect . h ;
2023-07-03 18:24:12 +02:00
setRedrawParent ( true ) ;
2018-01-05 19:21:07 +02:00
OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE ;
2023-09-12 11:52:19 +02:00
std : : string contributorsText = " " ;
std : : string contributorsTask = " " ;
for ( auto & element : contributors )
{
if ( element [ 0 ] ! = contributorsTask )
contributorsText + = " \r \n { " + element [ 0 ] + " :} \r \n " ;
contributorsText + = ( element [ 2 ] ! = " " ? element [ 2 ] : element [ 1 ] ) + " \r \n " ;
contributorsTask = element [ 0 ] ;
}
2023-08-23 14:07:50 +02:00
auto textFile = CResourceHandler : : get ( ) - > load ( ResourcePath ( " DATA/CREDITS.TXT " ) ) - > readAll ( ) ;
2018-01-05 19:21:07 +02:00
std : : string text ( ( char * ) textFile . first . get ( ) , textFile . second ) ;
size_t firstQuote = text . find ( ' \" ' ) + 1 ;
text = text . substr ( firstQuote , text . find ( ' \" ' , firstQuote ) - firstQuote ) ;
2023-09-12 11:52:19 +02:00
text = " {- VCMI -} \r \n \r \n " + contributorsText + " \r \n \r \n {Website:} \r \n https://vcmi.eu \r \n \r \n \r \n \r \n \r \n {- Heroes of Might and Magic III -} \r \n \r \n " + text ;
2022-11-26 23:12:20 +02:00
credits = std : : make_shared < CMultiLineLabel > ( Rect ( pos . w - 350 , 0 , 350 , 600 ) , FONT_CREDITS , ETextAlignment : : CENTER , Colors : : WHITE , text ) ;
2018-01-05 19:21:07 +02:00
credits - > scrollTextTo ( - 600 ) ; // move all text below the screen
}
2023-06-02 15:42:18 +02:00
void CreditsScreen : : show ( Canvas & to )
2018-01-05 19:21:07 +02:00
{
CIntObject : : show ( to ) ;
positionCounter + + ;
if ( positionCounter % 2 = = 0 )
credits - > scrollTextBy ( 1 ) ;
//end of credits, close this screen
if ( credits - > textSize . y + 600 < positionCounter / 2 )
2023-07-08 13:33:04 +02:00
clickPressed ( GH . getCursorPosition ( ) ) ;
2018-01-05 19:21:07 +02:00
}
2023-07-08 13:33:04 +02:00
void CreditsScreen : : clickPressed ( const Point & cursorPosition )
2018-01-05 19:21:07 +02:00
{
CTabbedInt * menu = dynamic_cast < CTabbedInt * > ( parent ) ;
assert ( menu ) ;
menu - > setActive ( 0 ) ;
}