You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

63 line
1.1 KiB

  1. const events = require('../misc/events');
  2. const config = {
  3. wizard: {
  4. name: 'Wizard',
  5. sprite: [0, 0],
  6. defaultSpirit: 'owl',
  7. default: true
  8. },
  9. thief: {
  10. name: 'Thief',
  11. sprite: [1, 0],
  12. defaultSpirit: 'lynx',
  13. default: true
  14. },
  15. warrior: {
  16. name: 'Warrior',
  17. sprite: [2, 0],
  18. defaultSpirit: 'bear',
  19. default: true
  20. }
  21. };
  22. module.exports = {
  23. init: function () {
  24. events.emit('onBeforeGetSkins', config);
  25. },
  26. getBlueprint: function (skinId) {
  27. return config[skinId];
  28. },
  29. getList: function (skins) {
  30. const result = Object
  31. .entries(config)
  32. .map(([skinId, skinConfig]) => {
  33. const { sprite: [ spriteX, spriteY ] } = skinConfig;
  34. const serializedSprite = `${spriteX},${spriteY}`;
  35. const skin = {
  36. id: skinId,
  37. ...skinConfig,
  38. sprite: serializedSprite
  39. };
  40. return skin;
  41. });
  42. return result;
  43. },
  44. getCell: function (skinId) {
  45. let skin = config[skinId] || config.wizard;
  46. return (skin.sprite[1] * 8) + skin.sprite[0];
  47. },
  48. getSpritesheet: function (skinId) {
  49. let skin = config[skinId] || config.wizard;
  50. return skin.spritesheet || 'characters';
  51. }
  52. };