mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-08 12:17:12 -04:00
c_cc_s OK, c_cc_d inlines & enums work
This commit is contained in:
+1
-1
@@ -507,7 +507,7 @@ config.libs = [
|
||||
Object(Matching, "SSystem/SComponent/c_API.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_API_graphic.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_cc_d.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_cc_s.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_cc_s.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_counter.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_list.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_list_iter.cpp"),
|
||||
|
||||
@@ -52,6 +52,22 @@ enum cCcD_ObjAtType {
|
||||
/* 0xFFFFFFFF */ AT_TYPE_ALL = ~0,
|
||||
};
|
||||
|
||||
enum AtSPrm_e {
|
||||
AT_SPRM_SET = 1,
|
||||
AT_SPRM_NO_TG_HIT_INF_SET = 0x10,
|
||||
};
|
||||
|
||||
enum TgSPrm_e {
|
||||
TG_SPRM_SET = 1,
|
||||
TG_SPRM_NO_AT_HIT_INF_SET = 0x10,
|
||||
};
|
||||
|
||||
enum CoSPrm_e {
|
||||
CO_SPRM_SET = 1,
|
||||
CO_SPRM_NO_CRR = 0x100,
|
||||
CO_SPRM_NO_CO_HIT_INF_SET = 0x200,
|
||||
};
|
||||
|
||||
class cCcD_ShapeAttr {
|
||||
public:
|
||||
/* 0x00 */ cM3dGAab mAab;
|
||||
@@ -345,7 +361,7 @@ public:
|
||||
}
|
||||
void PlusDmg(int dmg) { mDmg = dmg; }
|
||||
u8 GetDmg() { return mDmg; }
|
||||
f32 GetWeightF() const;
|
||||
f32 GetWeightF() const { return (s32)mWeight; }
|
||||
virtual void ClrAt() {}
|
||||
virtual void ClrTg() { mDmg = 0; }
|
||||
|
||||
@@ -369,13 +385,6 @@ protected:
|
||||
/* 0x08 */ cCcD_Obj* mHitObj;
|
||||
/* 0x0C vtable */
|
||||
public:
|
||||
enum CoSPrm_e {
|
||||
CO_SPRM_SET = 1,
|
||||
CO_SPRM_NO_CRR = 0x100,
|
||||
CO_SPRM_NO_CO_HIT_INF_SET = 0x200,
|
||||
CO_SPRM_SAME_ACTOR_HIT = 0x400,
|
||||
};
|
||||
|
||||
cCcD_ObjCommonBase() { ct(); }
|
||||
virtual ~cCcD_ObjCommonBase() {}
|
||||
void ct();
|
||||
@@ -390,6 +399,7 @@ public:
|
||||
void OnSPrmBit(u32 flag) { mSPrm |= flag; }
|
||||
void OffSPrmBit(u32 flag) { mSPrm &= ~flag; }
|
||||
void ClrRPrm(u32 flag) { mRPrm &= ~flag; }
|
||||
void SetHitObj(cCcD_Obj* obj) { mHitObj = obj; }
|
||||
|
||||
void Set(cCcD_SrcObjCommonBase const& src) {
|
||||
mSPrm = src.mSPrm;
|
||||
@@ -402,7 +412,10 @@ class cCcD_ObjAt : public cCcD_ObjCommonBase {
|
||||
public:
|
||||
cCcD_ObjAt() { mType = 0; }
|
||||
virtual ~cCcD_ObjAt() {}
|
||||
void SetHit(cCcD_Obj*);
|
||||
void SetHit(cCcD_Obj* obj) {
|
||||
SetRPrm(1);
|
||||
SetHitObj(obj);
|
||||
}
|
||||
void Set(cCcD_SrcObjAt const& src) {
|
||||
cCcD_ObjCommonBase::Set(src.mBase);
|
||||
mType = src.mType;
|
||||
@@ -410,13 +423,13 @@ public:
|
||||
}
|
||||
void ClrHit() { ClrRPrm(1); ClrObj(); }
|
||||
int GetType() const { return mType; }
|
||||
u32 GetGrp() const { return MskSPrm(0x1E); }
|
||||
bool ChkSet() const { return MskSPrm(1); }
|
||||
u32 GetGrp() const { return MskSPrm(0xE); }
|
||||
bool ChkSet() const { return MskSPrm(AT_SPRM_SET); }
|
||||
u8 GetAtp() const { return mAtp; }
|
||||
u32 MskType(u32 msk) const { return mType & msk; }
|
||||
void SetType(u32 type) { mType = type; }
|
||||
void SetAtp(int atp) { mAtp = atp; }
|
||||
void ClrSet() { OffSPrmBit(1); }
|
||||
void ClrSet() { OffSPrmBit(AT_SPRM_SET); }
|
||||
void OnHitBit() { SetRPrm(1); }
|
||||
void OffHitBit() { ClrRPrm(1); }
|
||||
u32 ChkHit() { return MskRPrm(1); }
|
||||
@@ -438,12 +451,15 @@ public:
|
||||
}
|
||||
void SetGrp(u32);
|
||||
void ClrHit() { ClrRPrm(1); ClrObj(); }
|
||||
void SetHit(cCcD_Obj*);
|
||||
void SetHit(cCcD_Obj* obj) {
|
||||
SetRPrm(1);
|
||||
SetHitObj(obj);
|
||||
}
|
||||
int GetType() const { return mType; }
|
||||
void SetType(u32 type) { mType = type; }
|
||||
u32 GetGrp() const { return MskSPrm(0x1E); }
|
||||
bool ChkSet() const { return MskSPrm(1); }
|
||||
void ClrSet() { OffSPrmBit(1); }
|
||||
u32 GetGrp() const { return MskSPrm(0xE); }
|
||||
bool ChkSet() const { return MskSPrm(TG_SPRM_SET); }
|
||||
void ClrSet() { OffSPrmBit(TG_SPRM_SET); }
|
||||
u32 ChkHit() { return MskRPrm(1); }
|
||||
|
||||
private:
|
||||
@@ -455,17 +471,20 @@ STATIC_ASSERT(0x14 == sizeof(cCcD_ObjTg));
|
||||
class cCcD_ObjCo : public cCcD_ObjCommonBase {
|
||||
public:
|
||||
virtual ~cCcD_ObjCo() {}
|
||||
void SetHit(cCcD_Obj*);
|
||||
void SetHit(cCcD_Obj* obj) {
|
||||
SetRPrm(1);
|
||||
SetHitObj(obj);
|
||||
}
|
||||
void ClrHit() { ClrRPrm(1); ClrObj(); }
|
||||
void SetIGrp(u32);
|
||||
void SetVsGrp(u32);
|
||||
u32 GetGrp() const { return MskSPrm(0x1E); }
|
||||
bool ChkSet() const { return MskSPrm(1); }
|
||||
bool ChkSet() const { return MskSPrm(CO_SPRM_SET); }
|
||||
u32 GetVsGrp() const { return MskSPrm(0x70); }
|
||||
u32 GetIGrp() const { return MskSPrm(0xE); }
|
||||
u32 ChkNoCrr() const { return MskSPrm(0x100); }
|
||||
u32 ChkNoCrr() const { return MskSPrm(CO_SPRM_NO_CRR); }
|
||||
u32 ChkSph3DCrr() const { return MskSPrm(0x80); }
|
||||
void ClrSet() { OffSPrmBit(1); }
|
||||
void ClrSet() { OffSPrmBit(CO_SPRM_SET); }
|
||||
u32 ChkHit() { return MskRPrm(1); }
|
||||
|
||||
void Set(cCcD_SrcObjCo const& src) {
|
||||
@@ -495,14 +514,12 @@ public:
|
||||
bool ChkTgSet() const { return mObjTg.ChkSet(); }
|
||||
bool ChkAtSet() const { return mObjAt.ChkSet(); }
|
||||
bool ChkCoSet() const { return mObjCo.ChkSet(); }
|
||||
u32 ChkCoSameActorHit() const { return mObjCo.MskSPrm(0x400); }
|
||||
u32 GetCoVsGrp() const { return mObjCo.GetVsGrp(); }
|
||||
u32 GetCoIGrp() const { return mObjCo.GetIGrp(); }
|
||||
u8 GetAtAtp() const { return mObjAt.GetAtp(); }
|
||||
u32 ChkAtNoTgHitInfSet() const { return mObjAt.MskSPrm(0x20); }
|
||||
u32 ChkTgNoAtHitInfSet() const { return mObjTg.MskSPrm(0x20); }
|
||||
u32 ChkCoNoCoHitInfSet() const { return mObjCo.MskSPrm(0x200); }
|
||||
bool ChkTgNoSlingHitInfSet() const { return mObjTg.MskSPrm(0x40); }
|
||||
u32 ChkAtNoTgHitInfSet() const { return mObjAt.MskSPrm(AT_SPRM_NO_TG_HIT_INF_SET); }
|
||||
u32 ChkTgNoAtHitInfSet() const { return mObjTg.MskSPrm(TG_SPRM_NO_AT_HIT_INF_SET); }
|
||||
u32 ChkCoNoCoHitInfSet() const { return mObjCo.MskSPrm(CO_SPRM_NO_CO_HIT_INF_SET); }
|
||||
void SetAtHit(cCcD_Obj* obj) { mObjAt.SetHit(obj); }
|
||||
void SetTgHit(cCcD_Obj* obj) { mObjTg.SetHit(obj); }
|
||||
void SetCoHit(cCcD_Obj* obj) { mObjCo.SetHit(obj); }
|
||||
@@ -513,7 +530,7 @@ public:
|
||||
void OffAtSPrmBit(u32 flag) { mObjAt.OffSPrmBit(flag); }
|
||||
void OffCoSPrmBit(u32 flag) { mObjCo.OffSPrmBit(flag); }
|
||||
void SetAtType(u32 type) { mObjAt.SetType(type); }
|
||||
void OnAtSetBit() { mObjAt.OnSPrmBit(1); }
|
||||
void OnAtSetBit() { mObjAt.OnSPrmBit(AT_SPRM_SET); }
|
||||
void SetAtAtp(int atp) { mObjAt.SetAtp(atp); }
|
||||
void OffCoSetBit() { mObjCo.ClrSet(); }
|
||||
void SetTgType(u32 type) { mObjTg.SetType(type); }
|
||||
@@ -522,9 +539,9 @@ public:
|
||||
void OffAtSetBit() { mObjAt.ClrSet(); }
|
||||
void OnAtHitBit() { mObjAt.OnHitBit(); }
|
||||
void OffAtHitBit() { mObjAt.OffHitBit(); }
|
||||
void OnTgSetBit() { mObjTg.OnSPrmBit(1); }
|
||||
void OnTgSetBit() { mObjTg.OnSPrmBit(TG_SPRM_SET); }
|
||||
void OffTgSetBit() { mObjTg.ClrSet(); }
|
||||
void OnCoSetBit() { mObjCo.OnSPrmBit(1); }
|
||||
void OnCoSetBit() { mObjCo.OnSPrmBit(CO_SPRM_SET); }
|
||||
void OffAtVsPlayerBit() { mObjAt.OffSPrmBit(0xC); }
|
||||
void OnAtVsPlayerBit() { mObjAt.OnSPrmBit(0xC); }
|
||||
void OnCoSPrmBit(u32 flag) { mObjCo.OnSPrmBit(flag); }
|
||||
@@ -559,7 +576,7 @@ public:
|
||||
|
||||
cCcD_Stts* GetStts() { return mStts; }
|
||||
void SetStts(cCcD_Stts* stts) { mStts = stts; }
|
||||
fopAc_ac_c* GetAc() { return GetStts() != NULL ? GetStts()->GetActor() : NULL; }
|
||||
fopAc_ac_c* GetAc() { return GetStts() == NULL ? NULL : GetStts()->GetActor(); }
|
||||
cCcD_DivideInfo& GetDivideInfo() { return mDivideInfo; }
|
||||
cCcD_DivideInfo* GetPDivideInfo() { return &mDivideInfo; }
|
||||
int ChkBsRevHit() const { return mFlags & 2; }
|
||||
|
||||
@@ -26,7 +26,15 @@ public:
|
||||
cCcS();
|
||||
void Ct();
|
||||
void Dt();
|
||||
WeightType GetWt(u8) const;
|
||||
WeightType GetWt(u8 weight) const {
|
||||
if (weight == 0xFF) {
|
||||
return WeightType_0;
|
||||
}
|
||||
if (weight == 0xFE) {
|
||||
return WeightType_1;
|
||||
}
|
||||
return WeightType_2;
|
||||
}
|
||||
void Set(cCcD_Obj*);
|
||||
void ClrCoHitInf();
|
||||
void ClrTgHitInf();
|
||||
|
||||
@@ -38,6 +38,18 @@ public:
|
||||
bool Cross(const cM3dGSph *param_1) {
|
||||
return cM3d_Cross_AabSph(this, param_1);
|
||||
}
|
||||
void CalcCenter(cXyz* pOut) const {
|
||||
VECAdd(&mMin, &mMax, pOut);
|
||||
VECScale(pOut, pOut, 0.5f);
|
||||
}
|
||||
void ClearForMinMax() {
|
||||
mMin.z = 1000000000.0f;
|
||||
mMin.y = 1000000000.0f;
|
||||
mMin.x = 1000000000.0f;
|
||||
mMax.z = -1000000000.0f;
|
||||
mMax.y = -1000000000.0f;
|
||||
mMax.x = -1000000000.0f;
|
||||
}
|
||||
}; // Size = 0x1C
|
||||
|
||||
STATIC_ASSERT(0x1C == sizeof(cM3dGAab));
|
||||
|
||||
+2
-5
@@ -305,11 +305,7 @@ public:
|
||||
u8 GetTgMtrl() { return mGObjTg.GetMtrl(); }
|
||||
fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); }
|
||||
void SetTgShieldFrontRangeYAngle(s16* angle) { mGObjTg.SetShieldFrontRangeYAngle(angle); }
|
||||
void OffTgWolfSpNoDamage() { mGObjTg.OffSPrm(0x800); }
|
||||
void OnTgWolfSpNoDamage() { mGObjTg.OnSPrm(0x800); }
|
||||
void SetTgHitMark(CcG_Tg_HitMark mark) { mGObjTg.SetHitMark(mark); }
|
||||
void OnTgSpShield() { mGObjTg.OnSPrm(0x40); }
|
||||
void OffTgSpShield() { mGObjTg.OffSPrm(0x40); }
|
||||
void OnTgShield() { mGObjTg.OnSPrm(0x1); }
|
||||
void OffTgShield() { mGObjTg.OffSPrm(0x1); }
|
||||
void OnTgShieldFrontRange() { mGObjTg.OnSPrm(0x8); }
|
||||
@@ -324,7 +320,8 @@ public:
|
||||
bool ChkAtStopNoConHit() { return mGObjAt.ChkSPrm(0x4); }
|
||||
bool ChkTgNoConHit() { return mGObjTg.ChkSPrm(2); }
|
||||
bool ChkTgStopNoConHit() { return mGObjTg.ChkSPrm(0x2000); }
|
||||
bool ChkCoNoCamHit() { return mGObjCo.ChkSPrm(2); }
|
||||
bool ChkCoAtLasso() { return mGObjCo.ChkSPrm(1); }
|
||||
bool ChkCoTgLasso() { return mGObjCo.ChkSPrm(2); }
|
||||
dCcD_HitCallback GetCoHitCallback() { return mGObjCo.GetHitCallback(); }
|
||||
dCcD_HitCallback GetAtHitCallback() { return mGObjAt.GetHitCallback(); }
|
||||
dCcD_HitCallback GetTgHitCallback() { return mGObjTg.GetHitCallback(); }
|
||||
|
||||
+4
-4
@@ -13,14 +13,14 @@ public:
|
||||
dCcS() {}
|
||||
void Ct();
|
||||
void Dt();
|
||||
bool ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*, int, cXyz const*);
|
||||
bool ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cXyz const*);
|
||||
bool ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*);
|
||||
bool ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*);
|
||||
void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*);
|
||||
int GetRank(u8);
|
||||
void ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*,
|
||||
dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*,
|
||||
dCcD_GStts*, cXyz*, bool);
|
||||
bool ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*);
|
||||
dCcD_GStts*, cXyz*);
|
||||
bool ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*);
|
||||
bool chkCameraPoint(cXyz const&, cCcD_ShapeAttr::Shape*, fopAc_ac_c*,
|
||||
fopAc_ac_c*);
|
||||
void DrawAfter();
|
||||
|
||||
@@ -4,11 +4,15 @@
|
||||
//
|
||||
|
||||
#include "SSystem/SComponent/c_cc_s.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f);
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
#define CHECK_PVEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v->x && v->x < 1.0e32f && -1.0e32f < v->y && v->y < 1.0e32f && -1.0e32f < v->z && v->z < 1.0e32f)
|
||||
|
||||
/* 80242C28-80242C50 .text __ct__4cCcSFv */
|
||||
cCcS::cCcS() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80242C50-80242CE4 .text Ct__4cCcSFv */
|
||||
@@ -93,29 +97,102 @@ void cCcS::ClrAtHitInf() {
|
||||
|
||||
/* 80242F94-802430BC .text ChkNoHitAtTg__4cCcSFP8cCcD_ObjP8cCcD_Obj */
|
||||
bool cCcS::ChkNoHitAtTg(cCcD_Obj* at, cCcD_Obj* tg) {
|
||||
/* Nonmatching - more complicated conditional */
|
||||
fopAc_ac_c * ac_at = at->GetAc();
|
||||
fopAc_ac_c * ac_tg = tg->GetAc();
|
||||
if ((ac_at == NULL || ac_tg == NULL || ac_at != ac_tg) && (at->GetAtGrp() & tg->GetTgGrp()) != 0) {
|
||||
return ChkNoHitGAtTg(at->GetGObjInf(), tg->GetGObjInf(), at->GetStts()->GetGStts(), tg->GetStts()->GetGStts());
|
||||
if ((ac_at != NULL && ac_tg != NULL && ac_at == ac_tg) ||
|
||||
(at->GetAtGrp() & tg->GetTgGrp()) == 0 ||
|
||||
(at->GetAtType() & tg->GetTgType()) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
return ChkNoHitGAtTg(at->GetGObjInf(), tg->GetGObjInf(), at->GetStts()->GetGStts(), tg->GetStts()->GetGStts());
|
||||
}
|
||||
|
||||
/* 802430BC-802432F8 .text ChkAtTg__4cCcSFv */
|
||||
void cCcS::ChkAtTg() {
|
||||
/* Nonmatching */
|
||||
cCcD_Obj** objTgEnd = mpObjTg + mObjTgCount;
|
||||
ClrAtHitInf();
|
||||
ClrTgHitInf();
|
||||
for (cCcD_Obj** pObjAt = mpObjAt; pObjAt < mpObjAt + mObjAtCount; ++pObjAt) {
|
||||
if (*pObjAt == NULL || !(*pObjAt)->ChkAtSet())
|
||||
continue;
|
||||
cCcD_ShapeAttr* atShapeAttr = (*pObjAt)->GetShapeAttr();
|
||||
if (atShapeAttr == NULL)
|
||||
continue;
|
||||
for (cCcD_Obj** pObjTg = mpObjTg; pObjTg < objTgEnd; ++pObjTg) {
|
||||
if (*pObjTg == NULL || !(*pObjTg)->ChkTgSet())
|
||||
continue;
|
||||
if (!(*pObjAt)->GetDivideInfo().Chk((*pObjTg)->GetDivideInfo()))
|
||||
continue;
|
||||
if (ChkNoHitAtTg(*pObjAt, *pObjTg))
|
||||
continue;
|
||||
cCcD_ShapeAttr* tgShapeAttr = (*pObjTg)->GetShapeAttr();
|
||||
if (tgShapeAttr == NULL)
|
||||
continue;
|
||||
static cXyz cross;
|
||||
bool didCross = atShapeAttr->CrossAtTg(*tgShapeAttr, &cross);
|
||||
bool anyBsRevHit = (*pObjAt)->ChkBsRevHit() || (*pObjTg)->ChkBsRevHit();
|
||||
if (!anyBsRevHit && didCross) {
|
||||
SetAtTgCommonHitInf(*pObjAt, *pObjTg, &cross);
|
||||
} else if (anyBsRevHit && !didCross) {
|
||||
cCcD_ShapeAttr* atShape2 = (*pObjAt)->GetShapeAttr();
|
||||
if (atShape2 == NULL) {
|
||||
cross.set(0.0f, 0.0f, 0.0f);
|
||||
} else {
|
||||
atShape2->GetWorkAab().CalcCenter(&cross);
|
||||
}
|
||||
SetAtTgCommonHitInf(*pObjAt, *pObjTg, &cross);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802432F8-802433A8 .text ChkNoHitCo__4cCcSFP8cCcD_ObjP8cCcD_Obj */
|
||||
bool cCcS::ChkNoHitCo(cCcD_Obj*, cCcD_Obj*) {
|
||||
/* Nonmatching */
|
||||
bool cCcS::ChkNoHitCo(cCcD_Obj* obj1, cCcD_Obj* obj2) {
|
||||
fopAc_ac_c* ac1 = obj1->GetAc();
|
||||
fopAc_ac_c* ac2 = obj2->GetAc();
|
||||
if (!(
|
||||
((ac1 == NULL || ac2 == NULL) || ac1 != ac2) &&
|
||||
(obj1->GetCoIGrp() & (obj2->GetCoVsGrp() >> 3)) &&
|
||||
((obj1->GetCoVsGrp() >> 3) & obj2->GetCoIGrp() && !ChkNoHitGCo(obj1, obj2))
|
||||
)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802433A8-8024352C .text ChkCo__4cCcSFv */
|
||||
void cCcS::ChkCo() {
|
||||
/* Nonmatching */
|
||||
ClrCoHitInf();
|
||||
if (mObjCoCount <= 1)
|
||||
return;
|
||||
cCcD_Obj** objCoEnd = mpObjCo + mObjCoCount;
|
||||
for (cCcD_Obj** objCo1 = mpObjCo; objCo1 < objCoEnd - 1; ++objCo1) {
|
||||
if (*objCo1 == NULL || !(*objCo1)->ChkCoSet())
|
||||
continue;
|
||||
cCcD_ShapeAttr* co1ShapeAttr = (*objCo1)->GetShapeAttr();
|
||||
if (co1ShapeAttr == NULL)
|
||||
continue;
|
||||
for (cCcD_Obj** objCo2 = objCo1 + 1; objCo2 < objCoEnd; ++objCo2) {
|
||||
if (*objCo2 == NULL || !(*objCo2)->ChkCoSet())
|
||||
continue;
|
||||
if (!(*objCo1)->GetDivideInfo().Chk((*objCo2)->GetDivideInfo()))
|
||||
continue;
|
||||
if (ChkNoHitCo(*objCo1, *objCo2))
|
||||
continue;
|
||||
cCcD_ShapeAttr* co2ShapeAttr = (*objCo2)->GetShapeAttr();
|
||||
if (objCo2 == NULL)
|
||||
continue;
|
||||
f32 cross_len = 0.0f;
|
||||
if (co1ShapeAttr->CrossCo(*co2ShapeAttr, &cross_len)) {
|
||||
cXyz& obj2CoCP = co2ShapeAttr->GetCoCP();
|
||||
cXyz& obj1CoCP = co1ShapeAttr->GetCoCP();
|
||||
SetCoCommonHitInf(*objCo1, &obj1CoCP, *objCo2, &obj2CoCP, cross_len);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8024352C-80243544 .text CalcTgPlusDmg__4cCcSFP8cCcD_ObjP8cCcD_ObjP9cCcD_SttsP9cCcD_Stts */
|
||||
@@ -127,23 +204,215 @@ void cCcS::CalcTgPlusDmg(cCcD_Obj* at, cCcD_Obj* tg, cCcD_Stts* at_stts, cCcD_St
|
||||
}
|
||||
|
||||
/* 80243544-80243740 .text SetAtTgCommonHitInf__4cCcSFP8cCcD_ObjP8cCcD_ObjP4cXyz */
|
||||
void cCcS::SetAtTgCommonHitInf(cCcD_Obj*, cCcD_Obj*, cXyz*) {
|
||||
/* Nonmatching */
|
||||
void cCcS::SetAtTgCommonHitInf(cCcD_Obj* obj1, cCcD_Obj* obj2, cXyz* pXyz) {
|
||||
cCcD_Stts* obj1Stts = obj1->GetStts();
|
||||
cCcD_Stts* obj2Stts = obj2->GetStts();
|
||||
bool hit = ChkAtTgHitAfterCross(
|
||||
!obj2->ChkTgNoAtHitInfSet(), !obj1->ChkAtNoTgHitInfSet(),
|
||||
obj1->GetGObjInf(), obj2->GetGObjInf(), obj1Stts, obj2Stts,
|
||||
obj1Stts->GetGStts(), obj2Stts->GetGStts()
|
||||
);
|
||||
if (!hit) {
|
||||
if (!obj2->ChkTgNoAtHitInfSet()) {
|
||||
obj1->SetAtHit(obj2);
|
||||
}
|
||||
if (!obj1->ChkAtNoTgHitInfSet()) {
|
||||
obj2->SetTgHit(obj1);
|
||||
CalcTgPlusDmg(obj1, obj2, obj1Stts, obj2Stts);
|
||||
}
|
||||
SetAtTgGObjInf(
|
||||
!obj2->ChkTgNoAtHitInfSet(), !obj1->ChkAtNoTgHitInfSet(),
|
||||
obj1, obj2, obj1->GetGObjInf(), obj2->GetGObjInf(),
|
||||
obj1Stts, obj2Stts, obj1Stts->GetGStts(), obj2Stts->GetGStts(),
|
||||
pXyz
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80243740-8024388C .text SetCoCommonHitInf__4cCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */
|
||||
void cCcS::SetCoCommonHitInf(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) {
|
||||
/* Nonmatching */
|
||||
void cCcS::SetCoCommonHitInf(cCcD_Obj* obj1, cXyz* ppos1, cCcD_Obj* obj2, cXyz* ppos2, f32 cross_len) {
|
||||
bool obj2CoHitInfSet = !obj2->ChkCoNoCoHitInfSet();
|
||||
bool obj1CoHitInfSet = !obj1->ChkCoNoCoHitInfSet();
|
||||
if (obj2CoHitInfSet) {
|
||||
obj1->SetCoHit(obj2);
|
||||
}
|
||||
if (obj1CoHitInfSet) {
|
||||
obj2->SetCoHit(obj1);
|
||||
}
|
||||
if (obj2CoHitInfSet && obj1CoHitInfSet) {
|
||||
SetPosCorrect(obj1, ppos1, obj2, ppos2, cross_len);
|
||||
}
|
||||
cCcD_Stts* obj1Stts = obj1->GetStts();
|
||||
cCcD_Stts* obj2Stts = obj2->GetStts();
|
||||
SetCoGObjInf(obj2CoHitInfSet, obj1CoHitInfSet, obj1->GetGObjInf(), obj2->GetGObjInf(),
|
||||
obj1Stts, obj2Stts, obj1Stts->GetGStts(), obj2Stts->GetGStts());
|
||||
}
|
||||
|
||||
/* 8024388C-80244750 .text SetPosCorrect__4cCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */
|
||||
void cCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) {
|
||||
/* Nonmatching */
|
||||
void cCcS::SetPosCorrect(cCcD_Obj* obj1, cXyz* ppos1, cCcD_Obj* obj2, cXyz* ppos2, f32 cross_len) {
|
||||
CHECK_FLOAT_CLASS(604, cross_len);
|
||||
CHECK_FLOAT_RANGE(605, cross_len);
|
||||
|
||||
if (obj1->ChkCoNoCrr() || obj2->ChkCoNoCrr()) {
|
||||
return;
|
||||
}
|
||||
if (obj1->GetStts() == NULL || obj2->GetStts() == NULL) {
|
||||
return;
|
||||
}
|
||||
if (obj1->GetStts()->GetAc() != NULL && obj1->GetStts()->GetAc() == obj2->GetStts()->GetAc()) {
|
||||
return;
|
||||
}
|
||||
if (fabsf(cross_len) < (1.0f / 125.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
SetCoGCorrectProc(obj1, obj2);
|
||||
|
||||
bool correctY = false;
|
||||
if (obj1->ChkCoSph3DCrr() && obj2->ChkCoSph3DCrr()) {
|
||||
correctY = true;
|
||||
}
|
||||
WeightType obj1WeightType = GetWt(obj1->GetStts()->GetWeightUc());
|
||||
WeightType obj2WeightType = GetWt(obj2->GetStts()->GetWeightUc());
|
||||
f32 obj1SrcWeight = obj1->GetStts()->GetWeightF();
|
||||
f32 obj2SrcWeight = obj2->GetStts()->GetWeightF();
|
||||
f32 combinedWeight = obj1SrcWeight + obj2SrcWeight;
|
||||
|
||||
f32 obj2Weight, obj1Weight;
|
||||
if (cM3d_IsZero(combinedWeight)) {
|
||||
obj1SrcWeight = 1;
|
||||
obj2SrcWeight = 1;
|
||||
combinedWeight = 2;
|
||||
}
|
||||
f32 invCombinedWeight = 1 / combinedWeight;
|
||||
if (obj1WeightType == WeightType_0) {
|
||||
if (obj2WeightType == WeightType_0) {
|
||||
return;
|
||||
} else {
|
||||
obj2Weight = 0;
|
||||
obj1Weight = 1;
|
||||
}
|
||||
} else if (obj1WeightType == WeightType_1) {
|
||||
if (obj2WeightType == WeightType_0) {
|
||||
obj2Weight = 1;
|
||||
obj1Weight = 0;
|
||||
} else if (obj2WeightType == WeightType_1) {
|
||||
obj2Weight = 0.5;
|
||||
obj1Weight = 0.5;
|
||||
} else {
|
||||
obj2Weight = 0;
|
||||
obj1Weight = 1;
|
||||
}
|
||||
} else {
|
||||
if (obj2WeightType == WeightType_2) {
|
||||
obj2Weight = obj2SrcWeight * invCombinedWeight;
|
||||
obj1Weight = obj1SrcWeight * invCombinedWeight;
|
||||
} else {
|
||||
obj2Weight = 1;
|
||||
obj1Weight = 0;
|
||||
}
|
||||
}
|
||||
f32 objDistLen;
|
||||
Vec vec1;
|
||||
Vec vec2;
|
||||
Vec objsDist;
|
||||
if (correctY) {
|
||||
objsDist.x = ppos2->x - ppos1->x;
|
||||
objsDist.y = ppos2->y - ppos1->y;
|
||||
objsDist.z = ppos2->z - ppos1->z;
|
||||
objDistLen = sqrtf(objsDist.x*objsDist.x + objsDist.y*objsDist.y + objsDist.z*objsDist.z);
|
||||
} else {
|
||||
objsDist.x = ppos2->x - ppos1->x;
|
||||
objsDist.y = 0.0f;
|
||||
objsDist.z = ppos2->z - ppos1->z;
|
||||
objDistLen = sqrtf(objsDist.x*objsDist.x + objsDist.z*objsDist.z);
|
||||
}
|
||||
if (!cM3d_IsZero(objDistLen)) {
|
||||
if (correctY) {
|
||||
f32 pushFactor = cross_len / objDistLen;
|
||||
objsDist.x *= pushFactor;
|
||||
objsDist.y *= pushFactor;
|
||||
objsDist.z *= pushFactor;
|
||||
vec1.x = -objsDist.x * obj2Weight;
|
||||
vec1.y = -objsDist.y * obj2Weight;
|
||||
vec1.z = -objsDist.z * obj2Weight;
|
||||
vec2.x = objsDist.x * obj1Weight;
|
||||
vec2.y = objsDist.y * obj1Weight;
|
||||
vec2.z = objsDist.z * obj1Weight;
|
||||
} else {
|
||||
f32 pushFactor = cross_len / objDistLen;
|
||||
objsDist.x *= pushFactor;
|
||||
objsDist.z *= pushFactor;
|
||||
vec1.x = -objsDist.x * obj2Weight;
|
||||
vec1.y = 0;
|
||||
vec1.z = -objsDist.z * obj2Weight;
|
||||
vec2.x = objsDist.x * obj1Weight;
|
||||
vec2.y = 0;
|
||||
vec2.z = objsDist.z * obj1Weight;
|
||||
}
|
||||
} else {
|
||||
vec1.y = 0;
|
||||
vec1.z = 0;
|
||||
vec2.y = 0;
|
||||
vec2.z = 0;
|
||||
if (!cM3d_IsZero(cross_len)) {
|
||||
vec1.x = -cross_len * obj2Weight;
|
||||
vec2.x = cross_len * obj1Weight;
|
||||
} else {
|
||||
vec1.x = -obj2Weight;
|
||||
vec2.x = obj1Weight;
|
||||
}
|
||||
}
|
||||
|
||||
CHECK_FLOAT_CLASS(794, vec1.x);
|
||||
CHECK_FLOAT_CLASS(795, vec1.y);
|
||||
CHECK_FLOAT_CLASS(796, vec1.z);
|
||||
CHECK_FLOAT_CLASS(798, vec2.x);
|
||||
CHECK_FLOAT_CLASS(799, vec2.y);
|
||||
CHECK_FLOAT_CLASS(800, vec2.z);
|
||||
CHECK_VEC3_RANGE(804, vec1);
|
||||
CHECK_VEC3_RANGE(808, vec2);
|
||||
|
||||
obj1->GetStts()->PlusCcMove(vec1.x, vec1.y, vec1.z);
|
||||
obj2->GetStts()->PlusCcMove(vec2.x, vec2.y, vec2.z);
|
||||
(*ppos1) += vec1;
|
||||
(*ppos2) += vec2;
|
||||
|
||||
CHECK_FLOAT_CLASS(817, ppos1->x);
|
||||
CHECK_FLOAT_CLASS(818, ppos1->y);
|
||||
CHECK_FLOAT_CLASS(819, ppos1->z);
|
||||
CHECK_FLOAT_CLASS(821, ppos2->x);
|
||||
CHECK_FLOAT_CLASS(822, ppos2->y);
|
||||
CHECK_FLOAT_CLASS(823, ppos2->z);
|
||||
CHECK_PVEC3_RANGE(827, ppos1);
|
||||
CHECK_PVEC3_RANGE(831, ppos2);
|
||||
}
|
||||
|
||||
/* 80244750-80244894 .text CalcArea__4cCcSFv */
|
||||
void cCcS::CalcArea() {
|
||||
/* Nonmatching */
|
||||
cM3dGAab aab;
|
||||
aab.ClearForMinMax();
|
||||
for (cCcD_Obj** pObj = mpObj; pObj < mpObj + mObjCount; ++pObj) {
|
||||
if (*pObj == NULL)
|
||||
continue;
|
||||
cCcD_ShapeAttr* objShape = (*pObj)->GetShapeAttr();
|
||||
if (objShape == NULL)
|
||||
continue;
|
||||
objShape->CalcAabBox();
|
||||
cM3dGAab& shapeAab = objShape->GetWorkAab();
|
||||
aab.SetMinMax(*shapeAab.GetMinP());
|
||||
aab.SetMinMax(*shapeAab.GetMaxP());
|
||||
}
|
||||
mDivideArea.SetArea(aab);
|
||||
for (cCcD_Obj** pObj = mpObj; pObj < mpObj + mObjCount; ++pObj) {
|
||||
if (*pObj != NULL) {
|
||||
const cCcD_ShapeAttr* objShape = (*pObj)->GetShapeAttr();
|
||||
if (objShape == NULL)
|
||||
continue;
|
||||
cCcD_DivideInfo* divideInfo = &(*pObj)->GetDivideInfo();
|
||||
mDivideArea.CalcDivideInfo(divideInfo, objShape->GetWorkAab(), (*pObj)->ChkBsRevHit());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 80244894-802448F8 .text Move__4cCcSFv */
|
||||
|
||||
@@ -350,7 +350,7 @@ static BOOL medama_atari_check(am_class* i_this) {
|
||||
if (i_this->mCurrBckIdx == AM_BCK_SLEEP || i_this->mCurrBckIdx == AM_BCK_SLEEP_LOOP) {
|
||||
anm_init(i_this, AM_BCK_OKIRU, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1);
|
||||
i_this->mAttentionInfo.mFlags = fopAc_Attn_LOCKON_ENEMY_e;
|
||||
i_this->mNeedleCyl.OnAtSPrmBit(1);
|
||||
i_this->mNeedleCyl.OnAtSPrmBit(AT_SPRM_SET);
|
||||
i_this->mNeedleCyl.OnAtHitBit();
|
||||
i_this->mAction = ACTION_DOUSA;
|
||||
i_this->mState = 2;
|
||||
@@ -610,7 +610,7 @@ static void action_dousa(am_class* i_this) {
|
||||
// Fall-through
|
||||
case 4:
|
||||
if (i_this->mCountDownTimers[2] == 1) {
|
||||
i_this->mNeedleCyl.OnAtSPrmBit(1);
|
||||
i_this->mNeedleCyl.OnAtSPrmBit(AT_SPRM_SET);
|
||||
i_this->mNeedleCyl.OnAtHitBit();
|
||||
}
|
||||
if (i_this->mCountDownTimers[2] != 0) {
|
||||
|
||||
@@ -616,9 +616,9 @@ void daBomb_c::makeWaterEffect() {
|
||||
if(field_0x77D == 0) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_BOMB_WATER, 0);
|
||||
fopKyM_createWpillar(¤t.pos, 1.0f, 1.0f, 1);
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
mSph.OnAtSPrmBit(AT_SPRM_SET);
|
||||
mSph.SetR(200.0f);
|
||||
mSph.SetC(current.pos);
|
||||
if(mMassCounter != g_Counter.mCounter0) {
|
||||
@@ -762,7 +762,7 @@ int daBomb_c::procExplode_init() {
|
||||
speed = cXyz::Zero;
|
||||
mGravity = 0.0f;
|
||||
|
||||
if(chk_state(STATE_8)) {
|
||||
if(!chk_state(STATE_8)) {
|
||||
change_state(STATE_0);
|
||||
}
|
||||
|
||||
@@ -776,9 +776,9 @@ int daBomb_c::procExplode_init() {
|
||||
field_0x6F0 = 0;
|
||||
}
|
||||
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
mSph.OnAtSPrmBit(AT_SPRM_SET);
|
||||
mSph.SetR(200.0f);
|
||||
mSph.SetC(current.pos);
|
||||
if(mMassCounter != g_Counter.mCounter0) {
|
||||
@@ -874,7 +874,7 @@ bool daBomb_c::procCarry_init() {
|
||||
speedF = 0.0f;
|
||||
speed.set(cXyz::Zero);
|
||||
mAttentionInfo.mFlags &= ~fopAc_Attn_ACTION_CARRY_e;
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -908,7 +908,7 @@ bool daBomb_c::procWait_init() {
|
||||
change_state(STATE_1);
|
||||
}
|
||||
|
||||
mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OnCoSPrmBit(CO_SPRM_SET);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -713,7 +713,7 @@ namespace daBomb2 {
|
||||
void Act_c::mode_wait_init() {
|
||||
field_0x694 = 0;
|
||||
mGravity = L_attr.gravity;
|
||||
mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OnCoSPrmBit(CO_SPRM_SET);
|
||||
}
|
||||
|
||||
void Act_c::mode_wait() {
|
||||
@@ -771,7 +771,7 @@ namespace daBomb2 {
|
||||
speedF = 0.0f;
|
||||
speed = cXyz::Zero;
|
||||
off_carry();
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
}
|
||||
|
||||
void Act_c::mode_carry() {
|
||||
@@ -807,9 +807,9 @@ namespace daBomb2 {
|
||||
speed = cXyz::Zero;
|
||||
mGravity = 0.0f;
|
||||
off_carry();
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
mSph.OnAtSPrmBit(AT_SPRM_SET);
|
||||
fopAcM_cancelCarryNow(this);
|
||||
field_0x738 = 0;
|
||||
field_0x73C = 4;
|
||||
@@ -827,9 +827,9 @@ namespace daBomb2 {
|
||||
field_0x694 = 3;
|
||||
speed.y *= 0.8f;
|
||||
speedF *= 0.8f;
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
off_carry();
|
||||
fopAcM_cancelCarryNow(this);
|
||||
field_0x698 = 4;
|
||||
|
||||
@@ -362,7 +362,7 @@ void daItem_c::execInitNormalDirection() {
|
||||
show();
|
||||
|
||||
mCyl.SetTgType(0);
|
||||
mCyl.OffCoSPrmBit(1);
|
||||
mCyl.OffCoSetBit();
|
||||
|
||||
mPtclSmokeCb.end();
|
||||
if (mpParticleEmitter) {
|
||||
@@ -775,7 +775,7 @@ void daItem_c::itemGetExecute() {
|
||||
mStatusFlags &= ~0x4;
|
||||
|
||||
mCyl.SetTgType(0);
|
||||
mCyl.OffCoSPrmBit(1);
|
||||
mCyl.OffCoSetBit();
|
||||
mCyl.ClrTgHit();
|
||||
mCyl.ClrCoHit();
|
||||
}
|
||||
|
||||
@@ -698,7 +698,7 @@ void daRd_c::setCollision() {
|
||||
if (mMode == MODE_DEATH) {
|
||||
mCyl.OffCoSPrmBit(0x10);
|
||||
mCyl.OffCoSPrmBit(0x02);
|
||||
mCyl.OffTgSPrmBit(0x01);
|
||||
mCyl.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mCyl.OffTgSPrmBit(0x08);
|
||||
} else if (mMode == MODE_ATTACK || mMode == MODE_CRY || dComIfGp_evmng_startCheck("DEFAULT_RD_CRY")) {
|
||||
mCyl.OffCoSPrmBit(0x10);
|
||||
|
||||
+10
-10
@@ -36,10 +36,10 @@ void daBomb_c::setBombFire_ON() {
|
||||
void daBomb_c::setBombNoHit() {
|
||||
_prm_chk_version();
|
||||
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
||||
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
||||
|
||||
field_0x6F3 = true;
|
||||
}
|
||||
@@ -47,13 +47,13 @@ void daBomb_c::setBombNoHit() {
|
||||
void daBomb_c::setBombOffCoSet() {
|
||||
_prm_chk_version();
|
||||
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
}
|
||||
|
||||
void daBomb_c::setBombOnCoSet() {
|
||||
_prm_chk_version();
|
||||
|
||||
mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OnCoSPrmBit(CO_SPRM_SET);
|
||||
}
|
||||
|
||||
void daBomb_c::setBombNoEff() {
|
||||
@@ -153,10 +153,10 @@ void daBomb2::Act_c::set_eat() {
|
||||
}
|
||||
|
||||
void daBomb2::Act_c::set_no_hit() {
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
||||
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
||||
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
||||
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
||||
}
|
||||
|
||||
bool daBomb2::Act_c::chk_explode() {
|
||||
|
||||
+25
-17
@@ -3,26 +3,27 @@
|
||||
// Translation Unit: d_cc_s.cpp
|
||||
//
|
||||
|
||||
#include "d_cc_s.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_cc_s.h"
|
||||
#include "d/d_cc_d.h"
|
||||
|
||||
/* 800AD5B0-800AD5E4 .text Ct__4dCcSFv */
|
||||
void dCcS::Ct() {
|
||||
/* Nonmatching */
|
||||
cCcS::Ct();
|
||||
mMass_Mng.Ct();
|
||||
}
|
||||
|
||||
/* 800AD5E4-800AD604 .text Dt__4dCcSFv */
|
||||
void dCcS::Dt() {
|
||||
/* Nonmatching */
|
||||
cCcS::Dt();
|
||||
}
|
||||
|
||||
/* 800AD604-800AD748 .text ChkShieldFrontRange__4dCcSFP8cCcD_ObjP8cCcD_Obj */
|
||||
void dCcS::ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*) {
|
||||
bool dCcS::ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800AD748-800AD7D0 .text ChkShield__4dCcSFP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInf */
|
||||
void dCcS::ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*) {
|
||||
bool dCcS::ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -32,7 +33,7 @@ void dCcS::CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*) {
|
||||
}
|
||||
|
||||
/* 800AD86C-800AD8EC .text ChkAtTgHitAfterCross__4dCcSFbbPC12cCcD_GObjInfPC12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts */
|
||||
void dCcS::ChkAtTgHitAfterCross(bool, bool, const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*) {
|
||||
bool dCcS::ChkAtTgHitAfterCross(bool, bool, const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -42,12 +43,12 @@ void dCcS::SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*, cC
|
||||
}
|
||||
|
||||
/* 800ADA30-800ADAD4 .text GetRank__4dCcSFUc */
|
||||
void dCcS::GetRank(unsigned char) {
|
||||
int dCcS::GetRank(u8) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800ADAD4-800ADEF0 .text SetPosCorrect__4dCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */
|
||||
void dCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) {
|
||||
void dCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -67,7 +68,7 @@ void dCcS::SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*, cCcD_
|
||||
}
|
||||
|
||||
/* 800AE5AC-800AE814 .text ChkCamera__4dCcSFR4cXyzR4cXyzfP10fopAc_ac_cP10fopAc_ac_c */
|
||||
void dCcS::ChkCamera(cXyz&, cXyz&, float, fopAc_ac_c*, fopAc_ac_c*) {
|
||||
bool dCcS::ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -83,26 +84,33 @@ void dCcS::DrawAfter() {
|
||||
|
||||
/* 800AE81C-800AE83C .text Move__4dCcSFv */
|
||||
void dCcS::Move() {
|
||||
/* Nonmatching */
|
||||
cCcS::Move();
|
||||
}
|
||||
|
||||
/* 800AE83C-800AE878 .text Draw__4dCcSFv */
|
||||
void dCcS::Draw() {
|
||||
/* Nonmatching */
|
||||
DrawAfter();
|
||||
DrawClear();
|
||||
mMass_Mng.Clear();
|
||||
}
|
||||
|
||||
/* 800AE878-800AE89C .text MassClear__4dCcSFv */
|
||||
void dCcS::MassClear() {
|
||||
/* Nonmatching */
|
||||
mMass_Mng.Clear();
|
||||
}
|
||||
|
||||
/* 800AE89C-800AE930 .text ChkNoHitGCo__4dCcSFP8cCcD_ObjP8cCcD_Obj */
|
||||
void dCcS::ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*) {
|
||||
/* Nonmatching */
|
||||
bool dCcS::ChkNoHitGCo(cCcD_Obj* obj1, cCcD_Obj* obj2) {
|
||||
dCcD_GObjInf* inf1 = (dCcD_GObjInf*)obj1->GetGObjInf();
|
||||
dCcD_GObjInf* inf2 = (dCcD_GObjInf*)obj2->GetGObjInf();
|
||||
if ((inf1->ChkCoAtLasso() && !inf2->ChkCoTgLasso()) || (inf2->ChkCoAtLasso() && !inf1->ChkCoTgLasso())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 800AE930-800AE938 .text ChkNoHitGAtTg__4cCcSFPC12cCcD_GObjInfPC12cCcD_GObjInfP10cCcD_GSttsP10cCcD_GStts */
|
||||
void cCcS::ChkNoHitGAtTg(const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_GStts*, cCcD_GStts*) {
|
||||
/* Nonmatching */
|
||||
bool cCcS::ChkNoHitGAtTg(const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_GStts*, cCcD_GStts*) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user