Skin.lua 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -------------------------------------------------------------------------------
  2. -- Spine Runtimes Software License
  3. -- Version 2.1
  4. --
  5. -- Copyright (c) 2013, Esoteric Software
  6. -- All rights reserved.
  7. --
  8. -- You are granted a perpetual, non-exclusive, non-sublicensable and
  9. -- non-transferable license to install, execute and perform the Spine Runtimes
  10. -- Software (the "Software") solely for internal use. Without the written
  11. -- permission of Esoteric Software (typically granted by licensing Spine), you
  12. -- may not (a) modify, translate, adapt or otherwise create derivative works,
  13. -- improvements of the Software or develop new applications using the Software
  14. -- or (b) remove, delete, alter or obscure any trademarks or any copyright,
  15. -- trademark, patent or other intellectual property or proprietary rights
  16. -- notices on or in the Software, including any copy thereof. Redistributions
  17. -- in binary or source form must include this license and terms.
  18. --
  19. -- THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
  20. -- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  21. -- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
  22. -- EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. -- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  24. -- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  25. -- OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  26. -- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  27. -- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  28. -- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. -------------------------------------------------------------------------------
  30. local Skin = {}
  31. function Skin.new (name)
  32. if not name then error("name cannot be nil", 2) end
  33. local self = {
  34. name = name,
  35. attachments = {}
  36. }
  37. function self:addAttachment (slotIndex, name, attachment)
  38. if not name then error("name cannot be nil.", 2) end
  39. self.attachments[slotIndex .. ":" .. name] = { slotIndex, name, attachment }
  40. end
  41. function self:getAttachment (slotIndex, name)
  42. if not name then error("name cannot be nil.", 2) end
  43. local values = self.attachments[slotIndex .. ":" .. name]
  44. if not values then return nil end
  45. return values[3]
  46. end
  47. function self:findNamesForSlot (slotIndex)
  48. local names = {}
  49. for k,v in self.attachments do
  50. if v[1] == slotIndex then table.insert(names, v[2]) end
  51. end
  52. end
  53. function self:findAttachmentsForSlot (slotIndex)
  54. local attachments = {}
  55. for k,v in self.attachments do
  56. if v[1] == slotIndex then table.insert(attachments, v[3]) end
  57. end
  58. end
  59. return self
  60. end
  61. return Skin