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) {
8ec2d339 sago007 2015-11-24 20:27 34
	filenames.clear();
89c4a3a6 sago007 2008-08-29 14:32 35
#if defined(_WIN32)
c53e6443 sago007 2012-04-17 11:04 36
	DWORD dwError;
af35c39d sago007 2013-11-16 16:37 37
	string directory2 = directory+"/*";
af35c39d sago007 2013-11-16 16:37 38
	hFind = FindFirstFile(directory2.c_str(), &FindFileData);
ecef5838 sago007 2015-11-24 20:01 39
	if (hFind == INVALID_HANDLE_VALUE) {
c53e6443 sago007 2012-04-17 11:04 40
		cout << "Invalid file handle. Error is " << GetLastError() << endl;
c53e6443 sago007 2012-04-17 11:04 41
	}
ecef5838 sago007 2015-11-24 20:01 42
	else {
c53e6443 sago007 2012-04-17 11:04 43
		nrOfFiles=0;
8ec2d339 sago007 2015-11-24 20:27 44
		filenames.push_back(FindFileData.cFileName);
c53e6443 sago007 2012-04-17 11:04 45
		cout << "File: " << FindFileData.cFileName << endl;
ecef5838 sago007 2015-11-24 20:01 46
		while ((FindNextFile(hFind, &FindFileData) != 0) && FindFileData.cFileName[0]!='.' && (nrOfFiles<MAX_NR_OF_FILES-1)) {
c53e6443 sago007 2012-04-17 11:04 47
			nrOfFiles++;
8ec2d339 sago007 2015-11-24 20:27 48
			filenames.push_back(FindFileData.cFileName);
c53e6443 sago007 2012-04-17 11:04 49
			cout << "File: " << FindFileData.cFileName << endl;
c53e6443 sago007 2012-04-17 11:04 50
		}
c53e6443 sago007 2012-04-17 11:04 51
c53e6443 sago007 2012-04-17 11:04 52
		dwError = GetLastError();
c53e6443 sago007 2012-04-17 11:04 53
		FindClose(hFind);
ecef5838 sago007 2015-11-24 20:01 54
		if (dwError != ERROR_NO_MORE_FILES) {
c53e6443 sago007 2012-04-17 11:04 55
			cout << "FindNextFile error. Error is " << dwError << endl;
c53e6443 sago007 2012-04-17 11:04 56
		}
c53e6443 sago007 2012-04-17 11:04 57
	}
89c4a3a6 sago007 2008-08-29 14:32 58
#elif defined(__unix__)
ecef5838 sago007 2015-11-24 20:01 59
	DIR* DirectoryPointer;
ecef5838 sago007 2015-11-24 20:01 60
	struct dirent* dp;
c53e6443 sago007 2012-04-17 11:04 61
	//cout << "Will look in: " << directory << endl;
c53e6443 sago007 2012-04-17 11:04 62
	DirectoryPointer = opendir(directory.c_str());
ecef5838 sago007 2015-11-24 20:01 63
	if (!DirectoryPointer) {
c53e6443 sago007 2012-04-17 11:04 64
		return;
acd79baf sago007 2015-11-22 19:37 65
	}
8ec2d339 sago007 2015-11-24 20:27 66
	while (dp=readdir(DirectoryPointer)) {
c53e6443 sago007 2012-04-17 11:04 67
		string name = (string)(char*)dp->d_name;
ecef5838 sago007 2015-11-24 20:01 68
		if (!isInList(name) && name[0]!='.' ) {
8ec2d339 sago007 2015-11-24 20:27 69
			filenames.push_back(name);
c53e6443 sago007 2012-04-17 11:04 70
		}
c53e6443 sago007 2012-04-17 11:04 71
	}
c53e6443 sago007 2012-04-17 11:04 72
	closedir(DirectoryPointer);
89c4a3a6 sago007 2008-08-29 14:32 73
89c4a3a6 sago007 2008-08-29 14:32 74
89c4a3a6 sago007 2008-08-29 14:32 75
#endif
c53e6443 sago007 2012-04-17 11:04 76
	startFileNr=FIRST_FILE;
c53e6443 sago007 2012-04-17 11:04 77
	//Put code here
89c4a3a6 sago007 2008-08-29 14:32 78
}
89c4a3a6 sago007 2008-08-29 14:32 79
ecef5838 sago007 2015-11-24 20:01 80
bool ListFiles::isInList(const string& name) {
8ec2d339 sago007 2015-11-24 20:27 81
	for (int i=0; i< filenames.size(); i++) {
8ec2d339 sago007 2015-11-24 20:27 82
		if (name == filenames.at(i) ) {
c53e6443 sago007 2012-04-17 11:04 83
			return true;
c53e6443 sago007 2012-04-17 11:04 84
		}
c53e6443 sago007 2012-04-17 11:04 85
	}
c53e6443 sago007 2012-04-17 11:04 86
	return false;
89c4a3a6 sago007 2008-08-29 14:32 87
}
89c4a3a6 sago007 2008-08-29 14:32 88
ecef5838 sago007 2015-11-24 20:01 89
void ListFiles::setDirectory2(const string& dic) {
89c4a3a6 sago007 2008-08-29 14:32 90
#if defined(__unix__)
ecef5838 sago007 2015-11-24 20:01 91
	DIR* DirectoryPointer;
ecef5838 sago007 2015-11-24 20:01 92
	struct dirent* dp;
c53e6443 sago007 2012-04-17 11:04 93
	//cout << "Will look in: " << dic << endl;
c53e6443 sago007 2012-04-17 11:04 94
	DirectoryPointer = opendir(dic.c_str());
ecef5838 sago007 2015-11-24 20:01 95
	if (!DirectoryPointer) {
c53e6443 sago007 2012-04-17 11:04 96
		return;
acd79baf sago007 2015-11-22 19:37 97
	}
8ec2d339 sago007 2015-11-24 20:27 98
	while (dp=readdir(DirectoryPointer)) {
c53e6443 sago007 2012-04-17 11:04 99
		string name = (string)(char*)dp->d_name;
ecef5838 sago007 2015-11-24 20:01 100
		if (!isInList(name) && name != "." && name != "..") {
8ec2d339 sago007 2015-11-24 20:27 101
			filenames.push_back(name);
c53e6443 sago007 2012-04-17 11:04 102
		}
c53e6443 sago007 2012-04-17 11:04 103
	}
c53e6443 sago007 2012-04-17 11:04 104
	closedir(DirectoryPointer);
c53e6443 sago007 2012-04-17 11:04 105
c53e6443 sago007 2012-04-17 11:04 106
	startFileNr=FIRST_FILE;
89c4a3a6 sago007 2008-08-29 14:32 107
#endif
89c4a3a6 sago007 2008-08-29 14:32 108
}
89c4a3a6 sago007 2008-08-29 14:32 109
ecef5838 sago007 2015-11-24 20:01 110
string ListFiles::getFileName(int nr) {
8ec2d339 sago007 2015-11-24 20:27 111
	if (startFileNr+nr<filenames.size()) {
c53e6443 sago007 2012-04-17 11:04 112
		return filenames[startFileNr+nr];
acd79baf sago007 2015-11-22 19:37 113
	}
ecef5838 sago007 2015-11-24 20:01 114
	else {
c53e6443 sago007 2012-04-17 11:04 115
		return "";
c53e6443 sago007 2012-04-17 11:04 116
	}
89c4a3a6 sago007 2008-08-29 14:32 117
}
89c4a3a6 sago007 2008-08-29 14:32 118
ecef5838 sago007 2015-11-24 20:01 119
bool ListFiles::fileExists(int nr) {
c53e6443 sago007 2012-04-17 11:04 120
	string emptyString="";
8ec2d339 sago007 2015-11-24 20:27 121
	if (startFileNr+nr<filenames.size()) {
acd79baf sago007 2015-11-22 19:37 122
		if (filenames[startFileNr+nr]==emptyString) {
c53e6443 sago007 2012-04-17 11:04 123
			return false;
acd79baf sago007 2015-11-22 19:37 124
		}
acd79baf sago007 2015-11-22 19:37 125
		else {
c53e6443 sago007 2012-04-17 11:04 126
			return true;
acd79baf sago007 2015-11-22 19:37 127
		}
c53e6443 sago007 2012-04-17 11:04 128
	}
acd79baf sago007 2015-11-22 19:37 129
	else {
c53e6443 sago007 2012-04-17 11:04 130
		return false;
acd79baf sago007 2015-11-22 19:37 131
	}
89c4a3a6 sago007 2008-08-29 14:32 132
}
89c4a3a6 sago007 2008-08-29 14:32 133
ecef5838 sago007 2015-11-24 20:01 134
void ListFiles::back() {
acd79baf sago007 2015-11-22 19:37 135
	if (startFileNr>FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 136
		startFileNr = startFileNr-10;
acd79baf sago007 2015-11-22 19:37 137
	}
acd79baf sago007 2015-11-22 19:37 138
	if (startFileNr<FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 139
		startFileNr = FIRST_FILE;
acd79baf sago007 2015-11-22 19:37 140
	}
89c4a3a6 sago007 2008-08-29 14:32 141
}
89c4a3a6 sago007 2008-08-29 14:32 142
ecef5838 sago007 2015-11-24 20:01 143
void ListFiles::forward() {
8ec2d339 sago007 2015-11-24 20:27 144
	if (startFileNr<filenames.size()-FIRST_FILE) {
c53e6443 sago007 2012-04-17 11:04 145
		startFileNr = startFileNr+10;
acd79baf sago007 2015-11-22 19:37 146
	}
89c4a3a6 sago007 2008-08-29 14:32 147
}
89c4a3a6 sago007 2008-08-29 14:32 148
ecef5838 sago007 2015-11-24 20:01 149
string ListFiles::getRandom() {
8ec2d339 sago007 2015-11-24 20:27 150
	int numberOfFiles = filenames.size()-FIRST_FILE+1;
ecef5838 sago007 2015-11-24 20:01 151
	if (numberOfFiles<1) {
c53e6443 sago007 2012-04-17 11:04 152
		return "";
acd79baf sago007 2015-11-22 19:37 153
	}
c53e6443 sago007 2012-04-17 11:04 154
	int select = rand()%numberOfFiles;
c53e6443 sago007 2012-04-17 11:04 155
	return filenames[FIRST_FILE+select];
89c4a3a6 sago007 2008-08-29 14:32 156
}
1970-01-01 00:00 157