mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
86 lines
2.2 KiB
C++
86 lines
2.2 KiB
C++
#include "Game/LiveActor/LiveActorGroupArray.hpp"
|
|
#include "Game/LiveActor/LiveActor.hpp"
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
|
|
MsgSharedGroup::MsgSharedGroup(const char *pName, s32 a2, const JMapInfoIter &rIter) : LiveActorGroup(_28, a2) {
|
|
mIDInfo = 0;
|
|
_1C = -1;
|
|
_20 = 0;
|
|
_24 = 0;
|
|
MR::copyString(_28, pName, 0x30);
|
|
JMapIdInfo* inf = new JMapIdInfo();
|
|
|
|
if (inf) {
|
|
JMapIdInfo newInfo = MR::createJMapIdInfoFromClippingGroupId(rIter);
|
|
inf->_0 = newInfo._0;
|
|
inf->mZoneID = newInfo.mZoneID;
|
|
}
|
|
|
|
mIDInfo = inf;
|
|
}
|
|
|
|
void MsgSharedGroup::init(const JMapInfoIter &rIter) {
|
|
MR::connectToScene(this, 6, -1, -1, -1);
|
|
}
|
|
|
|
void MsgSharedGroup::movement() {
|
|
NameObj::movement();
|
|
|
|
if (_1C != 0xFFFFFFFF) {
|
|
for (s32 i = 0; i < mObjectCount; i++) {
|
|
LiveActor* actor = getActor(i);
|
|
HitSensor* sensor = actor->getSensor(_24);
|
|
sensor->receiveMessage(_1C, _20);
|
|
}
|
|
|
|
_1C = -1;
|
|
}
|
|
}
|
|
|
|
void MsgSharedGroup::sendMsgToGroupMember(u32 msg, HitSensor *pSensor, const char *pName) {
|
|
_1C = msg;
|
|
_20 = pSensor;
|
|
_24 = pName;
|
|
}
|
|
|
|
LiveActorGroupArray::LiveActorGroupArray(const char *pName) : NameObj(pName) {
|
|
mNumGroups = 0;
|
|
}
|
|
|
|
void LiveActorGroupArray::init(const JMapInfoIter &rIter) {
|
|
|
|
}
|
|
|
|
LiveActorGroup* LiveActorGroupArray::getLiveActorGroup(const LiveActor *pActor) const {
|
|
return findGroup(pActor);
|
|
}
|
|
|
|
MsgSharedGroup* LiveActorGroupArray::createGroup(const JMapInfoIter &rIter, const char *pName, s32 msg) {
|
|
MsgSharedGroup* group = new MsgSharedGroup(pName, msg, rIter);
|
|
group->initWithoutIter();
|
|
s32 cnt = mNumGroups;
|
|
mNumGroups = cnt + 1;
|
|
mGroups[cnt] = group;
|
|
return group;
|
|
}
|
|
|
|
LiveActorGroup* LiveActorGroupArray::entry(LiveActor *pActor, const JMapInfoIter &rIter, const char *pName, s32 a4) {
|
|
s32 groupID = -1;
|
|
MR::getJMapInfoGroupID(rIter, &groupID);
|
|
|
|
if (!pName) {
|
|
char buf[0x20];
|
|
snprintf(buf, 0x20, "group%02d", groupID);
|
|
pName = buf;
|
|
}
|
|
|
|
LiveActorGroup* group = findGroup(rIter);
|
|
|
|
if (!group) {
|
|
group = createGroup(rIter, pName, a4);
|
|
}
|
|
|
|
group->registerActor(pActor);
|
|
return group;
|
|
} |