So, I added my physics classes...
[potpourri.git] / include / core / Actor.h
blob52c2e5debdba28ff3235e578157f628adcb8a680
1 // Copyright 2008 Brian Caine
3 // This file is part of Potpourri.
5 // Potpourri 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 3 of the License, or
8 // (at your option) any later version.
10 // Potpourri is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTIBILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with Potpourri. If not, see <http://www.gnu.org/licenses/>.
19 // NOTES:
21 // This is the Actor class.
23 #ifndef __ACTOR_H
24 #define __ACTOR_H
26 #include "MediaLoader.h"
27 #include "../Global.h"
29 #include <string>
30 #include <map>
31 #include <vector>
33 namespace fragrant
35 typedef Pair<float> ActorPair;
36 ActorPair makePair(float, float);
38 struct ActorGraphics
40 std::string sauce;
41 ActorPair pos;
42 float angle;
45 // a line fills the first two pairs in PhysicsShape's data member with
46 // the first and second point. The radius of the line is set as the x
47 // member for a third
49 // Circles have x of one member of data set to the radius
51 enum Shape
53 S_Line,
54 S_Circle,
55 S_Poly
58 struct PhysicsShape
60 Shape shape;
61 std::vector<ActorPair> data;
62 ActorPair offset;
64 float elasticity;
65 float friction;
68 struct ActorPhysics
70 float mass;
71 float inertia;
72 bool fixed;
74 std::vector<PhysicsShape> shapes; // oh god, no!
77 struct ActorData
79 std::string name;
81 std::vector<ActorGraphics> graphics;
82 ActorPhysics physics;
83 std::map<std::string, std::string> scripts;
86 class Actor
88 public:
89 Actor(ActorData data);
90 ~Actor();
92 static ActorData parseXML(std::string source,
93 MediaLoader& media_loader);
94 private:
98 #endif