mirror of
https://github.com/Theaninova/mhlib.git
synced 2025-12-12 12:36:17 +00:00
62 lines
2.1 KiB
GDScript
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
|