-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsecond_weapon.h
219 lines (168 loc) · 4.25 KB
/
second_weapon.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#pragma once
#include "weapon.h"
#define INIT_COOLTIME_SPEAR 80
#define INIT_COOLTIME_FRAIL 120
#define INIT_COOLTIME_BOOK 60
#define INIT_COOLTIME_BOOK_LEVEL7 300
#define INIT_ROTATION_SPEAR 60.0f
#define INIT_ROTATION_FRAIL 60.0f
#define INIT_ROTATION_BOOK 90.0f
#define INIT_DAMAGE_SPEAR 10
#define INIT_DAMAGE_FRAIL 10
#define INIT_DAMAGE_BOOK 5
#define SPEAR_MAX_MOVE 23.0f
#define MAX_BULLETS_NUM 512
#define FRAIL_RADIUS 30
#define FRAIL_RADIUS_LEVEL8 45
enum second_weapon_type
{
spear,
frail,
book,
};
struct Bullet
{
Vector v;
Location l;
bool flg;
//level8用
float rot; //回転
float relativeRot; //プレイヤーのベクトルを中心とした回転
float distance;
};
struct Thunder
{
Location l;
bool flg;
//int img[5]; //アニメーションの枚数分
int fps = 0;
bool soundflg;
};
class second_weapon
{
private:
int weaponType;
int weaponLevel;
bool levelUpFlg;
Location location;
Vector weaponVec;
Vector baseVec;
Vector unitVec;
Vector playerVector;
float collisionX, collisionY; //回転後の座標、当たり判定に使う
Vector collisionVec;
float rot; //回転
float relativeRot; //プレイヤーのベクトルを中心とした回転
float maxRot; //最大どれくらい回転するか
float weaponAngle;
int coolTime; //クールタイムを計算する変数
int maxCoolTime; //クールタイムの値
bool isAttacking; //攻撃中かどうか
int damage;
int spear_img;
int frail_img;
int book_img;
int bullet_img;
int ironball_img;
int barrier_img[2];
int attackbuf_img;
int crack_img[6];
int thunder_img[5];
int arrow_img;
int cooltime_img;
int spear_level7_img;
int spear_level8_img;
int bullet_level8_img;
float tmp, tmp1;
float spear_move_cnt;
Vector spear_move;
Location spearlocation;
Thunder thunder[64];
float thunderRadius;
float thunderDamage;
float frailRadius;
float frailRadiusBase;
Vector frailVec;
Location frailLcation;
Location frailLcationCursor;
float frailLength;
float frailLengthCursor;
bool isFrailAttacking;
float frailRate;
int frailFps;
//強化後の増えたフレイルの当たり判定
Location frailLocation1;
Vector frailVec1;
Location frailLocation2;
Vector frailVec2;
float level7FrailRot;
bool level7FrailFlg;
float frailDistance;
float level8FrailRadius;
Vector book_move;
Bullet bullets[MAX_BULLETS_NUM];
bool barrierFlg;
float attackBufRate;
int Bullet_speed;
float P_aiming_radiusX;
float P_aiming_radiusY;
int totalDamage;
bool soundFlg;
public:
second_weapon();
second_weapon(int type);
~second_weapon();
void Update(float cursorX, float cursorY, Location playerLocation, Vector playerVec, Player* player);
void Draw() const;
void SetWeaponType(int type);
void LevelState();
bool WeaponCollision(Location enemyLocation, float radius);
bool SpearAnim();
bool SpearThunder(); //雷が降るまで、振り切ったタイミングでtrue
bool SpearThunderCollision(Location enemyLocation, float radius); //雷の当たり判定
void SpawnBookBullets(int num);
void MoveBookBullet();
bool FrailAnim();
bool ThreeFrailAnim();
//引数でどこから呼び出されたか指定する(0,second_weapon.cpp 1,scene_game.cpp)
void InitWeapon(int type);
//武器レベルをセット
void SetWeaponLevel(int num) {
weaponLevel = num;
LevelState();
}
void SetThunderLocation(Location l) {
for (int i = 0; i < 64; i++){
if (!thunder[i].flg) {
thunder[i].fps = 0;
thunder[i].l = l;
thunder[i].flg = true;
break;
}
}
}
void SetBarrierFlg(bool f) {
barrierFlg = f;
}
//武器レベルを取得
int GetWeaponLevel() { return weaponLevel; }
bool GetLevelUpFlg() { return levelUpFlg; }
int GetDamage() { return damage; }
int GetWeaponType() { return weaponType; }
int GetCoolTime() { return coolTime; }
bool GetBarrierFlg() { return barrierFlg; }
float GetThunderDamage() { return thunderDamage; }
float GetAttackBufRate() { return attackBufRate; }
// 追加 フレイルの照準
float GetP_aiming_radiusX() { return P_aiming_radiusX; }
float GetP_aiming_radiusY() { return P_aiming_radiusY; }
float GetFrailRadius() { return frailRadius; }
int GetBullet_speed() { return Bullet_speed; }
// レベルアップ画面で使用
int GetMaxCoolTime() { return maxCoolTime; }
float GetMaxRot() { return maxRot; }
int GetBulletSpeed() { return Bullet_speed; }
int GetTotalDamage() { return totalDamage; }
void AddTotalDamage();
void AddTotalDamageThunder();
};