]> git.jsancho.org Git - lugaru.git/blob - Weapons.hpp
2897cfb9aa0ffcf4119da603dbe3cb0f30e49b39
[lugaru.git] / 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/Quaternions.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     void Draw();
61     void DoStuff(int);
62
63     int getType() {
64         return type;
65     }
66     void setType(int);
67
68     void drop(XYZ velocity, XYZ tipvelocity, bool sethitsomething = true);
69     void thrown(XYZ velocity, bool sethitsomething = true);
70
71     int owner;
72     XYZ position;
73     XYZ tippoint;
74     XYZ velocity;
75     XYZ tipvelocity;
76     bool missed;
77     bool hitsomething;
78     float freetime;
79     bool firstfree;
80     bool physics;
81
82     float damage;
83     int bloody;
84     float blooddrip;
85     float blooddripdelay;
86
87     float rotation1;
88     float rotation2;
89     float rotation3;
90     float bigrotation;
91     float bigtilt;
92     float bigtilt2;
93     float smallrotation;
94     float smallrotation2;
95 private:
96     int type;
97
98     XYZ oldtippoint;
99     XYZ oldposition;
100     int oldowner;
101     bool onfire;
102     float flamedelay;
103     float mass;
104     float tipmass;
105     float length;
106     float drawhowmany;
107
108     XYZ lastdrawnposition;
109     XYZ lastdrawntippoint;
110     float lastdrawnrotation1;
111     float lastdrawnrotation2;
112     float lastdrawnrotation3;
113     float lastdrawnbigrotation;
114     float lastdrawnbigtilt;
115     float lastdrawnbigtilt2;
116     float lastdrawnsmallrotation;
117     float lastdrawnsmallrotation2;
118     int lastdrawnanim;
119 };
120
121 class Weapons : public std::vector<Weapon>
122 {
123 public:
124     Weapons();
125
126     int Draw();
127     void DoStuff();
128 };
129
130 extern Weapons weapons;
131 #endif