Much stuff wow
This commit is contained in:
parent
7255cbdf64
commit
734730beee
45 changed files with 697 additions and 119 deletions
|
|
@ -3,11 +3,152 @@ extends Node
|
|||
|
||||
var map_height: int = 200
|
||||
var map_width: int = 200
|
||||
var _map_data: Array
|
||||
var _biome_data: Dictionary = {}
|
||||
|
||||
var map_data: Array
|
||||
# Property for map_data with logging
|
||||
var map_data: Array:
|
||||
get:
|
||||
return _map_data
|
||||
set(value):
|
||||
_map_data = value
|
||||
Log.pr("Map data updated")
|
||||
|
||||
# Property for biome_data with logging
|
||||
var biome_data: Dictionary:
|
||||
get:
|
||||
return _biome_data
|
||||
set(value):
|
||||
_biome_data = value
|
||||
_log_biome_update()
|
||||
|
||||
func _init() -> void:
|
||||
map_data.resize(map_height)
|
||||
_map_data.resize(map_height)
|
||||
for y in range(map_height):
|
||||
map_data[y] = []
|
||||
map_data[y].resize(map_width)
|
||||
_map_data[y] = []
|
||||
_map_data[y].resize(map_width)
|
||||
Log.pr("Globals initialized with map size: %d x %d" % [map_width, map_height])
|
||||
|
||||
# Helper methods for updating specific parts of the data
|
||||
func set_map_cell(x: int, y: int, value) -> void:
|
||||
if x >= 0 and x < map_width and y >= 0 and y < map_height:
|
||||
_map_data[y][x] = value
|
||||
Log.pr("Map cell updated at (%d, %d)" % [x, y])
|
||||
|
||||
func update_biome(key: String, value) -> void:
|
||||
_biome_data[key] = value
|
||||
Log.pr("Biome data updated for key: %s" % key)
|
||||
|
||||
# Internal logging function for biome updates
|
||||
func _log_biome_update() -> void:
|
||||
var details = []
|
||||
for key in _biome_data.keys():
|
||||
var value = _biome_data[key]
|
||||
if value is Image:
|
||||
var img = value as Image
|
||||
details.append("%s: Image[%dx%d]" % [key, img.get_width(), img.get_height()])
|
||||
else:
|
||||
details.append("%s: %s" % [key, str(value)])
|
||||
Log.pr("Biome data updated: { %s }" % ", ".join(details))
|
||||
display_all_noise_maps()
|
||||
|
||||
# Display visual representation of noise map
|
||||
func display_noise_map(key: String, scale: int = 4) -> void:
|
||||
if not _biome_data.has(key):
|
||||
Log.pr("No biome data found for key: %s" % key)
|
||||
return
|
||||
|
||||
var img = _biome_data[key]
|
||||
if not img is Image:
|
||||
Log.pr("Data for key '%s' is not an image" % key)
|
||||
return
|
||||
|
||||
var image = img as Image
|
||||
var width = image.get_width()
|
||||
var height = image.get_height()
|
||||
|
||||
# Sample the image at lower resolution for console display
|
||||
var display_width = min(width / scale, 50) # Max 50 chars wide
|
||||
var display_height = min(height / scale, 25) # Max 25 lines tall
|
||||
|
||||
Log.pr("=== %s Noise Map (%dx%d) ===" % [key.capitalize(), width, height])
|
||||
|
||||
for y in range(display_height):
|
||||
var line = ""
|
||||
for x in range(display_width):
|
||||
# Sample from the original image
|
||||
var sample_x = int(x * scale)
|
||||
var sample_y = int(y * scale)
|
||||
|
||||
# Get pixel color (assuming grayscale or we'll use red channel)
|
||||
var pixel = image.get_pixel(sample_x, sample_y)
|
||||
var intensity = pixel.r # Use red channel as intensity
|
||||
|
||||
# Convert intensity to colored circle
|
||||
line += _get_colored_circle(intensity)
|
||||
|
||||
Log.pr(line)
|
||||
|
||||
Log.pr("Scale: 1 character = %dx%d pixels" % [scale, scale])
|
||||
|
||||
# Convert intensity value to colored circle character
|
||||
func _get_colored_circle(intensity: float) -> String:
|
||||
# ANSI color codes for red > yellow > green gradient
|
||||
var color_code: String
|
||||
var circle = "●"
|
||||
|
||||
if intensity < 0.1:
|
||||
color_code = "[color=maroon]" # Dark red
|
||||
elif intensity < 0.2:
|
||||
color_code = "[color=red]" # Red
|
||||
elif intensity < 0.3:
|
||||
color_code = "[color=#FF4500]" # Orange red
|
||||
elif intensity < 0.4:
|
||||
color_code = "[color=orange]" # Orange
|
||||
elif intensity < 0.5:
|
||||
color_code = "[color=#FFD700]" # Gold
|
||||
elif intensity < 0.6:
|
||||
color_code = "[color=yellow]" # Yellow
|
||||
elif intensity < 0.7:
|
||||
color_code = "[color=#ADFF2F]" # Green yellow
|
||||
elif intensity < 0.8:
|
||||
color_code = "[color=lime]" # Lime
|
||||
elif intensity < 0.9:
|
||||
color_code = "[color=green]" # Green
|
||||
else:
|
||||
color_code = "[color=darkgreen]" # Dark green
|
||||
|
||||
return color_code + circle + "[/color]"
|
||||
|
||||
# Display all biome maps
|
||||
func display_all_noise_maps(scale: int = 4) -> void:
|
||||
for key in _biome_data.keys():
|
||||
if _biome_data[key] is Image:
|
||||
display_noise_map(key, scale)
|
||||
Log.pr("") # Empty line between maps
|
||||
|
||||
# Helper function to get detailed biome info
|
||||
func log_biome_details() -> void:
|
||||
Log.pr("=== Biome Data Details ===")
|
||||
for key in _biome_data.keys():
|
||||
var value = _biome_data[key]
|
||||
if value is Image:
|
||||
var img = value as Image
|
||||
Log.pr("%s: Image [%dx%d, Format: %s]" % [key, img.get_width(), img.get_height(), _get_format_name(img.get_format())])
|
||||
else:
|
||||
Log.pr("%s: %s" % [key, str(value)])
|
||||
|
||||
# Helper to convert image format enum to readable string
|
||||
func _get_format_name(format: Image.Format) -> String:
|
||||
match format:
|
||||
Image.FORMAT_L8: return "L8"
|
||||
Image.FORMAT_LA8: return "LA8"
|
||||
Image.FORMAT_R8: return "R8"
|
||||
Image.FORMAT_RG8: return "RG8"
|
||||
Image.FORMAT_RGB8: return "RGB8"
|
||||
Image.FORMAT_RGBA8: return "RGBA8"
|
||||
Image.FORMAT_RF: return "RF"
|
||||
Image.FORMAT_RGF: return "RGF"
|
||||
Image.FORMAT_RGBF: return "RGBF"
|
||||
Image.FORMAT_RGBAF: return "RGBAF"
|
||||
_: return "Unknown (%d)" % format
|
||||
Loading…
Add table
Add a link
Reference in a new issue