From 0f788068c1aa47bf1d4376b0cd07424784a74e2a Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Thu, 23 Feb 2023 01:13:48 -0600 Subject: [PATCH] Job route indicator --- scripts/client/job.js | 76 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 13 deletions(-) diff --git a/scripts/client/job.js b/scripts/client/job.js index bae4c3b0..cf8f97af 100644 --- a/scripts/client/job.js +++ b/scripts/client/job.js @@ -12,6 +12,12 @@ let localPlayerWorking = false; let jobRouteLocationBlip = null; let jobRouteLocationSphere = null; +let jobRouteLocationIndicatorPosition = toVector3(0.0, 0.0, 0.0); +let jobRouteLocationIndicatorSize = [32, 32]; +let jobRouteLocationIndicatorEnabled = false; +let jobRouteLocationIndicatorImagePath = "files/images/objective-icon.png"; +let jobRouteLocationIndicatorImage = null; + let jobBlipBlinkAmount = 0; let jobBlipBlinkTimes = 10; let jobBlipBlinkInterval = 500; @@ -36,11 +42,25 @@ class JobData { function initJobScript() { logToConsole(LOG_DEBUG, "[V.RP.Job]: Initializing job script ..."); + jobRouteLocationIndicatorImage = loadJobRouteLocationIndicatorImage(); logToConsole(LOG_DEBUG, "[V.RP.Job]: Job script initialized!"); } // =========================================================================== +function loadJobRouteLocationIndicatorImage() { + let imageStream = openFile(jobRouteLocationIndicatorImagePath); + let tempImage = null; + if (imageStream != null) { + tempImage = graphics.loadPNG(imageStream); + imageStream.close(); + } + + return tempImage +} + +// =========================================================================== + function setLocalPlayerJobType(tempJobType) { logToConsole(LOG_DEBUG, `[V.RP.Job] Set local player job type to ${tempJobType}`); localPlayerJobType = tempJobType; @@ -75,6 +95,11 @@ function showJobRouteLocation(position, colour) { blinkJobRouteLocationBlip(10, position, colour); jobRouteLocationBlip = game.createBlip(position, 0, 2, colour); } + + if (getGame() == V_GAME_MAFIA_ONE) { + jobRouteLocationIndicatorPosition = position; + jobRouteLocationIndicatorEnabled = true; + } } // =========================================================================== @@ -116,22 +141,30 @@ function blinkJobRouteLocationBlip(times, position, colour) { function hideJobRouteLocation() { logToConsole(LOG_DEBUG, `[V.RP.Job] Hiding job route location`); - if (jobRouteLocationBlip != null) { - destroyElement(jobRouteLocationBlip); - jobRouteLocationBlip = null; + if (isGameFeatureSupported("blip")) { + if (jobRouteLocationBlip != null) { + destroyElement(jobRouteLocationBlip); + jobRouteLocationBlip = null; + } + + if (jobRouteLocationSphere != null) { + destroyElement(jobRouteLocationSphere); + jobRouteLocationSphere = null; + } + + if (jobBlipBlinkTimer != null) { + clearInterval(jobBlipBlinkTimer); + } + + jobBlipBlinkAmount = 0; + jobBlipBlinkTimes = 0; } - if (jobRouteLocationSphere != null) { - destroyElement(jobRouteLocationSphere); - jobRouteLocationSphere = null; + if (getGame() == V_GAME_MAFIA_ONE) { + jobRouteLocationIndicatorPosition = toVector3(0.0, 0.0, 0.0); + jobRouteLocationIndicatorEnabled = false; } - if (jobBlipBlinkTimer != null) { - clearInterval(jobBlipBlinkTimer); - } - - jobBlipBlinkAmount = 0; - jobBlipBlinkTimes = 0; } // =========================================================================== @@ -236,4 +269,21 @@ function removeJobsFromClient() { getServerData().jobs.splice(0); } -// =========================================================================== \ No newline at end of file +// =========================================================================== + +function processJobLocationIndicatorRendering() { + if (jobRouteLocationIndicatorImage == null) { + return false; + } + + if (getGame() != V_GAME_MAFIA_ONE) { + return false; + } + + if (!jobRouteLocationIndicatorEnabled) { + return false; + } + + let screenPosition = getScreenFromWorldPosition(jobRouteLocationIndicatorPosition); + graphics.drawRectangle(jobRouteLocationIndicatorImage, [screenPosition.x - (jobRouteLocationIndicatorSize[0] / 2), screenPosition.y - (jobRouteLocationIndicatorSize[1] / 2)], [jobRouteLocationIndicatorSize[0], jobRouteLocationIndicatorSize[1]]); +} \ No newline at end of file