12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- extends Node2D
- const TiledMapReader = preload("../addons/vnen.tiled_importer/tiled_map_reader.gd")
- # Declare member variables here. Examples:
- # var a = 2
- # var b = "text"
- var Downloader = preload("res://lib/Downloader.gd")
- var mapLoaded = ""
- var mapImported = false
- var toDownload = {}
- var downloader
- func init():
- downloader = Downloader.new()
- downloader.connect("download_done", self, "_on_downloader_done")
- downloader.connect("download_failed", self, "_on_downloader_error")
- func _on_downloader_done(url):
- toDownload.erase(url)
- print(url+" saved")
- if downloader.urlToFilePath(url).split(".")[-1] == "json":
- mapLoaded = downloader.urlToFilePath(url)
- resolveMap(url)
- func _on_downloader_error(url, err):
- print("error saving "+url)
- # Called every frame. 'delta' is the elapsed time since the previous frame.
- func _process(delta):
- if mapLoaded and len(toDownload) == 0 and not mapImported:
- importMap()
- func getMap(url):
- mapImported = false
- toDownload[url] = OS.get_unix_time()
- downloader.download(url)
-
- func resolveMap(url):
- var file=File.new()
- var error = file.open(mapLoaded, File.READ)
- if error != OK:
- print("error resolving map: ", error)
- while not file.eof_reached():
- var line = file.get_line()
- if "\"image\"" in line:
- var geturl = line.split("\"")[-2]
- if not "http" in geturl:
- geturl = downloader.getBaseUrl(url)+"/"+geturl
- toDownload[geturl] = OS.get_unix_time()
- downloader.download(geturl)
- file.close()
-
- func importMap():
- print("importing map: ", mapLoaded)
- var map_reader = TiledMapReader.new()
- var options = {}
- options.add_background = true
- options.collision_layer = 1
- options.custom_properties = true
- options.save_tiled_properties = false
- options.tile_metadata = false
- options.uv_clip = true
- # Offset is only optional for importing TileSets
- options.apply_offset = true
- var scene = map_reader.build(mapLoaded, options)
- scene.name="TMX"
- add_child(scene, true)
- mapImported = true
|