Browse Source

Allowing for camera movement and moving camera functions out of conway.gd

master
Ryan Reed 1 year ago
parent
commit
ebece003eb
4 changed files with 65 additions and 14 deletions
  1. +24
    -0
      project.godot
  2. +30
    -0
      scenes/camera_view.gd
  3. +5
    -12
      scenes/conway.gd
  4. +6
    -2
      scenes/conway.tscn

+ 24
- 0
project.godot View File

@ -51,3 +51,27 @@ Menu={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null)
]
}
Left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
Right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
Forward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
Backward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}

+ 30
- 0
scenes/camera_view.gd View File

@ -0,0 +1,30 @@
extends Node2D
@export var zoom_increment: Vector2 = Vector2(0.1, 0.1)
@export var move_speed: int = 250
var mouse: Vector2 = Vector2.ZERO
@onready var camera: Camera2D = $Camera2D
func _process(delta: float) -> void:
var input_dir := Input.get_vector("Left", "Right", "Forward", "Backward")
var velocity_y = input_dir.y * move_speed * delta
var velocity_x = input_dir.x * move_speed * delta
position += Vector2(velocity_x, velocity_y)
mouse = Vector2()
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("Zoom In"):
camera.zoom += zoom_increment
if event.is_action_pressed("Zoom Out"):
camera.zoom -= zoom_increment
if event.is_action_pressed("Reset Zoom"):
camera.zoom = Vector2.ONE
func update_position(pos: Vector2) -> void:
camera.position = pos

+ 5
- 12
scenes/conway.gd View File

@ -29,7 +29,7 @@ enum CellStates {
@onready var messages_label: Label = $UI/Messages/Label
## Other
@onready var camera: Camera2D = $Camera2D
@onready var camera: Node2D = $CameraView
@onready var generation_timer: Timer = $GenerationTimer
@export var world_seed: int ## The seed utilized for generation of the world
@ -37,8 +37,6 @@ enum CellStates {
@export var cell_texture: Texture2D ## Testure for each cell
@export var world_size: Vector2 = Vector2(32, 32) ## The size of the world
@export var zoom_increment: Vector2 = Vector2(0.1, 0.1)
var cell_instance
var evolution_is_stalled: bool = false
var generation: int = 1
@ -78,13 +76,6 @@ func _input(event: InputEvent) -> void:
update_generation_ui()
generation_ui.visible = is_paused
if event.is_action_pressed("Zoom In"):
camera.zoom += zoom_increment
if event.is_action_pressed("Zoom Out"):
camera.zoom -= zoom_increment
if event.is_action_pressed("Reset Zoom"):
camera.zoom = Vector2.ONE
#
# UI
@ -115,8 +106,10 @@ func start_conway() -> void:
debug_living_cells_counter.text = "Living Cells: %s" % total_living
# Center the camera on the world
camera.position.x = world_size.x * cell_size.x / 2
camera.position.y = world_size.y * cell_size.y / 2
camera.update_position(Vector2(
world_size.x * cell_size.x / 2,
world_size.y * cell_size.y / 2
))
if not is_paused: generation_timer.start()


+ 6
- 2
scenes/conway.tscn View File

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://d3twfk56sjf2m"]
[gd_scene load_steps=5 format=3 uid="uid://d3twfk56sjf2m"]
[ext_resource type="Script" path="res://scenes/conway.gd" id="1_1gvb0"]
[ext_resource type="Texture2D" uid="uid://c2vm5pfsamed4" path="res://assets/icon.svg" id="2_l6fa6"]
[ext_resource type="Script" path="res://scenes/camera_view.gd" id="3_avkud"]
[ext_resource type="Texture2D" uid="uid://b8gggrriib8n" path="res://assets/refresh.png" id="4_hmfh6"]
[node name="World" type="Node2D"]
@ -9,7 +10,10 @@ position = Vector2(-152, 0)
script = ExtResource("1_1gvb0")
cell_texture = ExtResource("2_l6fa6")
[node name="Camera2D" type="Camera2D" parent="."]
[node name="CameraView" type="Node2D" parent="."]
script = ExtResource("3_avkud")
[node name="Camera2D" type="Camera2D" parent="CameraView"]
position = Vector2(464, 200)
[node name="GenerationTimer" type="Timer" parent="."]


Loading…
Cancel
Save