109 lines
4.0 KiB
JavaScript
109 lines
4.0 KiB
JavaScript
// ===========================================================================
|
|
// Vortrex's Roleplay Resource
|
|
// https://github.com/VortrexFTW/v-roleplay
|
|
// ===========================================================================
|
|
// FILE: messaging.js
|
|
// DESC: Provides messaging/textdraw functions and usage
|
|
// TYPE: Client (JavaScript)
|
|
// ===========================================================================
|
|
|
|
let bigGameMessageFonts = {};
|
|
let bigGameMessageFontName = "";
|
|
let bigGameMessageText = "";
|
|
let bigGameMessageColour = COLOUR_WHITE;
|
|
let bigGameMessageTimer = null;
|
|
|
|
let smallGameMessageFonts = {};
|
|
let smallGameMessageFontName = "";
|
|
let smallGameMessageText = "";
|
|
let smallGameMessageColour = COLOUR_WHITE;
|
|
let smallGameMessageTimer = null;
|
|
|
|
// ===========================================================================
|
|
|
|
function initMessagingScript() {
|
|
logToConsole(LOG_DEBUG, "[V.RP.Messaging]: Initializing messaging script ...");
|
|
smallGameMessageFonts = loadSmallGameMessageFonts();
|
|
bigGameMessageFonts = loadSmallGameMessageFonts();
|
|
logToConsole(LOG_DEBUG, "[V.RP.Messaging]: Messaging script initialized!");
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function loadSmallGameMessageFonts() {
|
|
let tempSmallGameMessageFonts = {};
|
|
let fontStream = openFile("files/fonts/pricedown.ttf");
|
|
if (fontStream != null) {
|
|
tempSmallGameMessageFonts["Pricedown"] = lucasFont.createFont(fontStream, 20.0);
|
|
fontStream.close();
|
|
}
|
|
|
|
fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
|
|
if (fontStream != null) {
|
|
tempSmallGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 20.0);
|
|
fontStream.close();
|
|
}
|
|
|
|
tempSmallGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(20.0, "Roboto");
|
|
tempSmallGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(20.0, "Roboto", "Light");
|
|
|
|
return tempSmallGameMessageFonts;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function loadBigGameMessageFont() {
|
|
let tempBigGameMessageFonts = {};
|
|
let fontStream = openFile("files/fonts/pricedown.ttf");
|
|
if (fontStream != null) {
|
|
tempBigGameMessageFonts["Pricedown"] = lucasFont.createFont(fontStream, 28.0);
|
|
fontStream.close();
|
|
}
|
|
|
|
fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
|
|
if (fontStream != null) {
|
|
tempBigGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 20.0);
|
|
fontStream.close();
|
|
}
|
|
|
|
tempBigGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(28.0, "Roboto");
|
|
tempBigGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(28.0, "Roboto", "Light");
|
|
|
|
return tempBigGameMessageFonts;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function processSmallGameMessageRendering() {
|
|
logToConsole(LOG_VERBOSE, "[V.RP.Messaging]: Processing small game message rendering ...");
|
|
if (renderSmallGameMessage) {
|
|
if (smallGameMessageText != "") {
|
|
logToConsole(LOG_VERBOSE, `[V.RP.Messaging]: Rendering small game message: ${smallGameMessageText}`);
|
|
if (smallGameMessageFonts[smallGameMessageFontName] != null) {
|
|
smallGameMessageFonts[smallGameMessageFontName].render(smallGameMessageText, [0, game.height - 90], game.width, 0.5, 0.0, smallGameMessageFonts[smallGameMessageFontName].size, smallGameMessageColour, true, true, false, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function showSmallGameMessage(text, colour, duration, fontName) {
|
|
logToConsole(LOG_DEBUG, `[V.RP.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
|
|
if (smallGameMessageText != "") {
|
|
clearTimeout(smallGameMessageTimer);
|
|
}
|
|
|
|
smallGameMessageFontName = fontName;
|
|
smallGameMessageColour = colour;
|
|
smallGameMessageText = text;
|
|
|
|
smallGameMessageTimer = setTimeout(function () {
|
|
smallGameMessageText = "";
|
|
smallGameMessageColour = COLOUR_WHITE;
|
|
smallGameMessageTimer = null;
|
|
smallGameMessageFontName = "";
|
|
}, duration);
|
|
}
|
|
|
|
// ===========================================================================
|