git repos / blockattack-game

blame: source/code/listFiles.cpp

normal view · raw

89c4a3a6 sago007 2008-08-29 14:32 1
/*
c53e6443 sago007 2012-04-17 11:04 2
===========================================================================
c53e6443 sago007 2012-04-17 11:04 3
blockattack - Block Attack - Rise of the Blocks
c53e6443 sago007 2012-04-17 11:04 4
Copyright (C) 2005-2012 Poul Sander
c53e6443 sago007 2012-04-17 11:04 5
c53e6443 sago007 2012-04-17 11:04 6
This program is free software: you can redistribute it and/or modify
c53e6443 sago007 2012-04-17 11:04 7
it under the terms of the GNU General Public License as published by
c53e6443 sago007 2012-04-17 11:04 8
the Free Software Foundation, either version 2 of the License, or
c53e6443 sago007 2012-04-17 11:04 9
(at your option) any later version.
c53e6443 sago007 2012-04-17 11:04 10
c53e6443 sago007 2012-04-17 11:04 11
This program is distributed in the hope that it will be useful,
c53e6443 sago007 2012-04-17 11:04 12
but WITHOUT ANY WARRANTY; without even the implied warranty of
c53e6443 sago007 2012-04-17 11:04 13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c53e6443 sago007 2012-04-17 11:04 14
GNU General Public License for more details.
c53e6443 sago007 2012-04-17 11:04 15
c53e6443 sago007 2012-04-17 11:04 16
You should have received a copy of the GNU General Public License
c53e6443 sago007 2012-04-17 11:04 17
along with this program.  If not, see http://www.gnu.org/licenses/
c53e6443 sago007 2012-04-17 11:04 18
c53e6443 sago007 2012-04-17 11:04 19
Source information and contacts persons can be found at
c53e6443 sago007 2012-04-17 11:04 20
http://blockattack.sf.net
c53e6443 sago007 2012-04-17 11:04 21
===========================================================================
89c4a3a6 sago007 2008-08-29 14:32 22
*/
89c4a3a6 sago007 2008-08-29 14:32 23
89c4a3a6 sago007 2008-08-29 14:32 24
/*
89c4a3a6 sago007 2008-08-29 14:32 25
listFiles.cpp
89c4a3a6 sago007 2008-08-29 14:32 26
*/
89c4a3a6 sago007 2008-08-29 14:32 27
89c4a3a6 sago007 2008-08-29 14:32 28
#include "listFiles.h"
89c4a3a6 sago007 2008-08-29 14:32 29
90e6c797 sago007 2015-11-22 21:46 30
using namespace std;
89c4a3a6 sago007 2008-08-29 14:32 31
89c4a3a6 sago007 2008-08-29 14:32 32
ecef5838 sago007 2015-11-24 20:01 33
void ListFiles::setDirectory(const string& directory) {
acd79baf sago007 2015-11-22 19:37 34
	for (int i=0; i<MAX_NR_OF_FILES; i++) {
c53e6443 sago007 2012-04-17 11:04 35
		filenames[i]="";
acd79baf sago007 2015-11-22 19:37 36
	}
89c4a3a6 sago007 2008-08-29 14:32 37
#if defined(_WIN32)
c53e6443 sago007 2012-04-17 11:04 38
	DWORD dwError;
af35c39d sago007 2013-11-16 16:37 39
	string directory2 = directory+"/*";
af35c39d sago007 2013-11-16 16:37 40
	hFind = FindFirstFile(directory2.c_str(), &FindFileData);
ecef5838 sago007 2015-11-24 20:01 41
	if (hFind == INVALID_HANDLE_VALUE) {
c53e6443 sago007 2012-04-17 11:04 42
		cout << "Invalid file handle. Error is " << GetLastError() << endl;
c53e6443 sago007 2012-04-17 11:04 43
	}
ecef5838 sago007 2015-11-24 20:01 44
	else {
c53e6443 sago007 2012-04-17 11:04 45
		nrOfFiles=0;
c53e6443 sago007 2012-04-17 11:04 46
		filenames[nrOfFiles] = FindFileData.cFileName;
c53e6443 sago007 2012-04-17 11:04 47
		cout << "File: " << FindFileData.cFileName << endl;
ecef5838 sago007 2015-11-24 20:01 48
		while ((FindNextFile(hFind, &FindFileData) != 0) && FindFileData.cFileName[0]!='.' && (nrOfFiles<MAX_NR_OF_FILES-1)) {
c53e6443 sago007 2012-04-17 11:04 49
			nrOfFiles++;
c53e6443 sago007 2012-04-17 11:04 50
			filenames[nrOfFiles] = FindFileData.cFileName;
c53e6443 sago007 2012-04-17 11:04 51
			cout << "File: " << FindFileData.cFileName << endl;
c53e6443 sago007 2012-04-17 11:04 52
		}
c53e6443 sago007 2012-04-17 11:04 53
c53e6443 sago007 2012-04-17 11:04 54
		dwError = GetLastError();
c53e6443 sago007 2012-04-17 11:04 55
		FindClose(hFind);
ecef5838 sago007 2015-11-24 20:01 56
		if (dwError != ERROR_NO_MORE_FILES) {
c53e6443 sago007 2012-04-17 11:04 57
			cout << "FindNextFile error. Error is " << dwError << endl;
c53e6443 sago007 2012-04-17 11:04 58
		}
c53e6443 sago007 2012-04-17 11:04 59
	}
89c4a3a6 sago007 2008-08-29 14:32 60
#elif defined(__unix__)
ecef5838 sago007 2015-11-24 20:01 61
	DIR* DirectoryPointer;
ecef5838 sago007 2015-11-24 20:01 62
	struct dirent* dp;
c53e6443 sago007 2012-04-17 11:04 63
	nrOfFiles=0;
c53e6443 sago007 2012-04-17 11:04 64
	//cout << "Will look in: " << directory << endl;
c53e6443 sago007 2012-04-17 11:04 65
	DirectoryPointer = opendir(directory.c_str());
ecef5838 sago007 2015-11-24 20:01 66
	if (!DirectoryPointer) {
c53e6443 sago007 2012-04-17 11:04 67
		return;
acd79baf sago007 2015-11-22 19:37 68
	}
ecef5838 sago007 2015-11-24 20:01 69
	while ((dp=readdir(DirectoryPointer))&&(nrOfFiles<MAX_NR_OF_FILES-1)) {
c53e6443 sago007 2012-04-17 11:04 70
		string name = (string)(char*)dp->d_name;
ecef5838 sago007 2015-11-24 20:01 71
		if (!isInList(name) && name[0]!='.' ) {
c53e6443 sago007 2012-04-17 11:04 72
			nrOfFiles++;
c53e6443 sago007 2012-04-17 11:04 73
			filenames[nrOfFiles] = name;
c53e6443 sago007 2012-04-17 11:04 74
		}
c53e6443 sago007 2012-04-17 11:04 75
	}
c53e6443 sago007 2012-04-17 11:04 76
	closedir(DirectoryPointer);
89c4a3a6 sago007 2008-08-29 14:32 77
89c4a3a6 sago007 2008-08-29 14:32 78
89c4a3a6 sago007 2008-08-29 14:32 79
#endif
c53e6443 sago007 2012-04-17 11:04 80
	startFileNr=FIRST_FILE;
c53e6443 sago007 2012-04-17 11:04 81
	//Put code here
89c4a3a6 sago007 2008-08-29 14:32 82
}
89c4a3a6 sago007 2008-08-29 14:32 83
ecef5838 sago007 2015-11-24 20:01 84
bool ListFiles::isInList(const string& name) {
ecef5838 sago007 2015-11-24 20:01 85
	for (int i=0; (i<=nrOfFiles); i++) {
ecef5838 sago007 2015-11-24 20:01 86
		if (0==strcmp(name.c_str(),filenames[i].c_str())) {
c53e6443 sago007 2012-04-17 11:04 87
			return true;
c53e6443 sago007 2012-04-17 11:04 88
		}
c53e6443 sago007 2012-04-17 11:04 89
	}
c53e6443 sago007 2012-04-17 11:04 90
	return false;
89c4a3a6 sago007 2008-08-29 14:32 91
}
89c4a3a6 sago007 2008-08-29 14:32 92
ecef5838 sago007 2015-11-24 20:01 93
void ListFiles::setDirectory2(const string& dic) {
89c4a3a6 sago007 2008-08-29 14:32 94
#if defined(__unix__)
ecef5838 sago007 2015-11-24 20:01 95
	DIR* DirectoryPointer;
ecef5838 sago007 2015-11-24 20:01 96
	struct dirent* dp;
c53e6443 sago007 2012-04-17 11:04 97
	//cout << "Will look in: " << dic << endl;
c53e6443 sago007 2012-04-17 11:04 98
	DirectoryPointer = opendir(dic.c_str());
ecef5838 sago007 2015-11-24 20:01 99
	if (!DirectoryPointer) {
c53e6443 sago007 2012-04-17 11:04 100
		return;
acd79baf sago007 2015-11-22 19:37 101
	}
ecef5838 sago007 2015-11-24 20:01 102
	while ((dp=readdir(DirectoryPointer))&&(nrOfFiles<MAX_NR_OF_FILES-1)) {
c53e6443 sago007 2012-04-17 11:04 103
		string name = (string)(char*)dp->d_name;
ecef5838 sago007 2015-11-24 20:01 104
		if (!isInList(name) && name != "." && name != "..") {
c53e6443 sago007 2012-04-17 11:04 105
			nrOfFiles++;
c53e6443 sago007 2012-04-17 11:04 106
			filenames[nrOfFiles] = name;
c53e6443 sago007 2012-04-17 11:04 107
		}
c53e6443 sago007 2012-04-17 11:04 108
	}
c53e6443 sago007 2012-04-17 11:04 109
	closedir(DirectoryPointer);
c53e6443 sago007 2012-04-17 11:04 110
c53e6443 sago007 2012-04-17 11:04 111
	startFileNr=FIRST_FILE;
89c4a3a6 sago007 2008-08-29 14:32 112
#endif
89c4a3a6 sago007 2008-08-29 14:32 113
}
89c4a3a6 sago007 2008-08-29 14:32 114
ecef5838 sago007 2015-11-24 20:01 115
string ListFiles::getFileName(int nr) {
acd79baf sago007 2015-11-22 19:37 116
	if (startFileNr+nr<MAX_NR_OF_FILES) {
c53e6443 sago007 2012-04-17 11:04 117
		return filenames[startFileNr+nr];
acd79baf sago007 2015-11-22 19:37 118
	}
ecef5838 sago007 2015-11-24 20:01 119
	else {
c53e6443 sago007 2012-04-17 11:04 120
		return "";
c53e6443 sago007 2012-04-17 11:04 121
	}
89c4a3a6 sago007 2008-08-29 14:32 122
}
89c4a3a6 sago007 2008-08-29 14:32 123
ecef5838 sago007 2015-11-24 20:01 124
bool ListFiles::fileExists(int nr) {
c53e6443 sago007 2012-04-17 11:04 125
	string emptyString="";
ecef5838 sago007 2015-11-24 20:01 126
	if (startFileNr+nr<MAX_NR_OF_FILES) {
acd79baf sago007 2015-11-22 19:37 127
		if (filenames[startFileNr+nr]==emptyString) {
c53e6443 sago007 2012-04-17 11:04 128
			return false;
acd79baf sago007 2015-11-22 19:37 129
		}
acd79baf sago007 2015-11-22 19:37 130
		else {
c53e6443 sago007 2012-04-17 11:04 131
			return true;
acd79baf sago007 2015-11-22 19:37 132
		}
c53e6443 sago007 2012-04-17 11:04 133
	}
acd79baf sago007 2015-11-22 19:37 134
	else {
c53e6443 sago007 2012-04-17 11:04 135
		return false;
acd79baf sago007 2015-11-22 19:37 136
	}
89c4a3a6 sago007 2008-08-29 14:32 137
}
89c4a3a6 sago007 2008-08-29 14:32 138
ecef5838 sago007 2015-11-24 20:01 139
void ListFiles::back() {
acd79baf sago007 2015-11-22 19:37 140
	if (startFileNr>FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 141
		startFileNr = startFileNr-10;
acd79baf sago007 2015-11-22 19:37 142
	}
acd79baf sago007 2015-11-22 19:37 143
	if (startFileNr<FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 144
		startFileNr = FIRST_FILE;
acd79baf sago007 2015-11-22 19:37 145
	}
89c4a3a6 sago007 2008-08-29 14:32 146
}
89c4a3a6 sago007 2008-08-29 14:32 147
ecef5838 sago007 2015-11-24 20:01 148
void ListFiles::forward() {
acd79baf sago007 2015-11-22 19:37 149
	if (startFileNr<nrOfFiles-FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 150
		startFileNr = startFileNr+10;
acd79baf sago007 2015-11-22 19:37 151
	}
89c4a3a6 sago007 2008-08-29 14:32 152
}
89c4a3a6 sago007 2008-08-29 14:32 153
ecef5838 sago007 2015-11-24 20:01 154
string ListFiles::getRandom() {
c53e6443 sago007 2012-04-17 11:04 155
	int numberOfFiles = nrOfFiles-FIRST_FILE+1;
ecef5838 sago007 2015-11-24 20:01 156
	if (numberOfFiles<1) {
c53e6443 sago007 2012-04-17 11:04 157
		return "";
acd79baf sago007 2015-11-22 19:37 158
	}
c53e6443 sago007 2012-04-17 11:04 159
	int select = rand()%numberOfFiles;
c53e6443 sago007 2012-04-17 11:04 160
	return filenames[FIRST_FILE+select];
89c4a3a6 sago007 2008-08-29 14:32 161
}
1970-01-01 00:00 162