Some fixes

Disabled feet IK, proper handling of exit room
Added quest system from proto2
This commit is contained in:
Segey Lapin
2020-04-14 16:48:35 +03:00
parent 88e8359f64
commit 7706ba0edf
9 changed files with 528 additions and 213 deletions

View File

@@ -92,32 +92,48 @@ func build_rooms():
window_rooms.push_back(left)
window_rooms.push_back(right)
print("rooms build complete")
var special_rooms = {
"exit_room": {
"alloc": size_x * size_y
},
"master_room": {
"alloc": floors * size_x * size_y
},
"jail_room": {
"alloc": floors * size_x * size_y,
},
"kitchen_room": {
"alloc": size_x * size_y
}
}
func alloc_special_rooms():
var allocated = []
for k in special_rooms.keys():
if special_rooms[k].has("id"):
allocated.push_back(special_rooms[k].id)
for k in special_rooms.keys():
if special_rooms[k].has("id"):
continue
while true:
var room_id = randi() % special_rooms[k].alloc
if !room_id in allocated:
special_rooms[k].id = room_id
allocated.push_back(room_id)
break
for k in special_rooms.keys():
var room_id = special_rooms[k].id
dungeon[room_id].set_meta(k, true)
if k == "master_room":
var player_spawn = Spatial.new()
dungeon[room_id].add_child(player_spawn)
player_spawn.name = "player-spawn"
player_spawn.add_to_group("spawn")
if k == "exit_room":
print("exit room: ", room_id)
func build_special_rooms():
print("build_special_rooms")
var special_rooms = []
var p_id = window_rooms[randi() % window_rooms.size()]
special_rooms.push_back(p_id)
# var e_id = -1
# while true:
# e_id = window_rooms[randi() % (size_x * size_]
# if !e_id in special_rooms:
# break
# special_rooms.push_back(e_id)
while special_rooms.size() < 3:
var r_id = randi() % dungeon.size()
if !r_id in special_rooms:
special_rooms.push_back(r_id)
var j_id = special_rooms[1]
var k_id = special_rooms[2]
dungeon[p_id].set_meta("master_room", true)
dungeon[j_id].set_meta("jail_room", true)
dungeon[k_id].set_meta("kitchen_room", true)
# dungeon[e_id].set_meta("exit_room", true)
var player_spawn = Spatial.new()
dungeon[p_id].add_child(player_spawn)
player_spawn.name = "player-spawn"
player_spawn.add_to_group("spawn")
alloc_special_rooms()
var state = 0
func _ready():

View File

@@ -229,6 +229,10 @@ func create_rooms():
master_room()
elif has_meta("kitchen_room"):
master_room()
elif has_meta("exit_room"):
for e in get_children():
if e.is_in_group("furniture"):
e.queue_free()
elif has_meta("stairs"):
master_room()
var stairs_i = stairs.instance()

View File

@@ -1,5 +1,18 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=3 format=2]
[ext_resource path="res://scenes/maps/stairs.escn" type="PackedScene" id=1]
[sub_resource type="BoxShape" id=1]
extents = Vector3( 1.13086, 0.0458848, 0.64188 )
[node name="stairs" instance=ExtResource( 1 )]
[node name="StaticBody" type="StaticBody" parent="." index="4"]
[node name="CollisionShape" type="CollisionShape" parent="StaticBody" index="0"]
transform = Transform( 0.783986, -0.620779, 0, 0.620779, 0.783986, 0, 0, 0, 1, -0.718359, 0.66685, 1.91067 )
shape = SubResource( 1 )
[node name="CollisionShape2" type="CollisionShape" parent="StaticBody" index="1"]
transform = Transform( -0.768529, 0.639815, -3.25444e-07, 0.639815, 0.768529, 1.60706e-08, 2.60396e-07, -1.95874e-07, -1, -0.0615042, 2.2555, -1.95211 )
shape = SubResource( 1 )