From 234e49ead71a48a4e8e28fe75d5feeb6ff72fee5 Mon Sep 17 00:00:00 2001 From: Harmony Honey Date: Mon, 29 Nov 2021 12:55:25 -0500 Subject: [PATCH] levelz! ^.^ --- src/autoload/HUD.tscn | 11 +++++---- src/autoload/Shared.gd | 7 +++--- src/map/_test/cam_test.tscn | 24 ++++++++++++++++++++ src/map/worlds/1/20.tscn | 13 ++++++----- src/map/worlds/1/21.tscn | 45 +++++++++++++++++-------------------- src/map/worlds/1/22.tscn | 38 +++++++++++++++++++++++++++++++ src/stage/Camera2D.gd | 15 +++++++++++++ 7 files changed, 112 insertions(+), 41 deletions(-) create mode 100644 src/map/_test/cam_test.tscn create mode 100644 src/map/worlds/1/22.tscn diff --git a/src/autoload/HUD.tscn b/src/autoload/HUD.tscn index c5e4837..f072f68 100644 --- a/src/autoload/HUD.tscn +++ b/src/autoload/HUD.tscn @@ -296,19 +296,18 @@ __meta__ = { } [node name="Time" type="Label" parent="Control"] -visible = false anchor_left = 0.02 anchor_top = 0.88 anchor_right = 0.065 anchor_bottom = 1.0 -margin_left = 473.297 -margin_top = -618.121 -margin_right = 991.697 -margin_bottom = -518.121 +margin_left = 374.4 +margin_top = -617.6 +margin_right = 1276.8 +margin_bottom = -576.0 rect_scale = Vector2( 0.5, 0.5 ) custom_fonts/font = ExtResource( 1 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) -text = "time_scale: " +align = 1 __meta__ = { "_edit_use_anchors_": false } diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 4a60754..3598624 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -23,15 +23,14 @@ func _ready(): for i in list_folder(worlds_path).size(): world_size[i] = list_folder(worlds_path + str(i + 1) + "/").size() - 1 - func _input(event): if event is InputEventKey and event.pressed: if event.scancode == KEY_F11: OS.window_fullscreen = !OS.window_fullscreen Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN if OS.window_fullscreen else Input.MOUSE_MODE_VISIBLE) -# if event.scancode == KEY_MINUS or event.scancode == KEY_EQUAL: -# Engine.time_scale = max(0.5, Engine.time_scale - 0.1) if event.scancode == KEY_MINUS else min(10.0, Engine.time_scale + 0.1) -# HUD.get_node("Control/Time").text = "time_scale: " + str(Engine.time_scale) + if event.scancode == KEY_MINUS or event.scancode == KEY_EQUAL: + Engine.time_scale = max(0.5, Engine.time_scale - 0.1) if event.scancode == KEY_MINUS else min(10.0, Engine.time_scale + 0.1) + HUD.get_node("Control/Time").text = "time_scale: " + str(Engine.time_scale) func list_folder(path, include_extension := true): var dir = Directory.new() diff --git a/src/map/_test/cam_test.tscn b/src/map/_test/cam_test.tscn new file mode 100644 index 0000000..a396424 --- /dev/null +++ b/src/map/_test/cam_test.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://src/stage/Camera2D.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] + +[node name="Node2D" type="Node2D"] + +[node name="Camera2D" parent="." instance=ExtResource( 1 )] +position = Vector2( 450, 350 ) +is_moving = true +is_focal_point = true +focal_zoom_dividend = 100 + +[node name="SolidTileMap" parent="." instance=ExtResource( 2 )] +tile_data = PoolIntArray( -262136, 1610612736, 0, -262135, 1610612736, 0, -262134, 1610612736, 0, -196600, 1610612736, 0, -196599, 1610612736, 0, -196598, 1610612736, 0, -131064, 1610612736, 0, -131063, 1610612736, 0, -131062, 1610612736, 0, -65531, 1610612736, 0, -65530, 1610612736, 0, -65529, 1610612736, 0, -65528, 1610612736, 0, -65527, 1610612736, 0, -65526, 1610612736, 0, -65525, 1610612736, 0, -65524, 1610612736, 0, -65523, 1610612736, 0, 5, 1610612736, 0, 6, 1610612736, 0, 7, 1610612736, 0, 8, 1610612736, 0, 9, 1610612736, 0, 10, 1610612736, 0, 11, 1610612736, 0, 12, 1610612736, 0, 13, 1610612736, 0, 65541, 1610612736, 0, 65542, 1610612736, 0, 65543, 1610612736, 0, 65544, 1610612736, 0, 65545, 1610612736, 0, 65546, 1610612736, 0, 65547, 1610612736, 0, 65548, 1610612736, 0, 65549, 1610612736, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 1610612736, 0, 131080, 1610612736, 0, 131081, 1610612736, 0, 131082, 1610612736, 0, 131083, 1610612736, 0, 131084, 1610612736, 0, 131085, 1610612736, 0, 131086, 1610612736, 0, 131087, 1610612736, 0, 131088, 1610612736, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 1610612736, 0, 196616, 1610612736, 0, 196617, 1610612736, 0, 196618, 1610612736, 0, 196619, 1610612736, 0, 196620, 1610612736, 0, 196621, 1610612736, 0, 196622, 1610612736, 0, 196623, 1610612736, 0, 196624, 1610612736, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 1610612736, 0, 262151, 1610612736, 0, 262152, 1610612736, 0, 262153, 1610612736, 0, 262154, 1610612736, 0, 262155, 1610612736, 0, 262156, 1610612736, 0, 262157, 1610612736, 0, 262158, 1610612736, 0, 262159, 1610612736, 0, 262160, 1610612736, 0, 327685, 1610612736, 0, 327686, 1610612736, 0, 327687, 1610612736, 0, 327688, 1610612736, 0, 327689, 1610612736, 0, 327690, 1610612736, 0, 327691, 1610612736, 0, 327692, 1610612736, 0, 327693, 1610612736, 0, 393221, 1610612736, 0, 393222, 1610612736, 0, 393223, 1610612736, 0, 393224, 1610612736, 0, 393225, 1610612736, 0, 393226, 1610612736, 0, 393227, 1610612736, 0, 393228, 1610612736, 0, 393229, 1610612736, 0, 458757, 1610612736, 0, 458758, 1610612736, 0, 458759, 1610612736, 0, 458760, 1610612736, 0, 458761, 1610612736, 0, 458762, 1610612736, 0, 458763, 1610612736, 0, 458764, 1610612736, 0, 458765, 1610612736, 0, 524296, 1610612736, 0, 524297, 1610612736, 0, 524298, 1610612736, 0, 589832, 1610612736, 0, 589833, 1610612736, 0, 589834, 1610612736, 0, 655368, 1610612736, 0, 655369, 1610612736, 0, 655370, 1610612736, 0 ) + +[node name="SpikeMap" parent="." instance=ExtResource( 5 )] + +[node name="Actors" type="Node2D" parent="."] + +[node name="Player" parent="Actors" instance=ExtResource( 3 )] +position = Vector2( 447.272, 148.671 ) diff --git a/src/map/worlds/1/20.tscn b/src/map/worlds/1/20.tscn index 537bc5c..14b421b 100644 --- a/src/map/worlds/1/20.tscn +++ b/src/map/worlds/1/20.tscn @@ -10,26 +10,27 @@ [node name="Node2D" type="Node2D"] [node name="Camera2D" parent="." instance=ExtResource( 1 )] -position = Vector2( 1000, 50 ) +position = Vector2( 750, 100 ) zoom = Vector2( 2, 2 ) is_moving = true is_focal_point = true -is_focal_zoom = true +focal_influence = 0.1 focal_zoom_threshhold = 400 [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] -tile_data = PoolIntArray( -196608, -1073741824, 0, -196607, -1073741824, 0, -131072, -1073741824, 0, -131071, -1073741824, 0, -65536, -1073741824, 0, -65535, -1073741824, 0, -65521, 1610612736, 0, 0, -1073741824, 0, 1, -1073741824, 0, 15, 1610612736, 0, 65536, -1073741824, 0, 65537, -1073741824, 0, 65551, 1610612736, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, -1073741824, 0, 131082, -1610612736, 0, 131083, -1610612736, 0, 131087, 1610612736, 0, 131088, 1610612736, 0, 131089, 1610612736, 0, 131090, 1610612736, 0, 196608, -1073741824, 0, 196609, -1073741824, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, -1073741824, 0, 196618, -1610612736, 0, 196619, -1610612736, 0 ) +tile_data = PoolIntArray( -196608, -1073741824, 0, -196607, -1073741824, 0, -131072, -1073741824, 0, -131071, -1073741824, 0, -65536, -1073741824, 0, -65535, -1073741824, 0, -65525, 0, 0, 0, -1073741824, 0, 1, -1073741824, 0, 11, 0, 0, 65536, -1073741824, 0, 65537, -1073741824, 0, 65547, 0, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, -1073741824, 0, 131083, -1610612736, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 196608, -1073741824, 0, 196609, -1073741824, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, -1073741824, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 5 )] -tile_data = PoolIntArray( -262144, 0, 0, -262143, 0, 0, -131057, 0, 0, 131091, -1610612736, 0, 262144, 1610612736, 0, 262145, 1610612736, 0, 262146, 1610612736, 0, 262147, 1610612736, 0, 262148, 1610612736, 0, 262149, 1610612736, 0, 262150, 1610612736, 0, 262151, 1610612736, 0 ) +tile_data = PoolIntArray( -262144, 0, 0, -262143, 0, 0, -131061, 0, 0, 131087, -1610612736, 0, 262144, 1610612736, 0, 262145, 1610612736, 0, 262146, 1610612736, 0, 262147, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Player" parent="Actors" instance=ExtResource( 4 )] -position = Vector2( 1100, 150 ) +position = Vector2( 1300, 350 ) +dir = 2 [node name="Exit" parent="Actors" instance=ExtResource( 6 )] -position = Vector2( 1700, 100 ) +position = Vector2( 1300, 100 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 250, -50 ) diff --git a/src/map/worlds/1/21.tscn b/src/map/worlds/1/21.tscn index b40aeb2..1eb5e58 100644 --- a/src/map/worlds/1/21.tscn +++ b/src/map/worlds/1/21.tscn @@ -1,39 +1,34 @@ [gd_scene load_steps=7 format=2] -[ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] -[ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/stage/Camera2D.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/stage/Camera2D.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [node name="Node2D" type="Node2D"] -[node name="Camera2D" parent="." instance=ExtResource( 3 )] -position = Vector2( -450, 300 ) -zoom = Vector2( 2, 2 ) +[node name="Camera2D" parent="." instance=ExtResource( 1 )] +position = Vector2( 100, -100 ) is_moving = true is_focal_point = true -is_focal_zoom = true -focal_zoom_threshhold = 700 -focal_zoom_dividend = 800 +focal_influence = 0.1 -[node name="SolidTileMap" parent="." instance=ExtResource( 6 )] -tile_data = PoolIntArray( 196595, 0, 0, 196596, 0, 0, 196597, 0, 0, 196598, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 262134, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 327670, 0, 0, 393206, 0, 0 ) +[node name="SolidTileMap" parent="." instance=ExtResource( 2 )] +tile_data = PoolIntArray( -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 0, 0, -327679, 0, 0, -327678, 0, 0, -327677, 0, 0, -262141, 0, 0, -196605, 0, 0, -131069, 0, 0, -65533, 0, 0, 3, 0, 0, 65539, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0 ) -[node name="SpikeMap" parent="." instance=ExtResource( 1 )] -tile_data = PoolIntArray( 196599, -1610612736, 0, 196604, -1073741824, 0, 262135, -1610612736, 0, 262140, -1073741824, 0, 327671, -1610612736, 0, 393207, -1610612736, 0 ) +[node name="SpikeMap" parent="." instance=ExtResource( 5 )] +tile_data = PoolIntArray( -196611, 1610612736, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 196610, 1610612736, 0, 196611, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] -[node name="Player" parent="Actors" instance=ExtResource( 5 )] -position = Vector2( -250, 150 ) +[node name="Player" parent="Actors" instance=ExtResource( 3 )] +position = Vector2( 250, -100 ) +dir = 3 -[node name="Exit" parent="Actors" instance=ExtResource( 2 )] -position = Vector2( -1100, 400 ) +[node name="Exit" parent="Actors" instance=ExtResource( 4 )] +position = Vector2( 500, -100 ) -[node name="Box" parent="Actors" instance=ExtResource( 4 )] -position = Vector2( -50, 150 ) - -[node name="Box2" parent="Actors" instance=ExtResource( 4 )] -position = Vector2( 150, 150 ) +[node name="Box" parent="Actors" instance=ExtResource( 6 )] +position = Vector2( 50, 150 ) diff --git a/src/map/worlds/1/22.tscn b/src/map/worlds/1/22.tscn new file mode 100644 index 0000000..ca9fc72 --- /dev/null +++ b/src/map/worlds/1/22.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://src/stage/Camera2D.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/actor/Exit.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] + +[node name="Node2D" type="Node2D"] + +[node name="Camera2D" parent="." instance=ExtResource( 1 )] +position = Vector2( -450, 300 ) +zoom = Vector2( 2, 2 ) +is_moving = true +is_focal_point = true +focal_zoom_threshhold = 700 +focal_zoom_dividend = 800 + +[node name="SolidTileMap" parent="." instance=ExtResource( 3 )] +tile_data = PoolIntArray( 196595, 0, 0, 196596, 0, 0, 196597, 0, 0, 196598, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 262134, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 327670, 0, 0, 393206, 0, 0 ) + +[node name="SpikeMap" parent="." instance=ExtResource( 5 )] +tile_data = PoolIntArray( 196599, -1610612736, 0, 196604, -1073741824, 0, 262135, -1610612736, 0, 262140, -1073741824, 0, 327671, -1610612736, 0, 393207, -1610612736, 0 ) + +[node name="Actors" type="Node2D" parent="."] + +[node name="Player" parent="Actors" instance=ExtResource( 2 )] +position = Vector2( -250, 150 ) + +[node name="Exit" parent="Actors" instance=ExtResource( 4 )] +position = Vector2( -1100, 400 ) + +[node name="Box" parent="Actors" instance=ExtResource( 6 )] +position = Vector2( -50, 150 ) + +[node name="Box2" parent="Actors" instance=ExtResource( 6 )] +position = Vector2( 150, 150 ) diff --git a/src/stage/Camera2D.gd b/src/stage/Camera2D.gd index add686d..aeba70b 100644 --- a/src/stage/Camera2D.gd +++ b/src/stage/Camera2D.gd @@ -21,6 +21,9 @@ export var is_focal_zoom := false export var focal_zoom_threshhold := 500 setget set_threshhold export var focal_zoom_dividend := 1000 +var screen_size := Vector2(1280, 720) +onready var size = start_zoom * screen_size.y + func _ready(): if Shared.is_level_select: zoom_clock = zoom_duration @@ -50,12 +53,24 @@ func _process(delta): zoom = start_zoom else: zoom = start_zoom + Vector2.ONE * ((dist - focal_zoom_threshhold) / focal_zoom_dividend) + + # keep target on screen + if !is_focal_zoom and zoom_clock == zoom_duration: + var dist = position.distance_to(target_node.position) + if dist + 50 < size.y / 2: + zoom = start_zoom + else: + zoom = Vector2.ONE * ((dist + 50) / (screen_size.y / 2)) + func _draw(): if !Engine.editor_hint: return #draw_circle(Vector2.ZERO, focal_zoom_threshhold, Color(0,0,0, 0.1)) draw_arc(Vector2.ZERO, focal_zoom_threshhold, 0, TAU, 33, Color(1,0,0, 0.2), 5.0) + + var size = zoom * screen_size.y + draw_rect(Rect2(-size * 0.5, size), Color(1,0,0, 0.2), false, 10.0) func set_threshhold(arg): focal_zoom_threshhold = abs(arg)