mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-21 11:39:10 +00:00
42
src/MetroidPrime/ScriptObjects/CScriptDockAreaChange.cpp
Normal file
42
src/MetroidPrime/ScriptObjects/CScriptDockAreaChange.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include "MetroidPrime/ScriptObjects/CScriptDockAreaChange.hpp"
|
||||
|
||||
#include "MetroidPrime/CStateManager.hpp"
|
||||
#include "MetroidPrime/ScriptObjects/CScriptDock.hpp"
|
||||
|
||||
CScriptDockAreaChange::CScriptDockAreaChange(TUniqueId uid, const rstl::string& name,
|
||||
const CEntityInfo& info, int w1, bool active)
|
||||
: CEntity(uid, info, active, name), x34_dockReference(w1) {}
|
||||
|
||||
void CScriptDockAreaChange::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId,
|
||||
CStateManager& stateMgr) {
|
||||
|
||||
switch (msg) {
|
||||
case kSM_Action:
|
||||
if (GetActive()) {
|
||||
rstl::vector< SConnection >::const_iterator it = x20_conns.begin();
|
||||
for (; it != x20_conns.end(); ++it) {
|
||||
if (it->x0_state != kSS_Play || it->x4_msg == kSM_UNKM0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const CStateManager::TIdListResult& search = stateMgr.GetIdListForScript(it->x8_objId);
|
||||
CStateManager::TIdList::const_iterator searchItem = search.first;
|
||||
|
||||
for (; searchItem != search.second; ++searchItem) {
|
||||
if (CScriptDock* dock =
|
||||
TCastToPtr< CScriptDock >(stateMgr.ObjectById(searchItem->second))) {
|
||||
dock->SetDockReference(stateMgr, x34_dockReference);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SendScriptMsgs(kSS_Play, stateMgr, kSM_None);
|
||||
}
|
||||
}
|
||||
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
}
|
||||
|
||||
void CScriptDockAreaChange::Accept(IVisitor& visitor) { visitor.Visit(*this); }
|
||||
|
||||
CScriptDockAreaChange::~CScriptDockAreaChange() {}
|
||||
Reference in New Issue
Block a user