mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-20 06:01:16 +00:00
Updates
This commit is contained in:
parent
06092dfea4
commit
e6d374c843
@ -474,11 +474,7 @@ LegoWorld* LegoOmni::FindWorld(const MxAtomId& p_atom, MxS32 p_entityid)
|
|||||||
// STUB: BETA10 0x1008e93e
|
// STUB: BETA10 0x1008e93e
|
||||||
void LegoOmni::DeleteObject(MxDSAction& p_dsAction)
|
void LegoOmni::DeleteObject(MxDSAction& p_dsAction)
|
||||||
{
|
{
|
||||||
auto result = Extension<SiLoader>::Call(
|
auto result = Extension<SiLoader>::Call(HandleDelete, p_dsAction).value_or(std::nullopt);
|
||||||
HandleDelete,
|
|
||||||
SiLoader::StreamObject{p_dsAction.GetAtomId(), p_dsAction.GetObjectId()}
|
|
||||||
)
|
|
||||||
.value_or(std::nullopt);
|
|
||||||
if (result && result.value()) {
|
if (result && result.value()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -673,11 +669,7 @@ void LegoOmni::CreateBackgroundAudio()
|
|||||||
MxResult LegoOmni::Start(MxDSAction* p_dsAction)
|
MxResult LegoOmni::Start(MxDSAction* p_dsAction)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
auto result = Extension<SiLoader>::Call(
|
auto result = Extension<SiLoader>::Call(HandleStart, *p_dsAction).value_or(std::nullopt);
|
||||||
HandleStart,
|
|
||||||
SiLoader::StreamObject{p_dsAction->GetAtomId(), p_dsAction->GetObjectId()}
|
|
||||||
)
|
|
||||||
.value_or(std::nullopt);
|
|
||||||
if (result) {
|
if (result) {
|
||||||
return result.value();
|
return result.value();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,9 +17,9 @@ class SiLoader {
|
|||||||
static void Initialize();
|
static void Initialize();
|
||||||
static bool Load();
|
static bool Load();
|
||||||
static std::optional<MxCore*> HandleFind(StreamObject p_object, LegoWorld* world);
|
static std::optional<MxCore*> HandleFind(StreamObject p_object, LegoWorld* world);
|
||||||
static std::optional<MxResult> HandleStart(StreamObject p_object);
|
static std::optional<MxResult> HandleStart(MxDSAction& p_action);
|
||||||
static std::optional<MxBool> HandleRemove(StreamObject p_object, LegoWorld* world);
|
static std::optional<MxBool> HandleRemove(StreamObject p_object, LegoWorld* world);
|
||||||
static std::optional<MxBool> HandleDelete(StreamObject p_object);
|
static std::optional<MxBool> HandleDelete(MxDSAction& p_action);
|
||||||
|
|
||||||
static std::map<std::string, std::string> options;
|
static std::map<std::string, std::string> options;
|
||||||
static std::vector<std::string> files;
|
static std::vector<std::string> files;
|
||||||
|
|||||||
@ -47,22 +47,26 @@ std::optional<MxCore*> SiLoader::HandleFind(StreamObject p_object, LegoWorld* wo
|
|||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<MxResult> SiLoader::HandleStart(StreamObject p_object)
|
std::optional<MxResult> SiLoader::HandleStart(MxDSAction& p_action)
|
||||||
{
|
{
|
||||||
|
StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()};
|
||||||
|
|
||||||
for (const auto& key : startWith) {
|
for (const auto& key : startWith) {
|
||||||
if (key.first == p_object) {
|
if (key.first == object) {
|
||||||
MxDSAction action;
|
MxDSAction action;
|
||||||
action.SetAtomId(key.second.first);
|
action.SetAtomId(key.second.first);
|
||||||
action.SetObjectId(key.second.second);
|
action.SetObjectId(key.second.second);
|
||||||
|
action.SetUnknown24(p_action.GetUnknown24());
|
||||||
Start(&action);
|
Start(&action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& key : replace) {
|
for (const auto& key : replace) {
|
||||||
if (key.first == p_object) {
|
if (key.first == object) {
|
||||||
MxDSAction action;
|
MxDSAction action;
|
||||||
action.SetAtomId(key.second.first);
|
action.SetAtomId(key.second.first);
|
||||||
action.SetObjectId(key.second.second);
|
action.SetObjectId(key.second.second);
|
||||||
|
action.SetUnknown24(p_action.GetUnknown24());
|
||||||
return Start(&action);
|
return Start(&action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,23 +91,27 @@ std::optional<MxBool> SiLoader::HandleRemove(StreamObject p_object, LegoWorld* w
|
|||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<MxBool> SiLoader::HandleDelete(StreamObject p_object)
|
std::optional<MxBool> SiLoader::HandleDelete(MxDSAction& p_action)
|
||||||
{
|
{
|
||||||
|
StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()};
|
||||||
|
|
||||||
for (const auto& key : removeWith) {
|
for (const auto& key : removeWith) {
|
||||||
if (key.first == p_object) {
|
if (key.first == object) {
|
||||||
MxDSAction action;
|
MxDSAction action;
|
||||||
action.SetAtomId(key.second.first);
|
action.SetAtomId(key.second.first);
|
||||||
action.SetObjectId(key.second.second);
|
action.SetObjectId(key.second.second);
|
||||||
DeleteObject(&action);
|
action.SetUnknown24(p_action.GetUnknown24());
|
||||||
|
DeleteObject(action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& key : replace) {
|
for (const auto& key : replace) {
|
||||||
if (key.first == p_object) {
|
if (key.first == object) {
|
||||||
MxDSAction action;
|
MxDSAction action;
|
||||||
action.SetAtomId(key.second.first);
|
action.SetAtomId(key.second.first);
|
||||||
action.SetObjectId(key.second.second);
|
action.SetObjectId(key.second.second);
|
||||||
DeleteObject(&action);
|
action.SetUnknown24(p_action.GetUnknown24());
|
||||||
|
DeleteObject(action);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user