From 42adb160f55faba72e49f845cbf601accb92aec6 Mon Sep 17 00:00:00 2001 From: dsrkafuu Date: Wed, 8 Dec 2021 11:05:50 +0800 Subject: [PATCH] feat: func for recognizing cef env --- README.md | 6 +++ package-lock.json | 4 +- package.json | 2 +- src/modules/injectExtendData.ts | 72 ++++++++++++++++----------------- src/modules/isCEFSharp.ts | 5 +++ src/overlay.ts | 3 ++ src/utils/getter.ts | 7 +++- 7 files changed, 58 insertions(+), 41 deletions(-) create mode 100644 src/modules/isCEFSharp.ts diff --git a/README.md b/README.md index c9bcac7..7308bbd 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,12 @@ simulate triggering event once static function for merging combatant like pets into first player arg +### `OverlayAPI.isCEFSharp` + +`isCEFSharp(): boolean;` + +check if in overlay plugin emblemed cef + ## Development Clone this repo, then: diff --git a/package-lock.json b/package-lock.json index e020d20..46e42ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ffxiv-overlay-api", - "version": "4.1.0-beta.7", + "version": "4.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ffxiv-overlay-api", - "version": "4.1.0-beta.7", + "version": "4.1.0", "license": "MIT", "devDependencies": { "@typescript-eslint/eslint-plugin": "~5.5.0", diff --git a/package.json b/package.json index f67641f..6adc068 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ffxiv-overlay-api", - "version": "4.1.0-beta.7", + "version": "4.1.0", "description": "Build your own modern FFXIV overlay with npm & TypeScript support.", "keywords": [ "ffxiv", diff --git a/src/modules/injectExtendData.ts b/src/modules/injectExtendData.ts index c5e1fb8..ab83462 100644 --- a/src/modules/injectExtendData.ts +++ b/src/modules/injectExtendData.ts @@ -6,9 +6,7 @@ import { EventData, ExtendData, } from '../types'; -import { getPctNum } from '../utils/getter'; - -const toInt = Number.parseInt || window.parseInt || Math.floor; +import { getPctNum, getInt } from '../utils/getter'; /** * parse job type @@ -87,13 +85,13 @@ function parsePlayer(data: any): CombatantData { const maxHitData = data.maxhit.split('-'); if (maxHitData.length > 1) { maxHit = maxHitData[0]; - maxHitDamage = toInt(maxHitData[1]); + maxHitDamage = getInt(maxHitData[1]); } let [maxHeal, maxHealDamage] = ['', 0]; const maxHealData = data.maxheal.split('-'); if (maxHealData.length > 1) { maxHeal = maxHealData[0]; - maxHealDamage = toInt(maxHealData[1]); + maxHealDamage = getInt(maxHealData[1]); } return { @@ -102,36 +100,36 @@ function parsePlayer(data: any): CombatantData { job: data.Job.toLowerCase(), jobType: parseJob(data.Job), - dps: toInt(data.encdps), - last10DPS: toInt(data.Last10DPS), - last30DPS: toInt(data.Last30DPS), - last60DPS: toInt(data.Last60DPS), - hps: toInt(data.enchps), + dps: getInt(data.encdps), + last10DPS: getInt(data.Last10DPS), + last30DPS: getInt(data.Last30DPS), + last60DPS: getInt(data.Last60DPS), + hps: getInt(data.enchps), - swings: toInt(data.swings), - hits: toInt(data.hits), - deaths: toInt(data.deaths), + swings: getInt(data.swings), + hits: getInt(data.hits), + deaths: getInt(data.deaths), - directHits: toInt(data.DirectHitCount), + directHits: getInt(data.DirectHitCount), directHitPct: data.DirectHitPct || '', - critHits: toInt(data.crithits), + critHits: getInt(data.crithits), critHitPct: data['crithit%'] || '', - directCritHits: toInt(data.CritDirectHitCount), + directCritHits: getInt(data.CritDirectHitCount), directCritHitPct: data.CritDirectHitPct || '', - damage: toInt(data.damage), - damageTaken: toInt(data.damagetaken), + damage: getInt(data.damage), + damageTaken: getInt(data.damagetaken), damagePct: data['damage%'] || '', - healed: toInt(data.healed), - healsTaken: toInt(data.healstaken), + healed: getInt(data.healed), + healsTaken: getInt(data.healstaken), healsPct: data['healed%'] || '', // this includes shield pct - overHeal: toInt(data.overHeal), + overHeal: getInt(data.overHeal), overHealPct: data.OverHealPct || '', - shield: toInt(data.damageShield), + shield: getInt(data.damageShield), shieldPct: `${ Math.round( - (toInt(data.damageShield) / toInt(data.healed) || 0) * + (getInt(data.damageShield) / getInt(data.healed) || 0) * getPctNum(data['healed%'] || '') ) || 0 }%`, @@ -149,18 +147,18 @@ function parsePlayer(data: any): CombatantData { function parseEncounter(data: any): EncounterData { return { duration: data.duration || '', - durationSeconds: toInt(data.DURATION), + durationSeconds: getInt(data.DURATION), zoneName: data.CurrentZoneName || '', - dps: toInt(data.encdps), - last10DPS: toInt(data.Last10DPS), - last30DPS: toInt(data.Last30DPS), - last60DPS: toInt(data.Last60DPS), - hps: toInt(data.enchps), + dps: getInt(data.encdps), + last10DPS: getInt(data.Last10DPS), + last30DPS: getInt(data.Last30DPS), + last60DPS: getInt(data.Last60DPS), + hps: getInt(data.enchps), - damage: toInt(data.damage), - healed: toInt(data.healed), - shield: toInt(data.damageShield), + damage: getInt(data.damage), + healed: getInt(data.healed), + shield: getInt(data.damageShield), }; } @@ -182,12 +180,12 @@ function parseLimitBreak(data: any): LimitBreakData { return { name: 'Limit Break', - dps: toInt(data.encdps), - hps: toInt(data.enchps), + dps: getInt(data.encdps), + hps: getInt(data.enchps), - damage: toInt(data.damage), - healed: toInt(data.healed), - shield: toInt(data.damageShield), + damage: getInt(data.damage), + healed: getInt(data.healed), + shield: getInt(data.damageShield), maxHit, maxHeal, diff --git a/src/modules/isCEFSharp.ts b/src/modules/isCEFSharp.ts new file mode 100644 index 0000000..5cf23e6 --- /dev/null +++ b/src/modules/isCEFSharp.ts @@ -0,0 +1,5 @@ +function isCEFSharp() { + return Boolean(window.OverlayPluginApi); +} + +export default isCEFSharp; diff --git a/src/overlay.ts b/src/overlay.ts index 84f845a..bc25ecf 100644 --- a/src/overlay.ts +++ b/src/overlay.ts @@ -1,5 +1,6 @@ import { logInfo, logError, logWarn } from './utils/logger'; import injectExtendData from './modules/injectExtendData'; +import isCEFSharp from './modules/isCEFSharp'; import mergeCombatant from './modules/mergeCombatant'; import { EventType, EventData, EventCallback } from './types'; @@ -38,6 +39,8 @@ class OverlayAPI { static _instance: OverlayAPI | null = null; // function for merging combatant like pets into first player arg static mergeCombatant = mergeCombatant; + // check if in overlay plugin emblemed cef + static isCEFSharp = isCEFSharp; // plugin init status private _status = false; diff --git a/src/utils/getter.ts b/src/utils/getter.ts index 08599e4..97064e1 100644 --- a/src/utils/getter.ts +++ b/src/utils/getter.ts @@ -1,10 +1,15 @@ +export function getInt(input: string | number) { + const toInt = Number.parseInt || window.parseInt; + return toInt(`${input}`); +} + /** * get number from pct string */ export function getPctNum(str: string) { const exp = /([0-9]+)%/gi.exec(str); if (exp && exp[1]) { - return Number.parseInt(exp[1]) || 0; + return getInt(exp[1]) || 0; } return 0; }