diff --git a/graphics/hud/off_level_indicator.png b/graphics/hud/off_level_indicator.png new file mode 100644 index 0000000..a73bb78 Binary files /dev/null and b/graphics/hud/off_level_indicator.png differ diff --git a/graphics/hud/off_level_indicator.png.import b/graphics/hud/off_level_indicator.png.import new file mode 100644 index 0000000..0f45554 --- /dev/null +++ b/graphics/hud/off_level_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/off_level_indicator.png" +dest_files=[ "res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_head.png b/graphics/hud/sg_head.png new file mode 100644 index 0000000..d8e16a5 Binary files /dev/null and b/graphics/hud/sg_head.png differ diff --git a/graphics/hud/sg_head.png.import b/graphics/hud/sg_head.png.import new file mode 100644 index 0000000..cfdc5f7 --- /dev/null +++ b/graphics/hud/sg_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_head.png" +dest_files=[ "res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/Camera2D.tscn b/objects/Camera2D.tscn index 593286a..1f93de5 100644 --- a/objects/Camera2D.tscn +++ b/objects/Camera2D.tscn @@ -1,9 +1,13 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] [ext_resource path="res://objects/camera.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/off_level_indicator.tscn" type="PackedScene" id=2] [node name="Camera2D" type="Camera2D"] offset = Vector2( 128, 96 ) current = true smoothing_speed = 8.0 script = ExtResource( 1 ) + +[node name="OffLevelIndicator" parent="." instance=ExtResource( 2 )] +position = Vector2( 0, 12 ) diff --git a/objects/camera.gd b/objects/camera.gd index a263db7..8e89abd 100644 --- a/objects/camera.gd +++ b/objects/camera.gd @@ -2,6 +2,7 @@ extends Camera2D onready var player = get_tree().get_nodes_in_group("player").front() onready var last_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) +onready var off_level_indicator = $OffLevelIndicator #Scroll direction export var scroll_h = true export var scroll_v = false @@ -16,7 +17,7 @@ func _process(delta): if not is_instance_valid(player): player = get_tree().get_nodes_in_group("player").pop_front() else: - var current_sector = Game.get_sector(player.global_position + Vector2(0.0, 1.0)) + var current_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) if scroll_h && current_sector.x != last_sector.x: position.x = current_sector.x * Game.RESOLUTION.x if respawn_h: @@ -27,3 +28,9 @@ func _process(delta): position.y = current_sector.y * Game.RESOLUTION.y last_sector.y = current_sector.y Game.current_sector = last_sector + #Off level indicator + if player.global_position.y - global_position.y <= 16.0: + off_level_indicator.visible = true + off_level_indicator.global_position.x = player.global_position.x + else: + off_level_indicator.visible = false diff --git a/objects/hud/off_level_indicator.tscn b/objects/hud/off_level_indicator.tscn new file mode 100644 index 0000000..dff5246 --- /dev/null +++ b/objects/hud/off_level_indicator.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=2] +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/sg_head.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="Animation" id=2] +resource_name = "wobble" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Arrow:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 5 ), Vector2( 1, 3 ), Vector2( 1, 5 ) ] +} + +[node name="OffLevelIndicator" type="Node2D"] +z_index = 4096 + +[node name="Head" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 0, 15 ) +texture = ExtResource( 4 ) + +[node name="Arrow" type="Sprite" parent="."] +position = Vector2( 1, 3.0437 ) +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "wobble" +anims/wobble = SubResource( 2 )