Skip to content

Commit

Permalink
added handling for rotate and zoom buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
CrafterSvK committed Aug 6, 2023
1 parent fde456c commit e2e579b
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 14 deletions.
39 changes: 25 additions & 14 deletions Assets/Player/CameraControls.gd
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,16 @@ func _process(delta: float) -> void:

func _input(event: InputEvent) -> void:
if event.is_action_pressed("rotate_left"):
_rotate(-PI/2)
rotate(-PI/2)

elif event.is_action_pressed("rotate_right"):
_rotate(PI/2)
rotate(PI/2)

elif event.is_action_pressed("zoom_in"):
if _camera.size > ZOOM_IN_LIMIT:
_zoom(-ZOOM_VALUE)
_zoom_mouse(-ZOOM_VALUE)

elif event.is_action_pressed("zoom_out"):
if _camera.size < ZOOM_OUT_LIMIT:
_zoom(ZOOM_VALUE)
_zoom_mouse(ZOOM_VALUE)

func _move(delta: float) -> void:
var movement_scale: float = delta * MOVE_SPEED * _camera.size
Expand All @@ -75,18 +73,31 @@ func _move_drag() -> void:
_origin.translate(move_dir)
_drag_pos = new_drag_pos

func _rotate(rotation: float) -> void:
func rotate(rotation: float) -> void:
_rotation_y.rotate_y(rotation)
_basis = _get_basis()

func _zoom(zoom_value: float) -> void:
var m_pos := _viewport.get_mouse_position()
var start_result := _raycast_from_mouse(m_pos, 1)
func _is_zoom_within_limit(zoom_value: float) -> bool:
return (zoom_value < 0 and _camera.size > ZOOM_IN_LIMIT) or (zoom_value > 0 and _camera.size < ZOOM_OUT_LIMIT)

func _zoom_mouse(zoom_value: float) -> void:
if _is_zoom_within_limit(zoom_value):
var m_pos := _viewport.get_mouse_position()
var start_result := _raycast_from_mouse(m_pos, 1)
_zoom_camera(zoom_value)
var end_result := _raycast_from_mouse(m_pos, 1)
if not (start_result.is_empty() and end_result.is_empty()):
var move_dir: Vector3i = start_result.position - end_result.position
_origin.translate(move_dir)

func _zoom_camera(zoom_value) -> void:
_camera.size += zoom_value
var end_result := _raycast_from_mouse(m_pos, 1)
if not (start_result.is_empty() and end_result.is_empty()):
var move_dir: Vector3i = start_result.position - end_result.position
_origin.translate(move_dir)

func zoom_step(direction: int) -> void:
var zoom_value := direction * ZOOM_VALUE

if _is_zoom_within_limit(zoom_value):
_zoom_camera(zoom_value)

func _raycast_from_mouse(m_pos: Vector2, collision_mask: int) -> Dictionary:
var mouse_pos := get_viewport().get_mouse_position()
Expand Down
12 changes: 12 additions & 0 deletions Assets/Player/PlayerCamera.gd
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,15 @@ func _on_PlayerHUD_button_diplomacy_pressed() -> void:

func _on_PlayerHUD_button_game_menu_pressed() -> void:
prints("TODO: Open Game Menu")

func _on_PlayerHUD_button_zoom_in_pressed() -> void:
self._camera_controls.zoom_step(-1)

func _on_PlayerHUD_button_zoom_out_pressed() -> void:
self._camera_controls.zoom_step(1)

func _on_PlayerHUD_button_rotate_left_pressed() -> void:
self._camera_controls.rotate(-PI/2)

func _on_PlayerHUD_button_rotate_right_pressed() -> void:
self._camera_controls.rotate(PI/2)
4 changes: 4 additions & 0 deletions Assets/Player/PlayerCamera.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ _context_name = "Tear"
[connection signal="selected" from="SelectionBox/SelectionContext" to="." method="set_selection"]
[connection signal="deselected" from="SelectionBox/MovementContext" to="." method="unset_selection"]
[connection signal="selected" from="SelectionBox/MovementContext" to="." method="set_selection"]
[connection signal="button_zoom_in_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_zoom_in_pressed"]
[connection signal="button_zoom_out_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_zoom_out_pressed"]
[connection signal="button_rotate_left_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_rotate_right_pressed"]
[connection signal="button_rotate_right_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_rotate_left_pressed"]
[connection signal="button_build_menu_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_build_menu_pressed"]
[connection signal="button_diplomacy_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_diplomacy_pressed"]
[connection signal="button_game_menu_pressed" from="PlayerHUD" to="." method="_on_PlayerHUD_button_game_menu_pressed"]
Expand Down
17 changes: 17 additions & 0 deletions Assets/Player/PlayerHUD.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
extends Control
class_name PlayerHUD

signal button_zoom_in_pressed
signal button_zoom_out_pressed
signal button_rotate_left_pressed
signal button_rotate_right_pressed

signal button_tear_pressed
signal button_logbook_pressed
signal button_build_menu_pressed
Expand Down Expand Up @@ -179,6 +184,18 @@ func _on_PlayerCamera_unselected() -> void:
prints("_on_PlayerCamera_unselected")
self.ui_context = UIContext.NONE

func _on_TabWidget_button_zoom_in_pressed() -> void:
emit_signal("button_zoom_in_pressed")

func _on_TabWidget_button_zoom_out_pressed() -> void:
emit_signal("button_zoom_out_pressed")

func _on_TabWidget_button_rotate_left_pressed() -> void:
emit_signal("button_rotate_left_pressed")

func _on_TabWidget_button_rotate_right_pressed() -> void:
emit_signal("button_rotate_right_pressed")

func _on_TabWidget_button_tear_pressed() -> void:
emit_signal("button_tear_pressed")

Expand Down
22 changes: 22 additions & 0 deletions Assets/UI/TabWidgets/TabWidget.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ class_name TabWidget

## Base class for all TabWidget objects.

signal button_zoom_in_pressed
signal button_zoom_out_pressed
signal button_rotate_right_pressed
signal button_rotate_left_pressed

signal button_tear_pressed
signal button_logbook_pressed
signal button_build_menu_pressed
Expand All @@ -14,6 +19,11 @@ signal button_game_menu_pressed

func _ready() -> void:
if owner is PlayerHUD:
connect("button_zoom_in_pressed", Callable(owner, "_on_TabWidget_button_zoom_in_pressed"))
connect("button_zoom_out_pressed", Callable(owner, "_on_TabWidget_button_zoom_out_pressed"))
connect("button_rotate_left_pressed", Callable(owner, "_on_TabWidget_button_rotate_left_pressed"))
connect("button_rotate_right_pressed", Callable(owner, "_on_TabWidget_button_rotate_right_pressed"))

connect("button_tear_pressed", Callable(owner, "_on_TabWidget_button_tear_pressed"))
connect("button_logbook_pressed", Callable(owner, "_on_TabWidget_button_logbook_pressed"))
connect("button_build_menu_pressed", Callable(owner, "_on_TabWidget_button_build_menu_pressed"))
Expand Down Expand Up @@ -75,6 +85,18 @@ func _on_TabContainer_sort_children() -> void:
# NOTIFICATION_PARENTED:
# prints(self, "has been parented.")

func _on_ZoomInButton_pressed() -> void:
emit_signal("button_zoom_in_pressed")

func _on_ZoomOutButton_pressed() -> void:
emit_signal("button_zoom_out_pressed")

func _on_RotateLeftButton_pressed() -> void:
emit_signal("button_rotate_left_pressed")

func _on_RotateRightButton_pressed() -> void:
emit_signal("button_rotate_right_pressed")

func _on_TearButton_pressed() -> void:
emit_signal("button_tear_pressed")

Expand Down
4 changes: 4 additions & 0 deletions Assets/UI/TabWidgets/TabWidget.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,10 @@ stretch_mode = 4
metadata/_edit_lock_ = true

[connection signal="visibility_changed" from="." to="." method="_on_TabWidget_visibility_changed"]
[connection signal="pressed" from="WidgetTop/ZoomControls/ZoomInButton" to="." method="_on_ZoomInButton_pressed"]
[connection signal="pressed" from="WidgetTop/ZoomControls/ZoomOutButton" to="." method="_on_ZoomOutButton_pressed"]
[connection signal="pressed" from="WidgetTop/RotateControls/RotateLeftButton" to="." method="_on_RotateLeftButton_pressed"]
[connection signal="pressed" from="WidgetTop/RotateControls/RotateRightButton" to="." method="_on_RotateRightButton_pressed"]
[connection signal="pressed" from="WidgetTop/TearButton" to="." method="_on_TearButton_pressed"]
[connection signal="pressed" from="WidgetTop/LogbookButton" to="." method="_on_LogbookButton_pressed"]
[connection signal="pressed" from="WidgetTop/BuildMenuButton" to="." method="_on_BuildMenuButton_pressed"]
Expand Down

0 comments on commit e2e579b

Please sign in to comment.