From 1d373d2c81103e75d649bc5b0ae649281958d527 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Fri, 7 Oct 2022 18:32:05 -0400 Subject: [PATCH] Add ChangeFloor/Ceiling, fix Random --- libs/ACSVM/include/CAPI/Scope.cpp | 9 ++++ libs/ACSVM/include/CAPI/Scope.h | 2 + libs/ACSVM/lib/libacsvm-capi.dll.a | Bin 315292 -> 316006 bytes src/k_acs-func.c | 75 ++++++++++++++++++++++++++++- src/k_acs.c | 18 ++++--- src/k_acs.h | 2 + 6 files changed, 97 insertions(+), 9 deletions(-) diff --git a/libs/ACSVM/include/CAPI/Scope.cpp b/libs/ACSVM/include/CAPI/Scope.cpp index e67a98dc6..f903704bd 100644 --- a/libs/ACSVM/include/CAPI/Scope.cpp +++ b/libs/ACSVM/include/CAPI/Scope.cpp @@ -300,6 +300,15 @@ bool ACSVM_MapScope_ScriptStop(ACSVM_MapScope *scope, ->scriptStop(name, {id.global, id.hub, id.map}); } +// +// ACSVM_MapScope_GetString +// +ACSVM_String *ACSVM_MapScope_GetString(ACSVM_MapScope *scope, ACSVM::Word idx) +{ + return reinterpret_cast( + reinterpret_cast(scope)->getString(idx)); +} + // // ACSVM_MapScope_SetActive // diff --git a/libs/ACSVM/include/CAPI/Scope.h b/libs/ACSVM/include/CAPI/Scope.h index a7e857ae0..683f0388f 100644 --- a/libs/ACSVM/include/CAPI/Scope.h +++ b/libs/ACSVM/include/CAPI/Scope.h @@ -98,6 +98,8 @@ ACSVM_Word ACSVM_MapScope_ScriptStartTypeForced(ACSVM_MapScope *scope, bool ACSVM_MapScope_ScriptStop(ACSVM_MapScope *scope, ACSVM_ScriptName name, ACSVM_ScopeID id); +ACSVM_String *ACSVM_MapScope_GetString(ACSVM_MapScope *scope, ACSVM_Word idx); + void ACSVM_MapScope_SetActive(ACSVM_MapScope *scope, bool active); ACSVM_Array *ACSVM_ModuleScope_GetModArr (ACSVM_ModuleScope *scope, ACSVM_Word idx); diff --git a/libs/ACSVM/lib/libacsvm-capi.dll.a b/libs/ACSVM/lib/libacsvm-capi.dll.a index 83f1e671e00f31fcd509d045c50b9822d46ad506..00609ebda32b3304a4a7e9182a91dcb19afd7378 100644 GIT binary patch delta 9321 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 aJVj+|XZ89S8mZdfloorpic = P_AddLevelFlatRuntime(texName); + } + + return false; +} + +/*-------------------------------------------------- + bool ACS_CF_ChangeCeiling(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC) + + Changes a ceiling texture. +--------------------------------------------------*/ +bool ACS_CF_ChangeCeiling(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC) +{ + ACSVM_MapScope *map = NULL; + ACSVM_String *str = NULL; + const char *texName = NULL; + + INT32 secnum = -1; + INT32 tag = 0; + + (void)argC; + + tag = argV[0]; + + map = ACSVM_Thread_GetScopeMap(thread); + str = ACSVM_MapScope_GetString(map, argV[1]); + texName = ACSVM_String_GetStr(str); + + TAG_ITER_SECTORS(tag, secnum) + { + sector_t *sec = §ors[secnum]; + sec->ceilingpic = P_AddLevelFlatRuntime(texName); + } + + return false; +} + /*-------------------------------------------------- bool ACS_CF_EndPrint(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC) diff --git a/src/k_acs.c b/src/k_acs.c index fd4e18601..def8a5db6 100644 --- a/src/k_acs.c +++ b/src/k_acs.c @@ -151,7 +151,7 @@ static void ACS_EnvThreadKilled(ACSVM_Environment const *env, ACSVM_Thread *thre /*-------------------------------------------------- static void ACS_AddCodeDataCallFunc( ACSVM_Environment *env, ACSVM_Word code, - char const *args, ACSVM_Word stack, ACSVM_Word func) + char const *args, ACSVM_Word argc, ACSVM_CallFunc func) Shortcut function to simplify adding CallFuncs. These are for code data ones; @@ -172,13 +172,13 @@ static void ACS_EnvThreadKilled(ACSVM_Environment const *env, ACSVM_Thread *thre --------------------------------------------------*/ static inline void ACS_AddCodeDataCallFunc(ACSVM_Environment *env, ACSVM_Word code, char const *args, ACSVM_Word argc, ACSVM_CallFunc func) { + ACSVM_Word funcId = ACSVM_Environment_AddCallFunc(env, func); + ACSVM_Code tCode = (argc != 0 ? ACSVM_Code_CallFunc : ACSVM_Code_CallFunc_Lit); + ACSVM_Environment_AddCodeDataACS0( - env, - code, - args, - ((argc > 0) ? ACSVM_Code_CallFunc_Lit : ACSVM_Code_CallFunc), - argc, - ACSVM_Environment_AddCallFunc(env, func) + env, code, + args, tCode, argc, + funcId ); } @@ -216,6 +216,10 @@ static void ACS_EnvConstruct(ACSVM_Environment *env) ACS_AddCodeDataCallFunc(env, 62, "W", 0, ACS_CF_TagWait); ACS_AddCodeDataCallFunc(env, 63, "", 1, ACS_CF_PolyWait); ACS_AddCodeDataCallFunc(env, 64, "W", 0, ACS_CF_PolyWait); + ACS_AddCodeDataCallFunc(env, 65, "", 2, ACS_CF_ChangeFloor); + ACS_AddCodeDataCallFunc(env, 66, "WWS", 0, ACS_CF_ChangeFloor); + ACS_AddCodeDataCallFunc(env, 67, "", 2, ACS_CF_ChangeCeiling); + ACS_AddCodeDataCallFunc(env, 68, "WWS", 0, ACS_CF_ChangeCeiling); // 69 to 79: Implemented by ACSVM // 81 to 82: Implemented by ACSVM diff --git a/src/k_acs.h b/src/k_acs.h index ecd829ba9..cf9ad0555 100644 --- a/src/k_acs.h +++ b/src/k_acs.h @@ -129,6 +129,8 @@ void ACS_Tick(void); bool ACS_CF_Random(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); bool ACS_CF_TagWait(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); bool ACS_CF_PolyWait(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); +bool ACS_CF_ChangeFloor(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); +bool ACS_CF_ChangeCeiling(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); bool ACS_CF_EndPrint(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); bool ACS_CF_PlayerCount(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC); bool ACS_CF_GameType(ACSVM_Thread *thread, ACSVM_Word const *argV, ACSVM_Word argC);