-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChapter.h
105 lines (79 loc) · 3.05 KB
/
Chapter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
Greyout - a colourful platformer about love
Greyout is Copyright (c)2011-2014 Janek Schäfer
This file is part of Greyout.
Greyout is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Greyout is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Please direct any feedback, questions or comments to
Janek Schäfer (foxblock), foxblock_at_gmail_dot_com
*/
#ifndef CHAPTER_H
#define CHAPTER_H
#include <vector>
#include <map>
#include <string>
#include "PenjinTypes.h"
#include "fileTypeDefines.h"
/**
Organizing and ordering levels loaded from a chapter information file
Also displaying a name and image if needed
Additionally providing other classes with variables for file loading (such as the chapter path)
Chapters are a bunch of levels put together in a folder, they can use their own
graphic set and sounds as well as override or use the default ones
You can order the levels in the info.txt file
User progress will be saved in global savegame file
**/
using namespace std;
class Chapter
{
public:
Chapter();
virtual ~Chapter();
virtual void clear();
// Load a chapter from a file (name and at least one level are mandatory)
// returns true on success, false otherwise (and sets errorString variable)
virtual bool loadFromFile(CRstring filename);
// Get the level at index pos, returns "" if out of bounds
virtual string getLevelFilename(CRint pos);
// Get the index of the passed level, returns -1 if not found (or empty string)
virtual int getLevelIndex(CRstring filename);
// Load the user's progress in this chapter from the savegame file
virtual int getProgress() const;
// Get the next level after the passed one
//returns "" if not found, at the end of the chapter or on error
virtual string getNextLevel(CRstring current);
// returns the next level after the passed one and saves the progress to the savegame file
// returns "" on error or ending of chapter
virtual string getNextLevelAndSave(CRstring current);
string filename; // info.txt filename and path
string path; // path to chapter folder (where info.txt is in)
string name; // name of the chapter (mandatory)
string imageFile; // image displayed in the chapter menu
string dialogueFile; // file containing the strings loaded as dialogue
bool autoDetect; // make this chapter auto-detect level files in the folder
// used for error output
string errorString;
vector<string> levels;
enum ChapterProp
{
cpUnknown,
cpName,
cpImage,
cpLevel,
cpDialogue,
cpAutoDetect
};
map<string,int> stringToProp;
protected:
bool processParameter(const PARAMETER_TYPE& value);
private:
};
#endif // CHAPTER_H