]> git.jsancho.org Git - lugaru.git/blob - Source/Objects/Weapons.hpp
33d93aa9cbf724f62cfcc222665f186d91d9d44f
[lugaru.git] / Source / Objects / Weapons.hpp
1 /*
2 Copyright (C) 2003, 2010 - Wolfire Games
3 Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file)
4
5 This file is part of Lugaru.
6
7 Lugaru is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 Lugaru is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #ifndef _WEAPONS_HPP_
22 #define _WEAPONS_HPP_
23
24 #include "Animation/Skeleton.hpp"
25 #include "Environment/Terrain.hpp"
26 #include "Graphic/gamegl.hpp"
27 #include "Graphic/Models.hpp"
28 #include "Graphic/Sprite.hpp"
29 #include "Graphic/Texture.hpp"
30 #include "Math/XYZ.hpp"
31 #include "Objects/Person.hpp"
32
33 #include <cmath>
34
35 #define max_weapons 30
36 #define max_weaponinstances 20
37
38 #define knife 1
39 #define sword 2
40 #define staff 3
41
42 class Weapon
43 {
44 public:
45     Weapon(int type, int owner);
46
47     static Model throwingknifemodel;
48     static Texture knifetextureptr;
49     static Texture lightbloodknifetextureptr;
50     static Texture bloodknifetextureptr;
51
52     static Model swordmodel;
53     static Texture swordtextureptr;
54     static Texture lightbloodswordtextureptr;
55     static Texture bloodswordtextureptr;
56
57     static Model staffmodel;
58     static Texture stafftextureptr;
59
60     static void Load();
61
62     void Draw();
63     void DoStuff(int);
64
65     int getType() {
66         return type;
67     }
68     void setType(int);
69
70     void drop(XYZ velocity, XYZ tipvelocity, bool sethitsomething = true);
71     void thrown(XYZ velocity, bool sethitsomething = true);
72
73     int owner;
74     XYZ position;
75     XYZ tippoint;
76     XYZ velocity;
77     XYZ tipvelocity;
78     bool missed;
79     bool hitsomething;
80     float freetime;
81     bool firstfree;
82     bool physics;
83
84     float damage;
85     int bloody;
86     float blooddrip;
87     float blooddripdelay;
88
89     float rotation1;
90     float rotation2;
91     float rotation3;
92     float bigrotation;
93     float bigtilt;
94     float bigtilt2;
95     float smallrotation;
96     float smallrotation2;
97 private:
98     int type;
99
100     XYZ oldtippoint;
101     XYZ oldposition;
102     int oldowner;
103     bool onfire;
104     float flamedelay;
105     float mass;
106     float tipmass;
107     float length;
108     float drawhowmany;
109
110     XYZ lastdrawnposition;
111     XYZ lastdrawntippoint;
112     float lastdrawnrotation1;
113     float lastdrawnrotation2;
114     float lastdrawnrotation3;
115     float lastdrawnbigrotation;
116     float lastdrawnbigtilt;
117     float lastdrawnbigtilt2;
118     float lastdrawnsmallrotation;
119     float lastdrawnsmallrotation2;
120     int lastdrawnanim;
121 };
122
123 class Weapons : public std::vector<Weapon>
124 {
125 public:
126     Weapons();
127
128     int Draw();
129     void DoStuff();
130 };
131
132 extern Weapons weapons;
133 #endif