From c9c5b5d7c2a238310ce7bde336f76d2d1b6f9f29 Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Sat, 15 Jan 2022 16:29:02 +0100 Subject: moved shapes to loading area & fixed asset paths --- addons/voxel-core/classes/readers/gpl.gd | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 addons/voxel-core/classes/readers/gpl.gd (limited to 'addons/voxel-core/classes/readers/gpl.gd') diff --git a/addons/voxel-core/classes/readers/gpl.gd b/addons/voxel-core/classes/readers/gpl.gd new file mode 100644 index 0000000..4a6b943 --- /dev/null +++ b/addons/voxel-core/classes/readers/gpl.gd @@ -0,0 +1,48 @@ +class_name GPLReader +extends Reference +# GIMP palette file reader + + + +# Public Methods +# Reads GPL file, and returns voxel palette +static func read(gpl_file : File) -> Dictionary: + var result := { + "error": OK, + "voxels": {}, + "palette": [], + } + + if gpl_file.get_line() == "GIMP Palette": + while not gpl_file.eof_reached(): + var line = gpl_file.get_line() + if typeof(line) == TYPE_STRING and not line.empty() and (line[0].is_valid_integer() or line[0] == " "): + var tokens = line.split("\t") + var name = "" + var color = tokens[0].split_floats(" ") + color = Color(color[0] / 255, color[1] / 255, color[2] / 255) + if tokens.size() > 1: + name = tokens[1] + var end = name.find("(") + name = name.substr(0, end) + + if not result["palette"].has(color): + var voxel := Voxel.colored(color) + result["palette"].append(voxel) + if not name.empty(): + Voxel.set_name(voxel, name.strip_edges()) + else: + result["error"] = ERR_FILE_UNRECOGNIZED + + return result + + +static func read_file(gpl_path : String) -> Dictionary: + var result := { "error": OK } + var file := File.new() + var error = file.open(gpl_path, File.READ) + if error == OK: + result = read(file) + if file.is_open(): + file.close() + return result -- cgit v1.2.3-54-g00ecf