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