UNPKG

phaser4-rex-plugins

Version:
77 lines (69 loc) 1.91 kB
class Buff { constructor() { this.buffs = {}; } setEnable(key, enable) { if (enable === undefined) { enable = true; } if (!this.buffs.hasOwnProperty(key)) { this.buffs[key] = { enable: true, value: 0, type: ADD, }; } this.buffs[key].enable = enable; return this; } set(key, value) { this.setEnable(key); var valueType = typeof (value); if (valueType === 'number') { valueType = ADD; } else if (valueType === 'string') { if (value.indexOf('%') !== -1) { valueType = ADD_BASE_PERCENT; value = parseFloat(value) / 100; } else { valueType = ADD; value = parseFloat(value); } } var buff = this.buffs[key]; buff.value = value; buff.type = valueType; return this; } remove(key) { if (this.buffs.hasOwnProperty(key)) { delete this.buffs[key]; } return this; } buff(baseValue) { var result = baseValue; var buffs = this.buffs, value, valueType; for (var key in buffs) { value = buffs[key]; if (!value.enable) { continue; } valueType = value.type; value = value.value; switch (valueType) { case ADD: result += value; break; case ADD_BASE_PERCENT: result += baseValue * value; break; } } return result; } } const ADD = 0 const ADD_BASE_PERCENT = 1; export default Buff;