-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnimationFactory.cpp
More file actions
122 lines (99 loc) · 2.27 KB
/
Copy pathAnimationFactory.cpp
File metadata and controls
122 lines (99 loc) · 2.27 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include "AnimationFactory.h"
#include "Animation.h"
#include <fstream>
#include "SOIL.h"
#include <stdio.h>
#include <string.h>
AnimationFactory::AnimationFactory(string nameOfConfig)
{
char cCurrentPath[FILENAME_MAX];
if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
{
throw(0xBAD);
}
string line;
ifstream configFile((nameOfConfig).c_str());
if(configFile.is_open())
{
while(getline(configFile,line))
{//
int wordCount = 0;
int charCount = 0;
string arrPair[3];
string toCopy = "";
while(charCount < line.length())
{
if(line[charCount] == '$')
{
if(wordCount == 0)
{
arrPair[0] = toCopy;
}
else
{
arrPair[1] = toCopy;
}
++wordCount;
toCopy = "";
++charCount;
}
else
{
toCopy += line[charCount++];
}
}
arrPair[2] = toCopy;
if(!imgMap.count(arrPair[0]))
{
//This means our key was not found in the map, so we create an entry for it
imgMap[arrPair[0]] = new vector<Animation *>();
}
GLuint * toAdd = new GLuint;
/*
*toAdd = SOIL_load_OGL_texture
(
arrPair[2].c_str(),
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
*/
*toAdd = SOIL_load_OGL_texture
(
arrPair[2].c_str(),
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_COMPRESS_TO_DXT | SOIL_FLAG_NTSC_SAFE_RGB
);
//Gets the vector of animation pointers
//It then gets the imgPtr from the animation pointer at arrPair[1](the second input in the config file) in the vector of animation pointers
//it then pushes our new GLuint texture into that vector of GLuint pointers
imgMap[arrPair[0]]->push_back(new Animation());
imgMap[arrPair[0]]->at(stoi(arrPair[1].c_str()))->imgPtr->push_back(toAdd);
}
configFile.close();
}
}
void AnimationFactory::createAnimation(Collideable * c)
{
if(typeid(Wall) == typeid(*c))
{
c->setAnim(imgMap["Wall"]);
}
else if(typeid(Player) == typeid(*c))
{
c->setAnim(imgMap["Player"]);
}
else if(typeid(Mole) == typeid(*c))
{
c->setAnim(imgMap["Mole"]);
}
else if(typeid(Door) == typeid(*c))
{
c->setAnim(imgMap["Door"]);
}
else if(typeid(Coin) == typeid(*c))
{
c->setAnim(imgMap["Coin"]);
}
}