UNPKG

fivem-js

Version:

Javascript/Typescript wrapper for the FiveM natives

126 lines (125 loc) 5.97 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.UIMenuPercentagePanel = void 0; const utils_1 = require("../../../../utils"); const _1 = require("./"); const __1 = require("../../../"); const enums_1 = require("../../../../enums"); const __2 = require("../../../../"); class UIMenuPercentagePanel extends _1.AbstractUIMenuPanel { constructor(title, percentage = 0, minText, maxText) { super(); this._pressed = false; this.background = new __1.Sprite('commonmenu', 'gradient_bgd', new utils_1.Point(), new utils_1.Size(431, 76)); const barSize = new utils_1.Size(413, 10); this._activeBar = new __1.Rectangle(new utils_1.Point(), barSize, utils_1.Color.fromRgb(245, 245, 245)); this._backgroundBar = new __1.Rectangle(new utils_1.Point(), Object.assign({}, barSize), utils_1.Color.fromRgb(87, 87, 87)); this._title = new __1.Text('', new utils_1.Point(), 0.35, utils_1.Color.white, enums_1.Font.ChaletLondon, enums_1.Alignment.Centered); this._minText = new __1.Text('', new utils_1.Point(), 0.35, utils_1.Color.white, enums_1.Font.ChaletLondon, enums_1.Alignment.Centered); this._maxText = new __1.Text('', new utils_1.Point(), 0.35, utils_1.Color.white, enums_1.Font.ChaletLondon, enums_1.Alignment.Centered); this.Title = title; this.MinText = minText || '0%'; this.MaxText = maxText || '100%'; this.Percentage = percentage; } get Title() { return this._title.caption; } set Title(value) { this._title.caption = value ? value.trim() : ''; } get MinText() { return this._minText.caption; } set MinText(value) { this._minText.caption = value ? value.trim() : ''; } get MaxText() { return this._maxText.caption; } set MaxText(value) { this._maxText.caption = value ? value.trim() : ''; } get Percentage() { const progress = this._activeBar.size.width / this._backgroundBar.size.width; return Math.round(progress * 100) / 100; } set Percentage(value) { value = value || 0; value = value < 0 ? 0 : value > 1 ? 1 : value; this._activeBar.size.width = this._backgroundBar.size.width * value; } updateParentItem() { const last = this._lastPercentage; const current = this.Percentage; if (last !== current) { this._lastPercentage = current; this.ParentMenu.panelActivated.emit(this.parentItem, this, current); this.parentItem.panelActivated.emit(this, current); } } setVerticalPosition(y) { super.setVerticalPosition(y); this._activeBar.pos.Y = y + 50; this._backgroundBar.pos.Y = y + 50; y += 15; this._minText.pos.Y = y; this._title.pos.Y = y; this._maxText.pos.Y = y; } draw() { if (this.enabled) { super.draw(); const x = this.parentItem.offset.X + this.ParentMenu.WidthOffset / 2; this._activeBar.pos.X = x + 9; this._backgroundBar.pos.X = x + 9; this._minText.pos.X = x + 25; this._title.pos.X = x + 215.5; this._maxText.pos.X = x + 398; this._backgroundBar.draw(undefined, __1.Menu.screenResolution); this._activeBar.draw(undefined, __1.Menu.screenResolution); this._minText.draw(undefined, __1.Menu.screenResolution); this._title.draw(undefined, __1.Menu.screenResolution); this._maxText.draw(undefined, __1.Menu.screenResolution); this._processControls(); } } _processControls() { if (!this._pressed && __2.Game.isDisabledControlJustPressed(0, enums_1.Control.Attack) && this.ParentMenu.isMouseInBounds(new utils_1.Point(this._backgroundBar.pos.X, this._backgroundBar.pos.Y - 4), new utils_1.Size(this._backgroundBar.size.width, this._backgroundBar.size.height + 8))) { this._pressed = true; (() => __awaiter(this, void 0, void 0, function* () { while (__2.Game.isDisabledControlPressed(0, enums_1.Control.Attack)) { yield new Promise(resolve => setTimeout(resolve, 0)); this._activeBar.size.width = this._getProgress(); } this.updateParentItem(); this._pressed = false; }))(); const interval = setInterval(() => __awaiter(this, void 0, void 0, function* () { if (__2.Game.isDisabledControlPressed(0, enums_1.Control.Attack)) { this.updateParentItem(); } else { clearInterval(interval); } }), 75); } } _getProgress() { const drawOffset = this.ParentMenu.DrawOffset; const progress = (GetControlNormal(0, 239) - drawOffset.X) * __1.Menu.screenWidth - this._activeBar.pos.X; return progress < 0 ? 0 : progress > 413 ? 413 : progress; } } exports.UIMenuPercentagePanel = UIMenuPercentagePanel;