diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 6419572bc..9af9ccd32 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1185,72 +1185,6 @@ static int lib_pSetObjectMomZ(lua_State *L) return 0; } -static int lib_pPlayJingle(lua_State *L) -{ - player_t *player = NULL; - jingletype_t jingletype = luaL_checkinteger(L, 2); - //NOHUD - //INLEVEL - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (jingletype >= NUMJINGLES) - return luaL_error(L, "jingletype %d out of range (0 - %d)", jingletype, NUMJINGLES-1); - P_PlayJingle(player, jingletype); - return 0; -} - -static int lib_pPlayJingleMusic(lua_State *L) -{ - player_t *player = NULL; - const char *musnamearg = luaL_checkstring(L, 2); - char musname[7], *p = musname; - UINT16 musflags = luaL_optinteger(L, 3, 0); - boolean looping = lua_opttrueboolean(L, 4); - jingletype_t jingletype = luaL_optinteger(L, 5, JT_OTHER); - //NOHUD - //INLEVEL - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (jingletype >= NUMJINGLES) - return luaL_error(L, "jingletype %d out of range (0 - %d)", jingletype, NUMJINGLES-1); - - musname[6] = '\0'; - strncpy(musname, musnamearg, 6); - - while (*p) { - *p = tolower(*p); - ++p; - } - - P_PlayJingleMusic(player, musname, musflags, looping, jingletype); - return 0; -} - -static int lib_pRestoreMusic(lua_State *L) -{ - player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - //NOHUD - //INLEVEL - if (!player) - return LUA_ErrInvalid(L, "player_t"); - if (P_IsLocalPlayer(player)) - { - P_RestoreMusic(player); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - static int lib_pSpawnGhostMobj(lua_State *L) { mobj_t *mobj = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); @@ -2536,349 +2470,6 @@ static int lib_sStopSoundByID(lua_State *L) return 0; } -static int lib_sChangeMusic(lua_State *L) -{ - const char *music_name = luaL_checkstring(L, 1); - UINT32 position, prefadems, fadeinms; - boolean looping = (boolean)lua_opttrueboolean(L, 2); - player_t *player = NULL; - UINT16 music_flags = 0; - - if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) - { - player = *((player_t **)luaL_checkudata(L, 3, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - - music_flags = (UINT16)luaL_optinteger(L, 4, 0); - position = (UINT32)luaL_optinteger(L, 5, 0); - prefadems = (UINT32)luaL_optinteger(L, 6, 0); - fadeinms = (UINT32)luaL_optinteger(L, 7, 0); - - if (!player || P_IsLocalPlayer(player)) - { - S_ChangeMusicEx(music_name, music_flags, looping, position, prefadems, fadeinms); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sSpeedMusic(lua_State *L) -{ - fixed_t fixedspeed = luaL_checkfixed(L, 1); - float speed = FIXED_TO_FLOAT(fixedspeed); - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) - { - player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushboolean(L, S_SpeedMusic(speed)); - else - lua_pushnil(L); - return 1; -} - -static int lib_sMusicType(lua_State *L) -{ - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushstring(L, S_MusicType()); - else - lua_pushnil(L); - return 1; -} - -static int lib_sMusicPlaying(lua_State *L) -{ - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushboolean(L, S_MusicPlaying()); - else - lua_pushnil(L); - return 1; -} - -static int lib_sMusicPaused(lua_State *L) -{ - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushboolean(L, S_MusicPaused()); - else - lua_pushnil(L); - return 1; -} - -static int lib_sMusicName(lua_State *L) -{ - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushstring(L, S_MusicName()); - else - lua_pushnil(L); - return 1; -} - -static int lib_sSetMusicLoopPoint(lua_State *L) -{ - UINT32 looppoint = (UINT32)luaL_checkinteger(L, 1); - player_t *player = NULL; - //NOHUD - if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) - { - player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushboolean(L, S_SetMusicLoopPoint(looppoint)); - else - lua_pushnil(L); - return 1; -} - -static int lib_sGetMusicLoopPoint(lua_State *L) -{ - lua_pushinteger(L, S_GetMusicLoopPoint()); - return 1; -} - -static int lib_sGetMusicLength(lua_State *L) -{ - lua_pushinteger(L, S_GetMusicLength()); - return 1; -} - -static int lib_sGetMusicPosition(lua_State *L) -{ - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - lua_pushinteger(L, (int)S_GetMusicPosition()); - else - lua_pushnil(L); - return 1; -} - -static int lib_sSetMusicPosition(lua_State *L) -{ - UINT32 pos = (UINT32)luaL_checkinteger(L, 1); - lua_pushboolean(L, S_SetMusicPosition(pos)); - return 1; -} - -static int lib_sStopMusic(lua_State *L) -{ - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - S_StopMusic(); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sPauseMusic(lua_State *L) -{ - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - S_PauseAudio(); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sResumeMusic(lua_State *L) -{ - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - S_ResumeAudio(); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sMusicExists(lua_State *L) -{ - const char *music_name = luaL_checkstring(L, 1); - NOHUD - lua_pushboolean(L, S_MusicExists(music_name)); - return 1; -} - -static int lib_sSetInternalMusicVolume(lua_State *L) -{ - UINT32 volume = (UINT32)luaL_checkinteger(L, 1); - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) - { - player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - S_SetInternalMusicVolume(volume); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sStopFadingMusic(lua_State *L) -{ - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) - { - player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - S_StopFadingMusic(); - lua_pushboolean(L, true); - } - else - lua_pushnil(L); - return 1; -} - -static int lib_sFadeMusic(lua_State *L) -{ - UINT32 target_volume = (UINT32)luaL_checkinteger(L, 1); - UINT32 ms; - INT32 source_volume; - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) - { - player = *((player_t **)luaL_checkudata(L, 3, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - ms = (UINT32)luaL_checkinteger(L, 2); - source_volume = -1; - } - else if (!lua_isnone(L, 4) && lua_isuserdata(L, 4)) - { - player = *((player_t **)luaL_checkudata(L, 4, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - source_volume = (INT32)luaL_checkinteger(L, 2); - ms = (UINT32)luaL_checkinteger(L, 3); - } - else if (luaL_optinteger(L, 3, INT32_MAX) == INT32_MAX) - { - ms = (UINT32)luaL_checkinteger(L, 2); - source_volume = -1; - } - else - { - source_volume = (INT32)luaL_checkinteger(L, 2); - ms = (UINT32)luaL_checkinteger(L, 3); - } - - NOHUD - - if (!player || P_IsLocalPlayer(player)) - lua_pushboolean(L, S_FadeMusicFromVolume(target_volume, source_volume, ms)); - else - lua_pushnil(L); - return 1; -} - -static int lib_sFadeOutStopMusic(lua_State *L) -{ - UINT32 ms = (UINT32)luaL_checkinteger(L, 1); - player_t *player = NULL; - NOHUD - if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) - { - player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); - if (!player) - return LUA_ErrInvalid(L, "player_t"); - } - if (!player || P_IsLocalPlayer(player)) - { - lua_pushboolean(L, S_FadeOutStopMusic(ms)); - } - else - lua_pushnil(L); - return 1; -} - static int lib_sOriginPlaying(lua_State *L) { void *origin = NULL; @@ -4008,9 +3599,6 @@ static luaL_Reg lib[] = { {"P_IsObjectOnGround",lib_pIsObjectOnGround}, {"P_InQuicksand",lib_pInQuicksand}, {"P_SetObjectMomZ",lib_pSetObjectMomZ}, - {"P_PlayJingle",lib_pPlayJingle}, - {"P_PlayJingleMusic",lib_pPlayJingleMusic}, - {"P_RestoreMusic",lib_pRestoreMusic}, {"P_SpawnGhostMobj",lib_pSpawnGhostMobj}, {"P_SpawnFakeShadow",lib_pSpawnFakeShadow}, {"P_GivePlayerRings",lib_pGivePlayerRings}, @@ -4110,28 +3698,6 @@ static luaL_Reg lib[] = { {"S_StartSoundAtVolume",lib_sStartSoundAtVolume}, {"S_StopSound",lib_sStopSound}, {"S_StopSoundByID",lib_sStopSoundByID}, - {"S_ChangeMusic",lib_sChangeMusic}, - {"S_SpeedMusic",lib_sSpeedMusic}, - {"S_MusicType",lib_sMusicType}, - {"S_MusicPlaying",lib_sMusicPlaying}, - {"S_MusicPaused",lib_sMusicPaused}, - {"S_MusicName",lib_sMusicName}, - {"S_MusicExists",lib_sMusicExists}, - {"S_GetMusicLength",lib_sGetMusicLength}, - {"S_SetMusicLoopPoint",lib_sSetMusicLoopPoint}, - {"S_GetMusicLoopPoint",lib_sGetMusicLoopPoint}, - {"S_SetMusicPosition",lib_sSetMusicPosition}, - {"S_GetMusicPosition",lib_sGetMusicPosition}, - {"S_PauseMusic",lib_sPauseMusic}, - {"S_ResumeMusic",lib_sResumeMusic}, - {"S_StopMusic",lib_sStopMusic}, - {"S_SetInternalMusicVolume", lib_sSetInternalMusicVolume}, - {"S_StopFadingMusic",lib_sStopFadingMusic}, - {"S_FadeMusic",lib_sFadeMusic}, - {"S_FadeOutStopMusic",lib_sFadeOutStopMusic}, - {"S_GetMusicLength",lib_sGetMusicLength}, - {"S_GetMusicPosition",lib_sGetMusicPosition}, - {"S_SetMusicPosition",lib_sSetMusicPosition}, {"S_OriginPlaying",lib_sOriginPlaying}, {"S_IdPlaying",lib_sIdPlaying}, {"S_SoundPlaying",lib_sSoundPlaying}, diff --git a/src/lua_hook.h b/src/lua_hook.h index 4990fe4fb..01daea11f 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -77,12 +77,10 @@ automatically. X (PlayerThink),/* P_PlayerThink */\ X (GameQuit),\ X (PlayerCmd),/* building the player's ticcmd struct */\ - X (MusicChange),\ X (VoteThinker),/* Y_VoteTicker */\ #define STRING_HOOK_LIST(X) \ X (SpecialExecute),\ - X (ShouldJingleContinue),/* should jingle of the given music continue playing */\ #define HUD_HOOK_LIST(X) \ X (game),\ @@ -147,8 +145,6 @@ void LUA_HookPlayerQuit(player_t *, kickreason_t); int LUA_HookTeamSwitch(player_t *, int newteam, boolean fromspectators, boolean tryingautobalance, boolean tryingscramble); int LUA_HookViewpointSwitch(player_t *player, player_t *newdisplayplayer, boolean forced); int LUA_HookSeenPlayer(player_t *player, player_t *seenfriend); -int LUA_HookShouldJingleContinue(player_t *, const char *musname); -int LUA_HookMusicChange(const char *oldname, struct MusicChange *); #ifdef __cplusplus } // extern "C" diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index f5ca60255..65083e0e0 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -125,14 +125,6 @@ static void add_string_hook(lua_State *L, int type) switch (type) { - case STRING_HOOK(ShouldJingleContinue): - if (lua_isstring(L, 3)) - { // lowercase copy - string = Z_StrDup(lua_tostring(L, 3)); - strlwr(string); - } - break; - case STRING_HOOK(SpecialExecute): string = Z_StrDup(luaL_checkstring(L, 3)); strupr(string); @@ -963,106 +955,4 @@ int LUA_HookSeenPlayer(player_t *player, player_t *seenfriend) return hook.status; } -int LUA_HookShouldJingleContinue(player_t *player, const char *musname) -{ - Hook_State hook; - if (prepare_string_hook - (&hook, false, STRING_HOOK(ShouldJingleContinue), musname)) - { - LUA_PushUserdata(gL, player, META_PLAYER); - push_string(); - - hud_running = true; // local hook - call_hooks(&hook, 1, res_true); - hud_running = false; - } - return hook.status; -} - boolean hook_cmd_running = false; - -static void update_music_name(struct MusicChange *musicchange) -{ - size_t length; - const char * new = lua_tolstring(gL, -6, &length); - - if (length < 7) - { - strcpy(musicchange->newname, new); - lua_pushvalue(gL, -6);/* may as well keep it for next call */ - } - else - { - memcpy(musicchange->newname, new, 6); - musicchange->newname[6] = '\0'; - lua_pushlstring(gL, new, 6); - } - - lua_replace(gL, -7); -} - -static void res_musicchange(Hook_State *hook) -{ - struct MusicChange *musicchange = hook->userdata; - - // output 1: true, false, or string musicname override - if (lua_isstring(gL, -6)) - update_music_name(musicchange); - else if (lua_isboolean(gL, -6) && lua_toboolean(gL, -6)) - hook->status = true; - - // output 2: mflags override - if (lua_isnumber(gL, -5)) - *musicchange->mflags = lua_tonumber(gL, -5); - // output 3: looping override - if (lua_isboolean(gL, -4)) - *musicchange->looping = lua_toboolean(gL, -4); - // output 4: position override - if (lua_isnumber(gL, -3)) - *musicchange->position = lua_tonumber(gL, -3); - // output 5: prefadems override - if (lua_isnumber(gL, -2)) - *musicchange->prefadems = lua_tonumber(gL, -2); - // output 6: fadeinms override - if (lua_isnumber(gL, -1)) - *musicchange->fadeinms = lua_tonumber(gL, -1); -} - -int LUA_HookMusicChange(const char *oldname, struct MusicChange *param) -{ - const int type = HOOK(MusicChange); - const hook_t * map = &hookIds[type]; - - Hook_State hook; - - int k; - - if (prepare_hook(&hook, false, type)) - { - init_hook_call(&hook, 6, res_musicchange); - hook.values = 7;/* values pushed later */ - hook.userdata = param; - - lua_pushstring(gL, oldname);/* the only constant value */ - lua_pushstring(gL, param->newname);/* semi constant */ - - for (k = 0; k < map->numHooks; ++k) - { - get_hook(&hook, map->ids, k); - - lua_pushvalue(gL, -3); - lua_pushvalue(gL, -3); - lua_pushinteger(gL, *param->mflags); - lua_pushboolean(gL, *param->looping); - lua_pushinteger(gL, *param->position); - lua_pushinteger(gL, *param->prefadems); - lua_pushinteger(gL, *param->fadeinms); - - call_single_hook_no_copy(&hook); - } - - lua_settop(gL, 0); - } - - return hook.status; -} diff --git a/src/p_user.c b/src/p_user.c index 3031eba10..360085dfa 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -668,9 +668,6 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) break; case JT_OTHER: // Other state - result = LUA_HookShouldJingleContinue(&players[i], musname); - break; - case JT_NONE: // Null state case JT_MASTER: // Main level music default: diff --git a/src/s_sound.c b/src/s_sound.c index 8dd86d6c3..ecaaba460 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -2735,23 +2735,11 @@ void S_ChangeMusicEx(const char *mmusic, UINT16 mflags, boolean looping, UINT32 { char newmusic[7]; - struct MusicChange hook_param = { - newmusic, - &mflags, - &looping, - &position, - &prefadems, - &fadeinms - }; - if (S_MusicDisabled() || S_PlaysimMusicDisabled()) return; strncpy(newmusic, mmusic, 7); - if (LUA_HookMusicChange(music_name, &hook_param)) - return; - newmusic[6] = 0; // No Music (empty string) diff --git a/src/s_sound.h b/src/s_sound.h index 182c98160..753fe28cb 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -302,16 +302,6 @@ boolean S_RecallMusic(UINT16 status, boolean fromfirst); // Music Playback // -/* this is for the sake of the hook */ -struct MusicChange { - char * newname; - UINT16 * mflags; - boolean * looping; - UINT32 * position; - UINT32 * prefadems; - UINT32 * fadeinms; -}; - enum { MUS_SPECIAL = 1,/* powerups--invincibility, grow */