Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved map #83

Merged
merged 1 commit into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added godot-visualizer/resources/loader.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions godot-visualizer/resources/loader.png.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[remap]

importer="texture"
type="CompressedTexture2D"
uid="uid://dqpu7ll4k1fs1"
path="res://.godot/imported/loader.png-f55b428229f66841f7c0c72bed1df893.ctex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://resources/loader.png"
dest_files=["res://.godot/imported/loader.png-f55b428229f66841f7c0c72bed1df893.ctex"]

[params]

compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
38 changes: 27 additions & 11 deletions godot-visualizer/scenes/main.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=36 format=3 uid="uid://b5ypw8og4vdle"]
[gd_scene load_steps=37 format=3 uid="uid://b5ypw8og4vdle"]

[ext_resource type="Script" path="res://scripts/main.gd" id="1_4dsde"]
[ext_resource type="PackedScene" uid="uid://ch6xqejnd1rqf" path="res://scenes/map.tscn" id="1_quhpi"]
Expand Down Expand Up @@ -27,6 +27,7 @@
[ext_resource type="StyleBox" uid="uid://cuqtwls2gtt0v" path="res://resources/textures/tooltip.tres" id="25_q05r4"]
[ext_resource type="FontFile" uid="uid://2ctrem352y4" path="res://resources/fonts/JetBrainsMono.ttf" id="26_btrf2"]
[ext_resource type="FontFile" uid="uid://b7vayqoopjyv" path="res://resources/fonts/DMSans.ttf" id="27_u6i6b"]
[ext_resource type="Texture2D" uid="uid://dqpu7ll4k1fs1" path="res://resources/loader.png" id="28_wxhmh"]

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gt7hn"]
bg_color = Color(1, 1, 1, 1)
Expand Down Expand Up @@ -64,7 +65,6 @@ follow_viewport_enabled = true
layer = 2

[node name="Tooltip" type="Panel" parent="GUICanvasLayer"]
visible = false
custom_minimum_size = Vector2(560, 392)
offset_right = 560.0
offset_bottom = 392.0
Expand All @@ -91,7 +91,7 @@ layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("26_btrf2")
theme_override_font_sizes/font_size = 36
text = "SHIP"
text = "TITLE"
horizontal_alignment = 1
text_overrun_behavior = 3
uppercase = true
Expand All @@ -101,36 +101,36 @@ custom_minimum_size = Vector2(0, 1)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_gt7hn")

[node name="Position" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
[node name="Label1" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.694118, 0.694118, 0.694118, 1)
theme_override_fonts/font = ExtResource("27_u6i6b")
theme_override_font_sizes/font_size = 32
text = "Position | 0, 0"
text = "LABEL1"
text_overrun_behavior = 3

[node name="Address" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
[node name="Label2" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.694118, 0.694118, 0.694118, 1)
theme_override_fonts/font = ExtResource("27_u6i6b")
theme_override_font_sizes/font_size = 32
text = "Address | ***1234"
text = "LABEL2"
text_overrun_behavior = 3

[node name="Fuel" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
[node name="Label3" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.694118, 0.694118, 0.694118, 1)
theme_override_fonts/font = ExtResource("27_u6i6b")
theme_override_font_sizes/font_size = 32
text = "Fuel | 0/0"
text = "LABEL3"
text_overrun_behavior = 3

[node name="Coins" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
[node name="Label4" type="Label" parent="GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.694118, 0.694118, 0.694118, 1)
theme_override_fonts/font = ExtResource("27_u6i6b")
theme_override_font_sizes/font_size = 32
text = "Coins | 0/0"
text = "LABEL4"
text_overrun_behavior = 3

[node name="HBoxContainer" type="HBoxContainer" parent="GUICanvasLayer"]
Expand Down Expand Up @@ -467,11 +467,27 @@ theme_override_styles/focus = SubResource("StyleBoxEmpty_iitb5")
text = "-"
flat = true

[node name="CenterContainer" type="CenterContainer" parent="GUICanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2

[node name="Loader" type="TextureRect" parent="GUICanvasLayer/CenterContainer"]
layout_mode = 2
mouse_filter = 2
texture = ExtResource("28_wxhmh")
expand_mode = 1
stretch_mode = 3

[connection signal="dataset_updated" from="." to="MapCanvasLayer/Map" method="_on_main_dataset_updated"]
[connection signal="dataset_updated" from="." to="GUICanvasLayer/HBoxContainer/VBoxContainerStart/MarginContainer/VBoxContainer/MarginContainer/MarginContainer/Minimap" method="_on_main_dataset_updated"]
[connection signal="camera_position_changed" from="MapCanvasLayer/Map" to="GUICanvasLayer/HBoxContainer/VBoxContainerStart/MarginContainer/VBoxContainer/MarginContainer/MarginContainer/Minimap" method="_on_map_camera_position_changed"]
[connection signal="camera_zoom_changed" from="MapCanvasLayer/Map" to="GUICanvasLayer/HBoxContainer/VBoxContainerStart/MarginContainer/VBoxContainer/MarginContainer/MarginContainer/Minimap" method="_on_map_camera_zoom_changed"]
[connection signal="hide_tooltip" from="MapCanvasLayer/Map" to="." method="_on_map_hide_tooltip"]
[connection signal="show_asteria_tooltip" from="MapCanvasLayer/Map" to="." method="_on_map_show_asteria_tooltip"]
[connection signal="show_fuel_tooltip" from="MapCanvasLayer/Map" to="." method="_on_map_show_fuel_tooltip"]
[connection signal="show_ship_tooltip" from="MapCanvasLayer/Map" to="." method="_on_map_show_ship_tooltip"]
[connection signal="minimap_position_changed" from="GUICanvasLayer/HBoxContainer/VBoxContainerStart/MarginContainer/VBoxContainer/MarginContainer/MarginContainer/Minimap" to="MapCanvasLayer/Map" method="_on_minimap_minimap_position_changed"]
Expand Down
38 changes: 28 additions & 10 deletions godot-visualizer/scripts/global.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,34 @@ extends Node
const grid_size = 200
const cell_size = 128

var ships: Array[Ship] = []
var fuels: Array[Fuel] = []
var asteria: Asteria = null
var ships: Array[ShipData] = []
var fuels: Array[FuelData] = []
var asteria: AsteriaData = null


func init_data(data: Variant):
ships = []
fuels = []
asteria = null

for item in data["data"]["objectsInRadius"]:

var position = Vector2(item["position"]["x"], item["position"]["y"])

if item["__typename"] == "Ship":
ships.append(Ship.new(item["id"], Vector2(item["position"]["x"], item["position"]["y"])))
ships.append(ShipData.new(
item["id"],
item["fuel"],
position,
item["shipTokenName"]["name"],
item["pilotTokenName"]["name"]
))

if item["__typename"] == "Fuel":
fuels.append(Fuel.new(item["fuel"], Vector2(item["position"]["x"], item["position"]["y"])))
fuels.append(FuelData.new(item["fuel"], position))

if item["__typename"] == "Asteria":
asteria = Asteria.new(item["totalRewards"], Vector2(item["position"]["x"], item["position"]["y"]))
asteria = AsteriaData.new(item["totalRewards"], position)

func get_ships():
return ships
Expand All @@ -36,16 +48,22 @@ func get_cell_size():
return cell_size


class Ship:
class ShipData:
var id: String = ""
var fuel: int = 0
var position: Vector2 = Vector2(0, 0)
var shipTokenName: String = ""
var pilotTokenName: String = ""

func _init(_id: String, _position: Vector2):
func _init(_id: String, _fuel: int, _position: Vector2, _shipTokenName: String, _pilotTokenName: String):
id = _id
fuel = _fuel
position = _position
shipTokenName = _shipTokenName
pilotTokenName = _pilotTokenName


class Fuel:
class FuelData:
var fuel: int = 0
var position: Vector2 = Vector2(0, 0)

Expand All @@ -54,7 +72,7 @@ class Fuel:
position = _position


class Asteria:
class AsteriaData:
var totalRewards: int = 0
var position: Vector2 = Vector2(0, 0)

Expand Down
81 changes: 57 additions & 24 deletions godot-visualizer/scripts/main.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,56 @@ const query = """
{
objectsInRadius(center: { x: 0, y: 0 }, radius: %s) {
__typename,
position {
x,
y
},
... on Ship {
id,
position {
x,
y
fuel,
shipTokenName {
name
},
pilotTokenName {
name
}
},
... on Fuel {
fuel,
position {
x,
y
}
fuel
},
... on Asteria {
totalRewards,
position {
x,
y
}
totalRewards
}
}
}
""" % radius


func _process(delta: float) -> void:
$GUICanvasLayer/CenterContainer/Loader.rotation += delta * 10


func _ready():
$HTTPRequest.request_completed.connect(_on_request_completed)
$HTTPRequest.request(url, headers, HTTPClient.METHOD_POST, JSON.stringify({ "query": query }))

var request_timer = Timer.new()
request_timer.wait_time = 20
request_timer.autostart = true
request_timer.one_shot = false
request_timer.connect("timeout", _on_request_timer_timeout)
add_child(request_timer)


func _on_request_completed(result, response_code, headers, body):
var json = JSON.parse_string(body.get_string_from_utf8())
Global.init_data(json)
dataset_updated.emit()
$GUICanvasLayer/CenterContainer/Loader.visible = false


func _on_request_timer_timeout():
$HTTPRequest.request(url, headers, HTTPClient.METHOD_POST, JSON.stringify({ "query": query }))


func update_tooltip_position(position: Vector2) -> void:
Expand Down Expand Up @@ -75,18 +90,36 @@ func _on_map_hide_tooltip() -> void:
$GUICanvasLayer/Tooltip.visible = false


func _on_map_show_ship_tooltip(position: Vector2, address: String) -> void:
func _on_map_show_ship_tooltip(ship: Global.ShipData) -> void:
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Title.text = "SHIP"
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Position.text = "Position | %d, %d" % [position.x, position.y]
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Address.text = "Address | %s" % address
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Address.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Coins.visible = true
update_tooltip_position(position)
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.text = "Position | %d, %d" % [ship.position.x, ship.position.y]
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.text = "Ship Token | %s" % ship.shipTokenName
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label3.text = "Pilot Token | %s" % ship.pilotTokenName
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label4.text = "Fuel | %s" % ship.fuel
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label3.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label4.visible = true
update_tooltip_position(ship.position)


func _on_map_show_fuel_tooltip(position: Vector2) -> void:
func _on_map_show_fuel_tooltip(fuel: Global.FuelData) -> void:
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Title.text = "FUEL PELLET"
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Position.text = "Position | %d, %d" % [position.x, position.y]
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Address.visible = false
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Coins.visible = false
update_tooltip_position(position)
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.text = "Position | %d, %d" % [fuel.position.x, fuel.position.y]
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.text = "Fuel | %s" % fuel.fuel
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label3.visible = false
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label4.visible = false
update_tooltip_position(fuel.position)


func _on_map_show_asteria_tooltip(asteria: Global.AsteriaData) -> void:
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Title.text = "ASTERIA"
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.text = "Position | %d, %d" % [asteria.position.x, asteria.position.y]
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.text = "Total rewards | %s" % asteria.totalRewards
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label1.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label2.visible = true
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label3.visible = false
$GUICanvasLayer/Tooltip/MarginContainer/VBoxContainer/Label4.visible = false
update_tooltip_position(asteria.position)
21 changes: 14 additions & 7 deletions godot-visualizer/scripts/map.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
extends Node2D

@export var ship_scene: PackedScene
@export var fuel_scene: PackedScene
@export var token_scene: PackedScene
@export var asteria_scene: PackedScene
Expand All @@ -10,8 +9,9 @@ signal camera_zoom_changed(zoom: Vector2)
signal minimap_position_changed(position: Vector2)
signal mouse_hover_gui(is_hover: bool)
signal hide_tooltip()
signal show_ship_tooltip(position: Vector2, address: String)
signal show_fuel_tooltip(position: Vector2)
signal show_ship_tooltip(ship: Global.ShipData)
signal show_fuel_tooltip(fuel: Global.FuelData)
signal show_asteria_tooltip(asteria: Global.AsteriaData)

var mouse_entered_sidebar = false
var mouse_entered_minimap = false
Expand All @@ -23,8 +23,11 @@ func _on_main_dataset_updated() -> void:
const center = Vector2(0, 0)
var cell_size = Vector2(Global.get_cell_size(), Global.get_cell_size())

for child in $Entities.get_children():
child.free()

for ship_data in Global.get_ships():
var ship = ship_scene.instantiate()
var ship = Ship.new_ship(ship_data)
ship.position = ship_data.position * cell_size
ship.rotation = ship.position.angle_to_point(center) + PI/2
$Entities.add_child(ship)
Expand All @@ -48,15 +51,19 @@ func _process(delta: float) -> void:
var cell_position = round((mouse_position - Vector2(get_viewport_rect().size / $Camera.zoom) / 2 + $Camera.position) / cell_size)
$Cell.position = cell_position * cell_size

var asteria = Global.get_asteria()
var ships = Global.get_ships().filter(func(ship): return ship.position == cell_position)
var fuels = Global.get_fuels().filter(func(fuel): return fuel.position == cell_position)

if ships.size() > 0:
if asteria and asteria.position == cell_position:
$Cell.animation = "filled"
show_asteria_tooltip.emit(asteria)
elif ships.size() > 0:
$Cell.animation = "filled"
show_ship_tooltip.emit(ships[0].position, ships[0].id)
show_ship_tooltip.emit(ships[0])
elif fuels.size() > 0:
$Cell.animation = "filled"
show_fuel_tooltip.emit(fuels[0].position)
show_fuel_tooltip.emit(fuels[0])
else:
$Cell.animation = "empty"
hide_tooltip.emit()
Expand Down
Loading
Loading