This commit is contained in:
2026-01-21 23:40:20 +01:00
commit d1f8068081
478 changed files with 24902 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Binaries/szip.zip Normal file

Binary file not shown.

129
Maps/Lobby/Lobby.tscn Normal file
View File

@@ -0,0 +1,129 @@
[gd_scene load_steps=19 format=3 uid="uid://bco4seshb8fjf"]
[ext_resource type="Script" uid="uid://fvwy57of2gvq" path="res://Maps/Lobby/lobby.gd" id="1_3j6ah"]
[ext_resource type="Texture2D" uid="uid://cimsjl61nhh5s" path="res://assets/2D/HDR_blue_nebulae-1.hdr" id="1_o7c6e"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="3_b4v87"]
[ext_resource type="Script" uid="uid://cjgxd88k1bntf" path="res://script/pathfindingGridLoad.gd" id="3_bhyb3"]
[ext_resource type="Script" uid="uid://cjiiw7cybj24b" path="res://script/ButtonLogicImpulse.gd" id="4_2vvmy"]
[ext_resource type="Script" uid="uid://ymaax1x5fos3" path="res://script/interactBox.gd" id="5_f6mem"]
[ext_resource type="AudioStream" uid="uid://1bkjenax2g3s" path="res://assets/Audio/Ambience 1 SpaceBots Audio.mp3" id="6_f6mem"]
[ext_resource type="PackedScene" uid="uid://md1qkedi16r6" path="res://Minigames/Initiators/MinigameFuseBox.tscn" id="8_1nbv0"]
[sub_resource type="Gradient" id="Gradient_skcuv"]
interpolation_mode = 1
offsets = PackedFloat32Array(0, 0.25, 0.361502, 0.375, 0.488263, 0.5, 0.615023, 0.625, 0.732394, 0.75, 0.859155, 0.875, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.25, 0.25, 0.25, 1, 0.28169, 0.28169, 0.28169, 1, 0.375, 0.375, 0.375, 1, 0.408451, 0.408451, 0.408451, 1, 0.5, 0.5, 0.5, 1, 0.530516, 0.530516, 0.530516, 1, 0.625, 0.625, 0.625, 1, 0.661972, 0.661972, 0.661972, 1, 0.75, 0.75, 0.75, 1, 0.802817, 0.802817, 0.802817, 1, 0.875, 0.875, 0.875, 1, 1, 1, 1, 1)
metadata/_snap_enabled = true
metadata/_snap_count = 8
[sub_resource type="GradientTexture1D" id="GradientTexture1D_1nbv0"]
gradient = SubResource("Gradient_skcuv")
[sub_resource type="Gradient" id="Gradient_3j6ah"]
offsets = PackedFloat32Array(0.187793, 0.704225, 0.929577)
colors = PackedColorArray(0, 0, 0, 1, 0.58042, 0.58042, 0.58042, 1, 0.860369, 0.860369, 0.860369, 1)
[sub_resource type="FastNoiseLite" id="FastNoiseLite_bhyb3"]
frequency = 0.03
fractal_octaves = 8
fractal_lacunarity = 5.0
fractal_gain = 0.495
fractal_weighted_strength = 0.23
domain_warp_enabled = true
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_g1wmu"]
noise = SubResource("FastNoiseLite_bhyb3")
color_ramp = SubResource("Gradient_3j6ah")
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_2vvmy"]
panorama = ExtResource("1_o7c6e")
[sub_resource type="Sky" id="Sky_b8rsf"]
sky_material = SubResource("PanoramaSkyMaterial_2vvmy")
[sub_resource type="Environment" id="Environment_f6mem"]
background_mode = 2
sky = SubResource("Sky_b8rsf")
glow_enabled = true
glow_levels/1 = 1.38
glow_levels/2 = 1.55
glow_levels/3 = 5.63
glow_levels/5 = 1.75
glow_levels/6 = 0.9
glow_levels/7 = 0.75
glow_strength = 1.73
glow_mix = 0.03
glow_bloom = 0.05
glow_blend_mode = 4
glow_hdr_luminance_cap = 1.5
glow_map = SubResource("NoiseTexture2D_g1wmu")
volumetric_fog_emission = Color(1, 1, 1, 1)
volumetric_fog_emission_energy = 0.04
adjustment_brightness = 1.5
adjustment_color_correction = SubResource("GradientTexture1D_1nbv0")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1nbv0"]
albedo_color = Color(0.881937, 0.881937, 0.881937, 1)
albedo_texture = ExtResource("3_b4v87")
metallic = 0.4
[sub_resource type="BoxShape3D" id="BoxShape3D_b4v87"]
size = Vector3(4.5, 1, 1)
[node name="Lobby" type="Node3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
script = ExtResource("1_3j6ah")
playerStartPos = Vector3(0, 1, 0)
metadata/_custom_type_script = "uid://cbjn7f7r081q8"
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_f6mem")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
material_overlay = SubResource("StandardMaterial3D_1nbv0")
use_collision = true
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
size = Vector3(49, 0.2, 49)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.47177, 0)
omni_range = 19.6325
[node name="PathfindingGridLoader" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 2.01037, -25)
script = ExtResource("3_bhyb3")
lengthX = 25
lengthZ = 25
metadata/_custom_type_script = "uid://cjgxd88k1bntf"
[node name="StartMission" type="Label3D" parent="."]
transform = Transform3D(-1, 0, -1.509958e-07, 0, 1, 0, 1.509958e-07, 0, -1, 0, 1.69191, 1.21511)
text = "Start Mission"
font_size = 152
[node name="ButtonLogicImpulse" type="Timer" parent="StartMission" node_paths=PackedStringArray("interactBox")]
script = ExtResource("4_2vvmy")
interactBox = NodePath("../InteractBox")
metadata/_custom_type_script = "uid://cjiiw7cybj24b"
[node name="InteractBox" type="Area3D" parent="StartMission" node_paths=PackedStringArray("object")]
script = ExtResource("5_f6mem")
object = NodePath("../ButtonLogicImpulse")
metadata/_custom_type_script = "uid://ymaax1x5fos3"
[node name="CollisionShape3D" type="CollisionShape3D" parent="StartMission/InteractBox"]
shape = SubResource("BoxShape3D_b4v87")
[node name="WiresMinigame" type="Label3D" parent="."]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -6.260252, 1.69191, 1.2151097)
visible = false
pixel_size = 0.02
text = "Wires Minigame"
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer" parent="."]
stream = ExtResource("6_f6mem")
parameters/looping = true
[node name="MinigameFuseBox" parent="." instance=ExtResource("8_1nbv0")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -6.407519, 0, 1.8378651)

View File

@@ -0,0 +1,129 @@
[gd_scene load_steps=19 format=3 uid="uid://bco4seshb8fjf"]
[ext_resource type="Script" uid="uid://fvwy57of2gvq" path="res://Maps/Lobby/lobby.gd" id="1_3j6ah"]
[ext_resource type="Texture2D" uid="uid://cimsjl61nhh5s" path="res://assets/2D/HDR_blue_nebulae-1.hdr" id="1_o7c6e"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="3_b4v87"]
[ext_resource type="Script" uid="uid://cjgxd88k1bntf" path="res://script/pathfindingGridLoad.gd" id="3_bhyb3"]
[ext_resource type="Script" uid="uid://cjiiw7cybj24b" path="res://script/ButtonLogicImpulse.gd" id="4_2vvmy"]
[ext_resource type="Script" uid="uid://ymaax1x5fos3" path="res://script/interactBox.gd" id="5_f6mem"]
[ext_resource type="AudioStream" uid="uid://1bkjenax2g3s" path="res://assets/Audio/Ambience 1 SpaceBots Audio.mp3" id="6_f6mem"]
[ext_resource type="PackedScene" uid="uid://dwrjtwtsp4jgy" path="res://Minigames/Minigames/Wires.tscn" id="8_1nbv0"]
[sub_resource type="Gradient" id="Gradient_skcuv"]
interpolation_mode = 1
offsets = PackedFloat32Array(0, 0.25, 0.361502, 0.375, 0.488263, 0.5, 0.615023, 0.625, 0.732394, 0.75, 0.859155, 0.875, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.25, 0.25, 0.25, 1, 0.28169, 0.28169, 0.28169, 1, 0.375, 0.375, 0.375, 1, 0.408451, 0.408451, 0.408451, 1, 0.5, 0.5, 0.5, 1, 0.530516, 0.530516, 0.530516, 1, 0.625, 0.625, 0.625, 1, 0.661972, 0.661972, 0.661972, 1, 0.75, 0.75, 0.75, 1, 0.802817, 0.802817, 0.802817, 1, 0.875, 0.875, 0.875, 1, 1, 1, 1, 1)
metadata/_snap_enabled = true
metadata/_snap_count = 8
[sub_resource type="GradientTexture1D" id="GradientTexture1D_h11mn"]
gradient = SubResource("Gradient_skcuv")
[sub_resource type="Gradient" id="Gradient_3j6ah"]
offsets = PackedFloat32Array(0.187793, 0.704225, 0.929577)
colors = PackedColorArray(0, 0, 0, 1, 0.58042, 0.58042, 0.58042, 1, 0.860369, 0.860369, 0.860369, 1)
[sub_resource type="FastNoiseLite" id="FastNoiseLite_bhyb3"]
frequency = 0.03
fractal_octaves = 8
fractal_lacunarity = 5.0
fractal_gain = 0.495
fractal_weighted_strength = 0.23
domain_warp_enabled = true
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_jyrsd"]
noise = SubResource("FastNoiseLite_bhyb3")
color_ramp = SubResource("Gradient_3j6ah")
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_2vvmy"]
panorama = ExtResource("1_o7c6e")
[sub_resource type="Sky" id="Sky_bs3qb"]
sky_material = SubResource("PanoramaSkyMaterial_2vvmy")
[sub_resource type="Environment" id="Environment_f6mem"]
background_mode = 2
sky = SubResource("Sky_bs3qb")
glow_enabled = true
glow_levels/1 = 1.38
glow_levels/2 = 1.55
glow_levels/3 = 5.63
glow_levels/5 = 1.75
glow_levels/6 = 0.9
glow_levels/7 = 0.75
glow_strength = 1.73
glow_mix = 0.03
glow_bloom = 0.05
glow_blend_mode = 4
glow_hdr_luminance_cap = 1.5
glow_map = SubResource("NoiseTexture2D_jyrsd")
volumetric_fog_emission = Color(1, 1, 1, 1)
volumetric_fog_emission_energy = 0.04
adjustment_brightness = 1.5
adjustment_color_correction = SubResource("GradientTexture1D_h11mn")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1nbv0"]
albedo_color = Color(0.881937, 0.881937, 0.881937, 1)
albedo_texture = ExtResource("3_b4v87")
metallic = 0.4
[sub_resource type="BoxShape3D" id="BoxShape3D_b4v87"]
size = Vector3(4.5, 1, 1)
[node name="Lobby" type="Node3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
script = ExtResource("1_3j6ah")
playerStartPos = Vector3(0, 1, 0)
metadata/_custom_type_script = "uid://cbjn7f7r081q8"
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_f6mem")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10.1725, 0)
material_overlay = SubResource("StandardMaterial3D_1nbv0")
use_collision = true
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00969505, 0)
operation = 2
size = Vector3(49, 19, 49)
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
flip_faces = true
size = Vector3(50, 20, 50)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.47177, 0)
omni_range = 19.6325
[node name="PathfindingGridLoader" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 2.01037, -25)
script = ExtResource("3_bhyb3")
lengthX = 25
lengthZ = 25
metadata/_custom_type_script = "uid://cjgxd88k1bntf"
[node name="StartMission" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69191, 1.21511)
pixel_size = 0.02
text = "Start Mission"
[node name="ButtonLogicImpulse" type="Timer" parent="StartMission" node_paths=PackedStringArray("interactBox")]
script = ExtResource("4_2vvmy")
interactBox = NodePath("../InteractBox")
metadata/_custom_type_script = "uid://cjiiw7cybj24b"
[node name="InteractBox" type="Area3D" parent="StartMission" node_paths=PackedStringArray("object")]
script = ExtResource("5_f6mem")
object = NodePath("../ButtonLogicImpulse")
metadata/_custom_type_script = "uid://ymaax1x5fos3"
[node name="CollisionShape3D" type="CollisionShape3D" parent="StartMission/InteractBox"]
shape = SubResource("BoxShape3D_b4v87")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer" parent="."]
stream = ExtResource("6_f6mem")
parameters/looping = true
[node name="Wires" parent="." instance=ExtResource("8_1nbv0")]

22
Maps/Lobby/lobby.gd Normal file
View File

@@ -0,0 +1,22 @@
extends MapLogic
var main: Main
@onready var startMissionButton: ButtonLogicImpulse = $StartMission/ButtonLogicImpulse
var spaceshipScene: String = "res://test/spaceship_test.tscn"
var test: ParamterList = ParamterList.new()
var parameters: Dictionary[String,float] = {}
func _ready() -> void:
main = get_node("/root/Main")
startMissionButton.onPressed.connect(startMission)
test.addParameter("foo",3.3)
print(test.calculateParameterDistance(test.parameters,parameters))
func startMission() -> void:
if not is_multiplayer_authority(): return
main.changeMap.rpc(spaceshipScene, randi())

1
Maps/Lobby/lobby.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://fvwy57of2gvq

View File

@@ -0,0 +1,16 @@
extends Object
class_name Biome
var name: String
var roomList: RoomList
var starterRoom: RoomData
var spread: float
var priority: int #Biomes with a prio of 0 will always be placed, afterwards Biomes of lower priority will be placed
func _init(bName: String, rList: RoomList, sRoom: RoomData, bSpread: float, bPrio: int) -> void:
name = bName
roomList = rList
starterRoom = sRoom
spread = bSpread
priority = bPrio

View File

@@ -0,0 +1 @@
uid://yjvmb1ivvxb0

View File

@@ -0,0 +1,9 @@
extends DoorPosition
class_name BiomeExit
var biome: String
func _init(position: Vector2i = Vector2i(0,0),DoorOrientation : int = 0,biomeName: String = "") -> void:
pos = position
orientation = DoorOrientation
biome = biomeName

View File

@@ -0,0 +1 @@
uid://cptl6phh2t8tl

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c07ms152i77j0"
path="res://.godot/imported/BiomeExitChecker.png-a0cdf239bba0df1644b5e7c7b49312b1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/MapGenerator/BiomeExitChecker.png"
dest_files=["res://.godot/imported/BiomeExitChecker.png-a0cdf239bba0df1644b5e7c7b49312b1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,19 @@
extends Object
class_name DoorPosition
var pos : Vector2i
var orientation : int #0 north, 1 east, 2south, 3west
enum doorOrientations {north,east,south,west}
func rotatePosRight(roomGridSideLength: int,numberOfRotations: int) -> void: #Rotates the doorPosition along the room grid by 90 degrees
for n in numberOfRotations % 4:
var x: int = pos.x
var y: int = pos.y
pos = Vector2i (y,roomGridSideLength-x-1)
orientation = wrapi((orientation - 1),0,4)
func duplicate() -> DoorPosition:
var returnData: DoorPosition = DoorPosition.new()
returnData.pos = pos
returnData.orientation = orientation
return returnData

View File

@@ -0,0 +1 @@
uid://b5mjpi1nhmn4s

View File

@@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://bspc320js4suv"]
[node name="EmptyRoom" type="Node3D"]

View File

@@ -0,0 +1,2 @@
extends Object
class_name LevelGenRoomHandler

View File

@@ -0,0 +1 @@
uid://d38bme3bydjkj

View File

@@ -0,0 +1,5 @@
extends Object
class_name Mission
var biomes: Array[Array] #Array containing arrays that contain biomes
#Index of Array = Biome priorety

View File

@@ -0,0 +1 @@
uid://dyirs8de8f0k3

View File

@@ -0,0 +1,34 @@
extends Mission
class_name RescueMission
func _init() -> void:
var prio0Biomes: Array[Biome]
prio0Biomes.push_back(biomeStarterTest())
prio0Biomes.push_back(generatorBiome())
prio0Biomes.push_back(biomeTestOrange())
biomes.push_front(prio0Biomes)
func biomeStarterTest() -> Biome:
var roomList: RoomList = RoomList.new()
return Biome.new("starter",roomList,RoomData.new(preload("res://test/StartTest.png").get_image(),"res://test/StartTest1.tscn"),0,0)
func generatorBiome() -> Biome:
var roomList: RoomList = RoomList.new()
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/4Way/4WayRoomData.png").get_image(),"res://Maps/Rooms/Generator/4Way/4WayRoomGenerator.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/Corner/CornerRoomData.png").get_image(),"res://Maps/Rooms/Generator/Corner/CornerRoomGenerator.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/THallway/THallwayRoomData.png").get_image(),"res://Maps/Rooms/Generator/THallway/THallwayGenerator.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/Hallway/HallwayRoomData.png").get_image(),"res://Maps/Rooms/Generator/Hallway/HallwayGenerator.tscn")
return Biome.new("generator",roomList,RoomData.new(preload("res://Maps/Rooms/Generator/MainGenerator/Generator.png").get_image(),"res://Maps/Rooms/Generator/MainGenerator/Generator.tscn"),0.2,0)
func biomeTestOrange() -> Biome:
var roomList: RoomList = RoomList.new()
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/4Way/4WayRoomData.png").get_image(),"res://Maps/Rooms/Generic Connectors/4Way/4WayRoom.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/Corner/CornerRoomData.png").get_image(),"res://Maps/Rooms/Generic Connectors/Corner/CornerRoom.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/Hallway/HallwayRoomData.png").get_image(),"res://Maps/Rooms/Generic Connectors/Hallway/Hallway.tscn")
roomList.addRoom(preload("res://Maps/Rooms/Generic Connectors/THallway/THallwayRoomData.png").get_image(),"res://Maps/Rooms/Generic Connectors/THallway/THallway.tscn")
return Biome.new("orange",roomList,RoomData.new(preload("res://test/test4Way.png").get_image(),"res://test/Test4Way.tscn"),1,0)

View File

@@ -0,0 +1 @@
uid://dl7tb27ncsmxe

View File

@@ -0,0 +1,38 @@
extends Object
class_name ParamterList
var parameters: Dictionary[String,float] = {}
func numberOfParameters() -> int:
return parameters.size()
func get_Parameters() -> Dictionary[String,float]:
return parameters
func addParameter(name: String, value: float) -> void:
if parameters.has(name):
parameters[name] += value
else:
parameters[name] = value
func calculateParameterDistance(a:Dictionary[String,float],b:Dictionary[String,float]) -> float:
var total: Dictionary[String,float] = a.duplicate()
total.merge(b) ##total contains all keys
var c: Dictionary[String,float] ##c will be used to calculate the distance
var lengthC: float = 0 ##Return value
##For each param in total either subtract or add if only one has param
for param in total:
if b.has(param) and a.has(param):
c[param] = a[param] - b[param]
else:
c[param] = total[param]
##Add together all values
for param in c:
lengthC += pow(c[param],2)
## Squareroot to get length of n-Dimensional Vector made up of all entries of c (a - b = c)
lengthC = sqrt(lengthC)
return lengthC

View File

@@ -0,0 +1 @@
uid://u1rj3gsvudis

View File

@@ -0,0 +1,39 @@
extends Object
class_name RoomData
var rotations: int = 0
var doorPositions: Array[DoorPosition]
var roomGrid: Array[Array]
var roomSceneRef: String
var roomScene: PackedScene
func _init(roomImage: Image = null, roomSceneReference: String = "") -> void:
if !roomImage: return
roomSceneRef = roomSceneReference
if !roomSceneReference == "":
roomScene = load(roomSceneReference)
var roomImmageLoader: RoomImageLoader = RoomImageLoader.new()
roomGrid = roomImmageLoader.loadRoomData(roomImage)
doorPositions = roomImmageLoader.getDoors(roomGrid)
roomImmageLoader.free()
func duplicateRoom() -> RoomData:
var returnData: RoomData = RoomData.new()
returnData.rotations = rotations
for position in doorPositions:
returnData.doorPositions.push_back(position.duplicate())
for x in roomGrid.size():
var array: Array
returnData.roomGrid.push_back(array)
for y in roomGrid[x].size():
returnData.roomGrid[x].push_back(null)
returnData.roomGrid[x][y] = roomGrid[x][y].duplicate()
returnData.roomGrid = roomGrid.duplicate(true)
returnData.roomSceneRef = roomSceneRef
returnData.roomScene = roomScene
return returnData

View File

@@ -0,0 +1 @@
uid://28gkh48f7sib

View File

@@ -0,0 +1,14 @@
extends Object
class_name RoomList
var rooms: Array[RoomData]
func addRoom(roomImage: Image, roomSceneRef: String) -> void:
var newRoom: RoomData = RoomData.new(roomImage,roomSceneRef)
rooms.push_back(newRoom)
func duplicate() -> RoomList:
var returnList: RoomList = RoomList.new()
for room in rooms:
returnList.rooms.push_back(room.duplicateRoom())
return returnList

View File

@@ -0,0 +1 @@
uid://bkvffyhw5vnxv

View File

@@ -0,0 +1,6 @@
extends RoomList
class_name RoomListSpaceship
func _init() -> void:
addRoom(preload("res://test/StartTest.png").get_image(),"res://test/StartTest.tscn")
addRoom(preload("res://test/test4Way.png").get_image(),"res://test/Test4Way.tscn")

View File

@@ -0,0 +1 @@
uid://cpnvaegn20rby

View File

@@ -0,0 +1,2 @@
extends Object
class_name RoomNode

View File

@@ -0,0 +1 @@
uid://dj5k87xytm45v

View File

@@ -0,0 +1,20 @@
extends Object
class_name GridCell
var position: Vector3i
var spaceTaken: bool = false
var biomeConnection: bool = false
var door: bool = false
var doorOrientation: int
enum doorOrientations {north,east,south,west}
var biome: String
func duplicate() -> GridCell:
var returnData := GridCell.new()
returnData.spaceTaken = spaceTaken
returnData.door = door
returnData.doorOrientation = doorOrientation
returnData.biome = biome
returnData.biomeConnection = biomeConnection
return returnData

View File

@@ -0,0 +1 @@
uid://105kn4rcg8bd

View File

@@ -0,0 +1,14 @@
extends Node3D
class_name ItemSpawner
@export var identifier: String
@export var spawnedItem: PackedScene
func spawnItem() -> Node:
if spawnedItem:
var obj = spawnedItem.instantiate()
self.add_child(obj)
#obj.position = position
#obj.rotation = rotation
return obj
return null

View File

@@ -0,0 +1 @@
uid://deea7d20s1612

View File

@@ -0,0 +1,720 @@
extends Node3D
class_name LevelGenerator
var levelGrid: Array[Array]
@export var gridSizeX: int = 15
@export var gridSizeY: int = 3
@export var gridSizeZ: int = 15
@export var bufferSize: int = 5
@export var shipLogic: ShipLogic
@export var doorBlock: PackedScene # Temporary
@export var doorOBJ: PackedScene #Temporary
@export var tile: PackedScene # Temporary
@export var lamp: PackedScene # Temporary
@export var tileWall: PackedScene # Temporary
@export var tileCorner: PackedScene # Temporary
var levelGenSeed: int = 0
var globalParameters: ParamterList
var rng: RandomNumberGenerator = RandomNumberGenerator.new() #Get random values, usefull for random level generation huh
var currentMission: Mission
var doorSpawnPoints: Array[DoorPosition] #Where to put them doors
var doorBlockSpawnPoints: Array[DoorPosition] #Where to put them door blockers
var biomeExitPositions: Array[BiomeExit] #Points where you can leave a biome
var biomeExitChecker: RoomData = RoomData.new(preload("res://Maps/MapGenerator/BiomeExitChecker.png").get_image(),"") #Nonexisten Room used to check if a door is a valid Biome Exit
var connectPathPositions: PackedVector2Array #Where to place floor tiles of connecting paths
var astar: AStar2D = AStar2D.new()
func generate(usingSeed: int) -> void:
levelGenSeed = usingSeed
initRandom() # Set seed for level generation
initGrid() #Assign a new grid space object to each space of the 5x5x5m grid
##Center the world
position.x = -gridSizeX*2.5
position.z = -gridSizeZ*2.5
for x in gridSizeX:
for y in gridSizeY:
for z in gridSizeZ:
debugCubeAtPos(levelGrid[x][y][z].position*5)
func initRandom() -> void:
rng.set_seed(hash(levelGenSeed))
func initGrid() -> void:
for x in gridSizeX:
var newRow: Array
levelGrid.push_back(newRow)
for y in gridSizeY:
var newCol: Array
levelGrid[x].push_back(newCol)
for z in gridSizeZ:
var newCell := GridCell.new()
newCell.position = Vector3i(x,y,z)
levelGrid[x][y].push_back(newCell)
func debugCubeAtPos(pos: Vector3):
var debugCube: PackedScene = preload("res://Maps/Rooms/Generator/4Way/4WayRoomGenerator.tscn")
addObject(debugCube,self,pos+Vector3(2.5,0,2.5))
func addObject(AddedObject:PackedScene, Parent: Node3D, Position: Vector3, Rotation: Vector3= Vector3(0,0,0)) -> Node:
if !AddedObject:
print("tried to add object but packed scene is null")
return
var obj = AddedObject.instantiate()
Parent.add_child(obj)
obj.position = Position
obj.rotation = Rotation
return obj
## OLD LEVEL GEN CODE
#func generate(usingSeed: int) -> void:
#levelGenSeed = usingSeed
#
#initRandom() # Set seed for level generation
#initGrid() #Assign a new grid space object to each space of the 1x1m grid
#
##Center the world
#position.x = -gridSize/2
#position.z = -gridSize/2
#
#currentMission = RescueMission.new() #Have something choose the mission type in this part later
#
##Biomes
#generateBufferBiome(bufferSize)
#var doorList: Array[DoorPosition] #Seccond Array contains door positions
#for bPrio in currentMission.biomes.size():
#doorList = placeBiomes(currentMission.biomes[bPrio])
#spreadBiomes()
#
##Rooms into Biomes
#placeRooms(doorList)
#
##Doors
##chooseBiomeExits()
#doorsAtBiomeExits()
#findValidDoors()
#spawnDoors()
#
##Generate Astar setup for finding Paths between Biomes and Rooms
#generateAstarPoints()
#connectAstarPoints()
#weightAstarPoints()
#
##Connect Biomes
#connectPathPositions = generateConnectionPath()
#generateFloorPositions()
#placeFloorPositionTiles()
#placeWallsAlongTiles()
#
#
#
#
#
#shipLogic.onLevelGenFinished()
#shipLogic.main.mapScreen.generateMap(levelGrid)
#
##Misc Utility
#func abandonSeed() -> void:
#print("SEED IS NOT VALID")
#
#func initRandom() -> void:
#rng.set_seed(hash(levelGenSeed))
#
#func initGrid() -> void:
#for x in gridSizeX:
#var newRow: Array
#levelGrid.push_back(newRow)
#for y in gridSizeY:
#var newCol: Array
#levelGrid[x].push_back(newCol)
#for z in gridSizeZ:
#var newCell := GridCell.new()
#newCell.position = Vector3i(x,y,z)
#levelGrid[x].push_back(newCell)
#
#func addGridCells(cell1: GridCell,cell2: GridCell) -> GridCell:
#var returnCell: GridCell = GridCell.new()
#returnCell.spaceTaken = cell1.spaceTaken or cell2.spaceTaken
#returnCell.door = cell1.door or cell2.door
#if cell1.door and !cell2.door:
#returnCell.doorOrientation = cell1.doorOrientation
#else:
#returnCell.doorOrientation = cell2.doorOrientation
#returnCell.position = cell1.position
#returnCell.biome = cell1.biome
#returnCell.biomeConnection = cell1.biomeConnection
#return returnCell
#
#func shuffleArray(array: Array) -> Array:
#for i in array.size()-1:
##Get Array indexes
#var iA: int = array.size()-1-i
#var iB: int = rng.randi_range(0,array.size()-2-i)
#
##Get two elements from the array
#var a = array[iA]
#var b = array[iB]
#
##Swap both elements
#array[iB] = a
#array[iA] = b
#
#return array
#
#func addArrays2D(array1: Array[Array], array2: Array[Array], arr2pos: Vector2i = Vector2i(0,0)) -> void:
#if array1.size() <= (arr2pos.x) + array2.size(): return
#if array1[arr2pos.y].size() <= (arr2pos.y) + array2[0].size(): return
#for x in array2.size():
#for y in array2[x].size():
#array1[x+arr2pos.x][y+arr2pos.y] = addGridCells(array1[x+arr2pos.x][y+arr2pos.y],array2[x][y])
#
#func checkOverlapArrays2D(array1: Array[Array], array2: Array[Array], arr2pos: Vector2i = Vector2i(0,0)) -> bool:
#if array1.size() <= arr2pos.x + array2.size() or arr2pos.x < 0: return true
#if array1[arr2pos.y].size() <= arr2pos.y + array2[0].size() or arr2pos.y < 0: return true
#for x in array2.size():
#for y in array2[x].size():
#if array1[x+arr2pos.x][y+arr2pos.y].spaceTaken and array2[x][y].spaceTaken: return true
#return false
#
#func checkBiomeOverlap(biome: String, pos: Vector2i, length: int, height: int) -> bool:
#if levelGrid.size() <= pos.x + length or pos.x < 0: return true
#if levelGrid[pos.y].size() <= pos.y + height or pos.y < 0: return true
#for x in length:
#for y in height:
#if levelGrid[x+pos.x][y+pos.y].biome: return true
#return false
#
#func rotateArray2D(array: Array[Array], numberOfRotationsBy90Degrees: int) -> void:
#var size: int = array.size()
#var layerCount: int = size/2
#
#for x in numberOfRotationsBy90Degrees%4:
#for layer in layerCount:
#var first: int = layer
#var last: int = size - first - 1
#
#for element in range(first, last):
#var offset = element - first
#
#var top = array[first][element]
#var right = array[element][last]
#var bot = array[last][last-offset]
#var left = array[last-offset][first]
#
#array[element][last] = top
#array[last][last-offset] = right
#array[last-offset][first] = bot
#array[first][element] = left
#
#func getDoorPosition(cell: GridCell, GridCellPosition: Vector2i) -> DoorPosition:
#if !cell.door:
#print("Tried to get door at cell that isnt a door")
#return null
#var returnDoorPosition := DoorPosition.new()
#returnDoorPosition.pos = GridCellPosition
#returnDoorPosition.orientation = cell.doorOrientation
#return returnDoorPosition
#
#func addObject(AddedObject:PackedScene, Parent: Node3D, Position: Vector3, Rotation: Vector3= Vector3(0,0,0)) -> Node:
#if !AddedObject:
#print("tried to add object but packed scene is null")
#return
#var obj = AddedObject.instantiate()
#Parent.add_child(obj)
#obj.position = Position
#obj.rotation = Rotation
#return obj
#
#func changeBiomeArea2D(biome: String,pos:Vector2i,length: int,height: int):
#for x in length:
#for y in height:
#levelGrid[pos.x+x][pos.y+y].biome = biome
#
##Spawning Rooms
#func rotateRoomData(roomData: RoomData, numberOfRotationsBy90Degrees: int) -> void:
#rotateArray2D(roomData.roomGrid,numberOfRotationsBy90Degrees)
#roomData.rotations = wrapi(roomData.rotations + numberOfRotationsBy90Degrees,0,4)
#for door in roomData.doorPositions:
#door.rotatePosRight(roomData.roomGrid.size(),numberOfRotationsBy90Degrees)
#roomData.roomGrid[door.pos.x][door.pos.y].doorOrientation = wrapi(door.orientation-2,0,4)
#
#func spawnRoom(roomDataInput: RoomData,pos: Vector2i,numberOfRotationsBy90Degrees: int = 0, centered: bool = false) -> Array[DoorPosition]: #Pos corresponds to the upper left corner of the room immage
#var roomData: RoomData = roomDataInput.duplicateRoom()
#var roomScene: PackedScene = roomDataInput.roomScene
#rotateRoomData(roomData,numberOfRotationsBy90Degrees)
#var roomGrid := roomData.roomGrid
#var doorPositions: Array[DoorPosition] = roomData.doorPositions
#if centered:
#pos = Vector2i(pos.x-(roomGrid.size()/2),pos.y-(roomGrid[0].size()/2))
#
#addArrays2D(levelGrid,roomGrid,pos)
#
##Make Room
#var room: BasicRoom = addObject(roomScene,self,Vector3(pos.x+(roomGrid.size()/2),0,pos.y+(roomGrid[0].size()/2)),Vector3(0,(roomData.rotations%4)*PI/2,0))
#room.biomeName = levelGrid[pos.x][pos.y].biome
#shipLogic.addRoomToRoomList(room)
#
#
#
#for door in doorPositions:
#door.pos = pos + door.pos
#
#
#
#return doorPositions
#
#func getDoorFromRoom(roomData: RoomData,index: int) -> DoorPosition:
#return roomData.doorPositions[index % roomData.doorPositions.size()]
#
#func putRoomAtDoor(roomData: RoomData, door: DoorPosition,spawnDoorIndex: int) -> Array: ##Return array contains roomData, spawn Pos in that order
##Init Values:
#var spawnDoor: DoorPosition = getDoorFromRoom(roomData,spawnDoorIndex) #Which door from the spawned room connects to the exiting room
#var doorOrientationDifference : int = wrapi(spawnDoor.orientation - door.orientation,0,4) #Difference in orinet. between spawned and existing room
#var numberOfRoomRotations: int = 0 #How many rotations are needed to make spawned rooms spawn door face the existing door
#var spawnPos: Vector2i
#var doorOffset: Vector2i #Offset by 1 space so the doors are next to eachother and not inside eachoter
#
##Find number of rotations and then rotate the room
#if !doorOrientationDifference == 2:
#if doorOrientationDifference == 1:
#numberOfRoomRotations = 3
#if doorOrientationDifference == 0:
#numberOfRoomRotations = 2
#if doorOrientationDifference == 3:
#numberOfRoomRotations = 1
#rotateRoomData(roomData,numberOfRoomRotations)
#
##Get new values for spawnDoor and set door offset
#spawnDoor = getDoorFromRoom(roomData,spawnDoorIndex)
#match spawnDoor.orientation:
#0: doorOffset = Vector2i(0,-1)
#1: doorOffset = Vector2i(1,0)
#2: doorOffset = Vector2i(0,1)
#3: doorOffset = Vector2i(-1,0)
#
##Set spawn pos and return values
#spawnPos = door.pos - spawnDoor.pos + doorOffset
#var returnArray: Array = [roomData,spawnPos]
#return returnArray
#
#func spawnRoomAtDoor(roomDataInput: Array[RoomData], door: DoorPosition, biome: String) -> Array[DoorPosition]:
#var returnArray: Array[DoorPosition]
#var roomData: RoomData = null
#var spawnDoorIndex: int = -1
##Choose the room to use
#var rooms: Array[RoomData] = roomDataInput.duplicate()
#
#shuffleArray(rooms)
#for r in floor(rooms.size()/2):
##Randomise door checking order
#var doorIndices: Array[int]
#for x in rooms[r].doorPositions.size():
#doorIndices.push_back(x)
#shuffleArray(doorIndices)
#
##Check if doorIndex fits and assign roomData and spawnDoorIndex if it does
#for doorIndex in doorIndices:
#if checkIfRoomFits(rooms[r],door,doorIndex, biome):
#roomData = rooms[r].duplicateRoom()
#spawnDoorIndex = doorIndex
#break
#
##Check if a room has been found
#if !roomData or spawnDoorIndex == -1:
#var checkPosition = door.pos
#match door.orientation:
#0: checkPosition += Vector2i(-1,-2)
#1: checkPosition += Vector2i(0,-1)
#2: checkPosition += Vector2i(-1,0)
#3: checkPosition += Vector2i(-2,-1)
#if !checkOverlapArrays2D(levelGrid,biomeExitChecker.roomGrid,checkPosition):
#biomeExitPositions.push_back(BiomeExit.new(door.pos,door.orientation,biome))
#return returnArray
#
##Get Spawn Info and spawn room
#var spawnInfo: Array = putRoomAtDoor(roomData,door,spawnDoorIndex)
#spawnRoom(spawnInfo[0],spawnInfo[1])
#returnArray = spawnInfo[0].doorPositions
#for x in returnArray.size():
#returnArray[x].pos = spawnInfo[1] + returnArray[x].pos
#return returnArray
#
#func checkIfBiomeFits(length: int, height: int, pos: Vector2i, biome: String) -> bool:
#if levelGrid.size() <= pos.x + length or pos.x < 0: return true
#if levelGrid[pos.y].size() <= pos.y + height or pos.y < 0: return true
#for x in length:
#for y in height:
#if levelGrid[x+pos.x][y+pos.y].biome != biome:
#return false
#return true
#
#func checkIfRoomFits(roomDataInput: RoomData,door: DoorPosition,spawnDoorIndex: int, biome: String) -> bool:
#var roomData: RoomData = roomDataInput.duplicateRoom()
#var spawnInfo: Array = putRoomAtDoor(roomData,door,spawnDoorIndex)
#
#if !checkOverlapArrays2D(levelGrid,spawnInfo[0].roomGrid,spawnInfo[1]) and checkIfBiomeFits(spawnInfo[0].roomGrid.size(),spawnInfo[0].roomGrid[0].size(),spawnInfo[1],biome):
#return true
#else:
#return false
#
#func isOutOfArray2DBounds(sizeX: int, sizeY: int, pos: Vector2i) -> bool:
#if pos.x >= sizeX or pos.x < 0 or pos.y >= sizeY or pos.y < 0:
#return true
#else:
#return false
#
#func isValidDoor(pos:Vector2i) -> bool: # Checks if the door connects to another door using its orientation,
##if this function finds a valid door, it removes the door status from the other door to avoid duplicated doors
#match levelGrid[pos.x][pos.y].doorOrientation:
#0:
#if isOutOfArray2DBounds(levelGrid.size(),levelGrid[0].size(),Vector2i(pos.x,pos.y-1)): return false
#if !levelGrid[pos.x][pos.y-1].door: return false
#else: levelGrid[pos.x][pos.y-1].door = false
#1:
#if isOutOfArray2DBounds(levelGrid.size(),levelGrid[0].size(),Vector2i(pos.x+1,pos.y)): return false
#if !levelGrid[pos.x+1][pos.y].door: return false
#else: levelGrid[pos.x+1][pos.y].door = false
#2:
#if isOutOfArray2DBounds(levelGrid.size(),levelGrid[0].size(),Vector2i(pos.x,pos.y+1)): return false
#if !levelGrid[pos.x][pos.y+1].door: return false
#else: levelGrid[pos.x][pos.y+1].door = false
#3:
#if isOutOfArray2DBounds(levelGrid.size(),levelGrid[0].size(),Vector2i(pos.x-1,pos.y)): return false
#if !levelGrid[pos.x-1][pos.y].door: return false
#else: levelGrid[pos.x-1][pos.y].door = false
#return true
#
#func findValidDoors() -> void:
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if levelGrid[x][y].door:
#var newDoorObject := DoorPosition.new()
#newDoorObject.pos = Vector2i(x,y)
#newDoorObject.orientation = levelGrid[x][y].doorOrientation
#if isValidDoor(Vector2i(x,y)):
#doorSpawnPoints.push_back(newDoorObject)
#else:
#doorBlockSpawnPoints.push_back(newDoorObject)
#
#func spawnDoors() -> void:
#for doorSpawn in doorSpawnPoints:
#addObject(doorOBJ,self,Vector3(doorSpawn.pos.x+0.5,0,doorSpawn.pos.y+0.5),Vector3(0,doorSpawn.orientation*-PI/2,0))
##debugCubeAtPos(doorSpawn.pos)
#for doorBlockSpawn in doorBlockSpawnPoints:
#addObject(doorBlock,self,Vector3(doorBlockSpawn.pos.x+0.5,0,doorBlockSpawn.pos.y+0.5),Vector3(0,doorBlockSpawn.orientation*-PI/2,0))
#
#func placeRooms(doorList: Array[DoorPosition]) -> void:
#var nextDoors: Array[DoorPosition] = []
#
##YES I KNOW A DO WHILE LOOP IS BETTER HERE BUT GODOT DOESNT HAVE IT
#for door in doorList:
#var doorBiome: Biome = getBiome(levelGrid[door.pos.x][door.pos.y].biome)
#nextDoors += spawnRoomAtDoor(doorBiome.roomList.rooms,door,doorBiome.name)
#doorList = nextDoors
#nextDoors = []
#
#while !doorList.is_empty():
#for door in doorList:
#var doorBiome: Biome = getBiome(levelGrid[door.pos.x][door.pos.y].biome)
#nextDoors += spawnRoomAtDoor(doorBiome.roomList.rooms,door,doorBiome.name)
#doorList = nextDoors
#nextDoors = []
#
##Generating Biomes
#func generateBufferBiome(bufferWidth: int) -> void:
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if (x < bufferWidth) or (y < bufferWidth) or (x > levelGrid.size() - bufferWidth) or (y > levelGrid.size() - bufferWidth):
#levelGrid[x][y].biome = "buffer"
#
#
#func getBiome(biomeName: String) -> Biome:
#for prio in currentMission.biomes.size():
#for biome in currentMission.biomes[prio]:
#if biome.name == biomeName:
#return biome
#return Biome.new("empty",RoomList.new(),RoomData.new(),0,0)
#
#func generateBiomePos(biome: String,starterRoomSize: Vector2i) -> Vector2i:
#var genPos: Vector2i
#var possiblePos: Array[Vector2i]
#
##Find all possible Pos without a biome
#for x in levelGrid.size() - starterRoomSize.x - 1:
#for y in levelGrid[x].size() - starterRoomSize.y - 1:
#if !levelGrid[x][y].biome:
#possiblePos.push_back(levelGrid[x][y].position)
#
##Go through all pos untill one works
#genPos = possiblePos[rng.randi_range(0,possiblePos.size()-1)]
#while checkBiomeOverlap(biome,genPos,starterRoomSize.x,starterRoomSize.y):
#possiblePos.erase(genPos)
#if possiblePos.size() == 0:
#abandonSeed()
#break
#genPos = possiblePos[rng.randi_range(0,possiblePos.size()-1)]
#
#return genPos
#
#func placeBiomes(biomes: Array[Biome]) -> Array[DoorPosition]:
#var returnDoorLists: Array[DoorPosition] = []
#
#for biome in biomes:
#var starterRoomSize: Vector2i = Vector2i(biome.starterRoom.roomGrid.size(),biome.starterRoom.roomGrid[0].size())
#var generatePos: Vector2i = generateBiomePos(biome.name,starterRoomSize)
#changeBiomeArea2D(biome.name,generatePos,starterRoomSize.x,starterRoomSize.y)
#
##Spawn Starter room and add doors to list
#var doorList: Array[DoorPosition]
#doorList = spawnRoom(biome.starterRoom,generatePos,rng.randi_range(0,3))
#returnDoorLists += doorList
#
##If first Biome, set Starting Position
#if shipLogic.playerStartPos == Vector3(0,0,0):
#shipLogic.playerStartPos = Vector3(generatePos.x + biome.starterRoom.roomGrid.size()/2,0,generatePos.y + biome.starterRoom.roomGrid[0].size()/2) + self.position
#
#return returnDoorLists
#
#func fillCell(cellBiome: String,pos: Vector2i) -> GridCell:
#if isOutOfArray2DBounds(levelGrid.size(),levelGrid[0].size(),pos): return
#if !levelGrid[pos.x][pos.y].biome:
#levelGrid[pos.x][pos.y].biome = cellBiome
#return levelGrid[pos.x][pos.y]
#return
#
#func spreadCell(cell: GridCell,pos: Vector2i) -> Array[GridCell]:
#var returnCells: Array[GridCell] = []
#returnCells.push_back(fillCell(cell.biome,pos + Vector2i(0,-1)))
#returnCells.push_back(fillCell(cell.biome,pos + Vector2i(1,0)))
#returnCells.push_back(fillCell(cell.biome,pos + Vector2i(0,1)))
#returnCells.push_back(fillCell(cell.biome,pos + Vector2i(-1,0)))
#while returnCells.has(null):
#returnCells.erase(null)
#return returnCells
#
#func allCellsHaveBiome() -> bool:
#for x in levelGrid.size():
#for cell in levelGrid[x]:
#if !cell.biome: return false
#return true
#
#func spreadBiomes() -> void:
##Get all current biome grid cells -> Put them in starterCells
#var startCells: Array[GridCell] = []
#var startProbabilities: PackedFloat32Array = []
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if levelGrid[x][y].biome:
#var cell: GridCell = levelGrid[x][y]
#startCells.push_back(cell)
#startProbabilities.push_back(getBiome(cell.biome).spread)
#
#
##Spread them by one -> put the new ones in a new array
#while !(startCells.is_empty() or startProbabilities.is_empty()):
#var newCells: Array[GridCell] = []
#var newProbabilities: PackedFloat32Array = []
#var randomCellIndex: int = rng.rand_weighted(startProbabilities)
#
#if randomCellIndex == -1:
#randomCellIndex = startProbabilities.size()-1
#
#var cell: GridCell = startCells[randomCellIndex]
#
#newCells += spreadCell(cell,cell.position)
#for newCell in newCells:
#newProbabilities.push_back(getBiome(newCell.biome).spread)
#
##New cells now contains all that were newly assigned a biome and the ones that didnt spread
#startCells.remove_at(randomCellIndex)
#startProbabilities.remove_at(randomCellIndex)
#
#startCells += newCells
#startProbabilities += newProbabilities
#
##Astar
#func generateAstarPoints(findAllSpaceTakenCells: bool = false) -> void:
#var currentID: int = 0
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if (levelGrid[x][y].spaceTaken == findAllSpaceTakenCells) and !(x == 0 or x == gridSize-1 or y == 0 or y == gridSize-1):
#astar.add_point(currentID,Vector2i(x,y))
#currentID += 1
#
#func connectAstarPoints() -> void:
#for point in astar.get_point_ids():
#var possibleNeighbors: Array[int] = [point+1,point-1,point-gridSize,point+gridSize]
#
#for posNeigh in possibleNeighbors:
#if astar.has_point(posNeigh):
#astar.connect_points(point,posNeigh,true)
#
#func weightAstarPoints() -> void:
#for point in astar.get_point_ids():
#if astar.get_point_connections(point).size() != 4:
#astar.set_point_weight_scale(point,10)
#
#func posToID(pos: Vector2i) -> int:
#return gridSize*pos.x + pos.y
#
##Generating Biome Connections
#func chooseBiomeExits() -> void:
#var existingBiomes: Array[String] = []
#var currentBiomeExits: Array[BiomeExit] = []
#var choosenBiomeExits: Array[BiomeExit] = []
## Find What Biomes are Present
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if !existingBiomes.has(levelGrid[x][y].biome) and levelGrid[x][y].biome != "buffer":
#existingBiomes.push_back(levelGrid[x][y].biome)
#
##For each biome choose a number of exit
#for i in existingBiomes.size():
##Look through all exits for exits belonging to this biome
#for exit in biomeExitPositions:
#if exit.biome == existingBiomes[i]:
#currentBiomeExits.push_back(exit)
#biomeExitPositions.erase(exit)
#
##For each other biome, choose an exit
#
#for n in existingBiomes.size()-1:
#if currentBiomeExits:
## Randomly determine an exit
#var exit: BiomeExit = currentBiomeExits[rng.randi_range(0,currentBiomeExits.size()-1)]
#
##Test if exit was already choosen
#if !choosenBiomeExits.has(exit):
#choosenBiomeExits.push_back(exit)
#
#currentBiomeExits.clear()
#
##Get rid of all other exits
#biomeExitPositions = choosenBiomeExits
#
#func doorsAtBiomeExits() -> void:
#for exit in biomeExitPositions:
#levelGrid[exit.pos.x][exit.pos.y].door = false
#
#func generateConnectionPath() -> PackedVector2Array:
#var returnArray: PackedVector2Array = []
#
##Look through all exits and find the closest other exit
#for exit in biomeExitPositions:
#var newPath: PackedVector2Array = []
#var closestPointPath: PackedVector2Array = []
#for otherExit in biomeExitPositions:
#newPath = astar.get_point_path(posToID(exit.pos),posToID(otherExit.pos))
#if exit.biome != otherExit.biome and newPath.size() < closestPointPath.size() or closestPointPath.size() == 0:
#closestPointPath = newPath
#
##Connect the exits
#if closestPointPath.size() == 0:
#levelGrid[exit.pos.x][exit.pos.y].door = true
#else:
#returnArray += closestPointPath
#
#return returnArray
#
#func addFloorPos(gridCell: GridCell) -> void:
#if !gridCell.biomeConnection and !gridCell.spaceTaken:
#connectPathPositions.push_back(gridCell.position)
#gridCell.biomeConnection = true
#gridCell.spaceTaken = true
#
#func generateFloorPositions(spread: int = 2) -> void:
#for x in spread:
#for y in connectPathPositions.size():
#var fPos: Vector2i = connectPathPositions[y]
#levelGrid[fPos.x][fPos.y].spaceTaken = true
#levelGrid[fPos.x][fPos.y].biomeConnection = true
#addFloorPos(levelGrid[clampi(fPos.x+1,0,gridSize-1)][fPos.y])
#addFloorPos(levelGrid[fPos.x][clampi(fPos.y+1,0,gridSize-1)])
#addFloorPos(levelGrid[clampi(fPos.x-1,0,gridSize-1)][fPos.y])
#addFloorPos(levelGrid[fPos.x][clampi(fPos.y-1,0,gridSize-1)])
#
#func placeFloorPositionTiles() -> void:
#for tilePos in connectPathPositions:
#addObject(tile,self,Vector3(tilePos.x+0.5,0,tilePos.y+0.5))
#
#if rng.randf_range(0,1) > 0.9:
#shipLogic.hallwayLights.push_back(addObject(lamp,self,Vector3(tilePos.x+0.5,2.5,tilePos.y+0.5)))
#
#func spawnWallSegment(pos: Vector2i,rot: int) -> void:
#addObject(tileWall,self,Vector3(pos.x+0.5,0,pos.y+0.5),Vector3(0,rot*PI/2,0))
#
#func spawnCornerSegment(pos: Vector2i,rot: int) -> void:
#addObject(tileCorner,self,Vector3(pos.x+0.5,0,pos.y+0.5),Vector3(0,rot*PI/2,0))
#
#func placeWallsAlongTiles() -> void:
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if !levelGrid[x][y].biomeConnection: continue
##Walls
#if x+1 != levelGrid.size():
#if !levelGrid[x+1][y].spaceTaken: spawnWallSegment(Vector2i(x,y),3)
#else: spawnWallSegment(Vector2i(x,y),3)
#if x != 0:
#if !levelGrid[x-1][y].spaceTaken: spawnWallSegment(Vector2i(x,y),1)
#else: spawnWallSegment(Vector2i(x,y),1)
#if y+1 != levelGrid.size():
#if !levelGrid[x][y+1].spaceTaken: spawnWallSegment(Vector2i(x,y),2)
#else: spawnWallSegment(Vector2i(x,y),2)
#if y != 0:
#if !levelGrid[x][y-1].spaceTaken: spawnWallSegment(Vector2i(x,y),0)
#else: spawnWallSegment(Vector2i(x,y),0)
##Corners
#if x+1 != levelGrid.size() and y+1 != levelGrid.size():
#if !levelGrid[x+1][y+1].spaceTaken: spawnCornerSegment(Vector2i(x,y),3)
#else: spawnCornerSegment(Vector2i(x,y),3)
#if x != 0 and y != 0:
#if !levelGrid[x-1][y-1].spaceTaken: spawnCornerSegment(Vector2i(x,y),1)
#else: spawnCornerSegment(Vector2i(x,y),1)
#if x+1 != levelGrid.size() and y != 0:
#if !levelGrid[x+1][y-1].spaceTaken: spawnCornerSegment(Vector2i(x,y),0)
#else: spawnCornerSegment(Vector2i(x,y),0)
#if y+1 != levelGrid.size() and x != 0:
#if !levelGrid[x-1][y+1].spaceTaken: spawnCornerSegment(Vector2i(x,y),2)
#else: spawnCornerSegment(Vector2i(x,y),2)
#
##Debug Functions
#func printLevelGrid() -> void:
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if levelGrid[x][y].biomeConnection:
#debugCubeAtPos(Vector2(x,y))
#
#func printBiomeGrid() -> void:
#for x in levelGrid.size():
#for y in levelGrid[x].size():
#if levelGrid[x][y].biome == "test":
#debugCubeAtPos(Vector2(x,y))
#
#func debugCubeAtPos(pos: Vector2):
#var debugCube: PackedScene = preload("res://test/debugCube.tscn")
#addObject(debugCube,self,Vector3(pos.x+0.5,0,pos.y+0.5))
#
#func showAstarPoints() -> void:
#for point in astar.get_point_ids():
#var point_pos: Vector2i = astar.get_point_position(point)
#debugCubeAtPos(point_pos)

View File

@@ -0,0 +1 @@
uid://cq0sxwn7k47n6

View File

@@ -0,0 +1,56 @@
extends Object
class_name RoomImageLoader
signal finishedLoading
signal finishedGettingDoors
func loadRoomData(image: Image) -> Array[Array]:
var imageSize: Vector2i = image.get_size()
var returnArray: Array[Array]
for x in imageSize.x:
var yArray: Array[GridCell]
returnArray.push_back(yArray)
for y in imageSize.y:
var gridCell: GridCell = GridCell.new()
var pixel: Color = image.get_pixel(x,y)
gridCell.spaceTaken = isColorTakingSpace(pixel)
if pixel == Color(1,0,0,1):
gridCell.door = true
gridCell.doorOrientation = getDoorOrientation(image,Vector2i(x,y))
yArray.push_back(gridCell)
finishedLoading.emit()
return returnArray
func isColorTakingSpace(pixel: Color) -> bool:
var returnBool: bool = true
if pixel == Color(1,1,1,1) or pixel == Color(1,0,0,1):
returnBool = false
return returnBool
func getDoors(grid: Array[Array]) -> Array[DoorPosition]:
var returnArray: Array[DoorPosition]
for x in grid.size():
for y in grid[x].size():
if grid[x][y].door:
var newDoorPos := DoorPosition.new()
newDoorPos.pos = Vector2i(x,y)
newDoorPos.orientation = grid[x][y].doorOrientation
returnArray.push_back(newDoorPos)
finishedGettingDoors.emit()
return returnArray
func getDoorOrientation(image: Image,pos: Vector2i) -> int:
var imageHeight: int = image.get_height()
var imageWidth: int = image.get_width()
if !(pos.y == imageHeight-1):
if image.get_pixelv(pos + Vector2i(0,1)) == Color(0,0,1,1): return GridCell.doorOrientations.north
if !(pos.x == 0):
if image.get_pixelv(pos + Vector2i(-1,0)) == Color(0,0,1,1): return GridCell.doorOrientations.east
if !(pos.y == 0):
if image.get_pixelv(pos + Vector2i(0,-1)) == Color(0,0,1,1): return GridCell.doorOrientations.south
if !(pos.x == imageWidth-1):
if image.get_pixelv(pos + Vector2i(1,0)) == Color(0,0,1,1): return GridCell.doorOrientations.west
return 0

View File

@@ -0,0 +1 @@
uid://saart6lt7yni

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://i6j1bdb80b7v"
path="res://.godot/imported/4WayRoomData.png-29bb5326712100be35965c6bdd1dd7c5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generator/4Way/4WayRoomData.png"
dest_files=["res://.godot/imported/4WayRoomData.png-29bb5326712100be35965c6bdd1dd7c5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,60 @@
[gd_scene load_steps=6 format=3 uid="uid://du8m31hacmm4b"]
[ext_resource type="Script" uid="uid://c1ujdlmpc3mk0" path="res://Maps/Rooms/Generator/GeneratorRoom.gd" id="1_l5b8m"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="2_dbor7"]
[ext_resource type="Script" uid="uid://deea7d20s1612" path="res://Maps/MapGenerator/itemSpawner.gd" id="3_jsqvi"]
[ext_resource type="PackedScene" uid="uid://yg472lgqdca7" path="res://Maps/Spaceship/Objects/Grabable/PowerCell.tscn" id="4_da5v7"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fo7uf"]
albedo_color = Color(0.44458076, 0.6842774, 0.6841292, 1)
albedo_texture = ExtResource("2_dbor7")
metallic = 0.7
[node name="4WayRoom" type="Node3D" node_paths=PackedStringArray("powerCellSpawners", "Lights")]
script = ExtResource("1_l5b8m")
powerCellSpawners = [NodePath("PowerCellSpawner")]
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://c1ujdlmpc3mk0"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.5, -0.5)
material_override = SubResource("StandardMaterial3D_fo7uf")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
size = Vector3(5, 6, 5)
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1195679, 0)
operation = 2
size = Vector3(4.5, 3.2391357, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 1, 0)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 1, 0)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 1, -2.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 1, 2.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2.791, -0.5)
[node name="PowerCellSpawner" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0, -0.5)
script = ExtResource("3_jsqvi")
spawnedItem = ExtResource("4_da5v7")
metadata/_custom_type_script = "uid://deea7d20s1612"

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfihu18hya1lh"
path="res://.godot/imported/CornerRoomData.png-9a5d661b0a47a71197f23d50176b5b87.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generator/Corner/CornerRoomData.png"
dest_files=["res://.godot/imported/CornerRoomData.png-9a5d661b0a47a71197f23d50176b5b87.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,63 @@
[gd_scene load_steps=6 format=3 uid="uid://bwmimpqqaylrg"]
[ext_resource type="Script" uid="uid://c1ujdlmpc3mk0" path="res://Maps/Rooms/Generator/GeneratorRoom.gd" id="1_jmb7e"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="2_ra1as"]
[ext_resource type="Script" uid="uid://deea7d20s1612" path="res://Maps/MapGenerator/itemSpawner.gd" id="3_do85j"]
[ext_resource type="PackedScene" uid="uid://md1qkedi16r6" path="res://Minigames/Initiators/MinigameFuseBox.tscn" id="4_0t1py"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ll6w0"]
albedo_color = Color(0.44313726, 0.68235296, 0.68235296, 1)
albedo_texture = ExtResource("2_ra1as")
metallic = 0.7
[node name="CornerRoom" type="Node3D" node_paths=PackedStringArray("wireSpawners", "Lights")]
script = ExtResource("1_jmb7e")
wireSpawners = [NodePath("MinigameSpawner")]
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://c1ujdlmpc3mk0"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_ll6w0")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -1.5)
size = Vector3(6, 6, 5)
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 2, 0)
size = Vector3(6, 6, 5)
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -1.5)
operation = 2
size = Vector3(5.5, 5, 4.5)
[node name="CSGBox3D4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 2, 0)
operation = 2
size = Vector3(5.5, 5, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 1, -1.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 1, 3)
operation = 2
size = Vector3(1, 3, 3)
[node name="CSGBox3D5" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, -2.4995685, 2.136, -2.5004315)
size = Vector3(3.7810059, 5.273, 0.2)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.118073, 0)
[node name="MinigameSpawner" type="Node3D" parent="."]
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, -2.4361145, 0.006626487, -2.2363324)
script = ExtResource("3_do85j")
spawnedItem = ExtResource("4_0t1py")
metadata/_custom_type_script = "uid://deea7d20s1612"

View File

@@ -0,0 +1,5 @@
extends BasicRoom
class_name GeneratorRoom
@export var powerCellSpawners: Array[ItemSpawner]
@export var wireSpawners: Array[ItemSpawner]

View File

@@ -0,0 +1 @@
uid://c1ujdlmpc3mk0

View File

@@ -0,0 +1,50 @@
[gd_scene load_steps=6 format=3 uid="uid://d3tpo3ggwi4k"]
[ext_resource type="Script" uid="uid://c1ujdlmpc3mk0" path="res://Maps/Rooms/Generator/GeneratorRoom.gd" id="1_ggmcw"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="2_a3ito"]
[ext_resource type="Script" uid="uid://deea7d20s1612" path="res://Maps/MapGenerator/itemSpawner.gd" id="3_13m3c"]
[ext_resource type="PackedScene" uid="uid://yg472lgqdca7" path="res://Maps/Spaceship/Objects/Grabable/PowerCell.tscn" id="4_lguqx"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u6y0v"]
albedo_color = Color(0.44313726, 0.68235296, 0.68235296, 1)
albedo_texture = ExtResource("2_a3ito")
metallic = 0.7
[node name="Hallway" type="Node3D" node_paths=PackedStringArray("powerCellSpawners", "Lights")]
script = ExtResource("1_ggmcw")
powerCellSpawners = [NodePath("PowerCellSpawner")]
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://c1ujdlmpc3mk0"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_u6y0v")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -0.5)
size = Vector3(8, 6, 5)
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, -0.5)
operation = 2
size = Vector3(7.5, 4, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 1, -0.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 1, -0.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.6033916, 0)
[node name="PowerCellSpawner" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39445496, 0.477354, 1.002344)
script = ExtResource("3_13m3c")
spawnedItem = ExtResource("4_lguqx")
metadata/_custom_type_script = "uid://deea7d20s1612"

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bjqf67vl8w16t"
path="res://.godot/imported/HallwayRoomData.png-040ded7cb30c3392da85865a9df35d01.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generator/Hallway/HallwayRoomData.png"
dest_files=["res://.godot/imported/HallwayRoomData.png-040ded7cb30c3392da85865a9df35d01.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dph4coqom3ctm"
path="res://.godot/imported/Generator.png-ce0e4bf957d09ea1da1e0b1a5e0d89a9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generator/MainGenerator/Generator.png"
dest_files=["res://.godot/imported/Generator.png-ce0e4bf957d09ea1da1e0b1a5e0d89a9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,99 @@
extends BasicRoom
class_name Generator
@export var wireSpawners: Array[ItemSpawner]
@export var cellSpawners: Array[ItemSpawner]
var unfixedWires: Array[MinigameInitiator]
var rng: RandomNumberGenerator = RandomNumberGenerator.new()
@onready var SocketL: Area3D = $SocketL
@onready var SocketR: Area3D = $SocketR
@onready var SocketLPivot: Node3D = $SocketL/CellPivot
@onready var SocketRPivot: Node3D = $SocketR/CellPivot
var SocketLPowerCell: GrabableObject
var SocketRPowerCell: GrabableObject
func Ready() -> void:
SpaceshipLogicRef = get_node("/root/Main/Maps/SpaceshipTest")
rng.set_seed(SpaceshipLogicRef.levelGenSeed)
generateMinigames()
generatePowerCells()
func _process(_delta: float) -> void:
checkTasks()
if SocketLPowerCell:
if SocketLPowerCell.isGrabbed:
SocketLPowerCell = null
if SocketRPowerCell:
if SocketRPowerCell.isGrabbed:
SocketRPowerCell = null
grabCell(SocketL,SocketLPowerCell,SocketLPivot)
grabCell(SocketR,SocketRPowerCell,SocketRPivot)
if !SpaceshipLogicRef: return
#if SocketLPowerCell and SocketRPowerCell and SpaceshipLogicRef.taskDict[0].completed:
#SpaceshipLogicRef.power = false
#SpaceshipLogicRef.updateLights()
#else:
#SpaceshipLogicRef.power = true
#SpaceshipLogicRef.updateLights()
func generateMinigames() -> void:
var totalMinigames: int = wireSpawners.size()
var choosenMinigames: int = randi_range(2,clamp(6,2,totalMinigames))
for n in (totalMinigames - choosenMinigames):
wireSpawners.pop_at(randi_range(0,wireSpawners.size()-1))
for itemSpawner in wireSpawners:
unfixedWires.push_back(itemSpawner.spawnItem())
func generatePowerCells() -> void:
var totalCells: int = cellSpawners.size()
var choosenCells: int = randi_range(2,clamp(2 + totalCells /7,2,totalCells))
for n in (totalCells - choosenCells):
cellSpawners.pop_at(randi_range(0,cellSpawners.size()-1))
for itemSpawner in cellSpawners:
itemSpawner.spawnItem()
func grabCell(Socket: Area3D, SocketCell: GrabableObject, SocketPivot: Node3D):
if Socket.has_overlapping_areas() and !SocketCell:
var potentialCell = getPowerCells(Socket)
if potentialCell: potentialCell = potentialCell.obj
else: return
if potentialCell.freeze == true: return
if !potentialCell.isGrabbed:
SocketCell = potentialCell
if Socket == SocketL: SocketLPowerCell = potentialCell
elif Socket == SocketR: SocketRPowerCell = potentialCell
SocketCell.freeze = true
SocketCell.global_position = SocketPivot.global_position
SocketCell.global_rotation = SocketPivot.global_rotation
func getPowerCells(Area: Area3D) -> GrabBox:
var overlappingAreas: Array[Area3D] = Area.get_overlapping_areas()
for a in overlappingAreas:
if typeof(a == GrabBox):
if a.type == "PowerCell":
return a
return null
func checkTasks() -> void:
var allWiresFixed: bool = true
for wire in unfixedWires:
if !wire.minigameCompleted:
allWiresFixed = false
break
if SocketLPowerCell and SocketRPowerCell and allWiresFixed:
SpaceshipLogicRef.solveTask(0)

View File

@@ -0,0 +1 @@
uid://6loaamrfhwdc

View File

@@ -0,0 +1,99 @@
[gd_scene load_steps=7 format=3 uid="uid://lr0okqosrbup"]
[ext_resource type="Script" uid="uid://c1ujdlmpc3mk0" path="res://Maps/Rooms/Generator/GeneratorRoom.gd" id="1_cknr3"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="2_3en8h"]
[ext_resource type="Script" uid="uid://deea7d20s1612" path="res://Maps/MapGenerator/itemSpawner.gd" id="3_lmxy4"]
[ext_resource type="PackedScene" uid="uid://yg472lgqdca7" path="res://Maps/Spaceship/Objects/Grabable/PowerCell.tscn" id="4_pdgyu"]
[ext_resource type="PackedScene" uid="uid://md1qkedi16r6" path="res://Minigames/Initiators/MinigameFuseBox.tscn" id="5_0hl30"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b7a2o"]
albedo_color = Color(0.44313726, 0.68235296, 0.68235296, 1)
albedo_texture = ExtResource("2_3en8h")
metallic = 0.7
[node name="THallway" type="Node3D" node_paths=PackedStringArray("powerCellSpawners", "wireSpawners", "Lights")]
script = ExtResource("1_cknr3")
powerCellSpawners = [NodePath("PowerCellSpawner")]
wireSpawners = [NodePath("MinigameSpawner"), NodePath("MinigameSpawner2")]
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://c1ujdlmpc3mk0"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_b7a2o")
use_collision = true
[node name="Middle" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2, -1.5)
size = Vector3(5, 6, 5)
[node name="Middle2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 2, -1.5)
size = Vector3(2, 6, 5)
[node name="Middle3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2, -1.5)
size = Vector3(2, 6, 5)
[node name="Middle4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.5, 2, 2)
size = Vector3(2, 6, 5)
[node name="Middle5" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1.5, -1.5)
operation = 2
size = Vector3(4.5, 4, 4.5)
[node name="Middle6" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.031144, 1.5, -1.5)
operation = 2
size = Vector3(3.5, 4, 4.5)
[node name="Middle7" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.9354858, 1.5, -1.5)
operation = 2
size = Vector3(3.6290283, 4, 4.5)
[node name="Middle8" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.5, 1.5, 1.5012207)
operation = 2
size = Vector3(2.4975586, 4, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1, 3)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 4, 1, -1.5)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="Door3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -5, 1, -1.5)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2.21, -1.5)
[node name="PowerCellSpawner" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4644805, 0.47735423, 0.38929313)
script = ExtResource("3_lmxy4")
identifier = "PowerCell"
spawnedItem = ExtResource("4_pdgyu")
metadata/_custom_type_script = "uid://deea7d20s1612"
[node name="MinigameSpawner" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.657419, 1.1920929e-07, -3.6182885)
script = ExtResource("3_lmxy4")
identifier = "Minigame"
spawnedItem = ExtResource("5_0hl30")
metadata/_custom_type_script = "uid://deea7d20s1612"
[node name="MinigameSpawner2" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.504615, 1.1920929e-07, -3.6182885)
script = ExtResource("3_lmxy4")
identifier = "Minigame"
spawnedItem = ExtResource("5_0hl30")
metadata/_custom_type_script = "uid://deea7d20s1612"

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2ymcnsihkijs"
path="res://.godot/imported/THallwayRoomData.png-74cea3fe45c38d1d28bfe7abfbf03f94.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generator/THallway/THallwayRoomData.png"
dest_files=["res://.godot/imported/THallwayRoomData.png-74cea3fe45c38d1d28bfe7abfbf03f94.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,51 @@
[gd_scene load_steps=4 format=3 uid="uid://djvrkf3ma61fu"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="1_bpbam"]
[ext_resource type="Script" uid="uid://lmn08s8c5lfo" path="res://Maps/Rooms/RoomScripts/BasicRoom.gd" id="1_fo7uf"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fo7uf"]
albedo_color = Color(0.7176471, 0.7176471, 0.7176471, 1)
albedo_texture = ExtResource("1_bpbam")
metallic = 0.7
[node name="4WayRoom" type="Node3D" node_paths=PackedStringArray("Lights")]
script = ExtResource("1_fo7uf")
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://lmn08s8c5lfo"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.5, -0.5)
material_override = SubResource("StandardMaterial3D_fo7uf")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
size = Vector3(5, 6, 5)
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1195679, 0)
operation = 2
size = Vector3(4.5, 3.2391357, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 1, 0)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 1, 0)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 1, -2.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 1, 2.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2.791, -0.5)

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://sidx5xyv55wr"
path="res://.godot/imported/4WayRoomData.png-31c927c3a34104f6d5731e68d59ab82e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generic Connectors/4Way/4WayRoomData.png"
dest_files=["res://.godot/imported/4WayRoomData.png-31c927c3a34104f6d5731e68d59ab82e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,54 @@
[gd_scene load_steps=4 format=3 uid="uid://cv48w5y11hgfx"]
[ext_resource type="Script" uid="uid://lmn08s8c5lfo" path="res://Maps/Rooms/RoomScripts/BasicRoom.gd" id="1_ll6w0"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="1_qxrvj"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ll6w0"]
albedo_color = Color(0.7176471, 0.7176471, 0.7176471, 1)
albedo_texture = ExtResource("1_qxrvj")
metallic = 0.7
[node name="CornerRoom" type="Node3D" node_paths=PackedStringArray("Lights")]
script = ExtResource("1_ll6w0")
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://lmn08s8c5lfo"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_ll6w0")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -1.5)
size = Vector3(6, 6, 5)
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 2, 0)
size = Vector3(6, 6, 5)
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -1.5)
operation = 2
size = Vector3(5.5, 5, 4.5)
[node name="CSGBox3D4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 2, 0)
operation = 2
size = Vector3(5.5, 5, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 1, -1.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5, 1, 3)
operation = 2
size = Vector3(1, 3, 3)
[node name="CSGBox3D5" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, -2.4995685, 2.136, -2.5004315)
size = Vector3(3.7810059, 5.273, 0.2)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.118073, 0)

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5w3heoxsjq4n"
path="res://.godot/imported/CornerRoomData.png-ea953f2c9550375ab2bc2b9296d1268d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generic Connectors/Corner/CornerRoomData.png"
dest_files=["res://.godot/imported/CornerRoomData.png-ea953f2c9550375ab2bc2b9296d1268d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,41 @@
[gd_scene load_steps=4 format=3 uid="uid://bi320yo04o4hk"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="1_74hrc"]
[ext_resource type="Script" uid="uid://lmn08s8c5lfo" path="res://Maps/Rooms/RoomScripts/BasicRoom.gd" id="1_u6y0v"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u6y0v"]
albedo_color = Color(0.7176471, 0.7176471, 0.7176471, 1)
albedo_texture = ExtResource("1_74hrc")
metallic = 0.7
[node name="Hallway" type="Node3D" node_paths=PackedStringArray("Lights")]
script = ExtResource("1_u6y0v")
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://lmn08s8c5lfo"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_u6y0v")
use_collision = true
[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -0.5)
size = Vector3(8, 6, 5)
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, -0.5)
operation = 2
size = Vector3(7.5, 4, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 1, -0.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 1, -0.5)
operation = 2
size = Vector3(1, 3, 3)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.6033916, 0)

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cd8ffur7roccs"
path="res://.godot/imported/HallwayRoomData.png-c7018fac44e76d2dfeb8107401f7bccc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generic Connectors/Hallway/HallwayRoomData.png"
dest_files=["res://.godot/imported/HallwayRoomData.png-c7018fac44e76d2dfeb8107401f7bccc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,73 @@
[gd_scene load_steps=4 format=3 uid="uid://dgawoqpbufmp6"]
[ext_resource type="Script" uid="uid://lmn08s8c5lfo" path="res://Maps/Rooms/RoomScripts/BasicRoom.gd" id="1_b7a2o"]
[ext_resource type="Texture2D" uid="uid://icwcdyvrtcwe" path="res://test/TestTex1.png" id="1_nxio2"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b7a2o"]
albedo_color = Color(0.7176471, 0.7176471, 0.7176471, 1)
albedo_texture = ExtResource("1_nxio2")
metallic = 0.7
[node name="THallway" type="Node3D" node_paths=PackedStringArray("Lights")]
script = ExtResource("1_b7a2o")
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://lmn08s8c5lfo"
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = SubResource("StandardMaterial3D_b7a2o")
use_collision = true
[node name="Middle" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2, -1.5)
size = Vector3(5, 6, 5)
[node name="Middle2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 2, -1.5)
size = Vector3(2, 6, 5)
[node name="Middle3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2, -1.5)
size = Vector3(2, 6, 5)
[node name="Middle4" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.5, 2, 2)
size = Vector3(2, 6, 5)
[node name="Middle5" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1.5, -1.5)
operation = 2
size = Vector3(4.5, 4, 4.5)
[node name="Middle6" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.031144, 1.5, -1.5)
operation = 2
size = Vector3(3.5, 4, 4.5)
[node name="Middle7" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.9354858, 1.5, -1.5)
operation = 2
size = Vector3(3.6290283, 4, 4.5)
[node name="Middle8" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.5, 1.5, 1.5012207)
operation = 2
size = Vector3(2.4975586, 4, 4.5)
[node name="Door" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1, 3)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="Door2" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 4, 1, -1.5)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="Door3" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -5, 1, -1.5)
operation = 2
size = Vector3(3, 3, 0.5)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2.21, -1.5)

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b7bpona2op82b"
path="res://.godot/imported/THallwayRoomData.png-0e4645eaba254d51a19ae30b45b14ea1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Generic Connectors/THallway/THallwayRoomData.png"
dest_files=["res://.godot/imported/THallwayRoomData.png-0e4645eaba254d51a19ae30b45b14ea1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,12 @@
extends Node3D
class_name BasicRoom
var biomeName: String = "nothing"
var SpaceshipLogicRef: ShipLogic = null
@export var Lights: Array[Light3D]
func showLights(LightStatus: bool):
for light in Lights:
if light: light.visible = LightStatus

View File

@@ -0,0 +1 @@
uid://lmn08s8c5lfo

View File

@@ -0,0 +1,12 @@
extends BasicRoom
@onready var fuseBox: MinigameInitiator = $MinigameFuseBox
var shipLogic: ShipLogic
func _ready() -> void:
shipLogic = get_node("/root/Main/Maps/SpaceshipTest")
func _process(_delta: float) -> void:
if fuseBox.minigameCompleted:
shipLogic.solveTask(0)

View File

@@ -0,0 +1 @@
uid://gtfetd6m53v4

View File

@@ -0,0 +1,11 @@
extends BasicRoom
@onready var fuseBox: MinigameInitiator = $MinigameFuseBox
var shipLogic: ShipLogic
func _ready() -> void:
shipLogic = get_node("/root/Main/Maps/SpaceshipTest")
#func _process(_delta: float) -> void:
#if fuseBox.minigameCompleted:
#shipLogic.solveTask(1)

View File

@@ -0,0 +1 @@
uid://275mm2e32a20

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2ekco7xpg1bj"
path="res://.godot/imported/HangerRoomData.png-20cd3ad88c21fbd347e0d1e93ef65e4c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Rooms/Starter/Hanger/HangerRoomData.png"
dest_files=["res://.godot/imported/HangerRoomData.png-20cd3ad88c21fbd347e0d1e93ef65e4c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,64 @@
[gd_scene load_steps=7 format=4 uid="uid://7p668ibmmx21"]
[ext_resource type="Script" uid="uid://cww7fnikeau22" path="res://Maps/Spaceship/RoomScripts/corridor_dead_end.gd" id="1_1beyu"]
[ext_resource type="Script" uid="uid://b7ma88dd5c5tb" path="res://Maps/Spaceship/Objects/flicker_omni_light_3d.gd" id="2_nbfqo"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_obqup"]
[sub_resource type="ArrayMesh" id="ArrayMesh_g7bps"]
_surfaces = [{
"aabb": AABB(-3.5, 0, -7, 7, 7, 14),
"format": 34359742465,
"index_count": 204,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAACAAEABQAAAAIABQADAAAABgACAAQABQACAAcABgAHAAIABAABAAgACAAGAAQACAABAAkAAwAJAAEACAAKAAYACAAJAAoABgALAAcACgALAAYADAAHAAsADAAFAAcADQALAAoACwANAAwACQAOAAoADQAKAA4ADwAOAAkADgAPAA0AAwAQAAkADwAJABAAAwAPABAAEQADAAUAAwARAA8ABQAMABEADwASAA0ADQATAAwADQASABMADAAUABEADAATABQAEQAVAA8AEQAUABUADwAVABIAEwAWABQAFgAVABQAEgAXABMAFgATABcAFQAYABIAGAAVABkAFwASABoAGgASABgAFgAXABsAFQAcABkAFgAcABUAGAAZAB0AHQAaABgAHAAdABkAFwAaAB4AHgAbABcAHwAaAB0AHwAeABoAHwAgAB4AHwAdACEAIAAfACEAHAAhAB0AHgAgACIAHgAiABsAIAAhACIAFgAbACIAIwAhABwAHAAWACMAIwAiACEAFgAiACMA"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 36,
"vertex_data": PackedByteArray("AABgwAAAAAAAAODAAABgQJqZyUAAAODAAABgwJqZyUAAAODAAABgQAAAAAAAAODAMzMzwAAA4ECamcnAAABgwAAAAAAAAOBAMzMzwAAA4EAAAOBAAABgwJqZyUAAAOBAMzMzQAAA4ECamcnAAABgQJqZyUAAAOBAMzMzQAAA4EAAAOBAVlJAwCsp0EAAAOBAAQDAvwAAoEAAAOBAAQDAPwAAoEAAAOBAVlJAQCsp0EAAAOBAAQDAPwAAAAAAAOBAAABgQAAAAAAAAOBAAQDAvwAAAAAAAOBAAQDAPwAAoEBmZt5AAQDAvwAAoEBmZt5AAQDAv78tNz3SSN9AAQDAP78tNz3SSN9ACSdewJJ77DyEE99AVlJAwCsp0EBmZt5AVlJAQCsp0EBmZt5ACSdeQJJ77DyEE99Azz8yQDTa3kDY/d5AZ7RdwOgfyUDY/d5ACSdeQJB77DyEE9/AZ7RdQOgfyUDY/d5Azz8ywDTa3kDY/d5ASD0yQCWN3kCkHsnASD0ywCWN3kCkHsnA8epdQEz5yEB59d7A8epdwEz5yEB59d7ACSdewJB77DyEE9/A")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_1beyu"]
resource_name = "CorridorDeadEnd_Cube_001"
_surfaces = [{
"aabb": AABB(-3.5, 0, -7, 7, 7, 14),
"attribute_data": PackedByteArray("AADAPgAAQD+ZmRk/AAAAP5mZGT8AAEA/AADAPgAAAD8AAMA+AAAAP5mZGT8AAIA+mZkZPwAAAD8AAMA+AACAPgAAwD4AAAAA27YNPyBJkj1JkuQ+IEmSPZmZGT8AAAAAenkbP8DQkDzMzBw/wMxMPNu2DT9w2zY+AAAgP2hmZj4AACA/wMzMPHp5Gz/o5W0+SpLkPmzbNj6ZmRk/AACAPszMHD80M3M+AADAPgAAgD4AAMA+AAAAAAAAwD4AAAA/AADAPgAAQD9JkuQ+IEmSPUqS5D5s2zY+AADAPgAAgD4AAMA+AACAP5mZGT8AAEA/mZkZPwAAgD8AAMA+AABAPwAAID8AAIA/mZkZPwAAQD8AACA/MzNDP5mZGT8AAIA/AAAgP5qZOT+ZmRk/AAAAPwAAID9mZgY/mZkZPwAAQD9lZiY/nJn5PpmZGT8AAIA+ZmYmPwAAgD6ZmRk/AAAAP2VmJj+cmfk+mZlZPwIAgD6amVk/mJn5PmZmJj8AAIA+AADAPgAAQD+ZmRk/AAAAPwAAwD4AAAA/mZkZPwAAQD8AAMA+AAAAP5mZGT8AAIA+AADAPgAAgD6ZmRk/AAAAP9u2DT8gSZI9AADAPgAAAABJkuQ+IEmSPXp5Gz/A0JA8mZkZPwAAAAAAAMA+AAAAPwAAwD4AAAAAAADAPgAAQD9KkuQ+bNs2PgAAwD4AAIA+SZLkPiBJkj0AAMA+AACAP5mZGT8AAEA/AADAPgAAQD+ZmRk/AACAP9u2DT9w2zY+enkbP8DQkDzbtg0/IEmSPQAAID9oZmY+enkbP+jlbT4AACA/wMzMPEqS5D5s2zY+enkbP+jlbT7btg0/cNs2PgAAwD4AAIA+mZkZPwAAgD7MzBw/wMxMPJmZGT8AAAAAenkbP8DQkDyZmRk/AACAPszMHD80M3M+enkbP+jlbT4AACA/AACAP5mZGT8AAEA/mZkZPwAAgD8AACA/MzNDPwAAID+amTk/mZkZPwAAAD+ZmRk/AABAPwAAID9mZgY/ZWYmP5yZ+T6ZmRk/AACAPpmZGT8AAAA/ZmYmPwAAgD5lZiY/nJn5PpmZWT8CAIA+ZmYmPwAAgD6amVk/mJn5PkmS5D4gSZI9SpLkPmzbNj5KkuQ+bNs2PkmS5D4gSZI927YNPyBJkj1JkuQ+IEmSPUmS5D4gSZI927YNPyBJkj1KkuQ+bNs2Ptu2DT9w2zY+27YNP3DbNj5KkuQ+bNs2Ptu2DT9w2zY+27YNPyBJkj3btg0/IEmSPdu2DT9w2zY+"),
"format": 34359742487,
"index_count": 204,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACQAIAAsACQALAAwADQAMAAsADAAOAAkADgAMAA8ADwAMABAADgAPABEAEQASAA4AEgARABMAEwARABQAEgATABUAFgAXABgAGQAXABYAFwAZABoAFwAaABsAHAAdAB4AHAAfAB0AIAAhACIAIAAjACEAJAAlACYAJAAnACUAKAApACoAKAArACkALAAtAC4ALAAvAC0AMAAxADIAMAAzADEANAA1ADYANAA3ADUAOAA5ADoAOQA4ADsAOQA7ADwAPQA+AD8APgA9AEAAQAA9AEEAPgBAAEIAQwBEAEUAQwBGAEQARwBIAEkASABHAEoASgBHAEsASABKAEwATQBOAE8ATgBNAFAATgBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWABbAFkAXABdAF4AXABfAF0AYABhAGIAYABjAGEAZABlAGYAZABnAGUAaABpAGoAaABrAGkAbABtAG4AbABvAG0AcABxAHIAcABzAHEAdAB1AHYAdAB3AHUA"),
"material": SubResource("StandardMaterial3D_obqup"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 120,
"vertex_data": PackedByteArray("AABgwAAAAAAAAODAAABgQJqZyUAAAODAAABgwJqZyUAAAODAAABgQAAAAAAAAODAAABgQAAAAAAAAODAAABgQJqZyUAAAOBAAABgQJqZyUAAAODAAABgQAAAAAAAAOBAAABgwAAAAAAAAOBAAQDAvwAAoEAAAOBAAQDAvwAAAAAAAOBAAABgwJqZyUAAAOBAVlJAwCsp0EAAAOBAMzMzwAAA4EAAAOBAAQDAPwAAoEAAAOBAMzMzQAAA4EAAAOBAMzMzwAAA4EAAAOBAVlJAQCsp0EAAAOBAAQDAPwAAAAAAAOBAAABgQJqZyUAAAOBAMzMzQAAA4EAAAOBAAABgQAAAAAAAAOBAAABgwAAAAAAAAOBAAABgQAAAAAAAAODAAABgwAAAAAAAAODAAQDAvwAAAAAAAOBAAQDAPwAAAAAAAOBAAABgQAAAAAAAAOBAAABgwAAAAAAAAOBAAABgwJqZyUAAAODAAABgwJqZyUAAAOBAAABgwAAAAAAAAODAMzMzwAAA4EAAAOBAAABgwJqZyUAAAODAMzMzwAAA4ECamcnAAABgwJqZyUAAAOBAMzMzwAAA4ECamcnAAABgQJqZyUAAAODAMzMzQAAA4ECamcnAAABgwJqZyUAAAODAMzMzQAAA4ECamcnAAABgQJqZyUAAAOBAMzMzQAAA4EAAAOBAAABgQJqZyUAAAODAMzMzQAAA4ECamcnAMzMzwAAA4EAAAOBAMzMzwAAA4ECamcnAMzMzQAAA4EAAAOBACSdewJB77DyEE9/A8epdQEz5yEB59d7ACSdeQJB77DyEE9/A8epdwEz5yEB59d7ACSdeQJB77DyEE9/AZ7RdQOgfyUDY/d5ACSdeQJJ77DyEE99A8epdQEz5yEB59d7AAQDAvwAAoEBmZt5ACSdewJJ77DyEE99AAQDAv78tNz3SSN9AVlJAwCsp0EBmZt5AZ7RdwOgfyUDY/d5ACSdeQJB77DyEE9/ACSdewJJ77DyEE99ACSdewJB77DyEE9/AAQDAP78tNz3SSN9ACSdeQJJ77DyEE99AAQDAv78tNz3SSN9ACSdewJJ77DyEE99A8epdwEz5yEB59d7ACSdewJB77DyEE9/AZ7RdwOgfyUDY/d5AAQDAPwAAoEBmZt5AVlJAwCsp0EBmZt5AAQDAvwAAoEBmZt5Azz8yQDTa3kDY/d5AVlJAQCsp0EBmZt5Azz8ywDTa3kDY/d5AAQDAP78tNz3SSN9AVlJAQCsp0EBmZt5AAQDAPwAAoEBmZt5ACSdeQJJ77DyEE99AZ7RdQOgfyUDY/d5Azz8ywDTa3kDY/d5AZ7RdwOgfyUDY/d5AVlJAwCsp0EBmZt5AZ7RdQOgfyUDY/d5Azz8yQDTa3kDY/d5AVlJAQCsp0EBmZt5Azz8ywDTa3kDY/d5A8epdwEz5yEB59d7AZ7RdwOgfyUDY/d5ASD0ywCWN3kCkHsnASD0ywCWN3kCkHsnA8epdQEz5yEB59d7A8epdwEz5yEB59d7ASD0yQCWN3kCkHsnASD0yQCWN3kCkHsnAZ7RdQOgfyUDY/d5A8epdQEz5yEB59d7Azz8yQDTa3kDY/d5ASD0yQCWN3kCkHsnAzz8ywDTa3kDY/d5Azz8yQDTa3kDY/d5ASD0ywCWN3kCkHsnAAQDAvwAAAAAAAOBAAQDAP78tNz3SSN9AAQDAPwAAAAAAAOBAAQDAv78tNz3SSN9AAQDAvwAAoEAAAOBAAQDAv78tNz3SSN9AAQDAvwAAAAAAAOBAAQDAvwAAoEBmZt5AAQDAPwAAAAAAAOBAAQDAPwAAoEBmZt5AAQDAPwAAoEAAAOBAAQDAP78tNz3SSN9AAQDAPwAAoEAAAOBAAQDAvwAAoEBmZt5AAQDAvwAAoEAAAOBAAQDAPwAAoEBmZt5A//////9//////////3//////////f/////////9///////9//3///////3//f///////f/9///////9//3////9//3//f////3//f/9//v//f/9//3////9//3+ziqX6/3//f2mWyfT/f/9/f7E+5/9//3//f/7//3//f/9//v//f/9//3/+//9//3+Vacn0/3//f/9/////f/9/S3Wl+v9//39/Tj7n/3//f/9/////fwAAqqr/v/9/AACqqv+//38AAP///7//fwAAqqr/v/9/AACqqv+//38AAAAAVRUAAP9//3///wAA/3//f///AAD/f/9///8AAP9//3////8//7//v//f/z//v/+//9//P/+//7//3/8//7//v//f/7////9//9//v////3//3/+/////f//f/7////9//9//v/+//z//3/+//7//P//f/7//v/8//9//v/+//z//3/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3/rfwCACgD/f+t//n8KAP9/63/sfxMA/3/rfxKAEwAdAN5/4n8TAB0A3n/dfw4AHQDef9R/DgAdAN5/4n8YAHsAnwATfzgAewCfAGt/DAB7AJ8Ae4AAAHsAnwBafxQAewCfAJ+AEQAZgP//oKr3PxmA//+Aqvc/GYD//////78ZgP//kqr3PxmA//8RADGVGYD//5kX/T/h/95/IYAOAOH/3n8cgBMA4f/efxyAGADh/95/KoAOAJD+//8lfyIBkP7//zKCzQGQ/v///3+3AJD+//9lfoEBkP7//zp9FQKQ/v//P4TQAoP/nwDYgC4Ag/+fAIB/AQCD/58Ag38AAIP/nwDhgDMAg/+fAF9/EQCQCG736LJkGpAIbvfosmQakAhu9+iyZBpu9273Fk1kGm73bvcWTWQabvdu9xZNZBrIv9A/OsAVIMi/0D/ZwMUfyL/QPzLAGSDIv9A/5cC/H/9/nD8gf2kg/3+cP+qAbCD/f5w/935zIP9/nD9IgYMgNkDQPyc/xh82QNA/xD8VIDZA0D8iP8MfNkDQP8w/GSD/fxYAAAD/P/9/FgAAAP8//38WAAAA/z//fxYAAAD/P/9/qqr///8//3+qqv///z//f6qq////P/9/qqr///8/////f////7////9/////v////3////+/////f////78AAP9/////vwAA/3////+/AAD/f////78AAP9/////v/9/AAD///+//38AAP///7//fwAA////v/9/AAD///+/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_g7bps")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_pjmyq"]
data = PackedVector3Array(-3.5, 0, -7, 3.5, 6.3, -7, -3.5, 6.3, -7, -3.5, 0, -7, 3.5, 0, -7, 3.5, 6.3, -7, 3.5, 0, -7, 3.5, 6.3, 7, 3.5, 6.3, -7, 3.5, 0, -7, 3.5, 0, 7, 3.5, 6.3, 7, -3.5, 0, 7, -1.5, 5, 7, -1.5, 0, 7, -1.5, 5, 7, -3.5, 0, 7, -3.5, 6.3, 7, -1.5, 5, 7, -3.5, 6.3, 7, -3.005, 6.505, 7, -2.8, 7, 7, -3.005, 6.505, 7, -3.5, 6.3, 7, -3.005, 6.505, 7, 1.5, 5, 7, -1.5, 5, 7, 1.5, 5, 7, -3.005, 6.505, 7, 2.8, 7, 7, 2.8, 7, 7, -3.005, 6.505, 7, -2.8, 7, 7, 1.5, 5, 7, 2.8, 7, 7, 3.005, 6.505, 7, 3.005, 6.505, 7, 1.5, 0, 7, 1.5, 5, 7, 1.5, 0, 7, 3.005, 6.505, 7, 3.5, 6.3, 7, 3.5, 6.3, 7, 3.005, 6.505, 7, 2.8, 7, 7, 1.5, 0, 7, 3.5, 6.3, 7, 3.5, 0, 7, -3.5, 0, 7, 3.5, 0, -7, -3.5, 0, -7, -1.5, 0, 7, 3.5, 0, -7, -3.5, 0, 7, 3.5, 0, -7, -1.5, 0, 7, 1.5, 0, 7, 3.5, 0, -7, 1.5, 0, 7, 3.5, 0, 7, -3.5, 0, 7, -3.5, 6.3, -7, -3.5, 6.3, 7, -3.5, 0, 7, -3.5, 0, -7, -3.5, 6.3, -7, -2.8, 7, 7, -3.5, 6.3, -7, -2.8, 7, -6.3, -2.8, 7, 7, -3.5, 6.3, 7, -3.5, 6.3, -7, -2.8, 7, -6.3, 3.5, 6.3, -7, 2.8, 7, -6.3, -2.8, 7, -6.3, -3.5, 6.3, -7, 3.5, 6.3, -7, 2.8, 7, -6.3, 3.5, 6.3, 7, 2.8, 7, 7, 2.8, 7, -6.3, 3.5, 6.3, -7, 3.5, 6.3, 7, 2.8, 7, -6.3, -2.8, 7, 7, -2.8, 7, -6.3, 2.8, 7, -6.3, 2.8, 7, 7, -2.8, 7, 7, -3.4711, 0.0289, -6.9711, 3.4675, 6.2804, -6.9675, 3.4711, 0.0289, -6.9711, -3.4711, 0.0289, -6.9711, -3.4675, 6.2804, -6.9675, 3.4675, 6.2804, -6.9675, 3.4711, 0.0289, -6.9711, 3.4641, 6.2851, 6.9685, 3.4711, 0.0289, 6.9711, 3.4711, 0.0289, -6.9711, 3.4675, 6.2804, -6.9675, 3.4641, 6.2851, 6.9685, -1.5, 5, 6.95, -3.4711, 0.0289, 6.9711, -1.5, 0.0447, 6.9776, -3.4711, 0.0289, 6.9711, -1.5, 5, 6.95, -3.005, 6.505, 6.95, -3.4711, 0.0289, 6.9711, -3.005, 6.505, 6.95, -3.4641, 6.2851, 6.9685, 3.4711, 0.0289, -6.9711, -3.4711, 0.0289, 6.9711, -3.4711, 0.0289, -6.9711, -3.4711, 0.0289, 6.9711, 3.4711, 0.0289, -6.9711, 1.5, 0.0447, 6.9776, 1.5, 0.0447, 6.9776, 3.4711, 0.0289, -6.9711, 3.4711, 0.0289, 6.9711, -3.4711, 0.0289, 6.9711, 1.5, 0.0447, 6.9776, -1.5, 0.0447, 6.9776, -3.4711, 0.0289, 6.9711, -3.4675, 6.2804, -6.9675, -3.4711, 0.0289, -6.9711, -3.4711, 0.0289, 6.9711, -3.4641, 6.2851, 6.9685, -3.4675, 6.2804, -6.9675, 1.5, 5, 6.95, -3.005, 6.505, 6.95, -1.5, 5, 6.95, -3.005, 6.505, 6.95, 1.5, 5, 6.95, 2.7851, 6.9641, 6.9685, 2.7851, 6.9641, 6.9685, 1.5, 5, 6.95, 3.005, 6.505, 6.95, -3.005, 6.505, 6.95, 2.7851, 6.9641, 6.9685, -2.7851, 6.9641, 6.9685, 1.5, 0.0447, 6.9776, 3.005, 6.505, 6.95, 1.5, 5, 6.95, 3.005, 6.505, 6.95, 1.5, 0.0447, 6.9776, 3.4711, 0.0289, 6.9711, 3.005, 6.505, 6.95, 3.4711, 0.0289, 6.9711, 3.4641, 6.2851, 6.9685, -2.7851, 6.9641, 6.9685, -3.4641, 6.2851, 6.9685, -3.005, 6.505, 6.95, 3.4641, 6.2851, 6.9685, 2.7851, 6.9641, 6.9685, 3.005, 6.505, 6.95, -2.7851, 6.9641, 6.9685, -3.4675, 6.2804, -6.9675, -3.4641, 6.2851, 6.9685, -2.7851, 6.9641, 6.9685, -2.785, 6.9547, -6.285, -3.4675, 6.2804, -6.9675, -2.785, 6.9547, -6.285, 3.4675, 6.2804, -6.9675, -3.4675, 6.2804, -6.9675, -2.785, 6.9547, -6.285, 2.785, 6.9547, -6.285, 3.4675, 6.2804, -6.9675, 2.785, 6.9547, -6.285, 3.4641, 6.2851, 6.9685, 3.4675, 6.2804, -6.9675, 2.785, 6.9547, -6.285, 2.7851, 6.9641, 6.9685, 3.4641, 6.2851, 6.9685, 2.785, 6.9547, -6.285, -2.7851, 6.9641, 6.9685, 2.7851, 6.9641, 6.9685, 2.785, 6.9547, -6.285, -2.785, 6.9547, -6.285, -2.7851, 6.9641, 6.9685, -1.5, 0, 7, 1.5, 0.0447, 6.9776, 1.5, 0, 7, -1.5, 0, 7, -1.5, 0.0447, 6.9776, 1.5, 0.0447, 6.9776, -1.5, 5, 7, -1.5, 0.0447, 6.9776, -1.5, 0, 7, -1.5, 5, 7, -1.5, 5, 6.95, -1.5, 0.0447, 6.9776, 1.5, 0, 7, 1.5, 5, 6.95, 1.5, 5, 7, 1.5, 0, 7, 1.5, 0.0447, 6.9776, 1.5, 5, 6.95, 1.5, 5, 7, -1.5, 5, 6.95, -1.5, 5, 7, 1.5, 5, 7, 1.5, 5, 6.95, -1.5, 5, 6.95)
[node name="CorridorDeadEnd" type="Node3D" node_paths=PackedStringArray("Lights")]
script = ExtResource("1_1beyu")
Lights = [NodePath("OmniLight3D")]
metadata/_custom_type_script = "uid://lmn08s8c5lfo"
[node name="Cube" type="MeshInstance3D" parent="."]
transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 3.5, 0, 0)
mesh = SubResource("ArrayMesh_1beyu")
skeleton = NodePath("")
metadata/extras = {
"poliigon_props": {}
}
[node name="StaticBody3D" type="StaticBody3D" parent="Cube"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Cube/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pjmyq")
debug_fill = false
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.1751, 5.51291, 0)
omni_range = 10.0
script = ExtResource("2_nbfqo")
metadata/_custom_type_script = "uid://b7ma88dd5c5tb"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
extends Node3D
class_name BasicMinigame

View File

@@ -0,0 +1 @@
uid://clqxlalxpuvb0

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cm2rioo553yur"]
[ext_resource type="Script" uid="uid://dnjusl5hyybly" path="res://random_minigame_spawner.gd" id="1_fmdp7"]
[node name="RandomMinigameSpawner" type="Node"]
script = ExtResource("1_fmdp7")

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,20 @@
extends Node3D
#class_name BasicDoor
var open: bool = false
@onready var doorSlide1: MeshInstance3D = $DoorFrame/DoorSlide
@onready var doorSlide2: MeshInstance3D = $DoorFrame/DoorSlide_001
const doorClosedPos: Vector3 = Vector3(0.057,1.703,0)
const doorOpenPos: Vector3 = Vector3(1.4,1.703,0)
func _on_area_3d_body_entered(_body: Node3D) -> void:
open = true
doorSlide1.position = doorOpenPos
doorSlide2.position = doorOpenPos * Vector3(-1,1,1)
func _on_area_3d_body_exited(_body: Node3D) -> void:
open = false
doorSlide1.position = doorClosedPos
doorSlide2.position = doorClosedPos * Vector3(-1,1,1)

View File

@@ -0,0 +1 @@
uid://dacge6grun0em

View File

@@ -0,0 +1,77 @@
[gd_scene load_steps=8 format=4 uid="uid://c52lwhaynro5j"]
[ext_resource type="Script" uid="uid://ymaax1x5fos3" path="res://script/interactBox.gd" id="1_6mmea"]
[ext_resource type="Script" uid="uid://cjiiw7cybj24b" path="res://script/ButtonLogicImpulse.gd" id="2_k0gfg"]
[sub_resource type="BoxShape3D" id="BoxShape3D_opyex"]
size = Vector3(0.536865, 1.14282, 0.68985)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xirvw"]
[sub_resource type="ArrayMesh" id="ArrayMesh_lel7i"]
_surfaces = [{
"aabb": AABB(-0.187632, -0.315404, -0.206013, 0.370945, 0.461035, 0.430153),
"format": 34359742465,
"index_count": 552,
"index_data": PackedByteArray("AAABAAIAAgABADEAAgAxAAMAAAAFAAEABgAFAAAAAwAxADIAAwAyAAQAMwAxAAEAMQAzABAAAQAJADMABgAHAAUACAAHAAYANAABAAUAAQA0AAkABQAdADQANQAJADQAHQA1ADQAFwAzAAkAMwAXABAAFwAJADYACQAZADYACQA1ABkANwAXADYAGQA3ADYAFgAQABcANwAWABcAFgA4ABAAGQA5ADcAOgA4ABYAEAA4ABUAOgAVADgAEAAVADsAMQAQADsAOwAyADEAGAAWADcAGAA6ABYANwA8ABgANwA5ADwAPQA6ABgAGAA8AD4AGAA+AD0APQATADoAEwAVADoAPwATAD0APwA9AD4AEwBAABUAOwAVAEAAPwASABMAEgBAABMAOwBAABEAEgARAEAAMgA7ABEAEgBBABEAMgARAEEAQgASAD8AEgBCAEEAQQANADIADQBBAEIABAAyAA0ABAANAAwADAANAAoADAAKAAsADQBCAA4ADgAKAA0AQgBDAA4ACwAKAEQACwBEAAgACgAOAEUAQwBFAA4ACABEAAcARgBEAAoACgBFAEYARABGACcAKQBGAEUARgApACcAKQBFAEcARQAqAEcARQBDACoASAApAEcAKgBIAEcAKAAnACkASAAoACkAKAAmACcARAAnAA8ADwAHAEQAJwAmAEkAJwBJAA8ASgAmACgASgBJACYASwAoAEgASwBKACgABwAPACMADwBJACQADwAkACMAJQBJAEoAJQAkAEkATABKAEsATAAlAEoABwAjACEAIQAFAAcAJAAiACMAIgAhACMAJAAlACIABQAhAB0AIgAdACEAJQBNACIAHQAiAE0AJQBMAE0ATgAdAE0ATQBMAE8ASwBPAEwATQBPAE4AHQBOADUASwBQAE8ASABQAEsASABRAFAAKgBRAEgALwBPAFAAIABOAE8AIABPAC8ATgAgABsATgAbADUALQBQAFEALwBQAC0AKgAsAFEALQBRACwAUgAvAC0AKgBTACwAMAAvAFIAMAAgAC8AUgAtAFQAVAAtACwAMABSAFQAQwBTACoAIAAwAFUAIABVABsAVAAsAC4AUwAuACwAMABUAFYAVgBUAC4AUwBXAC4AVgAuAFcAKwBXAFMAQwArAFMAVgBXAFgAKwBYAFcAMABWAFkAVgBYAFkAMABZAFUAFAArAEMAQgAUAEMAFABCAD8APwA+ABQAFAAeACsAHgAUAD4AHgBYACsAWQBYAFoAHgBaAFgAHgA+ABwAWgAeABwAHAA+ADwAWgAcAFsAHAA8AFwAWwAcAFwAXAA8ADkAWgBbAF0AWwBcAF0AWQBaAF4AWgBdAF4AVQBZAF4AXAA5ABoAXQBcABoAGQAaADkAXgBdAB8AXQAaAB8AVQBeAF8AXgAfAF8AGwBVAF8AGQBgABoAYAAfABoAYABfAB8AGwBfAGAANQBgABkANQAbAGAA"),
"lods": [0.047312, PackedByteArray("AAABAAIAAgABAAMAAwABAAQAAAAFAAEABgAFAAAABgAHAAUACAAHAAYACQABAAUACAAKAAcACwAKAAgADAAKAAsADAANAAoABAANAAwADgAKAA0ADQAEAA4ADwAHAAoAEAAEAAEAAQAJABAABAAQABEAEgAEABEAEgAOAAQAEgARABMAEAATABEADgASABQAFAASABMAEAAVABMAFgAVABAAEwAVABYAFgAQABcAFwAQAAkAEwAWABgACQAZABcAGgAWABcAGAAWABoAGQAaABcAGgATABgACQAbABkAGQAbABoAHAATABoAHQAbAAkAHgATABwAHgAUABMAHwAcABoAGwAfABoAHgAcAB8ABQAdAAkAHQAgABsAIAAfABsABQAhAB0AIQAFAAcAIgAdACEAHQAiACAABwAjACEAIgAhACMABwAPACMAJAAiACMADwAkACMAJQAgACIAJAAlACIADwAmACQAJQAkACYAJwAmAA8ACgAnAA8ACgAOACcAKAAmACcAJQAmACgAKQAnAA4AKAAnACkADgAqACkAKgAoACkADgArACoADgAUACsAKgAsACgAKAAsACUAKgArACwAFAAeACsALQAlACwAKwAuACwALgAtACwAKwAeAC4ALwAlAC0ALwAtAC4AIAAlAC8AMAAuAB4AMAAvAC4AMAAgAC8AMAAeAB8AIAAwAB8A")],
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 97,
"vertex_data": PackedByteArray("XLY7PkQngr5SXX29KBv/PcSpV776xcy9rmwVPrrAhr6/g9u9bAG6PdrVkb5kiOa9GP5NPbTonL4eSJm9RNclPt12Tr7I4V+9FnA5Pje7hr6wR027/JAjPsKeV754OIU75e4PPhHOkb4TrA09caGKPTA0Z7wAnGW9qUeDPVz3gb5THhU92wWvPTLjnL6SRe88++REPad8ob7HDoS8KtHaPNGQhr5mLxK8WPMzvV+mjb2EvXM8fCErPX5nKr3sAos9ZLIYPah8v7ySCKG9ckIyvQiBdb0EJVK9AAb2vYDmV7zAJ069SCwavoB+WLzQuw++8HccvqCiMj0AbRK9IFdlvYCRcDyQbBW+gKFyPMBhfD3g/0i+YE05PeCHfD0gnNm9cPGkvSBVQT3gMjO+ANX6PGCmAT5gP8i9QMudvOD7FD4QPj2+oLwePfgNFT4AlFe82A89vgC3kD3Q+QO+LtyzPWDPZrxIsWU7kOYdvgDKkD3AHx+9IC4XvUCnFD4QFRy+EN2HPaAWFT5AM4w9LCfSPbaQFL2w4b48EKTNPeDMfD3AXmk9V2aePVAYv7zacyM9MNrWPQB/LT0weAQ+ePsFPkDzfD2wiRY+QEeKvIDwULzgpC4+gIJiu9xOdb38r4k94GsNvQA5VrzAzU8+oAiFvQDTVrygN+c9gF/MvQDlMj3g/Pc9MKcBvkDbkD3AKy89IH2MvaD/kD3Qj1s+AMpmPOCf3T2Q7T4+oGZwvZCvuD2wEj0+wC/GPSAgFT6QSyI+IE4xPVjAFD7gxK09OUOOPQbUbb6fyte9ZAPtPN78gb5Yioq9ZyCKPcC8FL0WYaW9yj6fPdABZ7wWQde84PppPaiuAT4Al568AG08PQC+tT2A3dK9AAk3PDCotT0Q9VK+AKegO+ABLT3ggiq+AAKKu3ibAT4Apk2+MAKLvYBCxjzQXSy+CF0CvLKlKr2CW6K9sHLEvVA5rj3Q4y2++GEwvgDNujugcBO+mCJAviB3Mj2QIQ6+ULcMvgApvDtAqSe9kGHvvYDkUrwwVgC+BCJSvUhquL0ERia9IC5dvaysjb36MHS82FMBvuDDMj2Axi49mB/0PXTEbb6eJys9prgKvRGgjb3W6jY9+CiEvERUuL2A9oE9QN6svQA8vjvAXu09gBFLvQCZvzvQNWA+YEg0PYCFcjyQjhk+wEBFPYBkxzywKzM+gJMsPWDuQT2gc0A+MA4JPvD0tT1gsSA+4MbKPTDftT3Aq1w9oEWrPfi2AT4A6HE9IJvyPdjBAT5wACY+ACLbPPCFrj2gwkU+AAqFvaAQMz3ghGU+sDiBPYjGFD4A5hI+wM/KvZDskD2Au/49AFQQO1Ae8T1Q/Cc+AIZWPOC2FD4A9JK7gAgpvIAW8T2QDgI+8MSgvTCjuD0gDwE+QJvevVCQuD2AVBY9gMpDvQD/8D0A9oM8yDgOvnB9uD3Ak1e9iIEivhBxuD3A0OO9YMnQvWBX3T0AnCC+EE3IvdDf8D3A/ga+cKmuvaDn8D0gIsK9QBaMvHitFD5AI8C9gP02PHAFFT5AGMK9")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_xqp54"]
resource_name = "Controll_Cube_007"
_surfaces = [{
"aabb": AABB(-0.187632, -0.315404, -0.206013, 0.370945, 0.461035, 0.430153),
"attribute_data": PackedByteArray("LBMUP0CXwzwdERQ/ABy8PB0RFD8AHLw8HREUPwAcvDz5ZBE/IEe8PNW4Dj9Acrw8LBMUP2CXwzw6FRQ/YBLLPDoVFD+AEss8/hEUP+BOvzw7KxM/oCq8PDsrEz+gKrw8f5MPP2BkvDx4uQ4/gPzDPHi5Dj+A/MM8iv4TP0AdvDw+7xM/IB68PD3vEz9AHrw8HBEUP0AcvDwsExQ/YJfDPFkUFD+A38c8PCsTP4AqvDy02g4/YHC8PNS4Dj9gcrw8ORUUP4ASyzw6FRQ/gBLLPDkVFD9gEss8GjoTPwAlyzwaOhM/ACXLPEnzEz9AFcs8SPMTP2AVyzzdLhM/ACbLPKpnET+ATMs83i4TP+AlyzxI8xM/YBXLPHagDz8gc8s8qmcRP4BMyzx4uQ4/YPzDPAzcDj/Ag8s8SfMTP0AVyzxI8xM/YBXLPA3cDj+gg8s8eKAPP+Byyzx2oA8/AHPLPA3cDj+gg8s8GroOP8CGyzy3zA4/IIXLPKpnET+ATMs8OhUUP2ASyzwaug4/oIbLPHi5Dj+A/MM8eLkOP4D8wzwaug4/gIbLPAzcDj/Ag8s8eLkOP2D8wzzVuA4/QHK8PH+TDz9gZLw81bgOP0ByvDy12g4/AHC8PLTaDj9gcLw8tdoOPwBwvDz5ZBE/IEe8PD7vEz8gHrw8+mQRPwBHvDw97xM/QB68PLXaDj8AcLw8tNoOP2BwvDwdERQ/ABy8PCwTFD9Al8M8OhUUP4ASyzw6FRQ/gBLLPCwTFD9Al8M8HREUP+AbvDwsExQ/IJfDPBo6Ez8AJcs83S4TPwAmyzw5FRQ/oBLLPDoVFD9gEss8OhUUP0ASyzw5FRQ/YBLLPB4RFD/gG7w8HhEUP+AbvDweERQ/wBu8PBwRFD8gHLw8OysTP6AqvDyrZxE/YEzLPBq6Dj/Ahss8qmcRP4BMyzz6ZBE/QEe8PB0RFD/gG7w8+WQRPyBHvDzUuA4/QHK8PPlkET8gR7w81bgOPyByvDzVuA4/QHK8PNS4Dj9Acrw81bgOPyByvDwbuQ4/oKu/PH+TDz9gZLw8t54PP8BjvDzVuA4/QHK8PNS4Dj+Acrw81bgOPyByvDzUuA4/YHK8PHe5Dj+g/MM8GroOP8CGyzwaug4/oIbLPBq6Dj+ghss8GroOP8CGyzwaug4/oIbLPNS5Dj+ATcg8GroOP8CGyzwaug4/4IbLPHagDz8Ac8s8eKAPP+ByyzwsExQ/YJfDPDorEz/AKrw8HhEUP+AbvDw97xM/QB68PA0tEz+AqMM8ORUUP4ASyzz5ZBE/IEe8PPlkET9AR7w8+WQRP0BHvDy2ng8/wGO8PLeeDz8AZLw8UmYRP+DJwzzeLhM/ACbLPKpnET+ATMs8mJ8PP0DrwzyqZxE/YEzLPAzcDj/Ag8s8qmcRP4BMyzwaug4/wIbLPHigDz/gcss8q2cRP4BMyzwaug4/oIbLPKtnET9ATMs8OhUUP2ASyzw6FRQ/QBLLPKlnET+ATMs8GroOP6CGyzyrZxE/QEzLPA3cDj+gg8s8qmcRP2BMyzx2oA8/AHPLPEnzEz9AFcs8qmcRP4BMyzw+7xM/IB68PB4RFD/AG7w8+WQRPyBHvDzUuA4/gHK8PNW4Dj8gcrw8+WQRP0BHvDweERQ/4Bu8PPlkET9AR7w8+WQRPyBHvDw7KxM/oCq8PDsrEz+gKrw8+WQRPyBHvDy3ng8/wGO8PA=="),
"format": 34359742487,
"index_count": 552,
"index_data": PackedByteArray("AAABAEMAAAAGAAEABwAGAEQABwBFAAYARgAGAEUABgBGABQARwABAAYABgAUAEcAAQBHAAkAAQAJAEgAFABJAEcASQAJAEcAGgAUAEYAGgBGAEoASwAaAEoASwAdABoAHQBMABoAFAAaAEwAHQBNAEwATABNAE4ATwAUAEwATABOAE8AFABPAEkAGABPAE4AGABOAB4ATwAYABMATwATAEkASQATAFAASQBQABIAEgBQABEAEgARAFEACQBJABIAEgBRAFIACQASAFMAEgBSAFMADwAJAFMAUgAPAFMADwBIAAkAUgAQAA8ASAAPAAoAEAAKAA8AEABUAAoALwAIADAALwBVAAgACAAcABkACAAgABwAIAAIAFUAVQArACAAVQBWACsAVgBVAC0AMQAtAFUAMQBVAFcAAgBYAAQAAgADAFgAWQBYAAMAWABZAAsAWAALAFoAWgBbAFgAXABYAFsAXABbAAUAWwBaAAwAWwAMAF0AXgANAA4AXgBfAA0AYAANAF8ADQBgAGEANwBhAGAANwBgAGIANwBiAGMANwBjADoAZAA3ADoAYQA3AGQAZAA6AGUAZABlAGYAOQBhAGQAZABmADkAZwA5AGYAZwBmADsAOQBnADYAOQA2AGgAYQA5AGgAaAA2AGkAYQBoADMADQBhADMAaABpADQANABpADUANAA1AGoANABqAGsAMwBsAA0AMgANAGwAMgBsAG0AbAAzAG4AaABuADMAbgBoADQAbABuAG8ANABrAHAAbgA0AHAAawAuAHAALgBuAHAALgBvAG4AawAsAC4AbwAuAHEALABxAC4ALAByAHEAcwB0AHUAdQB0ABUAdQAVAHYAcwB3AHQAeAB3AHMAeQAVAHQAdwB5AHQAegB2ABUAeQB6ABUAegB7AHYAfAB7AHoAfAAWAHsAfQB8AHoAfQAWAHwAfQB6AHkAfQAXABYAdwB+AHkAfgB9AHkAeAAhAHcAIQB+AHcAIQB4ACIAIQAiAH8AfwAiAIAAFwB9AIEAfgCBAH0AFwCBACUAfwCAAIIAIQB/AIIAggCAAIMAIQCEAH4AIQCCAIQAhACBAH4AggCDACMAhACCACMAhQAjAIMAhACGAIEAhAAjAIYAhQCGACMAJQCBAIYAJQCGAIUAhwApAIgAhwCJACkAigCJAIcAigAnAIkAhwCLAIoAiACMAIcAhwCMAIsAKACLAIwAiACNAIwAKACMACQAJACMAI0AJACNACYAjgAqAI8AjgCQACoAkQAqAJAAkgCQAI4AkQCQAJMAkgAfAJAAkwCQAB8AkwAfABsAPwCUAJUAPwCWAJQAlwCWAD8AlwBBAJYAPwCYAJcAlQCZAD8APwCZAJgAQgCYAJkAlQCaAJkAQgCZAJsAmwCZAJoAmwCaAEAAnACdAD4AnAA9AJ0AngCdAD0APAA9AJwAngA9AJ8APACgAD0AnwA9AKAAnwCgADgA"),
"lods": [0.047312, PackedByteArray("AAABAAIAAgADAAQABAADAAUAAAAGAAEABwAGAAAABwAIAAYACQABAAYAAQAJAAoACwAFAAMABQALAAwABQANAA4ADwAKAAkAEAAKAA8AEQAQAA8ACQASAA8AEgARAA8ACQATABIAEgATABEAFAATAAkABgAUAAkAEwAVABEAFQAWABEAFwAWABUAGAAVABMAFAAYABMABgAZABQAGQAGAAgAGgAUABkAFAAaABgAGgAZABsACAAcABkAHQAYABoAGAAdAB4AHwAdABoAHwAaABsACAAgABwAIAAfABsAGAAhABUAIQAYACIAIQAXABUAIQAiACMAIQAjABcAIgAkACMAJQAXACMAJQAjACYAIwAkACYAJAAnACYAKAAnACQAKQAmACcAJwAqACkAJwAfACoAIAAqAB8AKwAqACAALAAqACsALQArACAAIAAIAC0ALAArAC4ALwAIADAALwAtAAgAMQAtAC8AMgAtADEAMgANAC0ALQAzACsAMwAtAA0ALgArADMADQAFADMANAAsAC4AMwA0AC4ANAA1ACwANAA2ADUAMwA2ADQANwAzAAUANwAFADgAMwA5ADYAMwA3ADkAOQAXADYANwA4ADoAOQA3ADoAFwA5ADoAFwA6ADsACwA8ADgACwA9ADwAPAA9AD4APgA9AAsAPwA+AEAAQQA+AD8AQABBAD8AQgBBAEAA")],
"material": SubResource("StandardMaterial3D_xirvw"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 161,
"vertex_data": PackedByteArray("XLY7PkQngr5SXX29KBv/PcSpV776xcy9rmwVPrrAhr6/g9u9KBv/PcSpV776xcy9bAG6PdrVkb5kiOa9GP5NPbTonL4eSJm9RNclPt12Tr7I4V+9FnA5Pje7hr6wR027/JAjPsKeV754OIU7caGKPTA0Z7wAnGW9ZLIYPah8v7ySCKG9ZLIYPah8v7ySCKG9ckIyvQiBdb0EJVK9KtHaPNGQhr5mLxK8++REPad8ob7HDoS8YE05PeCHfD0gnNm9gKFyPMBhfD3g/0i+QMudvOD7FD4QPj2+ANX6PGCmAT5gP8i9oLwePfgNFT4AlFe8LtyzPWDPZrxIsWU7IC4XvUCnFD4QFRy+2A89vgC3kD3Q+QO+kOYdvgDKkD3AHx+9EN2HPaAWFT5AM4w9LCfSPbaQFL2w4b48EKTNPeDMfD3AXmk9V2aePVAYv7zacyM9V2aePVAYv7zacyM9ePsFPkDzfD2wiRY+wC/GPSAgFT6QSyI+MNrWPQB/LT0weAQ+fCErPX5nKr3sAos9IE4xPVjAFD7gxK09wC/GPSAgFT6QSyI+oGZwvZCvuD2wEj0+AMpmPOCf3T2Q7T4+MKcBvkDbkD3AKy89IH2MvaD/kD3Qj1s+ePsFPkDzfD2wiRY+wC/GPSAgFT6QSyI+4GsNvQA5VrzAzU8+QEeKvIDwULzgpC4+gIJiu9xOdb38r4k94GsNvQA5VrzAzU8+qUeDPVz3gb5THhU9oAiFvQDTVrygN+c95e4PPhHOkb4TrA09FnA5Pje7hr6wR0272wWvPTLjnL6SRe88++REPad8ob7HDoS8WPMzvV+mjb2EvXM8gF/MvQDlMj3g/Pc9IH2MvaD/kD3Qj1s+MKcBvkDbkD3AKy89AAb2vYDmV7zAJ069ckIyvQiBdb0EJVK98HccvqCiMj0AbRK9SCwavoB+WLzQuw++2A89vgC3kD3Q+QO+SCwavoB+WLzQuw++IFdlvYCRcDyQbBW+gKFyPMBhfD3g/0i+cPGkvSBVQT3gMjO+QMudvOD7FD4QPj2+SCwavoB+WLzQuw++2A89vgC3kD3Q+QO+rmwVPrrAhr6/g9u9XLY7PkQngr5SXX29/JAjPsKeV754OIU7LCfSPbaQFL2w4b48yj6fPdABZ7wWQde8ZyCKPcC8FL0WYaW94PppPaiuAT4Al568V2aePVAYv7zacyM9MNrWPQB/LT0weAQ+4MbKPTDftT3Aq1w9MA4JPvD0tT1gsSA+IJvyPdjBAT5wACY+oEWrPfi2AT4A6HE9gP02PHAFFT5AGMK9AAKKu3ibAT4Apk2+AAk3PDCotT0Q9VK+AG08PQC+tT2A3dK9AKegO+ABLT3ggiq+mB/0PXTEbb6eJys9+CiEvERUuL2A9oE95e4PPhHOkb4TrA09OUOOPQbUbb6fyte9ZyCKPcC8FL0WYaW9CF0CvLKlKr2CW6K9ZAPtPN78gb5Yioq9bAG6PdrVkb5kiOa9BCJSvUhquL0ERia9GP5NPbTonL4eSJm9ZAPtPN78gb5Yioq9BCJSvUhquL0ERia9IC5dvaysjb36MHS8ckIyvQiBdb0EJVK9kGHvvYDkUrwwVgC+ULcMvgApvDtAqSe9+GEwvgDNujugcBO+mCJAviB3Mj2QIQ6+kOYdvgDKkD3AHx+92FMBvuDDMj2Axi49wM/KvZDskD2Au/49AAqFvaAQMz3ghGU+gBFLvQCZvzvQNWA+qUeDPVz3gb5THhU92wWvPTLjnL6SRe88prgKvRGgjb3W6jY9+CiEvERUuL2A9oE9QN6svQA8vjvAXu09gIJiu9xOdb38r4k9QEeKvIDwULzgpC4+oLwePfgNFT4AlFe8QBaMvHitFD5AI8C9gP02PHAFFT5AGMK9QMudvOD7FD4QPj2+AIZWPOC2FD4A9JK7EN2HPaAWFT5AM4w9cKmuvaDn8D0gIsK9EE3IvdDf8D3A/ga+YMnQvWBX3T0AnCC+iIEivhBxuD3A0OO9yDgOvnB9uD3Ak1e9gMpDvQD/8D0A9oM8sDiBPYjGFD4A5hI+AMpmPOCf3T2Q7T4+QJvevVCQuD2AVBY9AFQQO1Ae8T1Q/Cc+IH2MvaD/kD3Qj1s+gAgpvIAW8T2QDgI+wM/KvZDskD2Au/498MSgvTCjuD0gDwE+gJMsPWDuQT2gc0A+gBFLvQCZvzvQNWA+wEBFPYBkxzywKzM+MA4JPvD0tT1gsSA+IJvyPdjBAT5wACY+ACLbPPCFrj2gwkU+AAqFvaAQMz3ghGU+wEBFPYBkxzywKzM+4GsNvQA5VrzAzU8+YEg0PYCFcjyQjhk+gIJiu9xOdb38r4k9ePsFPkDzfD2wiRY+fCErPX5nKr3sAos9gKFyPMBhfD3g/0i+AAk3PDCotT0Q9VK+MAKLvYBCxjzQXSy++GEwvgDNujugcBO+mCJAviB3Mj2QIQ6+sHLEvVA5rj3Q4y2+AAKKu3ibAT4Apk2+YMnQvWBX3T0AnCC+MAKLvYBCxjzQXSy+AKegO+ABLT3ggiq+ZLIYPah8v7ySCKG9CF0CvLKlKr2CW6K9kGHvvYDkUrwwVgC+SOQNzAqt2JC/42bHmawIkJ/v7PuFXpDpuvDO/W2oi3Gf7+z7hV6Q6YkMMDQMrSZvMuAcuGKsmZDg1buhCq3YkJezgYu2p2uP5e+FuA2Y+Ixv9AVAW7TJRNfxsv8vX1rqQQy3MVOyh23sOBtf0F0k6bwh4FX///+/4fTER02m6yxF9jtVnKBXRMfGHMsXuUFWJNZSvtcvJRXHxhzLk8jAmgbtM6CMpWGHH14c5OwNrXETSeTJTxH6dO5JrrfVAhxvx8Ycy7yzj64Ds4CK////PzvyuGhdrNQD1KlpSQqSeCcDs4CKu6cvj9/1Y1uxAeDxx8Ycy8sNAxSqp0dA99xvgHGg2X4+qJOOvmvu5ILYF8hRdEDcEaCvtyJce8NLCf8Ss42MnyxGnRLuSa63g8U+5LWNjJ/RTUoMuKIvZPaqO4KzjYyfoT8IGLiiL2S0ZL0hFaQlPgjeuIG6gKFvrq46kcNSQEBFC66LVH6Ib5RephbxWx9D3hDtbS+0iIw/reOQL7SIjGRebRbte59vdl50Fg1MSWQKrSZvXT7VVzO2umvZL1tpe3EL6kEhxH4/iuYVQSHEfqyF3nYbRrA2yiUS6Zq7AQUwIZznWjLBaWmeg2DUTvs9RJ/NQkEhxH4Smu7L4rlcErWWE1E8vVwOkJcMVOK5XBL9q3VLuxB1FqFT2ezQG0bdS2N/3Y0fsw3fPlbn0BtG3XR9i+tI5A3M////v+DVu6EKrdiQn9tupIeskpDC57uaS6i/df7nR7IaZk4RSu2lwFNnMg8P2rG82LR/kgftxnBhhWwkt97MUJEJYYr079Sr4YIaG63rhq+DnRZWsdS1wMKoQ1DP1mrABZ4mPcfGHMtWqvlIsdS1wG8uLRat64avHW/lEQ3wv6zCd8oRYuKmQP///79koG9/n16eFrqAoW+urjqR7Xufby6t7ZCkAPgf36z7btfxsv8vX1rqOwGdH8muCm5lDO0yPK6ubokMMDRsXprpQQy3MdCyam28IeBVC60mb4ElWlpFXpjoWC9VT/tTuuSEOLxOXVG14nM/fDPWMiLj4FgnJfQXpuT4QhRRz64gqbZAsVT8rI+nhy+saw+f/bVBIcR+y5HsXSM0gWXwodpvQSHEfuGSXCaHL6xr3Z+IwLZAsVQbCbGMEUjFYrCt4m4NTElkCq0mbxZLb1WrVzHh0E3bWf///z+oQ1ZRFjc2GWphNEV1z2KNW2aILxvkC4eFfhH+vP5pzr5r7uTVxEPFhX4R/ofbd8ANXCPovBFDc75r7uRZ7bHVhX4R/lPxosBMXvHSRADZD+tSkdgdl3zIiUW02TEd+37GTmHM3ZdAxn1TecTMoEjATF7x0h7gP91RbrbZZKCquaNtHMZ1IPUMfVN5xFTS8d9PZj7MNaJYuHlbxL6LDaoSTF7x0jAA7g/uSa63nbWW1H1TecSIt/DMraFscMyz3IyEoUFy////P7iiL2T2qjuChKFBck+zhI2vl6WO7qeclXWWu5AzUkgUsZekjgBddQ1JpnY6bx+RhkmmdjpJllsvvaXRQAEnkIKRoAdET9JQgUmmdjp2Ha+BPKW+RmwvGIKNH7MNj5y0ZaUOsBdrVYvsjR+zDd8+VuelDrAXMqn7ab4Net4lcbTtkg9R3jdoQee+DXrejWFH5NAbRt1LY3/d4rlcEv2rdUsrvikRSKyRTVbFKA////+/psBFCv///7+AupkNMpcvUw==")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_lel7i")
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_6mmea"]
properties/0/path = NodePath(".:rotation")
properties/0/spawn = true
properties/0/replication_mode = 1
[node name="LeverPivot" type="Node3D"]
[node name="ButtonLogicImpulseLever" type="Timer" parent="." node_paths=PackedStringArray("interactBox")]
script = ExtResource("2_k0gfg")
interactBox = NodePath("../InteractBoxLever")
metadata/_custom_type_script = "uid://cjiiw7cybj24b"
[node name="InteractBoxLever" type="Area3D" parent="." node_paths=PackedStringArray("object")]
transform = Transform3D(0.951594, 0, -0.307357, 0, 1, 0, 0.307357, 0, 0.951595, -0.0501665, 0.260706, -0.0239434)
monitoring = false
script = ExtResource("1_6mmea")
object = NodePath("../ButtonLogicImpulseLever")
type = "minigame"
metadata/_custom_type_script = "uid://ymaax1x5fos3"
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractBoxLever"]
transform = Transform3D(0.954915, 0, 0.296857, 0, 1, 0, -0.296857, 0, 0.954917, 0.0749265, 0.0714111, 0.00196848)
shape = SubResource("BoxShape3D_opyex")
debug_color = Color(0.685703, 0.292897, 1, 0.42)
[node name="Lever" type="MeshInstance3D" parent="."]
transform = Transform3D(0.951594, 0, -0.307357, 0, 1, 0, 0.307357, 0, 0.951595, -0.0501665, 0.260706, -0.0239434)
mesh = SubResource("ArrayMesh_xqp54")
skeleton = NodePath("")
metadata/extras = {
"poliigon_props": {}
}
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_6mmea")

View File

@@ -0,0 +1,9 @@
[gd_resource type="NoiseTexture2D" load_steps=2 format=3 uid="uid://bw51s1b3tsawp"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_qcrta"]
noise_type = 5
seed = 69
frequency = 0.1
[resource]
noise = SubResource("FastNoiseLite_qcrta")

Some files were not shown because too many files have changed in this diff Show More