Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
export function getInterval(duration) {
|
||||
return duration.durationInterval;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
export function getUnit(duration) {
|
||||
return duration.durationUnit;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
export function getType(duration) {
|
||||
return duration.durationType;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
export var DurationUnitEnum;
|
||||
(function (DurationUnitEnum) {
|
||||
DurationUnitEnum["ROUND"] = "Round";
|
||||
DurationUnitEnum["MINUTE"] = "Minute";
|
||||
DurationUnitEnum["HOUR"] = "Hour";
|
||||
DurationUnitEnum["DAY"] = "Day";
|
||||
DurationUnitEnum["UNTIL_DISPELLED"] = "Until Dispelled";
|
||||
DurationUnitEnum["SPECIAL"] = "Special";
|
||||
})(DurationUnitEnum || (DurationUnitEnum = {}));
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as DurationAccessors from './accessors';
|
||||
import * as DurationConstants from './constants';
|
||||
import * as DurationRenderers from './renderers';
|
||||
import * as DurationUtils from './utils';
|
||||
export * from './constants';
|
||||
export { DurationAccessors, DurationRenderers, DurationUtils };
|
||||
export default Object.assign(Object.assign(Object.assign(Object.assign({}, DurationAccessors), DurationConstants), DurationRenderers), DurationUtils);
|
||||
@@ -0,0 +1,73 @@
|
||||
import { FormatUtils } from '../Format';
|
||||
import { SpellDurationTypeEnum } from '../Spell';
|
||||
import { getInterval, getType, getUnit } from './accessors';
|
||||
import { DurationUnitEnum } from './constants';
|
||||
import { isSpellDurationContract } from './utils';
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
* @param usesConcentration
|
||||
*/
|
||||
export function renderDuration(duration, usesConcentration = false) {
|
||||
const durationInterval = getInterval(duration);
|
||||
const durationUnit = getUnit(duration);
|
||||
let durationType = null;
|
||||
if (isSpellDurationContract(duration)) {
|
||||
durationType = getType(duration);
|
||||
}
|
||||
let durationString = '';
|
||||
if (durationType !== null &&
|
||||
durationType !== SpellDurationTypeEnum.TIME &&
|
||||
durationType !== SpellDurationTypeEnum.CONCENTRATION) {
|
||||
durationString += durationType;
|
||||
}
|
||||
if (durationInterval && durationInterval > 0) {
|
||||
durationString += ` ${durationInterval} ${durationUnit}${durationInterval !== 1 ? 's' : ''}`;
|
||||
}
|
||||
durationString = durationString.trim();
|
||||
if (usesConcentration) {
|
||||
durationString = `Concentration, up to ${durationString}`;
|
||||
}
|
||||
return FormatUtils.upperCaseFirstLetterOnly(durationString);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
export function renderDurationAbbreviation(duration) {
|
||||
const durationInterval = getInterval(duration);
|
||||
const durationUnit = getUnit(duration);
|
||||
let durationType = null;
|
||||
if (isSpellDurationContract(duration)) {
|
||||
durationType = getType(duration);
|
||||
}
|
||||
let durationString = '';
|
||||
if (durationType &&
|
||||
durationType !== SpellDurationTypeEnum.TIME &&
|
||||
durationType !== SpellDurationTypeEnum.CONCENTRATION) {
|
||||
durationString = durationType;
|
||||
}
|
||||
else if (durationInterval && durationInterval > 0) {
|
||||
durationString = `${durationInterval}${renderDurationUnitAbbreviation(durationUnit)}`;
|
||||
}
|
||||
return durationString;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param unit
|
||||
*/
|
||||
export function renderDurationUnitAbbreviation(unit) {
|
||||
switch (unit) {
|
||||
case DurationUnitEnum.DAY:
|
||||
return 'd';
|
||||
case DurationUnitEnum.HOUR:
|
||||
return 'h';
|
||||
case DurationUnitEnum.MINUTE:
|
||||
return 'm';
|
||||
case DurationUnitEnum.ROUND:
|
||||
return 'Rnd';
|
||||
default:
|
||||
// not implemented
|
||||
}
|
||||
return '';
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
export function isSpellDurationContract(duration) {
|
||||
return duration.durationType !== undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user