UNPKG

phaser4-rex-plugins

Version:
155 lines (122 loc) 3.89 kB
import BaseShapes from '../shapes/BaseShapes.js'; import Methods from './methods/Methods.js'; import { DefaultBoxFillColor, DefaultCheckerColor } from './Const.js'; const GetValue = Phaser.Utils.Objects.GetValue; const IsPlainObject = Phaser.Utils.Objects.IsPlainObject; class CheckboxShape extends BaseShapes { constructor(scene, x, y, width, height, color, config) { if (IsPlainObject(x)) { config = x; x = GetValue(config, 'x', 0); y = GetValue(config, 'y', 0); width = GetValue(config, 'width', 2); height = GetValue(config, 'height', 2); color = GetValue(config, 'color', DefaultBoxFillColor); } else if (IsPlainObject(color)) { config = color; color = GetValue(config, 'color', DefaultBoxFillColor); } super(scene, x, y, width, height); this.type = 'rexCheckbox'; if (color === undefined) { color = DefaultBoxFillColor; } this.setBoxShape( GetValue(config, 'circleBox', false), ); this.setBoxFillStyle( color, GetValue(config, 'boxFillAlpha', 1) ); this.setUncheckedBoxFillStyle( GetValue(config, 'uncheckedColor', null), GetValue(config, 'uncheckedBoxFillAlpha', 1) ) this.setBoxStrokeStyle( GetValue(config, 'boxLineWidth', 4), GetValue(config, 'boxStrokeColor', color), GetValue(config, 'boxStrokeAlpha', 1) ); this.setUncheckedBoxStrokeStyle( this.boxLineWidth, GetValue(config, 'uncheckedBoxStrokeColor', this.boxStrokeColor), GetValue(config, 'uncheckedBoxStrokeAlpha', this.boxStrokeAlpha) ); this.setCheckerStyle( GetValue(config, 'checkerColor', DefaultCheckerColor), GetValue(config, 'checkerAlpha', 1) ); this.setBoxSize( GetValue(config, 'boxSize', 1) ); this.setCheckerSize( GetValue(config, 'checkerSize', 1) ) this.setCheckerAnimationDuration( GetValue(config, 'animationDuration', 150) ); this.buildShapes(); var value = GetValue(config, 'checked'); if (value === undefined) { value = GetValue(config, 'value', false); } this.setValue(value); } get value() { return this._value; } set value(value) { value = !!value; if (this._value === value) { return; } this.dirty = true; this._value = value; if (value) { this.playCheckerAnimation(); } else { this.stopCheckerAnimation(); } this.emit('valuechange', value); } setValue(value) { this.value = value; return this; } toggleValue() { this.setValue(!this.value); return this; } get checked() { return this.value; } set checked(value) { this.value = value; } setChecked(checked) { if (checked === undefined) { checked = true; } this.setValue(checked); return this; } toggleChecked() { this.toggleValue(); return this; } get checkerAnimProgress() { return this._checkerAnimProgress; } set checkerAnimProgress(value) { if (this._checkerAnimProgress === value) { return; } this._checkerAnimProgress = value; this.dirty = true; } } Object.assign( CheckboxShape.prototype, Methods, ) export default CheckboxShape;