diff options
-rw-r--r-- | Scenes/Dungeon.gd | 62 | ||||
-rw-r--r-- | Scenes/Dungeon.tscn | 24 | ||||
-rw-r--r-- | Scenes/Obstacle.tscn | 16 | ||||
-rw-r--r-- | Scenes/Player.gd | 5 | ||||
-rw-r--r-- | Scenes/Player.tscn | 18 | ||||
-rw-r--r-- | default_env.tres | 2 | ||||
-rw-r--r-- | project.godot | 1 |
7 files changed, 128 insertions, 0 deletions
diff --git a/Scenes/Dungeon.gd b/Scenes/Dungeon.gd new file mode 100644 index 0000000..043d78f --- /dev/null +++ b/Scenes/Dungeon.gd @@ -0,0 +1,62 @@ +extends Spatial + +const Player = preload("res://Scenes/Player.tscn") +const Obstacle = preload("res://Scenes/Obstacle.tscn") + +onready var player = null + +onready var tiles_entities = { +} + +onready var tiles_floor = { +} + +# Called when the node enters the scene tree for the first time. +func _ready(): + randomize() + + build_floor() + +func build_floor(): + player = Player.instance() + add_child(player) + + var rand_pos = Vector2(-5, 0) + tiles_entities[rand_pos] = player + + for i in range(4): + rand_pos = Vector2(randi()%6 - 3, randi()%6 - 3) + var obstacle = Obstacle.instance() + tiles_entities[rand_pos] = obstacle + add_child(obstacle) + + for key in tiles_entities: + tiles_entities[key].translation = tile_to_pos(key) + +func tile_to_pos(tile : Vector2): + return Vector3(tile.x, 0, -tile.y) + +func pos_to_tile(pos: Vector3): + return Vector2(round(pos.x), round(-pos.z)) + +func _input(event): + if event is InputEventKey and event.is_pressed() and not event.is_echo(): + if event.scancode == KEY_UP: + move_player(Vector2(0,1)) + elif event.scancode == KEY_DOWN: + move_player(Vector2(0,-1)) + elif event.scancode == KEY_RIGHT: + move_player(Vector2(1,0)) + elif event.scancode == KEY_LEFT: + move_player(Vector2(-1,0)) + +func move_player(dir: Vector2): + var curr_tile = pos_to_tile(player.translation) + var new_tile = curr_tile + dir + + if tiles_entities.has(new_tile): + return + + tiles_entities.erase(curr_tile) + tiles_entities[new_tile] = player + player.translation = tile_to_pos(new_tile) diff --git a/Scenes/Dungeon.tscn b/Scenes/Dungeon.tscn new file mode 100644 index 0000000..447f31d --- /dev/null +++ b/Scenes/Dungeon.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://Scenes/Dungeon.gd" type="Script" id=1] + +[sub_resource type="PlaneMesh" id=1] + +[node name="Dungeon" type="Spatial"] +script = ExtResource( 1 ) + +[node name="GridMap" type="GridMap" parent="."] +data = { +"cells": PoolIntArray( ) +} +__meta__ = { +"_editor_clip_": 0 +} + +[node name="Floor" type="MeshInstance" parent="."] +transform = Transform( 12.2453, 0, 0, 0, 1, 0, 0, 0, 12.2453, 0, 0, 0 ) +mesh = SubResource( 1 ) +material/0 = null + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.999945, 0.0103301, -0.00192307, 0, 0.183018, 0.98311, 0.0105076, -0.983055, 0.183008, -0.265683, 23.6788, 4.79274 ) diff --git a/Scenes/Obstacle.tscn b/Scenes/Obstacle.tscn new file mode 100644 index 0000000..b138bf9 --- /dev/null +++ b/Scenes/Obstacle.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="CubeMesh" id=6] +size = Vector3( 1, 2, 1 ) + +[sub_resource type="SpatialMaterial" id=5] +albedo_color = Color( 0.976471, 0.541176, 0.541176, 1 ) + +[node name="Obstacle" type="Spatial"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.037 ) + +[node name="Mesh" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) +mesh = SubResource( 6 ) +skeleton = NodePath("../..") +material/0 = SubResource( 5 ) diff --git a/Scenes/Player.gd b/Scenes/Player.gd new file mode 100644 index 0000000..d25de1c --- /dev/null +++ b/Scenes/Player.gd @@ -0,0 +1,5 @@ +extends Spatial + + +func get_upper_face(): + return 1 diff --git a/Scenes/Player.tscn b/Scenes/Player.tscn new file mode 100644 index 0000000..ff73c2a --- /dev/null +++ b/Scenes/Player.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://Scenes/Player.gd" type="Script" id=1] + +[sub_resource type="CubeMesh" id=2] +size = Vector3( 1, 2, 1 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.403922, 0.729412, 0.427451, 1 ) + +[node name="Player" type="Spatial"] +script = ExtResource( 1 ) + +[node name="Mesh" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) +mesh = SubResource( 2 ) +skeleton = NodePath("../..") +material/0 = SubResource( 4 ) diff --git a/default_env.tres b/default_env.tres index 98f26a7..20207a4 100644 --- a/default_env.tres +++ b/default_env.tres @@ -1,5 +1,7 @@ [gd_resource type="Environment" load_steps=2 format=2] + [sub_resource type="ProceduralSky" id=1] + [resource] background_mode = 2 background_sky = SubResource( 1 ) diff --git a/project.godot b/project.godot index 37dfeb3..47f18c7 100644 --- a/project.godot +++ b/project.godot @@ -11,6 +11,7 @@ config_version=4 [application] config/name="gmtk2022" +run/main_scene="res://Scenes/Dungeon.tscn" config/icon="res://icon.png" [physics] |