Loading [MathJax]/extensions/MathMenu.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
f_op_actor_enemy.h
Go to the documentation of this file.
1#ifndef F_OP_ACTOR_ENEMY_H_
2#define F_OP_ACTOR_ENEMY_H_
3
6#include "d/actor/d_a_midna.h"
8#include "d/d_com_inf_game.h"
9#include "d/d_s_play.h"
10
11static int setMidnaBindEffect(fopEn_enemy_c* i_actorP, Z2CreatureEnemy* i_creatureP, cXyz* i_effPos,
12 cXyz* i_effSize) {
13 static GXColor e_prim[] = {
14 {0xFF, 0x78, 0x00, 0x00},
15 {0xFF, 0x64, 0x78, 0x00},
16 };
17 static GXColor e_env[] = {
18 {0x5A, 0x2D, 0x2D, 0x00},
19 {0x3C, 0x1E, 0x1E, 0x00},
20 };
21
23 fopAc_ac_c* a_this = (fopAc_ac_c*)i_actorP;
24
25 if (player->getMidnaActor() && player->checkWolfLock(a_this)) {
26 cXyz sp48;
27
28 BOOL darkworld_check;
29 if (dKy_darkworld_check()) {
30 darkworld_check = 1;
31 } else {
32 darkworld_check = 0;
33 }
34
35 if (i_actorP->getMidnaBindMode() == 0) {
36 i_actorP->setMidnaBindMode(1);
37
38 csXyz sp68;
39 MTXCopy(player->getMidnaActor()->getMtxHairTop(), mDoMtx_stack_c::get());
40
41 cXyz sp54(nREG_F(8) + 100.0f, nREG_F(9), nREG_F(10));
42 mDoMtx_stack_c::multVec(&sp54, &sp48);
43
44 cXyz sp60 = sp48 - *i_effPos;
45
46 sp68.y = cM_atan2s(sp60.x, sp60.z);
47 sp68.x = -cM_atan2s(sp60.y, JMAFastSqrt(sp60.x * sp60.x + sp60.z * sp60.z));
48 sp68.z = 0;
49
51 0x29B, i_effPos, &a_this->tevStr, &sp68, i_effSize, 0xFF, NULL,
52 fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check], &e_env[darkworld_check], NULL);
53
54 if (emitter != NULL) {
55 emitter->setGlobalParticleHeightScale((JREG_F(7) + 0.01f) * sp60.abs());
56 }
57
58 dComIfGp_particle_set(0x29C, i_effPos, &a_this->tevStr, &a_this->shape_angle, i_effSize,
59 0xFF, NULL, fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check],
60 &e_env[darkworld_check], NULL);
61
63 }
64
65 for (int i = 0; i < 3; i++) {
66 static u16 eff_id[] = {0x29D, 0x29E, 0x29F};
67
68 u32* bind_id = i_actorP->getMidnaBindID(i);
69 *bind_id = dComIfGp_particle_set(*bind_id, eff_id[i], i_effPos, &a_this->tevStr,
70 &a_this->shape_angle, i_effSize, 0xFF, NULL,
71 fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check],
72 &e_env[darkworld_check], NULL);
73 }
74
76 return 1;
77 }
78
79 i_actorP->setMidnaBindMode(0);
80 return 0;
81}
82
83#endif
f32 JMAFastSqrt(register f32 input)
Definition JMath.h:34
@ Z2SE_MIDNA_BIND_LOCK_ON
Definition Z2SeMgr.h:1706
@ Z2SE_MIDNA_BIND_LOCK_SUS
Definition Z2SeMgr.h:1707
s16 cM_atan2s(f32 y, f32 x)
Definition c_math.cpp:118
Definition JPAEmitter.h:100
void setGlobalParticleHeightScale(f32 height)
Definition JPAEmitter.h:157
Definition Z2Creature.h:37
virtual Z2SoundHandlePool * startCreatureSound(JAISoundID, u32, s8)
Definition Z2Creature.cpp:420
virtual Z2SoundHandlePool * startCreatureSoundLevel(JAISoundID, u32, s8)
Definition Z2Creature.cpp:474
MtxP getMtxHairTop()
Definition d_a_midna.h:313
Definition f_op_actor.h:255
u8 getMidnaBindMode()
Definition f_op_actor.h:272
void setMidnaBindMode(u8 i_bindMode)
Definition f_op_actor.h:292
u32 * getMidnaBindID(int i_idx)
Definition f_op_actor.h:271
static SECTION_DATA u8 e_env[8]
Definition d_a_b_ds.cpp:108
static SECTION_DATA u8 e_prim[8]
Definition d_a_b_ds.cpp:100
static SECTION_DATA u8 eff_id[6+2]
Definition d_a_b_ds.cpp:116
static void dComIfGp_particle_set(u16 param_0, cXyz const *param_1, csXyz const *param_2, cXyz const *param_3)
Definition d_a_e_warpappear.cpp:428
static void daPy_getPlayerActorClass()
Definition d_a_mg_rod.cpp:2701
bool dKy_darkworld_check()
Definition d_kankyo.cpp:6572
int i
Definition e_pow.c:165
static int setMidnaBindEffect(fopEn_enemy_c *i_actorP, Z2CreatureEnemy *i_creatureP, cXyz *i_effPos, cXyz *i_effSize)
Definition f_op_actor_enemy.h:11
s8 fopAcM_GetRoomNo(const fopAc_ac_c *i_actor)
Definition f_op_actor_mng.h:142
s16 x
Definition c_sxyz.h:7
s16 z
Definition c_sxyz.h:7
s16 y
Definition c_sxyz.h:7
f32 z
Definition mtx.h:11
f32 x
Definition mtx.h:11
f32 y
Definition mtx.h:11
Definition d_menu_dmap_map.cpp:90
Definition d_a_hozelda.cpp:20
f32 abs() const
Definition c_xyz.h:122
Definition d_a_hozelda.cpp:161
Definition d_a_npc_cd.cpp:15
static daMidna_c * getMidnaActor()
Definition d_a_player.h:1094
virtual BOOL checkWolfLock(fopAc_ac_c *) const
Definition d_a_hozelda.cpp:74
dKy_tevstr_c tevStr
Definition f_op_actor.h:209
csXyz shape_angle
Definition f_op_actor.h:222
static MtxP get()
Definition m_Do_mtx.h:226
static void multVec(const Vec *a, Vec *b)
Definition m_Do_mtx.h:249
int BOOL
Definition types.h:30
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7