Files
mhlib/godot/mhjnr/level.gd
2023-05-04 00:32:54 +02:00

62 lines
2.1 KiB
GDScript

@tool
extends Node2D
@export var level_id: int = 1
func _ready() -> void:
var player = preload("res://mhjnr/Moorhuhn.tscn").instantiate()
add_child(player)
%Camera.player = player
%HudLevel.text = "Level %d" % level_id
player.position = Vector2(200, 10)
var camera_rect: Rect2i
var level: ObjectScript = load("datafile://data/level%02d/settings/level.txt" % level_id)
for data in level.static_objects:
match data.resource_type:
"LevelSettings":
%LevelTimer.start(data.props["levelTime"])
"TiledLayer":
var scene = load("datafile://data/level%02d/layers/%s.dat" % [level_id, data.name.to_lower()])
var tiles: TileMap = scene.instantiate()
tiles.name = data.name
tiles.visible = data.props["is visible"] == 1
var used = tiles.get_used_rect()
used.position *= tiles.cell_quadrant_size
used.size *= tiles.cell_quadrant_size
camera_rect = used if camera_rect == null else camera_rect.merge(used)
var scroll_speed: Vector2 = data.props["scroll speed"]
if scroll_speed.is_equal_approx(Vector2(1, 1)):
add_child(tiles)
else:
var parallax = ParallaxLayer.new()
parallax.name = data.name
parallax.visible = data.props["is visible"] == 1
parallax.motion_scale = data.props["scroll speed"]
%parallax.add_child(parallax)
parallax.add_child(tiles)
%Camera.limit_left = camera_rect.position.x
%Camera.limit_top = camera_rect.position.y
%Camera.limit_right = camera_rect.position.x + camera_rect.size.x
%Camera.limit_bottom = camera_rect.position.y + camera_rect.size.y
%WorldBoundLeft.position.x = camera_rect.position.x
%WorldBoundTop.position.y = camera_rect.position.y
%WorldBoundRight.position.x = camera_rect.position.x + camera_rect.size.x
%WorldBoundBottom.position.y = camera_rect.position.y + camera_rect.size.y
#var enemies: ObjectScript = load("datafile://data/level%02d/layers/%s.dat" % [level_id, name.to_lower()])
#for object in enemies.dynamic_objects:
# match object.props["subType"]:
## 1: create_movable(object)
# 0: create_enemy(object)
func create_enemy(data: ObjectData):
pass
func create_movable(data: ObjectData):
pass