mirror of
https://github.com/zeldaret/ss
synced 2026-05-25 07:23:00 -04:00
128 lines
3.6 KiB
C++
128 lines
3.6 KiB
C++
#include "d/d_player_act.h"
|
|
|
|
#include "common.h"
|
|
#include "d/a/d_a_item.h"
|
|
#include "d/a/d_a_itembase.h"
|
|
#include "d/a/d_a_player.h"
|
|
#include "d/a/obj/d_a_obj_base.h"
|
|
#include "m/m_angle.h"
|
|
#include "m/m_color.h"
|
|
#include "m/m_vec.h"
|
|
#include "toBeSorted/event_manager.h"
|
|
|
|
mVec3_c daPlayerActBase_c::sPos1(mVec3_c::Zero);
|
|
mVec3_c daPlayerActBase_c::sPos2(mVec3_c::Zero);
|
|
mAng daPlayerActBase_c::sRot1(0);
|
|
mAng daPlayerActBase_c::sRot2(0);
|
|
const f32 daPlayerActBase_c::sPushRelatedConstant = 75.0f;
|
|
|
|
int daPlayerActBase_c::preExecute() {
|
|
if (dAcObjBase_c::preExecute() == NOT_READY) {
|
|
return NOT_READY;
|
|
}
|
|
someFlags_0x350 = 0;
|
|
someFlags_0x354 = 0;
|
|
return SUCCEEDED;
|
|
}
|
|
|
|
void daPlayerActBase_c::postExecute(MAIN_STATE_e state) {
|
|
if (state != CANCELED) {
|
|
someFlags_0x358 = 0;
|
|
mForceOrPreventActionFlags = 0;
|
|
}
|
|
dAcObjBase_c::postExecute(state);
|
|
}
|
|
|
|
bool daPlayerActBase_c::isInEvent() {
|
|
return EventManager::isInEvent();
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingLeft() const {
|
|
return mAttackDirection == ATTACK_SPIN_LEFT || mAttackDirection == ATTACK_SWING_LEFT;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingRight() const {
|
|
return mAttackDirection == ATTACK_SPIN_RIGHT || mAttackDirection == ATTACK_SWING_RIGHT;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingDown() const {
|
|
return mAttackDirection == ATTACK_SWING_DOWN || mAttackDirection == ATTACK_SPIN_DOWN ||
|
|
mAttackDirection == ATTACK_JUMP_SLASH;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingUp() const {
|
|
return mAttackDirection == ATTACK_SPIN_UP || mAttackDirection == ATTACK_SWING_UP;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingStab() const {
|
|
return mAttackDirection == ATTACK_STAB;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingSpinHorizontal() const {
|
|
return mAttackDirection == ATTACK_SPIN_LEFT || mAttackDirection == ATTACK_SPIN_RIGHT;
|
|
}
|
|
|
|
bool daPlayerActBase_c::isAttackingSpinVertical() const {
|
|
return mAttackDirection == ATTACK_SPIN_DOWN || mAttackDirection == ATTACK_SPIN_UP;
|
|
}
|
|
|
|
void daPlayerActBase_c::setBonkRelatedAnimFlag(bool b) {
|
|
if (b) {
|
|
field_0x360 |= 2;
|
|
} else {
|
|
field_0x360 |= 1;
|
|
}
|
|
}
|
|
|
|
void daPlayerActBase_c::setPosRot(const mVec3_c *pos, const mAng3_c *rot, bool force, UNKWORD, UNKWORD) {
|
|
if (isInEvent() || force) {
|
|
mStts.ClrCcMove();
|
|
if (pos != nullptr) {
|
|
mPosition = *pos;
|
|
mOldPosition = mPosition;
|
|
mVelocity.y = 0.0f;
|
|
}
|
|
if (rot != nullptr) {
|
|
mRotation = *rot;
|
|
mAngle.y = mRotation.y;
|
|
}
|
|
}
|
|
}
|
|
|
|
void daPlayerActBase_c::setPosYRot(const mVec3_c &pos, mAng rot, bool force, UNKWORD a4, UNKWORD a5) {
|
|
mAng3_c ang(0, rot, 0);
|
|
setPosRot(&pos, &ang, force, a4, a5);
|
|
}
|
|
|
|
void daPlayerActBase_c::setTransform(const mMtx_c &mtx, bool force, UNKWORD a4, UNKWORD a5) {
|
|
mVec3_c translate;
|
|
mtx.getTranslation(translate);
|
|
mAng3_c rot;
|
|
mtx.toRot(rot);
|
|
setPosRot(&translate, &rot, force, a4, a5);
|
|
}
|
|
|
|
extern "C" bool fn_80213090(dAcEnBase_c *);
|
|
|
|
bool daPlayerActBase_c::someTargetedActorCheck() const {
|
|
return fn_80213090(getTargetedActor1());
|
|
}
|
|
|
|
mAng daPlayerActBase_c::fn_8005BA90() {
|
|
return dAcPy_c::LINK2->fn_8023B520();
|
|
}
|
|
|
|
mAng daPlayerActBase_c::fn_8005BAA0() {
|
|
return dAcPy_c::LINK2->fn_8023B590();
|
|
}
|
|
|
|
const mColor &daPlayerActBase_c::getEarringsColor() {
|
|
static const mColor sNoFireshieldEarrings = mColor(45, 80, 127, 255);
|
|
static const mColor sFireshieldEarrings = mColor(222, 57, 20, 255);
|
|
if (dAcItem_c::hasItem(ITEM_FIRESHIELD_EARRINGS)) {
|
|
return sFireshieldEarrings;
|
|
} else {
|
|
return sNoFireshieldEarrings;
|
|
}
|
|
}
|