Skip to content

Commit ecf6822

Browse files
unknownunknown
unknown
authored and
unknown
committed
add damage guard sound fx
1 parent 6d0473e commit ecf6822

File tree

3 files changed

+68
-5
lines changed

3 files changed

+68
-5
lines changed

ActorStateMachine.cpp

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
extern char debug[1024];
44
extern SCENEid sID;
5+
//extern WORLDid gID;
6+
extern AUDIOid audioG;
7+
extern AUDIOid audioD;
58
using namespace std;
69
#define MOVE_LENGTH 20.0
710

@@ -15,6 +18,12 @@ ActorStateMachine::~ActorStateMachine(void)
1518
FnScene scene;
1619
scene.Object(sID);
1720
scene.DeleteObject(this->bloodID);
21+
/*
22+
FnWorld gw;
23+
gw.Object(gID);
24+
gw.DeleteAudio(audioG);
25+
gw.DeleteAudio(audioD);
26+
*/
1827
}
1928

2029
ActorStateMachine::ActorStateMachine(ACTORid character, char * ActionFilename){
@@ -27,6 +36,25 @@ ActorStateMachine::ActorStateMachine(ACTORid character, char * ActionFilename){
2736
this->effectiveAttack = FALSE;
2837
this->initActionIDMap(ActionFilename);
2938
this->initLife();
39+
/*
40+
FnWorld gw;
41+
gw.Object(gID);
42+
gw.SetAudioPath("Data\\Audio");
43+
audioG = gw.CreateAudio();
44+
FnAudio audio;
45+
audio.Object(audioG);
46+
BOOL beA = audio.Load("guard"); // au_bullet.hit1.wav
47+
if (beA == FALSE){
48+
sprintf(debug, "%s guard load failed\n", debug);
49+
}
50+
51+
audioD = gw.CreateAudio();
52+
audio.Object(audioD);
53+
beA = audio.Load("damage"); // au_bullet.hit1.wav
54+
if (beA == FALSE){
55+
sprintf(debug, "%s damage load failed\n", debug);
56+
}
57+
*/
3058
}
3159

3260
BOOL ActorStateMachine::initLife(){
@@ -360,6 +388,16 @@ int ActorStateMachine::AttackEnemy(float enemyPos[3], BOOL *beOutShot){
360388
}
361389

362390
void ActorStateMachine::TakeDamage(float damage, BOOL beShot, float *attackerPos ){
391+
if (this->state == STATEGUARD){
392+
FnAudio audio;
393+
audio.Object(audioG);
394+
audio.Play(ONCE);
395+
return;
396+
}else{
397+
FnAudio audio;
398+
audio.Object(audioD);
399+
audio.Play(ONCE);
400+
}
363401
FnActor actor;
364402
actor.Object(character);
365403
float pos[3];
@@ -372,9 +410,7 @@ void ActorStateMachine::TakeDamage(float damage, BOOL beShot, float *attackerPos
372410
newDir[1] = attackerPos[1] - pos[1];
373411
newDir[2] = 0.0f;
374412
actor.SetWorldDirection(newDir,NULL);
375-
//if (beShot == TRUE){
376-
actor.MoveForward(-OUTSHOT_DIS,TRUE, FALSE, 0.0, TRUE);
377-
//}
413+
actor.MoveForward(-OUTSHOT_DIS,TRUE, FALSE, 0.0, TRUE);
378414
actor.SetWorldDirection(dir,NULL);
379415
}
380416
this->life -= damage;

ActorStateMachine.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ typedef int ATTACK_CODE;
2323
#define MAX_LIFE 1000.0
2424
#define ROBOT_ATTACKRANGE 18000.0
2525

26+
#define STUCK_SHOT 0
27+
#define SMALL_SHOT 1
28+
#define BIG_SHOT 2
29+
typedef int SHOT_CODE;
30+
2631
// actor free meaning it can do anything by the controller.
2732
// actor stay meaning that it can't be move beacuse of being attacked.
2833

@@ -39,6 +44,8 @@ class ActorStateMachine
3944
int lastAttackIndex;
4045
BOOL attackDisable;
4146
BOOL startAttack;
47+
//AUDIOid audioG;//guard
48+
//AUDIOid audioD;//damage
4249
int life;
4350
BOOL initActionIDMap(char *ActionFilename);
4451
std::map<std::string, ACTIONid> ActionIDMap;

Main.cpp

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ AIControl *npc;
3636
BattleRoom *bRoom;
3737
LyubuStateMachine * lyubuState;
3838
AUDIOid audioBG;
39+
AUDIOid audioG;//guard
40+
AUDIOid audioD;//damage
3941
eF3DFX *fx00 = NULL;
4042

4143
char debug[1024] = "\0";
@@ -370,9 +372,22 @@ BOOL initFX(){
370372
audioBG = gw.CreateAudio();
371373
FnAudio audio;
372374
audio.Object(audioBG);
373-
BOOL beA = audio.Load("dmc4");
374-
audio.Play(ONCE);
375+
BOOL beA = audio.Load("battle");
376+
audio.Play(LOOP);
377+
378+
audioD = gw.CreateAudio();
379+
audio.Object(audioD);
380+
beA = audio.Load("damage");
381+
if (beA == FALSE){
382+
sprintf(debug, "%s damage load failed\n", debug);
383+
}
375384

385+
audioG = gw.CreateAudio();
386+
audio.Object(audioG);
387+
beA = audio.Load("guard");
388+
if (beA == FALSE){
389+
sprintf(debug, "%s guard load failed\n", debug);
390+
}
376391
return TRUE;
377392
}
378393

@@ -387,6 +402,11 @@ void Reset(WORLDid gID, BYTE code, BOOL value){
387402
for (i = 0; i < robbers_count; i++) {
388403
scene.DeleteActor(robbers[i]);
389404
}
405+
FnWorld gw;
406+
gw.Object(gID);
407+
gw.DeleteAudio(audioG);
408+
gw.DeleteAudio(audioD);
409+
gw.DeleteAudio(audioBG);
390410
debug[0] = '\0';
391411
ActorStateMachine * lyubuState = kc->mainChar;
392412
delete lyubuState;

0 commit comments

Comments
 (0)