change minimap to use a formula for position multi

This commit is contained in:
Antti Hakkarainen 2023-02-14 23:55:32 +02:00
parent 14aa4f0e9a
commit 7805b02f0d
3 changed files with 11 additions and 5 deletions

View file

@ -128,8 +128,8 @@ texture_repeat = 1
centered = false
[connection signal="set_camera_position" from="." to="CameraZoom2D" method="_on_set_camera_position"]
[connection signal="worldgen_ready" from="." to="CameraZoom2D" method="_on_main_worldgen_ready"]
[connection signal="worldgen_ready" from="." to="ChunkHandler" method="_on_main_worldgen_ready"]
[connection signal="worldgen_ready" from="." to="CameraZoom2D" method="_on_main_worldgen_ready"]
[connection signal="worldgen_ready" from="." to="UILayer/Control/Minimap" method="_on_main_worldgen_ready"]
[connection signal="pressed" from="UILayer/Control/ConstructionPanel/button_residental" to="UILayer/Control" method="_on_button_residental_pressed"]
[connection signal="pressed" from="UILayer/Control/ConstructionPanel/button_commercial" to="UILayer/Control" method="_on_button_commercial_pressed"]

View file

@ -20,7 +20,7 @@ var map_filenames:Array = [
"res://maps/tampere_256px.png",
"res://maps/tampere_10x10km_4096px.png"
]
var map_filename:String = map_filenames[3]
var map_filename:String = map_filenames[2]
var _world_generator:WorldGenerator

View file

@ -7,6 +7,8 @@ signal set_camera_position(pos:Vector2)
@onready var sprite:Sprite2D
var is_mouse_inside_minimap:bool = false
var position_multiplier
# Called when the node enters the scene tree for the first time.
func _ready():
@ -22,8 +24,8 @@ func _draw():
func _process(_delta):
if !is_mouse_inside_minimap:
Globals.camera_marker.position = Vector2i(
Globals.CAMERA_POSITION.x / 8,
Globals.CAMERA_POSITION.y / 8,
Globals.CAMERA_POSITION.x / position_multiplier, # 8 on 256 size map. need a forumla to calculate this
Globals.CAMERA_POSITION.y / position_multiplier, # 8 on 256 size map
)
@ -32,6 +34,10 @@ func _on_main_worldgen_ready():
self.set_minimap()
self.setup_camera_marker()
# log2(x) = log10(x) / log10(2)
var power = log(Globals.map_size) / log(2) - 8
position_multiplier = 8 * pow(2, power)
func _on_mouse_entered():
is_mouse_inside_minimap = true
@ -46,7 +52,7 @@ func _unhandled_input(event) -> void:
Globals.camera_marker.position = get_local_mouse_position()
emit_signal(
"set_camera_position",
get_local_mouse_position() * 8
get_local_mouse_position() * position_multiplier # 8 on 256 size map. need a forumla to calculate this
)