@@ -31,63 +31,52 @@ Model::Model() {
3131
3232Model::~Model () {}
3333
34+ bool Model::setDirectory (const QString& level, const QString& game) {
35+ bool status = false ;
36+ if (fileManager.setUpCamp (level, game) &&
37+ downloader.setUpCamp (level) &&
38+ data.initializeDatabase (level)) {
39+ status = true ;
40+ }
41+ return status;
42+ }
43+
3444void Model::setup (const QString& level, const QString& game) {
3545 if (setDirectory (level, game) == true ) {
36- QByteArray commonFiles ( 8 , ' \0 ' ) ;
46+ QList< int > commonFiles;
3747 checkCommonFiles (&commonFiles);
38- m_availableGames.clear ();
39- for (int i = 1 ; i <= 5 ; i++) {
40- qint8 dirStatus = commonFiles[i];
41- if (dirStatus == 1 ) {
42- if (fileManager.checkDir (
43- QString (" /Original.TR%1" ).arg (i), false ) == true ) {
44- m_availableGames.append (i);
45- }
48+ // Iterate backward to avoid index shifting
49+ for (int i = 4 ; i >= 0 ; i--) {
50+ int dirStatus = commonFiles[i];
51+ if (fileManager.checkDir (
52+ QString (" /Original.TR%1" ).arg (i + 1 ), false ) == true ) {
53+ commonFiles[i] = i + 1 ;
4654 } else if (dirStatus == 2 ) {
47- m_availableGames.append (-i);
48- // check if there is one of
49- // TOMBRAID/tomb.exe
50- // Tomb2.exe
51- // tomb3.exe
52- // tomb4.exe
53- // PCTomb5.exe
55+ commonFiles[i] = -(i + 1 );
5456 } else {
55- if (fileManager.checkDir (
56- QString (" /Original.TR%1" ).arg (i), false ) == true ) {
57- m_availableGames.append (i);
58- }
57+ commonFiles.removeAt (i);
5958 }
6059 }
61- emit generateListSignal (m_availableGames );
60+ emit generateListSignal (commonFiles );
6261 QCoreApplication::processEvents ();
6362 } else {
6463 // send signal to gui with error about setup fail
6564 qDebug () << " setDirectory setup failed" ;
6665 }
6766}
6867
69- bool Model::setDirectory (const QString& level, const QString& game) {
70- bool status = false ;
71- if (fileManager.setUpCamp (level, game) &&
72- downloader.setUpCamp (level) &&
73- data.initializeDatabase (level)) {
74- status = true ;
75- }
76- return status;
77- }
78-
79- void Model::checkCommonFiles (QByteArray* games) {
68+ void Model::checkCommonFiles (QList<int >* games) {
8069 for (int i = 1 ; i <= 5 ; i++) {
8170 int dirStatus = checkGameDirectory (i);
8271 if (dirStatus == 1 ) { // symbolic link
83- m_availableGames. append (1 );
72+ games-> append (1 );
8473 } else if (dirStatus == 2 ) { // directory
85- m_availableGames. append (2 );
74+ games-> append (2 );
8675 } else if (dirStatus == 3 ) {
87- m_availableGames. append (3 );
76+ games-> append (3 );
8877 qDebug () << " File could be a broken link or a regular file" ;
8978 } else {
90- m_availableGames. append (0 );
79+ games-> append (0 );
9180 qDebug () << " File don't exist" ;
9281 }
9382 }
@@ -178,7 +167,7 @@ void Model::setupGame(int id) {
178167 assert (s != (unsigned int )0 );
179168
180169 const QString levelPath = QString (" /Original.TR%1/" ).arg (id);
181- const QString gamePath = QString (" %1/" ).arg (getGameDirectory (id));
170+ const QString gamePath = QString (" / %1/" ).arg (getGameDirectory (id));
182171
183172 for (size_t i = 0 ; i < s; i++) {
184173 const QString levelFile = QString (" %1%2" ).arg (levelPath, list[i].path );
0 commit comments