~ubuntu-branches/ubuntu/natty/balder2d/natty

« back to all changes in this revision

Viewing changes to src/menu/ailistmodel.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Bjørn Hansen
  • Date: 2008-06-15 17:15:38 UTC
  • mfrom: (1.1.1 upstream) (3.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080615171538-e407e07wbtdy0qs8
Tags: 1.0-1
* new upstream release
* update for guichan 8.1 (Closes: #482584)
* use physicsfs to make data/config/map/aiscript loading more flexible
* new skins for menus
* fix typo in control file long description (Closes: #458401)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/***************************************************************************
2
 
 *   Copyright (C) 2005 by Bjorn Hansen                                    *
3
 
 *   holomorph@users.sourceforge.net                                       *
4
 
 *                                                                         *
5
 
 *   This program is free software; you can redistribute it and/or modify  *
6
 
 *   it under the terms of the GNU General Public License as published by  *
7
 
 *   the Free Software Foundation; either version 2 of the License, or     *
8
 
 *   (at your option) any later version.                                   *
9
 
 *                                                                         *
10
 
 *   This program is distributed in the hope that it will be useful,       *
11
 
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12
 
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13
 
 *   GNU General Public License for more details.                          *
14
 
 *                                                                         *
15
 
 *   You should have received a copy of the GNU General Public License     *
16
 
 *   along with this program; if not, write to the                         *
17
 
 *   Free Software Foundation, Inc.,                                       *
18
 
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19
 
 ***************************************************************************/
20
 
 
21
 
#include "../../include/menu/ailistmodel.h"
22
 
#include "boost/filesystem/operations.hpp"
23
 
#include "boost/filesystem/path.hpp"
24
 
 
25
 
using namespace Balder;
26
 
 
27
 
AIListModel::AIListModel(): numScripts(0)
28
 
{
29
 
        FindScripts();
30
 
}
31
 
AIListModel::~AIListModel()
32
 
{}
33
 
 
34
 
void AIListModel::FindScripts()
35
 
{
36
 
        // always show Human option as it disables any ai scripting so that a user may play.
37
 
        scriptnames.push_back("Human");
38
 
        ++numScripts;
39
 
        
40
 
        boost::filesystem::path script_path( "scripts/" );
41
 
        boost::filesystem::directory_iterator end_iter;
42
 
        for ( boost::filesystem::directory_iterator dir_itr( script_path ); dir_itr != end_iter; ++dir_itr ) {
43
 
                if ( !boost::filesystem::is_directory( *dir_itr ) ) {
44
 
                        // lets see if this file really is a script
45
 
                        const std::string script_ext = ".py";
46
 
                        std::string file_name = dir_itr->leaf();
47
 
 
48
 
                        int extpos = file_name.rfind(script_ext);
49
 
                        std::string file_ext = file_name;
50
 
                        file_ext.erase(0, extpos);
51
 
 
52
 
                        // if this file really is a AI script then display it in the selection list.
53
 
                        if (file_ext == script_ext) {
54
 
                                file_name.erase(extpos, file_name.size());
55
 
                                scriptnames.push_back(file_name);
56
 
                                ++numScripts;
57
 
                        }
58
 
                }
59
 
        }
60
 
}
61
 
 
62
 
 
63
 
/*!
64
 
    \fn Balder::AIListModel::FindScriptIndex(std::string scriptname)
65
 
 */
66
 
int Balder::AIListModel::FindScriptIndex(std::string scriptname)
67
 
{
68
 
    for (int i = 0; i < numScripts; ++i) {
69
 
        if (!scriptname.compare(scriptnames[i])) return i;
70
 
    }
71
 
    return 0;
72
 
}