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