Рефактор.
This commit is contained in:
@@ -105,7 +105,13 @@ const image_load_proc_names = {
|
||||
set(v): image_load_proc = Callable(image, image_load_proc_names[v])
|
||||
|
||||
|
||||
func _ready():
|
||||
func on_map_centered(toggle_centered: bool): is_centered = toggle_centered
|
||||
|
||||
|
||||
func get_marks_count(): return _marks.size()
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
image_type = 'png'
|
||||
$canvas.connect('mouse_entered', func(): _rollover = true)
|
||||
$canvas.connect('mouse_exited', func(): _rollover = false)
|
||||
@@ -117,11 +123,7 @@ func _ready():
|
||||
unit_nav.connect('data_received', on_data_received)
|
||||
|
||||
|
||||
func on_map_centered(toggle_centered: bool):
|
||||
is_centered = toggle_centered
|
||||
|
||||
|
||||
func on_data_received(coords: Dictionary):
|
||||
func on_data_received(coords: Dictionary) -> void:
|
||||
if not is_centered:
|
||||
return
|
||||
if coords.has_all(['latitude', 'longitude']):
|
||||
@@ -135,7 +137,7 @@ func _on_resize() -> void:
|
||||
|
||||
|
||||
## Создаёт новую отметку из координат экрана
|
||||
func add_mark_from_screen_pos(id: int, x: float, y: float, mark: Node):
|
||||
func add_mark_from_screen_pos(id: int, x: float, y: float, mark: Node) -> bool:
|
||||
if _marks.has(id):
|
||||
return false
|
||||
var wrld_pos = screen_to_world(_xyz, x, y)
|
||||
@@ -148,19 +150,17 @@ func add_mark_from_screen_pos(id: int, x: float, y: float, mark: Node):
|
||||
return true
|
||||
|
||||
|
||||
func get_marks_count(): return _marks.size()
|
||||
|
||||
|
||||
func delete_mark(id: int):
|
||||
func delete_mark(id: int) -> bool:
|
||||
if not _marks.has(id):
|
||||
return false
|
||||
_marks[id].mark.queue_free()
|
||||
_marks.erase(id)
|
||||
queue_redraw()
|
||||
return true
|
||||
|
||||
|
||||
## Создаёт новую отметку из долготы и широты
|
||||
func add_mark_from_lon_lat(id: int, lon: float, lat: float, mark: Node, gap_size: float = 32):
|
||||
func add_mark_from_lon_lat(id: int, lon: float, lat: float, mark: Node, gap_size: float = 32) -> bool:
|
||||
if _marks.has(id):
|
||||
return false
|
||||
var wrld_pos = lonlat_to_world(lon, lat)
|
||||
@@ -173,7 +173,7 @@ func add_mark_from_lon_lat(id: int, lon: float, lat: float, mark: Node, gap_size
|
||||
|
||||
|
||||
## Возвращает новую позицию для точки, если она выходит из поля видимости
|
||||
func fix_mark_position(dot):
|
||||
func fix_mark_position(dot) -> void:
|
||||
if is_mark_visible(dot):
|
||||
return
|
||||
var v = 2 * tile_width * pow(2, _xyz.z)
|
||||
@@ -183,12 +183,12 @@ func fix_mark_position(dot):
|
||||
dot.position.x = _xyz.x + $canvas.size.x / v
|
||||
|
||||
|
||||
func is_mark_visible(dot):
|
||||
func is_mark_visible(dot) -> bool:
|
||||
var screen_pos = world_to_screen(dot.position.x, dot.position.y)
|
||||
return screen_pos.x > 0 and screen_pos.x < $canvas.size.x
|
||||
|
||||
|
||||
func _input(e):
|
||||
func _input(e) -> void:
|
||||
var lmp = get_local_mouse_position()
|
||||
if not _rollover:
|
||||
return
|
||||
@@ -223,7 +223,7 @@ func is_border_visible():
|
||||
return screen_to_tile(0, 0, z).y != 0
|
||||
|
||||
|
||||
func multiply_zoom(multiplier: float, pivot: Vector2):
|
||||
func multiply_zoom(multiplier: float, pivot: Vector2) -> void:
|
||||
var p1: = screen_to_world(_xyz, pivot.x, pivot.y)
|
||||
_xyz.z = clampf(_xyz.z * multiplier, min_zoom_level, max_zoom_level)
|
||||
var p2: = screen_to_world(_xyz, pivot.x, pivot.y)
|
||||
@@ -231,7 +231,7 @@ func multiply_zoom(multiplier: float, pivot: Vector2):
|
||||
_xyz.y -= p2.y - p1.y
|
||||
|
||||
|
||||
func set_zoom(zoom: float, pivot=null):
|
||||
func set_zoom(zoom: float, pivot=null) -> void:
|
||||
if pivot == null:
|
||||
pivot = $canvas.size / 2.0
|
||||
|
||||
@@ -242,7 +242,7 @@ func set_zoom(zoom: float, pivot=null):
|
||||
_xyz.y -= p2.y - p1.y
|
||||
|
||||
|
||||
func _draw():
|
||||
func _draw() -> void:
|
||||
|
||||
var lmp = get_local_mouse_position()
|
||||
if mouse_wheel_count > 0:
|
||||
@@ -276,7 +276,7 @@ func _draw():
|
||||
visible_marks_count += int(dot.mark.visible)
|
||||
|
||||
|
||||
func _clean_all():
|
||||
func _clean_all() -> void:
|
||||
_queue.clear()
|
||||
_cache.clear()
|
||||
_marks.clear()
|
||||
@@ -287,7 +287,7 @@ func _clean_all():
|
||||
|
||||
|
||||
# get the tile from queue with the newest timestamp
|
||||
func get_next_in_queue():
|
||||
func get_next_in_queue() -> Tile:
|
||||
var tile = null
|
||||
for idx in _queue:
|
||||
var t = _queue.get(idx)
|
||||
@@ -297,7 +297,7 @@ func get_next_in_queue():
|
||||
|
||||
|
||||
# delete oldest tiles from cache
|
||||
func _clean_cache():
|
||||
func _clean_cache() -> void:
|
||||
var overflow = _cache.size() - max_cached_tiles
|
||||
if overflow <= 0:
|
||||
return
|
||||
@@ -308,7 +308,7 @@ func _clean_cache():
|
||||
_cache.erase(vals[i].i)
|
||||
|
||||
|
||||
func _process(delta):
|
||||
func _process(delta) -> void:
|
||||
now += delta
|
||||
|
||||
# if cache is overflowing - clean it
|
||||
@@ -341,8 +341,7 @@ func _process(delta):
|
||||
emit_signal('load_completed')
|
||||
|
||||
|
||||
# result, response_code, headers, body
|
||||
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile):
|
||||
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile) -> void:
|
||||
|
||||
_req_count -= 1
|
||||
remove_child(req)
|
||||
@@ -402,7 +401,7 @@ func _draw_subtile(tx: int, ty: int, tz: int, origx: int, origy: int, origz: flo
|
||||
return false
|
||||
|
||||
|
||||
func _draw_tile(tx: int, ty: int, z: float):
|
||||
func _draw_tile(tx: int, ty: int, z: float) -> void:
|
||||
var tz = floor(z)
|
||||
var p1 = tile_to_screen(tx, ty, z)
|
||||
var p2 = tile_to_screen(tx + 1, ty + 1, z)
|
||||
@@ -603,8 +602,8 @@ class Tile:
|
||||
self.y = y0
|
||||
self.z = z0
|
||||
|
||||
|
||||
func haversine_m(lat1, lon1, lat2, lon2):
|
||||
# Возвращает расстояние в метрах между двумя точками на карте
|
||||
func haversine_m(lat1: float, lon1: float, lat2: float, lon2: float) -> float:
|
||||
# Радиус Земли в метрах
|
||||
const R: = 6372795.0
|
||||
# Преобразование градусов в радианы
|
||||
@@ -627,16 +626,17 @@ func haversine_m(lat1, lon1, lat2, lon2):
|
||||
return dist
|
||||
|
||||
|
||||
func remove_closest_dot(screen_pos):
|
||||
func remove_closest_dot(screen_pos: Vector2) -> bool:
|
||||
var closest_dot = find_at_screen_position(screen_pos)
|
||||
if not closest_dot:
|
||||
return
|
||||
return false
|
||||
remove_child(closest_dot.mark)
|
||||
closest_dot.mark.queue_free()
|
||||
_marks.erase(closest_dot)
|
||||
return true
|
||||
|
||||
|
||||
func find_at_screen_position(screen_pos: Vector2):
|
||||
func find_at_screen_position(screen_pos: Vector2) -> Node:
|
||||
var closest_dot = null
|
||||
var closest_distance = INF
|
||||
for mark in _marks.values():
|
||||
@@ -653,7 +653,7 @@ func clear() -> void:
|
||||
queue_redraw()
|
||||
|
||||
|
||||
func set_coordinates(lon: float, lat: float):
|
||||
func set_coordinates(lon: float, lat: float) -> void:
|
||||
var anim: Animation = $player.get_animation('goto')
|
||||
var new_pos = lonlat_to_world(lon, lat)
|
||||
anim.track_insert_key(0, 0, _xyz.x)
|
||||
|
||||
Reference in New Issue
Block a user