Skip to content

Commit 39773b4

Browse files
committed
Performance improvements.
1 parent 14f8bd3 commit 39773b4

File tree

1 file changed

+50
-7
lines changed

1 file changed

+50
-7
lines changed

cleo_plugins/DebugUtils/ScriptLog.cpp

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -807,15 +807,58 @@ void __fastcall ScriptLog::HOOK_SetConditionResult(CLEO::CRunningScript* script,
807807
g_Instance->m_conditionResultUpdated = true;
808808
g_Instance->m_conditionResultValue = state;
809809

810-
// call original function
811-
auto funcAddress = (size_t)g_Instance->m_patchSetConditionResult.GetAddress();
810+
if (script->NotFlag) state = !state;
812811

813-
g_Instance->m_patchSetConditionResult.Apply(); // restore original function code
814-
815-
//((::CRunningScript*)script)->UpdateCompareFlag(state);
816-
plugin::CallMethodDynGlobal<CLEO::CRunningScript*, bool>(funcAddress, script, state); // faster
812+
switch(script->LogicalOp)
813+
{
814+
default:
815+
case eLogicalOperation::NONE:
816+
script->bCondResult = state;
817+
return;
818+
819+
case eLogicalOperation::AND_2:
820+
case eLogicalOperation::AND_3:
821+
case eLogicalOperation::AND_4:
822+
case eLogicalOperation::AND_5:
823+
case eLogicalOperation::AND_6:
824+
case eLogicalOperation::AND_7:
825+
case eLogicalOperation::AND_8:
826+
case eLogicalOperation::AND_9:
827+
script->bCondResult &= state;
828+
*((WORD*)&script->LogicalOp) -= 1;
829+
return;
830+
831+
case eLogicalOperation::OR_2:
832+
script->bCondResult |= state;
833+
script->LogicalOp = eLogicalOperation::NONE;
834+
return;
835+
836+
case eLogicalOperation::OR_3:
837+
case eLogicalOperation::OR_4:
838+
case eLogicalOperation::OR_5:
839+
case eLogicalOperation::OR_6:
840+
case eLogicalOperation::OR_7:
841+
case eLogicalOperation::OR_8:
842+
case eLogicalOperation::OR_9:
843+
script->bCondResult |= state;
844+
*((WORD*)&script->LogicalOp) -= 1;
845+
return;
846+
}
817847

818-
MemPatchJump(funcAddress, &HOOK_SetConditionResult); // reinstall our hook
848+
/*if (script->LogicalOp == eLogicalOperation::NONE)
849+
{
850+
script->bCondResult = state;
851+
}
852+
else if (script->LogicalOp >= eLogicalOperation::AND_2 && script->LogicalOp < eLogicalOperation::AND_END)
853+
{
854+
script->bCondResult &= state;
855+
--script->LogicalOp;
856+
}
857+
else if (script->LogicalOp >= eLogicalOperation::OR_2 && script->LogicalOp < eLogicalOperation::OR_END)
858+
{
859+
script->bCondResult |= state;
860+
--script->LogicalOp;
861+
}*/
819862
}
820863

821864
void ScriptLog::OnGameBegin(DWORD saveSlot)

0 commit comments

Comments
 (0)