120 lines
4.8 KiB
JavaScript
120 lines
4.8 KiB
JavaScript
// ===========================================================================
|
|
// Vortrex's Roleplay Resource
|
|
// https://github.com/VortrexFTW/gtac_roleplay
|
|
// ===========================================================================
|
|
// FILE: business.js
|
|
// DESC: Provides business functions and usage
|
|
// TYPE: Client (JavaScript)
|
|
// ===========================================================================
|
|
|
|
class BusinessData {
|
|
constructor(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
|
|
this.index = -1;
|
|
this.businessId = businessId;
|
|
this.name = name;
|
|
this.entrancePosition = entrancePosition;
|
|
this.blipModel = blipModel;
|
|
this.pickupModel = pickupModel;
|
|
this.hasInterior = hasInterior;
|
|
this.hasItems = hasItems;
|
|
this.blipId = -1;
|
|
this.labelInfoType = 0;
|
|
}
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Received business ${businessId} (${name}) from server`);
|
|
|
|
if (!areServerElementsSupported()) {
|
|
if (getBusinessData(businessId) != false) {
|
|
let businessData = getBusinessData(businessId);
|
|
businessData.name = name;
|
|
businessData.entrancePosition = entrancePosition;
|
|
businessData.blipModel = blipModel;
|
|
businessData.pickupModel = pickupModel;
|
|
businessData.hasInterior = hasInterior;
|
|
businessData.hasItems = hasItems;
|
|
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} already exists. Checking blip ...`);
|
|
if (blipModel == -1) {
|
|
if (businessData.blipId != -1) {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been removed by the server`);
|
|
if (getGame() == VRR_GAME_GTA_IV) {
|
|
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
|
|
} else {
|
|
destroyElement(getElementFromId(blipId));
|
|
}
|
|
businessData.blipId = -1;
|
|
//businesses.splice(businessData.index, 1);
|
|
//setAllBusinessDataIndexes();
|
|
} else {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip is unchanged`);
|
|
}
|
|
} else {
|
|
if (businessData.blipId != -1) {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been changed by the server`);
|
|
if (getGame() == VRR_GAME_GTA_IV) {
|
|
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
|
|
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
|
|
natives.setBlipMarkerLongDistance(businessData.blipId, false);
|
|
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
|
|
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ..." : ""}`);
|
|
}
|
|
} else {
|
|
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
|
|
if (blipId != -1) {
|
|
tempBusinessData.blipId = blipId;
|
|
}
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
|
}
|
|
}
|
|
} else {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} doesn't exist. Adding ...`);
|
|
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
|
if (blipModel != -1) {
|
|
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
|
|
if (blipId != -1) {
|
|
tempBusinessData.blipId = blipId;
|
|
}
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
|
} else {
|
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} has no blip.`);
|
|
}
|
|
getServerData().businesses.push(tempBusinessData);
|
|
setAllBusinessDataIndexes();
|
|
}
|
|
}
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
/**
|
|
* @param {number} businessId - The ID of the business (initially provided by server)
|
|
* @return {BusinessData} The business's data (class instance)
|
|
*/
|
|
function getBusinessData(businessId) {
|
|
//let tempBusinessData = businesses.find((b) => b.businessId == businessId);
|
|
//return (typeof tempBusinessData != "undefined") ? tempBusinessData[0] : false;
|
|
|
|
let businesses = getServerData().businesses;
|
|
|
|
for (let i in businesses) {
|
|
if (businesses[i].businessId == businessId) {
|
|
return businesses[i];
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function setAllBusinessDataIndexes() {
|
|
for (let i in getServerData().businesses) {
|
|
getServerData().businesses[i].index = i;
|
|
}
|
|
}
|
|
|
|
// ===========================================================================
|