1
// $Id: metamap.hpp 2986 2007-08-17 16:20:09Z grumbel $
3
// Pingus - A free Lemmings clone
4
// Copyright (C) 2006 Ingo Ruhnke <grumbel@gmx.de>
6
// This program is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU General Public License
8
// as published by the Free Software Foundation; either version 2
9
// of the License, or (at your option) any later version.
11
// This program is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
16
// You should have received a copy of the GNU General Public License
17
// along with this program; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
#ifndef HEADER_PINGUS_METAMAP_HXX
21
#define HEADER_PINGUS_METAMAP_HXX
28
namespace WorldMapNS {
35
/** This class is used to connect the WorldMaps (or "islands").
36
FIXME: Eventually, this should draw a picture of the globe so you
37
FIXME: can watch your pingus sail around and pick which island/area they want
41
// here, a NodeId represents a WorldMap.
45
/** The graph that represents the path between Nodes */
46
PathGraph* path_graph;
48
/** Filename of this Metamap */
52
MetaMap(const std::string &filename_arg);
55
/** Returns whether or not the given worldmap is accessible. Use the <short-name>
56
tag in the WorldMap XML file as the string variable. */
57
bool is_accessible(const std::string &worldmap_shortname);
59
/** Action to take when the worldmap has been completed. This should record that
60
fact, as well as unlock all other worldmaps */
61
void set_finished(const std::string &worldmap_shortname);
63
/** FIXME: Implement this when the MetaMap is viewable */
64
void add_drawable(Drawable* drawable) { }
66
/** Return the name of the default node in this metamap (which is a worldmap) */
67
std::string get_default_worldmap();
68
std::string get_final_worldmap();
70
/** Finish the specified node and unlock it's neighbors */
71
void finish_node(const std::string &worldmap_shortname);
74
/** Unlock surrounding nodes. This sets the "-accessible" tag in the StatManager for
75
the accessible worldmaps */
77
void unlock_default(const std::string &default_node_name);
79
/** Parses the passed filename to get information about the MetaMap */
80
void parse_file(FileReader &reader);
82
/** Parses the <head> section */
83
void parse_properties(FileReader reader);
85
/** Parses the <graph> section */
86
void parse_graph(FileReader reader);
89
MetaMap (const MetaMap&);
90
MetaMap& operator= (const MetaMap&);
93
} // WorldMap namespace;