Class: SpriteKit::SpritesheetLoader
- Inherits:
-
Object
- Object
- SpriteKit::SpritesheetLoader
- Defined in:
- mygame/lib/sprite_kit/spritesheet_loader.rb
Instance Method Summary collapse
-
#initialize ⇒ SpritesheetLoader
constructor
A new instance of SpritesheetLoader.
- #load_directory(directory, parent_node: nil, spritesheets: {}) ⇒ Object
- #load_file(path:, name: nil) ⇒ Object
Constructor Details
#initialize ⇒ SpritesheetLoader
Returns a new instance of SpritesheetLoader.
3 4 5 6 7 8 9 |
# File 'mygame/lib/sprite_kit/spritesheet_loader.rb', line 3 def initialize @loadable_extensions = [ "jpeg", "jpg", "png" ] end |
Instance Method Details
#load_directory(directory, parent_node: nil, spritesheets: {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'mygame/lib/sprite_kit/spritesheet_loader.rb', line 11 def load_directory(directory, parent_node: nil, spritesheets: {}) return [] if directory.to_s == "" # Create root node if none provided root_node = Node.new(parent: nil, value: { type: :directory, path: directory }) parent_node ||= root_node GTK.list_files(directory).each do |file| stat = GTK.stat_file(File.join(directory, file)) next if !stat if stat[:file_type] == :directory # Create a directory node and recurse dir_node = Node.new(parent: parent_node, value: { type: :directory, path: stat[:path] }) parent_node.children << dir_node load_directory(stat[:path], parent_node: dir_node, spritesheets: spritesheets) end extension = file.split(".").last if @loadable_extensions.include?(extension) loaded = load_file(path: stat[:path]) spritesheets[stat[:path]] = loaded # Create a leaf node for this spritesheet file_node = Node.new(parent: parent_node, value: loaded.merge(type: :file)) parent_node.children << file_node end end { tree: Tree.new(root_node: root_node), spritesheets: spritesheets } end |
#load_file(path:, name: nil) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'mygame/lib/sprite_kit/spritesheet_loader.rb', line 48 def load_file(path:, name: nil) file_width, file_height = GTK.calcspritebox(path) { name: name, path: path, file_width: file_width, file_height: file_height, w: file_width, h: file_height, } end |