init
This commit is contained in:
62
levels/areas/01.tscn
Normal file
62
levels/areas/01.tscn
Normal file
File diff suppressed because one or more lines are too long
30
levels/areas/02.tscn
Normal file
30
levels/areas/02.tscn
Normal file
File diff suppressed because one or more lines are too long
23
levels/areas/03.tscn
Normal file
23
levels/areas/03.tscn
Normal file
File diff suppressed because one or more lines are too long
44
levels/dungeons/d01.tscn
Normal file
44
levels/dungeons/d01.tscn
Normal file
File diff suppressed because one or more lines are too long
292
levels/dungeons/d02.tscn
Normal file
292
levels/dungeons/d02.tscn
Normal file
File diff suppressed because one or more lines are too long
39
levels/dungeons/d03.tscn
Normal file
39
levels/dungeons/d03.tscn
Normal file
File diff suppressed because one or more lines are too long
18
levels/dungeons/d04.tscn
Normal file
18
levels/dungeons/d04.tscn
Normal file
File diff suppressed because one or more lines are too long
95
levels/level_transition.gd
Normal file
95
levels/level_transition.gd
Normal file
@@ -0,0 +1,95 @@
|
||||
@tool
|
||||
class_name LevelTransation extends Area2D
|
||||
|
||||
enum SIDE {
|
||||
LEFT,
|
||||
RIGHT,
|
||||
TOP,
|
||||
BOTTOM
|
||||
}
|
||||
|
||||
@export_file("*.tscn") var level
|
||||
@export var target_area: String = "LevelManager"
|
||||
@export var center_player := false
|
||||
@export_category("Collision Area Settings")
|
||||
@export_range(1, 12, 1, "or_greater")
|
||||
var size: int = 2 :
|
||||
set(new_size):
|
||||
size = new_size
|
||||
update_area()
|
||||
@export var side: SIDE = SIDE.LEFT :
|
||||
set(new_side):
|
||||
side = new_side
|
||||
update_area()
|
||||
@export var snap_to_grid: bool = false :
|
||||
set(new_snap_to_grid):
|
||||
snap_to_grid = new_snap_to_grid
|
||||
update_snap_to_grid()
|
||||
|
||||
@onready var collision_shape: CollisionShape2D = $CollisionShape2D
|
||||
|
||||
func _ready() -> void:
|
||||
update_area()
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
monitoring = false
|
||||
place_player()
|
||||
await LevelManager.level_loaded
|
||||
monitoring = true
|
||||
body_entered.connect(on_enter)
|
||||
|
||||
func update_area() -> void:
|
||||
var new_rect: Vector2 = Vector2(32, 32)
|
||||
var new_position: Vector2 = Vector2.ZERO
|
||||
|
||||
if side == SIDE.TOP:
|
||||
new_rect.x *= size
|
||||
new_position.y -= 16
|
||||
elif side == SIDE.BOTTOM:
|
||||
new_rect.x *= size
|
||||
new_position.y += 16
|
||||
elif side == SIDE.LEFT:
|
||||
new_rect.y *= size
|
||||
new_position.x -= 16
|
||||
elif side == SIDE.RIGHT:
|
||||
new_rect.y *= size
|
||||
new_position.x += 16
|
||||
|
||||
if collision_shape == null:
|
||||
collision_shape = get_node("CollisionShape2D")
|
||||
|
||||
collision_shape.shape.size = new_rect
|
||||
collision_shape.position = new_position
|
||||
|
||||
func update_snap_to_grid() -> void:
|
||||
position.x = round(position.x / 16) * 16
|
||||
position.y = round(position.y / 16) * 16
|
||||
|
||||
func on_enter(_node: Node2D) -> void:
|
||||
LevelManager.load_new_level(level, target_area, get_offset())
|
||||
|
||||
func place_player() -> void:
|
||||
if name != LevelManager.target_transition:
|
||||
return
|
||||
PlayerManager.set_player_position(global_position + LevelManager.position_offset)
|
||||
|
||||
func get_offset() -> Vector2:
|
||||
var offset := Vector2.ZERO
|
||||
var player_pos := PlayerManager.player.global_position
|
||||
if side == SIDE.LEFT or side == SIDE.RIGHT:
|
||||
if center_player:
|
||||
offset.y = 0
|
||||
else:
|
||||
offset.y = player_pos.y - global_position.y
|
||||
offset.x = 16
|
||||
if side == SIDE.LEFT:
|
||||
offset.x *= -1
|
||||
else:
|
||||
if center_player:
|
||||
offset.x = 0
|
||||
else:
|
||||
offset.x = player_pos.x - global_position.x
|
||||
offset.y = 16
|
||||
if side == SIDE.TOP:
|
||||
offset.y *= -1
|
||||
return offset
|
||||
1
levels/level_transition.gd.uid
Normal file
1
levels/level_transition.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://xve4bvfude5f
|
||||
18
levels/level_transition.tscn
Normal file
18
levels/level_transition.tscn
Normal file
@@ -0,0 +1,18 @@
|
||||
[gd_scene format=3 uid="uid://cpf3fr32ediqk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://xve4bvfude5f" path="res://levels/level_transition.gd" id="1_hvuti"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_smikd"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(32, 64)
|
||||
|
||||
[node name="LevelManager" type="Area2D" unique_id=438390501]
|
||||
collision_layer = 0
|
||||
monitorable = false
|
||||
script = ExtResource("1_hvuti")
|
||||
level = "<null>"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=930732106]
|
||||
position = Vector2(-16, 0)
|
||||
shape = SubResource("RectangleShape2D_smikd")
|
||||
debug_color = Color(0.64724547, 0.33917212, 0.98769504, 0.41960785)
|
||||
14
levels/player_spawn.tscn
Normal file
14
levels/player_spawn.tscn
Normal file
@@ -0,0 +1,14 @@
|
||||
[gd_scene format=3 uid="uid://dao452qs5wu63"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ymk7h2a2b06t" path="res://levels/scripts/player_spawn.gd" id="1_2efx6"]
|
||||
[ext_resource type="Texture2D" uid="uid://cge4rwsf016ej" path="res://player/sprites/PlayerSprite02.png" id="1_j6jwq"]
|
||||
|
||||
[node name="PlayerSpawn" type="Node2D" unique_id=792855586]
|
||||
script = ExtResource("1_2efx6")
|
||||
|
||||
[node name="PlayerSprite" type="Sprite2D" parent="." unique_id=752985470]
|
||||
modulate = Color(0.0627451, 0.49803922, 0.7254902, 0.30980393)
|
||||
position = Vector2(0, -20)
|
||||
texture = ExtResource("1_j6jwq")
|
||||
hframes = 16
|
||||
vframes = 3
|
||||
10
levels/scripts/level.gd
Normal file
10
levels/scripts/level.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
class_name Level extends Node2D
|
||||
|
||||
func _ready() -> void:
|
||||
y_sort_enabled = true
|
||||
PlayerManager.set_as_parent(self)
|
||||
LevelManager.level_load_started.connect(free_level)
|
||||
|
||||
func free_level() -> void:
|
||||
PlayerManager.unparent_player(self)
|
||||
queue_free()
|
||||
1
levels/scripts/level.gd.uid
Normal file
1
levels/scripts/level.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://curqsb603j1yj
|
||||
9
levels/scripts/player_spawn.gd
Normal file
9
levels/scripts/player_spawn.gd
Normal file
@@ -0,0 +1,9 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
visible = false
|
||||
if !PlayerManager.player_spawned:
|
||||
PlayerManager.set_player_position(global_position)
|
||||
PlayerManager.player_spawned = true
|
||||
|
||||
1
levels/scripts/player_spawn.gd.uid
Normal file
1
levels/scripts/player_spawn.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ymk7h2a2b06t
|
||||
Reference in New Issue
Block a user