git repos / blockattack-game

blame: source/code/listFiles.cpp

normal view · raw

89c4a3a6 sago007 2008-08-29 14:32 1
/*
89c4a3a6 sago007 2008-08-29 14:32 2
listFiles.cpp
89c4a3a6 sago007 2008-08-29 14:32 3
Copyright (C) 2005 Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 4
89c4a3a6 sago007 2008-08-29 14:32 5
    This program is free software; you can redistribute it and/or modify
89c4a3a6 sago007 2008-08-29 14:32 6
    it under the terms of the GNU General Public License as published by
89c4a3a6 sago007 2008-08-29 14:32 7
    the Free Software Foundation; either version 2 of the License, or
89c4a3a6 sago007 2008-08-29 14:32 8
    (at your option) any later version.
89c4a3a6 sago007 2008-08-29 14:32 9
89c4a3a6 sago007 2008-08-29 14:32 10
    This program is distributed in the hope that it will be useful,
89c4a3a6 sago007 2008-08-29 14:32 11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
89c4a3a6 sago007 2008-08-29 14:32 12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
89c4a3a6 sago007 2008-08-29 14:32 13
    GNU General Public License for more details.
89c4a3a6 sago007 2008-08-29 14:32 14
89c4a3a6 sago007 2008-08-29 14:32 15
    You should have received a copy of the GNU General Public License
89c4a3a6 sago007 2008-08-29 14:32 16
    along with this program; if not, write to the Free Software
89c4a3a6 sago007 2008-08-29 14:32 17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
89c4a3a6 sago007 2008-08-29 14:32 18
89c4a3a6 sago007 2008-08-29 14:32 19
    Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 20
    R�veh�jvej 36, V. 1111
89c4a3a6 sago007 2008-08-29 14:32 21
    2800 Kgs. Lyngby
89c4a3a6 sago007 2008-08-29 14:32 22
    DENMARK
89c4a3a6 sago007 2008-08-29 14:32 23
    blockattack@poulsander.com
89c4a3a6 sago007 2008-08-29 14:32 24
*/
89c4a3a6 sago007 2008-08-29 14:32 25
89c4a3a6 sago007 2008-08-29 14:32 26
/*
89c4a3a6 sago007 2008-08-29 14:32 27
listFiles.cpp
89c4a3a6 sago007 2008-08-29 14:32 28
*/
89c4a3a6 sago007 2008-08-29 14:32 29
89c4a3a6 sago007 2008-08-29 14:32 30
#include "listFiles.h"
89c4a3a6 sago007 2008-08-29 14:32 31
89c4a3a6 sago007 2008-08-29 14:32 32
/*ListFiles::ListFiles()
89c4a3a6 sago007 2008-08-29 14:32 33
{
89c4a3a6 sago007 2008-08-29 14:32 34
89c4a3a6 sago007 2008-08-29 14:32 35
}
89c4a3a6 sago007 2008-08-29 14:32 36
89c4a3a6 sago007 2008-08-29 14:32 37
ListFiles::~ListFiles()
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
89c4a3a6 sago007 2008-08-29 14:32 42
89c4a3a6 sago007 2008-08-29 14:32 43
void ListFiles::setDirectory(string directory)
89c4a3a6 sago007 2008-08-29 14:32 44
{
89c4a3a6 sago007 2008-08-29 14:32 45
    for (int i=0;i<MAX_NR_OF_FILES;i++)
89c4a3a6 sago007 2008-08-29 14:32 46
        filenames[i]="";
89c4a3a6 sago007 2008-08-29 14:32 47
#if defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 48
    DWORD dwError;
89c4a3a6 sago007 2008-08-29 14:32 49
    dictory+="/*";
89c4a3a6 sago007 2008-08-29 14:32 50
    hFind = FindFirstFile(dictory.c_str(), &FindFileData);
89c4a3a6 sago007 2008-08-29 14:32 51
    if (hFind == INVALID_HANDLE_VALUE)
89c4a3a6 sago007 2008-08-29 14:32 52
    {
1bf43b66 sago007 2009-01-30 08:34 53
        cout << "Invalid file handle. Error is " << GetLastError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 54
    }
89c4a3a6 sago007 2008-08-29 14:32 55
    else
89c4a3a6 sago007 2008-08-29 14:32 56
    {
89c4a3a6 sago007 2008-08-29 14:32 57
        nrOfFiles=0;
89c4a3a6 sago007 2008-08-29 14:32 58
        filenames[nrOfFiles] = FindFileData.cFileName;
1bf43b66 sago007 2009-01-30 08:34 59
        cout << "File: " << FindFileData.cFileName << endl;
89c4a3a6 sago007 2008-08-29 14:32 60
        while ((FindNextFile(hFind, &FindFileData) != 0)&&(nrOfFiles<MAX_NR_OF_FILES-1))
89c4a3a6 sago007 2008-08-29 14:32 61
        {
89c4a3a6 sago007 2008-08-29 14:32 62
            nrOfFiles++;
89c4a3a6 sago007 2008-08-29 14:32 63
            filenames[nrOfFiles] = FindFileData.cFileName;
1bf43b66 sago007 2009-01-30 08:34 64
            cout << "File: " << FindFileData.cFileName << endl;
89c4a3a6 sago007 2008-08-29 14:32 65
        }
89c4a3a6 sago007 2008-08-29 14:32 66
89c4a3a6 sago007 2008-08-29 14:32 67
        dwError = GetLastError();
89c4a3a6 sago007 2008-08-29 14:32 68
        FindClose(hFind);
89c4a3a6 sago007 2008-08-29 14:32 69
        if (dwError != ERROR_NO_MORE_FILES)
89c4a3a6 sago007 2008-08-29 14:32 70
        {
1bf43b66 sago007 2009-01-30 08:34 71
            cout << "FindNextFile error. Error is " << dwError << endl;
89c4a3a6 sago007 2008-08-29 14:32 72
        }
89c4a3a6 sago007 2008-08-29 14:32 73
    }
89c4a3a6 sago007 2008-08-29 14:32 74
#elif defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 75
    DIR *DirectoryPointer;
89c4a3a6 sago007 2008-08-29 14:32 76
    struct dirent *dp;
89c4a3a6 sago007 2008-08-29 14:32 77
    nrOfFiles=0;
1bf43b66 sago007 2009-01-30 08:34 78
    //cout << "Will look in: " << directory << endl;
89c4a3a6 sago007 2008-08-29 14:32 79
    DirectoryPointer = opendir(directory.c_str());
89c4a3a6 sago007 2008-08-29 14:32 80
    if(!DirectoryPointer)
89c4a3a6 sago007 2008-08-29 14:32 81
        return;
89c4a3a6 sago007 2008-08-29 14:32 82
    while ((dp=readdir(DirectoryPointer))&&(nrOfFiles<MAX_NR_OF_FILES-1))
89c4a3a6 sago007 2008-08-29 14:32 83
    {
f876e3cb sago007 2008-11-14 21:21 84
        string name = (string)(char*)dp->d_name;
f876e3cb sago007 2008-11-14 21:21 85
        if (!isInList(name) && name != "." && name != "..")
f876e3cb sago007 2008-11-14 21:21 86
        {
f876e3cb sago007 2008-11-14 21:21 87
            nrOfFiles++;
f876e3cb sago007 2008-11-14 21:21 88
            filenames[nrOfFiles] = name;
f876e3cb sago007 2008-11-14 21:21 89
        }
89c4a3a6 sago007 2008-08-29 14:32 90
    }
89c4a3a6 sago007 2008-08-29 14:32 91
    closedir(DirectoryPointer);
89c4a3a6 sago007 2008-08-29 14:32 92
89c4a3a6 sago007 2008-08-29 14:32 93
89c4a3a6 sago007 2008-08-29 14:32 94
#endif
89c4a3a6 sago007 2008-08-29 14:32 95
    startFileNr=FIRST_FILE;
89c4a3a6 sago007 2008-08-29 14:32 96
    //Put code here
89c4a3a6 sago007 2008-08-29 14:32 97
}
89c4a3a6 sago007 2008-08-29 14:32 98
89c4a3a6 sago007 2008-08-29 14:32 99
bool ListFiles::isInList(string name)
89c4a3a6 sago007 2008-08-29 14:32 100
{
89c4a3a6 sago007 2008-08-29 14:32 101
    for (int i=0;(i<=nrOfFiles);i++)
89c4a3a6 sago007 2008-08-29 14:32 102
    {
89c4a3a6 sago007 2008-08-29 14:32 103
        if (0==strcmp(name.c_str(),filenames[i].c_str()))
89c4a3a6 sago007 2008-08-29 14:32 104
        {
89c4a3a6 sago007 2008-08-29 14:32 105
            return true;
89c4a3a6 sago007 2008-08-29 14:32 106
        }
89c4a3a6 sago007 2008-08-29 14:32 107
    }
89c4a3a6 sago007 2008-08-29 14:32 108
    return false;
89c4a3a6 sago007 2008-08-29 14:32 109
}
89c4a3a6 sago007 2008-08-29 14:32 110
89c4a3a6 sago007 2008-08-29 14:32 111
void ListFiles::setDirectory2(string dic)
89c4a3a6 sago007 2008-08-29 14:32 112
{
89c4a3a6 sago007 2008-08-29 14:32 113
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 114
    DIR *DirectoryPointer;
89c4a3a6 sago007 2008-08-29 14:32 115
    struct dirent *dp;
1bf43b66 sago007 2009-01-30 08:34 116
    //cout << "Will look in: " << dic << endl;
89c4a3a6 sago007 2008-08-29 14:32 117
    DirectoryPointer = opendir(dic.c_str());
89c4a3a6 sago007 2008-08-29 14:32 118
    if(!DirectoryPointer)
89c4a3a6 sago007 2008-08-29 14:32 119
        return;
89c4a3a6 sago007 2008-08-29 14:32 120
    while ((dp=readdir(DirectoryPointer))&&(nrOfFiles<MAX_NR_OF_FILES-1))
89c4a3a6 sago007 2008-08-29 14:32 121
    {
89c4a3a6 sago007 2008-08-29 14:32 122
        string name = (string)(char*)dp->d_name;
f876e3cb sago007 2008-11-14 21:21 123
        if (!isInList(name) && name != "." && name != "..")
89c4a3a6 sago007 2008-08-29 14:32 124
        {
89c4a3a6 sago007 2008-08-29 14:32 125
            nrOfFiles++;
89c4a3a6 sago007 2008-08-29 14:32 126
            filenames[nrOfFiles] = name;
89c4a3a6 sago007 2008-08-29 14:32 127
        }
89c4a3a6 sago007 2008-08-29 14:32 128
    }
89c4a3a6 sago007 2008-08-29 14:32 129
    closedir(DirectoryPointer);
89c4a3a6 sago007 2008-08-29 14:32 130
    
89c4a3a6 sago007 2008-08-29 14:32 131
    startFileNr=FIRST_FILE;
89c4a3a6 sago007 2008-08-29 14:32 132
#endif
89c4a3a6 sago007 2008-08-29 14:32 133
}
89c4a3a6 sago007 2008-08-29 14:32 134
89c4a3a6 sago007 2008-08-29 14:32 135
string ListFiles::getFileName(int nr)
89c4a3a6 sago007 2008-08-29 14:32 136
{
89c4a3a6 sago007 2008-08-29 14:32 137
    if (startFileNr+nr<MAX_NR_OF_FILES)
89c4a3a6 sago007 2008-08-29 14:32 138
        return filenames[startFileNr+nr];
89c4a3a6 sago007 2008-08-29 14:32 139
    else
89c4a3a6 sago007 2008-08-29 14:32 140
    {
89c4a3a6 sago007 2008-08-29 14:32 141
        string emptyString="";
89c4a3a6 sago007 2008-08-29 14:32 142
        return "";
89c4a3a6 sago007 2008-08-29 14:32 143
    }
89c4a3a6 sago007 2008-08-29 14:32 144
}
89c4a3a6 sago007 2008-08-29 14:32 145
89c4a3a6 sago007 2008-08-29 14:32 146
bool ListFiles::fileExists(int nr)
89c4a3a6 sago007 2008-08-29 14:32 147
{
89c4a3a6 sago007 2008-08-29 14:32 148
    string emptyString="";
89c4a3a6 sago007 2008-08-29 14:32 149
    if (startFileNr+nr<MAX_NR_OF_FILES)
89c4a3a6 sago007 2008-08-29 14:32 150
    {
89c4a3a6 sago007 2008-08-29 14:32 151
        if (filenames[startFileNr+nr]==emptyString)
89c4a3a6 sago007 2008-08-29 14:32 152
            return false;
89c4a3a6 sago007 2008-08-29 14:32 153
        else
89c4a3a6 sago007 2008-08-29 14:32 154
            return true;
89c4a3a6 sago007 2008-08-29 14:32 155
    }
89c4a3a6 sago007 2008-08-29 14:32 156
    else
89c4a3a6 sago007 2008-08-29 14:32 157
        return false;
89c4a3a6 sago007 2008-08-29 14:32 158
}
89c4a3a6 sago007 2008-08-29 14:32 159
89c4a3a6 sago007 2008-08-29 14:32 160
void ListFiles::back()
89c4a3a6 sago007 2008-08-29 14:32 161
{
89c4a3a6 sago007 2008-08-29 14:32 162
    if (startFileNr>FIRST_FILE)
89c4a3a6 sago007 2008-08-29 14:32 163
        startFileNr = startFileNr-10;
89c4a3a6 sago007 2008-08-29 14:32 164
    if (startFileNr<FIRST_FILE)
89c4a3a6 sago007 2008-08-29 14:32 165
        startFileNr = FIRST_FILE;
89c4a3a6 sago007 2008-08-29 14:32 166
}
89c4a3a6 sago007 2008-08-29 14:32 167
89c4a3a6 sago007 2008-08-29 14:32 168
void ListFiles::forward()
89c4a3a6 sago007 2008-08-29 14:32 169
{
89c4a3a6 sago007 2008-08-29 14:32 170
    if (startFileNr<nrOfFiles-FIRST_FILE)
89c4a3a6 sago007 2008-08-29 14:32 171
        startFileNr = startFileNr+10;
89c4a3a6 sago007 2008-08-29 14:32 172
}
89c4a3a6 sago007 2008-08-29 14:32 173
89c4a3a6 sago007 2008-08-29 14:32 174
string ListFiles::getRandom()
89c4a3a6 sago007 2008-08-29 14:32 175
{
89c4a3a6 sago007 2008-08-29 14:32 176
    int numberOfFiles = nrOfFiles-FIRST_FILE+1;
89c4a3a6 sago007 2008-08-29 14:32 177
    if(numberOfFiles<1)
89c4a3a6 sago007 2008-08-29 14:32 178
        return "";
89c4a3a6 sago007 2008-08-29 14:32 179
    int select = rand()%numberOfFiles;
89c4a3a6 sago007 2008-08-29 14:32 180
    return filenames[FIRST_FILE+select];
89c4a3a6 sago007 2008-08-29 14:32 181
}
1970-01-01 00:00 182