Skip to content

Commit

Permalink
feat: func for recognizing cef env
Browse files Browse the repository at this point in the history
  • Loading branch information
dsrkafuu committed Dec 8, 2021
1 parent df88e19 commit 42adb16
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 41 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
72 changes: 35 additions & 37 deletions src/modules/injectExtendData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand All @@ -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
}%`,
Expand All @@ -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),
};
}

Expand All @@ -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,
Expand Down
5 changes: 5 additions & 0 deletions src/modules/isCEFSharp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
function isCEFSharp() {
return Boolean(window.OverlayPluginApi);
}

export default isCEFSharp;
3 changes: 3 additions & 0 deletions src/overlay.ts
Original file line number Diff line number Diff line change
@@ -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';

Expand Down Expand Up @@ -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;
Expand Down
7 changes: 6 additions & 1 deletion src/utils/getter.ts
Original file line number Diff line number Diff line change
@@ -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;
}

0 comments on commit 42adb16

Please sign in to comment.