ChocolateBird/test/worldmap_system.gd

62 lines
2.2 KiB
GDScript

extends Node2D
var pal_shader_mat := preload('res://palette_mat.tres')
var worldmap_shader_mat := preload('res://worldmap_palette_mat.tres')
var map_images := []
var map_textures := []
var map_texrects := []
func _create_palette_and_atlas_texrects() -> void:
for tileset in 3:
# Debug the Atlases
var texrect = TextureRect.new()
texrect.rect_position.x = tileset * 256 * 2
texrect.rect_scale *= 16
texrect.texture = SpriteLoader.worldmap_palette_textures[tileset]
map_texrects.append(texrect)
add_child(texrect)
texrect = TextureRect.new()
texrect.rect_position.x = tileset * 256 * 2
texrect.rect_position.y = 256
texrect.rect_scale *= 4
texrect.texture = SpriteLoader.worldmap_tile_atlas_textures[tileset]
texrect.material = pal_shader_mat.duplicate()
texrect.material.set_shader_param('palette', SpriteLoader.worldmap_palette_textures[tileset])
map_texrects.append(texrect)
add_child(texrect)
texrect = TextureRect.new()
texrect.rect_position.x = tileset * 256 * 2
texrect.rect_position.y = 768
texrect.rect_scale *= 4
texrect.texture = SpriteLoader.worldmap_tile_atlas_textures[tileset]
map_texrects.append(texrect)
add_child(texrect)
func _create_worldmap_texrects() -> void:
var map_tilesets = [0, 1, 0, 2, 2]
for i in 1:
var tileset = map_tilesets[i]
var image = MapLoader.worldmaps[i].make_tile_map()
map_images.append(image)
var tex := SpriteLoader.texture_from_image(image)
map_textures.append(tex)
var texrect = TextureRect.new()
texrect.rect_scale *= 8 #8 # Needs to have at least 1 pixel per tile pixel
texrect.texture = tex
texrect.material = worldmap_shader_mat.duplicate()
texrect.material.set_shader_param('palette', SpriteLoader.worldmap_palette_textures[tileset])
texrect.material.set_shader_param('tile_atlas', SpriteLoader.worldmap_tile_atlas_textures[tileset])
map_texrects.append(texrect)
add_child(texrect)
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
# Only create this after MapLoader and SpriteLoader have loaded!
_create_worldmap_texrects()
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta: float) -> void:
# pass