This repository has been archived on 2020-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
odyssey-old/Scenes/UI/SpaceMapInside.gd

61 lines
1.9 KiB
GDScript3
Raw Normal View History

2020-07-10 00:09:54 +00:00
extends Control
export var cell_size = 100
export var bgzoom = 50
export(Texture) var background
export(Font) var font
var dragging = false
var origin = Vector2(randf() * -1e4, randf() * -1e4)
var last_origin = origin
var last_mouse_pos = Vector2.ZERO
func _draw():
var win_size = get_global_rect().size
var cols = int(ceil(win_size.x/cell_size))
var rows = int(ceil(win_size.y/cell_size))
var xoffset = float(int(origin.x) % cell_size)
var yoffset = float(int(origin.y) % cell_size)
draw_texture_rect_region(background, Rect2(Vector2.ZERO, win_size), Rect2(-origin*bgzoom, win_size*bgzoom), Color(0.5,0.5,0.5,1))
for i in range(0, cols+1):
draw_line(Vector2(i * cell_size+xoffset, 0), Vector2(i * cell_size+xoffset, win_size.y), Color.white * 0.5)
for i in range(0, rows):
draw_line(Vector2(0, i * cell_size+yoffset), Vector2(win_size.x, i * cell_size+yoffset), Color.white * 0.5)
for x in range(-1, cols+1):
for y in range(-1, rows+1):
var real_x = x - int(origin.x/cell_size)
var real_y = y - int(origin.y/cell_size)
var sector_name = to_letter(real_x)
if real_y < 0:
sector_name += to_letter(real_y)
else:
sector_name += str(real_y)
draw_string(font, Vector2(x * cell_size + 6 + xoffset, y * cell_size + 20 + yoffset), sector_name, Color(1,1,1,0.5))
func _input(event):
if event is InputEventMouseButton:
dragging = event.pressed
last_origin = origin
last_mouse_pos = event.position
update()
elif event is InputEventMouseMotion:
if dragging:
origin = last_origin + (event.position - last_mouse_pos)
update()
func to_letter(num: int) -> String:
#var letters = "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if num == 0:
return "Α"
elif num < 0:
letters = "αβγδεζηθικλμνξοπρστυφχψω"
num = abs(num)
var out = ""
var base = letters.length()
while num > 0:
out += letters.substr(num % base, 1)
num /= base
return out