DEFINE_ACTION_FUNCTION(AActor, OverlayID) { PARAM_ACTION_PROLOGUE; if (ACTION_CALL_FROM_PSPRITE()) { ACTION_RETURN_INT(stateinfo->mPSPIndex); } ACTION_RETURN_INT(0); }
DEFINE_ACTION_FUNCTION(FDynArray_Obj, Push) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_Obj); PARAM_OBJECT(val, DObject); GC::WriteBarrier(val); ACTION_RETURN_INT(self->Push(val)); }
DEFINE_ACTION_FUNCTION(_Wads, CheckNumForName) { PARAM_PROLOGUE; PARAM_STRING(name); PARAM_INT(ns); PARAM_INT_DEF(wadnum); PARAM_BOOL_DEF(exact); ACTION_RETURN_INT(Wads.CheckNumForName(name, ns, wadnum, exact)); }
DEFINE_ACTION_FUNCTION(_Wads, FindLump) { PARAM_PROLOGUE; PARAM_STRING(name); PARAM_INT_DEF(startlump); PARAM_INT_DEF(ns); const bool isLumpValid = startlump >= 0 && startlump < Wads.GetNumLumps(); ACTION_RETURN_INT(isLumpValid ? Wads.FindLump(name, &startlump, 0 != ns) : -1); }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ClearOverlays) { PARAM_ACTION_PROLOGUE; PARAM_INT_OPT(start) { start = 0; } PARAM_INT_OPT(stop) { stop = 0; } PARAM_BOOL_OPT(safety) { safety = true; } if (self->player == nullptr) ACTION_RETURN_INT(0); if (!start && !stop) { start = INT_MIN; stop = safety ? PSP_TARGETCENTER - 1 : INT_MAX; } unsigned int count = 0; int id; for (DPSprite *pspr = self->player->psprites; pspr != nullptr; pspr = pspr->GetNext()) { id = pspr->GetID(); if (id < start || id == 0) continue; else if (id > stop) break; if (safety) { if (id >= PSP_TARGETCENTER) break; else if (id == PSP_STRIFEHANDS || id == PSP_WEAPON || id == PSP_FLASH) continue; } pspr->SetState(nullptr); count++; } ACTION_RETURN_INT(count); }
DEFINE_ACTION_FUNCTION(_Translation, AddTranslation) { PARAM_SELF_STRUCT_PROLOGUE(FTranslation); FRemapTable NewTranslation; memcpy(&NewTranslation.Palette[0], self->colors, 256 * sizeof(PalEntry)); for (int i = 0; i < 256; i++) { NewTranslation.Remap[i] = ColorMatcher.Pick(self->colors[i]); } int trans = NewTranslation.StoreTranslation(TRANSLATION_Custom); ACTION_RETURN_INT(trans); }
DEFINE_ACTION_FUNCTION(FDynArray_String, Reserve) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_String); PARAM_INT(count); ACTION_RETURN_INT(self->Reserve(count)); }
DEFINE_ACTION_FUNCTION(FDynArray_String, Find) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_String); PARAM_STRING(val); ACTION_RETURN_INT(self->Find(val)); }
DEFINE_ACTION_FUNCTION(AActor, GetSpriteIndex) { PARAM_PROLOGUE; PARAM_NAME(sprt); ACTION_RETURN_INT(GetSpriteIndex(sprt.GetChars(), false)); }
DEFINE_ACTION_FUNCTION(FDynArray_Obj, Find) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_Obj); PARAM_OBJECT(val, DObject); ACTION_RETURN_INT(self->Find(val)); }
DEFINE_ACTION_FUNCTION(FDynArray_Ptr, Push) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_Ptr); PARAM_POINTER(val, void); ACTION_RETURN_INT(self->Push(val)); }
DEFINE_ACTION_FUNCTION(FDynArray_F64, Find) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_F64); PARAM_FLOAT(val); ACTION_RETURN_INT(self->Find(val)); }
DEFINE_ACTION_FUNCTION(FDynArray_F32, Push) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_F32); PARAM_FLOAT(val); ACTION_RETURN_INT(self->Push((float)val)); }
DEFINE_ACTION_FUNCTION(_Wads, CheckNumForFullName) { PARAM_PROLOGUE; PARAM_STRING(name); ACTION_RETURN_INT(Wads.CheckNumForFullName(name)); }
DEFINE_ACTION_FUNCTION(DObject, GameType) { PARAM_PROLOGUE; ACTION_RETURN_INT(gameinfo.gametype); }
DEFINE_ACTION_FUNCTION(FDynArray_String, Max) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_String); ACTION_RETURN_INT(self->Max()); }
DEFINE_ACTION_FUNCTION(DObject, BAM) { PARAM_PROLOGUE; PARAM_FLOAT(ang); ACTION_RETURN_INT(DAngle(ang).BAMs()); }
DEFINE_ACTION_FUNCTION(FSavegameManager, RemoveNewSaveNode) { PARAM_SELF_STRUCT_PROLOGUE(FSavegameManager); ACTION_RETURN_INT(self->RemoveNewSaveNode()); }
DEFINE_ACTION_FUNCTION(FSavegameManager, SavegameCount) { PARAM_SELF_STRUCT_PROLOGUE(FSavegameManager); ACTION_RETURN_INT(self->SavegameCount()); }
DEFINE_ACTION_FUNCTION(FSavegameManager, ExtractSaveData) { PARAM_SELF_STRUCT_PROLOGUE(FSavegameManager); PARAM_INT(sel); ACTION_RETURN_INT(self->ExtractSaveData(sel)); }
DEFINE_ACTION_FUNCTION(FSavegameManager, RemoveSaveSlot) { PARAM_SELF_STRUCT_PROLOGUE(FSavegameManager); PARAM_INT(sel); ACTION_RETURN_INT(self->RemoveSaveSlot(sel)); }
DEFINE_ACTION_FUNCTION(FDynArray_I8, Push) { PARAM_SELF_STRUCT_PROLOGUE(FDynArray_I8); PARAM_INT(val); ACTION_RETURN_INT(self->Push(val)); }
DEFINE_ACTION_FUNCTION(_Translation, GetID) { PARAM_PROLOGUE; PARAM_NAME(t); ACTION_RETURN_INT(R_FindCustomTranslation(t)); }