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 )
2024-07-20 10:28:35 +02:00
: CIntObject ( LCLICK ) , timePassed ( 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 ) ;
2024-08-09 17:30:04 +02:00
OBJECT_CONSTRUCTION ;
2023-09-12 11:52:19 +02:00
2024-07-20 10:28:35 +02:00
addUsedEvents ( TIME ) ;
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
}
2024-07-20 10:28:35 +02:00
void CreditsScreen : : tick ( uint32_t msPassed )
2018-01-05 19:21:07 +02:00
{
2024-07-20 10:28:35 +02:00
static const int timeToScrollByOnePx = 20 ;
timePassed + = msPassed ;
int scrollPosition = timePassed / timeToScrollByOnePx - 600 ;
credits - > scrollTextTo ( scrollPosition ) ;
2018-01-05 19:21:07 +02:00
//end of credits, close this screen
2024-07-20 10:28:35 +02:00
if ( credits - > textSize . y < scrollPosition )
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 ) ;
}