summaryrefslogtreecommitdiffhomepage
path: root/app/helpers/00_tileset.rb
blob: d6e6cf3a297dfdabd34b8eab97b6944040785aa6 (plain)
1
2
3
4
5
6
7
8
9
10
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
class Helper
  # Returns a loaded map and its dependecies(images,json)
  # If any are missing then it will load them from files

  @json_data = {}
  class <<self
    attr_accessor :json_data

    def get_json_tiles(json_name)
      if self.json_data[json_name].nil?
        self.json_data[json_name] = $gtk.parse_json_file "assets/json/#{json_name}.json"
        raise Exception.new "#{json_name} is null and not loaded. Cannot get json tile" if self.json_data[json_name].nil?

        #puts self.json_data[json_name].inspect
        #puts json_name
        if self.json_data[json_name]['type'] == 'map' #json_name.split("_").first == 'map'
          self.json_data[json_name]['tilesets'].each do |tileset|
            tileset = Helper.get_json_tiles(tileset['source'].split('/').last.delete_suffix('.tsx'))
            # download tileset here
            # $gtk.args.gtk.http_get 'https://mysite.net/#{tileset['name']}.png'
          end
        end
      end
      self.json_data[json_name]
    end

    def get_tile(json_name:, tile_index:)
      json_tiles = self.get_json_tiles(json_name)
      return puts "Error, json file not a tileset" unless json_tiles['type'] == 'tileset'
      return tile_index - json_tiles['tilecount'] if tile_index > json_tiles['tilecount']
      source_height_tiles = (tile_index.to_i / json_tiles['columns'].to_i).to_i# * json_tiles['tileheight']
      { w: json_tiles['tilewidth'],
        h: json_tiles['tileheight'],
        path: json_tiles['image'].split('mygame/').last.delete('\\'),
        source_x: ((tile_index % json_tiles['columns']) - 1) * json_tiles['tilewidth'],
        # source_y gets special treatment
        source_y: json_tiles['imageheight'] - ((source_height_tiles + 1) * json_tiles['tileheight']),
        source_w: json_tiles['tilewidth'],
        source_h: json_tiles['tileheight'] }
    end
  end
end