Match StartAction functions, remove NextFragment (#610)

This commit is contained in:
Christian Semmler
2024-03-01 13:07:07 -05:00
committed by GitHub
parent ba8744ef8f
commit fb6eed9bff
6 changed files with 42 additions and 55 deletions

View File

@@ -81,16 +81,6 @@ public:
inline MxBool IsLooping() const { return m_flags & c_looping; }
inline MxBool IsBit3() const { return m_flags & c_bit3; }
inline void CopyFlags(MxU32 p_flags)
{
if (p_flags & MxDSAction::c_looping) {
SetFlags(GetFlags() | MxDSAction::c_looping);
}
else if (p_flags & MxDSAction::c_bit3) {
SetFlags(GetFlags() | MxDSAction::c_bit3);
}
}
// SYNTHETIC: LEGO1 0x100ada60
// MxDSAction::`scalar deleting destructor'

View File

@@ -118,14 +118,6 @@ public:
void Reset() { m_match = NULL; }
void Prepend(T p_newobj);
// TODO: Probably shouldn't exist
void NextFragment()
{
if (m_match) {
m_match = m_match->GetNext();
}
}
private:
MxList<T>* m_list; // 0x08
MxListEntry<T>* m_match; // 0x0c

View File

@@ -32,21 +32,24 @@ MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxD
MxDSAction* action;
if (MxPresenter::StartAction(p_controller, p_action) == SUCCESS) {
// The usual cursor.Next() loop doesn't match here, even though
// the logic is the same. It does match when "deconstructed" into
// the following Head(), Current() and NextFragment() calls,
// but this seems unlikely to be the original code.
// The alpha debug build also uses Next().
cursor.Head();
while (cursor.Current(action)) {
cursor.NextFragment();
MxBool success = FALSE;
const char* presenterName;
MxPresenter* presenter = NULL;
action->CopyFlags(m_action->GetFlags());
cursor.Next();
const char* presenterName = PresenterNameDispatch(*action);
MxPresenter* presenter = (MxPresenter*) factory->Create(presenterName);
if (m_action->GetFlags() & MxDSAction::c_looping) {
action->SetFlags(action->GetFlags() | MxDSAction::c_looping);
}
else if (m_action->GetFlags() & MxDSAction::c_bit3) {
action->SetFlags(action->GetFlags() | MxDSAction::c_bit3);
}
presenterName = PresenterNameDispatch(*action);
presenter = (MxPresenter*) factory->Create(presenterName);
if (presenter && presenter->AddToManager() == SUCCESS) {
presenter->SetCompositePresenter(this);