summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Scenes/Dungeon.gd62
-rw-r--r--Scenes/Dungeon.tscn24
-rw-r--r--Scenes/Obstacle.tscn16
-rw-r--r--Scenes/Player.gd5
-rw-r--r--Scenes/Player.tscn18
-rw-r--r--default_env.tres2
-rw-r--r--project.godot1
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]