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