From b6f8bfb0d4e21e9bc539738d9938030b07898255 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sun, 27 Dec 2020 21:22:13 -0600 Subject: [PATCH] Add job labels --- scripts/client/label.js | 75 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/scripts/client/label.js b/scripts/client/label.js index e6e1da52..1f609c75 100644 --- a/scripts/client/label.js +++ b/scripts/client/label.js @@ -12,12 +12,17 @@ let businessLabels = []; let houseLabels = []; +let jobLabels = []; let propertyLabelNameFont = null; let propertyLabelLockedFont = null; +let jobNameLabelFont = null; +let jobHelpLabelFont = null; + let unlockedColour = toColour(50, 205, 50, 255); let lockedColour = toColour(205, 92, 92, 255); +let jobHelpColour = toColour(234, 198, 126, 255); // ---------------------------------------------------------------------------- @@ -52,6 +57,20 @@ class houseLabelData { } } +// ---------------------------------------------------------------------------- + +class jobLabelData { + constructor(labelId, position, height, name, tempJobType, hidden) { + this.labelId = labelId; + this.position = position; + this.height = height; + this.name = name; + this.jobType = tempJobType; + this.hidden = hidden; + } +} + + // ---------------------------------------------------------------------------- addEventHandler("OnDrawnHUD", function(event) { @@ -60,8 +79,12 @@ addEventHandler("OnDrawnHUD", function(event) { } for(let i in houseLabels) { - renderPropertyLabel(houseLabels[i], true); - } + renderPropertyLabel(houseLabels[i], false); + } + + for(let i in jobLabels) { + renderJobLabel(jobLabels[i]); + } }); // ---------------------------------------------------------------------------- @@ -124,6 +147,15 @@ addNetworkHandler("ag.houselabel.all", function(tempHouseLabels) { // ---------------------------------------------------------------------------- +addNetworkHandler("ag.joblabel.all", function(tempJobLabels) { + for(let i in tempJobLabels) { + jobLabels.push(new jobLabelData(tempJobLabels[i][0], tempJobLabels[i][1], tempJobLabels[i][2], tempJobLabels[i][3], tempJobLabels[i][4], tempJobLabels[i][5])); + } + return true; +}); + +// ---------------------------------------------------------------------------- + addNetworkHandler("ag.houselabel.name", function(labelId, name) { getHouseLabelData(labelId).name = name; return true; @@ -209,4 +241,43 @@ function renderPropertyLabel(labelData, isBusiness) { propertyLabelNameFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelNameFont.size, COLOUR_WHITE, false, true, false, true); } +// ---------------------------------------------------------------------------- + +function renderJobLabel(labelData) { + if(labelData.hidden) { + return false; + } + + if(localPlayer == null) { + return false; + } + + if(jobLabelNameFont == null) { + return false; + } + + if(jobLabelLockedFont == null) { + return false; + } + + if(localPlayer.position.distance(labelData.position) > 7.5) { + return false; + } + + let tempPosition = labelData.position; + let screenPosition = getScreenFromWorldPosition(tempPosition); + + screenPosition.y -= labelData.height; + + let text = (labelData.jobType == jobType) ? "Use /startwork to go on duty" : "Use /takejob to work for this job"; + let size = jobHelpLabelFont.measure(text, game.width, 0.0, 0.0, jobHelpLabelFont.size, true, true); + jobHelpLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobHelpLabelFont.size, COLOUR_YELLOW, false, true, false, true); + + screenPosition.y -= 18; + + text = labelData.name; + size = jobNameLabelFont.measure(text, game.width, 0.0, 0.0, jobNameLabelFont.size, true, true); + jobNameLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobNameLabelFont.size, COLOUR_WHITE, false, true, false, true); +} + // ---------------------------------------------------------------------------- \ No newline at end of file