Files
uarep-ctl/scenes/tilemap.gd

62 lines
2.5 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Sprite2D
## Состояния КА карты
enum TILE_STATE {
IDLE, ## Покой
WAIT, ## Ожидание
DONE, ## Выполнено
ERROR ## Ошибка
}
var curent_map_tile: Vector3i ## Текущая запрошенная плитка
var curent_state: TILE_STATE = TILE_STATE.IDLE ## Текущее состояние КА карты
var image: Image ## Изображение с картой
var map_bcs: Vector3 ## Яркость, контраст насыщенность
func _ready():
# Create an HTTP request node and connect its completion signal.
var tile = mercantile.Tile.new()
var http_request = HTTPRequest.new()
add_child(http_request)
http_request.request_completed.connect(self._http_request_completed)
curent_map_tile = Vector3i(0, 0, 0)
image = Image.create(512, 512, true, Image.FORMAT_RGB8)
map_bcs = ProjectSettings.get_setting('application/config/map_bcs', Vector3(1.0, 1.0, 1.0))
var error = http_request.request('https://a.tile.openstreetmap.org/0/0/0.png')
if error == OK:
curent_state = TILE_STATE.WAIT
else:
push_error('Ошибка: Не возможно сформировать запрос HTTP')
curent_state = TILE_STATE.ERROR
func _process(delta: float):
pass
func _http_request_completed(result, response_code, headers, data):
if result != HTTPRequest.RESULT_SUCCESS:
push_error('Ошибка: запрос не обработан: %s' % result)
curent_state = TILE_STATE.ERROR
return
var image0 = Image.new()
var error = image0.load_png_from_buffer(data)
if error != OK:
push_error('Ошибка: Полученые данные невозможно использовать для формироания изображения')
curent_state = TILE_STATE.ERROR
return
curent_state = TILE_STATE.DONE
var tile_size = image0.get_size()
image.blit_rect(image0, Rect2i(0, 0, tile_size.x, tile_size.y), Vector2i( 0, 0))
image.blit_rect(image0, Rect2i(0, 0, tile_size.x, tile_size.y), Vector2i(tile_size.x, 0))
image.blit_rect(image0, Rect2i(0, 0, tile_size.x, tile_size.y), Vector2i( 0, tile_size.y))
image.blit_rect(image0, Rect2i(0, 0, tile_size.x, tile_size.y), Vector2i(tile_size.y, tile_size.y))
image.adjust_bcs(map_bcs.x, map_bcs.y, map_bcs.z)
texture = ImageTexture.create_from_image(image)