From 82c34125982755446fa86f94880fcd606a6ecd36 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:58:13 -0500 Subject: [PATCH] Start working on body part support for skin select --- scripts/client/skin-select.js | 39 +++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/scripts/client/skin-select.js b/scripts/client/skin-select.js index c918625e..5b0d7b87 100644 --- a/scripts/client/skin-select.js +++ b/scripts/client/skin-select.js @@ -21,12 +21,24 @@ let skinSelectorIndex = 0; let skinSelectPosition = null; let skinSelectHeading = null; +let lastSkinSelectKeyPress = 0; +let skinSelectKeyPressCooldown = 250; + +let skinSelectChoosingPart = AGRP_SKINSELECT_NONE; +let skinSelectBodyParts = { + [AGRP_SKINSELECT_HEAD]: [0, 0], + [AGRP_SKINSELECT_UPPER]: [0, 0], + [AGRP_SKINSELECT_LOWER]: [0, 0], + [AGRP_SKINSELECT_HAT]: [0, 0], +}; + // =========================================================================== function initSkinSelectScript() { logToConsole(LOG_DEBUG, "[VRR.SkinSelect]: Initializing skin selector script ..."); skinSelectMessageFontTop = loadSkinSelectMessageFontTop(); - skinSelectMessageFontBottom = loadSkinSelectMessageFontBottom(); + skinSelectMessageFontBottomUpper = loadSkinSelectMessageFontBottom(); + skinSelectMessageFontBottomLower = loadSkinSelectMessageFontBottom(); logToConsole(LOG_DEBUG, "[VRR.SkinSelect]: Skin selector script initialized!"); } @@ -45,6 +57,13 @@ function loadSkinSelectMessageFontBottom() { // =========================================================================== function processSkinSelectKeyPress(keyCode) { + // Make sure they aren't spamming it (causes crashes) + if (sdl.ticks - lastSkinSelectKeyPress < skinSelectKeyPressCooldown) { + return false; + } + + lastSkinSelectKeyPress = sdl.ticks; + if (usingSkinSelector) { if (keyCode == SDLK_LEFT || keyCode == SDLK_A) { if (skinSelectorIndex >= allowedSkins.length - 1) { @@ -64,6 +83,15 @@ function processSkinSelectKeyPress(keyCode) { logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`); skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; setLocalPlayerSkin(allowedSkins[skinSelectorIndex][0]); + } else if (keyCode == SDLK_UP || keyCode == SDLK_W) { + if (skinSelectorIndex >= allowedSkins.length - 1) { + skinSelectorIndex = 1; + } else { + skinSelectorIndex = skinSelectorIndex + 1; + } + logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`); + skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; + setLocalPlayerSkin(allowedSkins[skinSelectorIndex][0]); } else if (keyCode == SDLK_RETURN) { sendNetworkEventToServer("agrp.skinSelected", skinSelectorIndex); toggleSkinSelect(false); @@ -81,10 +109,13 @@ function processSkinSelectKeyPress(keyCode) { function processSkinSelectRendering() { if (usingSkinSelector) { - if (skinSelectMessageFontTop != null && skinSelectMessageFontBottom != null) { - if (skinSelectMessageTextTop != "" && skinSelectMessageTextBottom != "") { + if (skinSelectMessageFontTop != null && skinSelectMessageFontBottomUpper != null && skinSelectMessageFontBottomLower != null) { + if (skinSelectMessageTextTop != "" && skinSelectMessageTextBottomUpper != "" && skinSelectMessageTextBottomLower != "") { skinSelectMessageFontTop.render(skinSelectMessageTextTop, [0, game.height - 100], game.width, 0.5, 0.0, skinSelectMessageFontTop.size, skinSelectMessageColourTop, true, true, false, true); - skinSelectMessageFontBottom.render(skinSelectMessageTextBottom, [0, game.height - 65], game.width, 0.5, 0.0, skinSelectMessageFontBottom.size, skinSelectMessageColourBottom, true, true, false, true); + skinSelectMessageFontBottomUpper.render(skinSelectMessageTextBottomUpper, [0, game.height - 65], game.width, 0.5, 0.0, skinSelectMessageTextBottomUpper.size, skinSelectMessageColourBottom, true, true, false, true); + if (getGame() == AGRP_GAME_GTA_IV) { + skinSelectMessageFontBottomLower.render(skinSelectMessageTextBottomLower, [0, game.height - 65], game.width, 0.5, 0.0, skinSelectMessageTextBottomLower.size, skinSelectMessageColourBottom, true, true, false, true); + } } } }