diff --git a/audio/sounds/msx_come_here.ogg b/audio/sounds/msx_come_here.ogg new file mode 100644 index 0000000..cc67b80 Binary files /dev/null and b/audio/sounds/msx_come_here.ogg differ diff --git a/objects/Camera2D.tscn b/objects/Camera2D.tscn index 8c66f67..560267f 100644 --- a/objects/Camera2D.tscn +++ b/objects/Camera2D.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 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] +[ext_resource path="res://objects/hud/msx_off_level_indicator.tscn" type="PackedScene" id=3] [node name="Camera2D" type="Camera2D"] offset = Vector2( 128, 96 ) @@ -12,3 +13,7 @@ script = ExtResource( 1 ) [node name="OffLevelIndicator" parent="." instance=ExtResource( 2 )] visible = false position = Vector2( 0, 12 ) + +[node name="MsxOffLevelIndicator" parent="." instance=ExtResource( 3 )] +visible = false +position = Vector2( 16, 32 ) diff --git a/objects/camera.gd b/objects/camera.gd index 8e89abd..d523494 100644 --- a/objects/camera.gd +++ b/objects/camera.gd @@ -3,14 +3,20 @@ 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 +onready var msx_off_level_indicator = $MsxOffLevelIndicator #Scroll direction export var scroll_h = true export var scroll_v = false export var respawn_h = true +var msx = null +var msx_exists = false func _ready(): set_as_toplevel(true) Game.current_sector = last_sector + if get_tree().get_nodes_in_group("msx").size() > 0: + msx = get_tree().get_nodes_in_group("msx").pop_front() + msx_exists = true func _process(delta): # use pop_front() instead of [0] so that will not crash without player @@ -34,3 +40,18 @@ func _process(delta): off_level_indicator.global_position.x = player.global_position.x else: off_level_indicator.visible = false + #Ms.X off level indicator + if msx_exists && is_instance_valid(msx): + if msx.get_parent().is_free: + msx_off_level_indicator.visible = true + var msx_sector = Game.get_sector(msx.global_position) + if msx_sector == current_sector: + msx_off_level_indicator.anims.play("onscreen") + if msx_sector < current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 16 + msx_off_level_indicator.anims.play("left") + if msx_sector > current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 240 + msx_off_level_indicator.anims.play("right") diff --git a/objects/hud/msx_off_level_indicator.gd b/objects/hud/msx_off_level_indicator.gd new file mode 100644 index 0000000..74dda07 --- /dev/null +++ b/objects/hud/msx_off_level_indicator.gd @@ -0,0 +1,3 @@ +extends Node2D + +onready var anims = $AnimationPlayer diff --git a/objects/hud/msx_off_level_indicator.tscn b/objects/hud/msx_off_level_indicator.tscn index 0723703..2fc9b4e 100644 --- a/objects/hud/msx_off_level_indicator.tscn +++ b/objects/hud/msx_off_level_indicator.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=1] [ext_resource path="res://graphics/hud/msx_head.png" type="Texture" id=2] +[ext_resource path="res://objects/hud/msx_off_level_indicator.gd" type="Script" id=3] [sub_resource type="Animation" id=2] length = 0.001 @@ -186,6 +187,7 @@ tracks/3/keys = { } [node name="MsxOffLevelIndicator" type="Node2D"] +script = ExtResource( 3 ) [node name="Head" type="Sprite" parent="."] visible = false @@ -193,7 +195,7 @@ texture = ExtResource( 2 ) [node name="ArrowR" type="Sprite" parent="."] visible = false -position = Vector2( 12.4551, 1 ) +position = Vector2( 11.336, 1 ) rotation = 1.5708 texture = ExtResource( 1 ) diff --git a/objects/npc/msx.gd b/objects/npc/msx.gd index 6c37c33..0565cee 100644 --- a/objects/npc/msx.gd +++ b/objects/npc/msx.gd @@ -5,6 +5,7 @@ var is_moving = false var is_holding_shard = true var has_respawned = false var first_lead = true +var is_free = false onready var death_particles = $DeathSplatter onready var sprite = $Sprite onready var anims = $AnimationPlayer @@ -76,6 +77,7 @@ func spawn_shard(): func switch_action(): Audio.play_sound(come_here,Audio.ac_voice) text_anims.play("come here") + is_free = true func spray_blood(): for i in 16: diff --git a/objects/npc/msx.tscn b/objects/npc/msx.tscn index d1fbdc5..3976722 100644 --- a/objects/npc/msx.tscn +++ b/objects/npc/msx.tscn @@ -522,6 +522,18 @@ tracks/0/keys = { "update": 1, "values": [ true, false ] } +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/ComeHere:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} [sub_resource type="Animation" id=24] resource_name = "here take this"