first
This commit is contained in:
BIN
Maps/Rooms/Generator/MainGenerator/Generator.png
Normal file
BIN
Maps/Rooms/Generator/MainGenerator/Generator.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 422 B |
40
Maps/Rooms/Generator/MainGenerator/Generator.png.import
Normal file
40
Maps/Rooms/Generator/MainGenerator/Generator.png.import
Normal 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
|
||||
436
Maps/Rooms/Generator/MainGenerator/Generator.tscn
Normal file
436
Maps/Rooms/Generator/MainGenerator/Generator.tscn
Normal file
File diff suppressed because one or more lines are too long
99
Maps/Rooms/Generator/MainGenerator/generator.gd
Normal file
99
Maps/Rooms/Generator/MainGenerator/generator.gd
Normal 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)
|
||||
1
Maps/Rooms/Generator/MainGenerator/generator.gd.uid
Normal file
1
Maps/Rooms/Generator/MainGenerator/generator.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://6loaamrfhwdc
|
||||
Reference in New Issue
Block a user