UNPKG

phaser3-rex-plugins

Version:
249 lines (239 loc) 8 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.rextintrgbplugin = factory()); })(this, (function () { 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } var GetR = function GetR(colorInt) { return colorInt >> 16 & 0xff; }; var GetG = function GetG(colorInt) { return colorInt >> 8 & 0xff; }; var GetB = function GetB(colorInt) { return colorInt & 0xff; }; var MaskR = ~(0xff << 16) & 0xffffff; var MaskG = ~(0xff << 8) & 0xffffff; var MaskB = ~0xff & 0xffffff; var SetR = function SetR(colorInt, r) { return (r & 0xff) << 16 | colorInt & MaskR; }; var SetG = function SetG(colorInt, g) { return (g & 0xff) << 8 | colorInt & MaskG; }; var SetB = function SetB(colorInt, b) { return b & 0xff | colorInt & MaskB; }; var SetRGB = function SetRGB(colorInt, r, g, b) { return (r & 0xff) << 16 | (g & 0xff) << 8 | b & 0xff; }; var AddTintRGBProperties = function AddTintRGBProperties(gameObject, tintRGB) { // Don't attach properties again if (gameObject.hasOwnProperty('tintR')) { return gameObject; } if (tintRGB === undefined) { tintRGB = 0xffffff; } var tintR = GetR(tintRGB); var tintG = GetG(tintRGB); var tintB = GetB(tintRGB); // Override tint property Object.defineProperty(gameObject, 'tint', { get: function get() { return tintRGB; }, set: function set(value) { value = Math.floor(value) & 0xffffff; if (gameObject.setTint) { gameObject.setTint(value); } if (tintRGB !== value) { tintRGB = value; tintR = GetR(tintRGB); tintG = GetG(tintRGB); tintB = GetB(tintRGB); // gameObject.emit('_tintchange', value, tintR, tintG, tintB); } } }); Object.defineProperty(gameObject, 'tintR', { get: function get() { return tintR; }, set: function set(value) { value = Math.floor(value) & 0xff; if (tintR !== value) { tintR = value; gameObject.tint = SetR(tintRGB, value); } } }); Object.defineProperty(gameObject, 'tintG', { get: function get() { return tintG; }, set: function set(value) { value = Math.floor(value) & 0xff; if (tintG !== value) { tintG = value; gameObject.tint = SetG(tintRGB, value); } } }); Object.defineProperty(gameObject, 'tintB', { get: function get() { return tintB; }, set: function set(value) { value = Math.floor(value) & 0xff; if (tintB !== value) { tintB = value; gameObject.tint = SetB(tintRGB, value); } } }); Object.defineProperty(gameObject, 'tintGray', { get: function get() { return Math.floor((tintR + tintG + tintB) / 3); }, set: function set(value) { value = Math.floor(value) & 0xff; if (tintR !== value || tintG !== value || tintB !== value) { tintR = value; tintG = value; tintB = value; gameObject.tint = SetRGB(tintRGB, value, value, value); } } }); gameObject.tint = tintRGB; return gameObject; }; var TintRGBPlugin = /*#__PURE__*/function (_Phaser$Plugins$BaseP) { _inherits(TintRGBPlugin, _Phaser$Plugins$BaseP); var _super = _createSuper(TintRGBPlugin); function TintRGBPlugin(pluginManager) { _classCallCheck(this, TintRGBPlugin); return _super.call(this, pluginManager); } _createClass(TintRGBPlugin, [{ key: "start", value: function start() { var eventEmitter = this.game.events; eventEmitter.on('destroy', this.destroy, this); } }, { key: "add", value: function add(gameObject, tintRGB) { return AddTintRGBProperties(gameObject, tintRGB); } }]); return TintRGBPlugin; }(Phaser.Plugins.BasePlugin); return TintRGBPlugin; }));