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.
 
 
 

68 rivejä
1.2 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. //Faction Skins
  22. 'gaekatlan-druid': {
  23. name: 'Gaekatlan Druid',
  24. sprite: [0, 1]
  25. }
  26. };
  27. module.exports = {
  28. init: function () {
  29. events.emit('onBeforeGetSkins', config);
  30. },
  31. getBlueprint: function (skinId) {
  32. return config[skinId];
  33. },
  34. getList: function (skins) {
  35. const result = Object
  36. .entries(config)
  37. .map(([skinId, skinConfig]) => {
  38. const { sprite: [ spriteX, spriteY ] } = skinConfig;
  39. const serializedSprite = `${spriteX},${spriteY}`;
  40. const skin = {
  41. id: skinId,
  42. ...skinConfig,
  43. sprite: serializedSprite
  44. };
  45. return skin;
  46. });
  47. return result;
  48. },
  49. getCell: function (skinId) {
  50. let skin = config[skinId] || config.wizard;
  51. return (skin.sprite[1] * 8) + skin.sprite[0];
  52. },
  53. getSpritesheet: function (skinId) {
  54. let skin = config[skinId] || config.wizard;
  55. return skin.spritesheet || 'characters';
  56. }
  57. };