progress on launcher + map system
This commit is contained in:
parent
3a6fc03256
commit
050157d05e
18 changed files with 900 additions and 794 deletions
|
@ -21,7 +21,6 @@ config/icon="res://icon.png"
|
|||
[autoload]
|
||||
|
||||
Global="*res://src/Global.gd"
|
||||
Options="*res://src/Options.gd"
|
||||
DebugMenu="*res://addons/debug_menu/debug_menu.tscn"
|
||||
|
||||
[display]
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://dc8jcyubx5hv7"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dc8jcyubx5hv7"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/Launcher.gd" id="1_cf26g"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3sh54nbyqqiu" path="res://GFX/menu/launcher.jpg" id="2_6ldjf"]
|
||||
[ext_resource type="PackedScene" uid="uid://5ktmpg8aurb7" path="res://scenes/gui/Button.tscn" id="3_nah2s"]
|
||||
[ext_resource type="FontFile" uid="uid://xe31montgcoo" path="res://GFX/font/cour/Courier New.ttf" id="4_8vkjh"]
|
||||
|
||||
[node name="Launcher" type="Control"]
|
||||
layout_mode = 3
|
||||
|
@ -22,8 +23,24 @@ grow_horizontal = 2
|
|||
grow_vertical = 2
|
||||
texture = ExtResource("2_6ldjf")
|
||||
|
||||
[node name="Button" parent="." instance=ExtResource("3_nah2s")]
|
||||
offset_left = 267.0
|
||||
offset_top = 255.0
|
||||
offset_right = 417.0
|
||||
offset_bottom = 305.0
|
||||
[node name="Launch" parent="." instance=ExtResource("3_nah2s")]
|
||||
custom_minimum_size = Vector2(100, 30)
|
||||
offset_left = 520.0
|
||||
offset_top = 375.0
|
||||
offset_right = 620.0
|
||||
offset_bottom = 405.0
|
||||
border_size = 2
|
||||
font = ExtResource("4_8vkjh")
|
||||
text = "LAUNCH"
|
||||
text_size = 58
|
||||
|
||||
[node name="Exit" parent="." instance=ExtResource("3_nah2s")]
|
||||
custom_minimum_size = Vector2(100, 30)
|
||||
offset_left = 520.0
|
||||
offset_top = 430.0
|
||||
offset_right = 620.0
|
||||
offset_bottom = 460.0
|
||||
border_size = 2
|
||||
font = ExtResource("4_8vkjh")
|
||||
text = "EXIT"
|
||||
text_size = 58
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
[ext_resource type="Script" path="res://src/TempDebugCamera.gd" id="2_co6fy"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tvhkv"]
|
||||
sky_top_color = Color(0.483795, 0.593484, 0.746094, 1)
|
||||
sky_horizon_color = Color(0.615875, 0.658795, 0.726562, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_qyldw"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_tvhkv")
|
||||
|
@ -11,6 +13,7 @@ sky_material = SubResource("ProceduralSkyMaterial_tvhkv")
|
|||
[sub_resource type="Environment" id="Environment_d5g72"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_qyldw")
|
||||
sdfgi_use_occlusion = true
|
||||
|
||||
[node name="DynamicMap" type="Node3D"]
|
||||
script = ExtResource("1_mytgt")
|
||||
|
@ -22,3 +25,6 @@ environment = SubResource("Environment_d5g72")
|
|||
|
||||
[node name="Camera3D" type="Camera3D" parent="CameraPivot"]
|
||||
script = ExtResource("2_co6fy")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0)
|
||||
|
|
|
@ -21,6 +21,9 @@ func _ready():
|
|||
textLabel.add_theme_font_override("font", font)
|
||||
textLabel.add_theme_font_size_override("font_size", int(text_size * Global.menuScale))
|
||||
|
||||
setupSize.call_deferred()
|
||||
|
||||
func setupSize():
|
||||
background.position.x = border_size
|
||||
background.position.y = border_size
|
||||
background.size.x = background.size.x - border_size * 2
|
||||
|
@ -32,18 +35,16 @@ func _on_resized() -> void:
|
|||
func gotResized():
|
||||
textLabel.add_theme_font_size_override("font_size", int(text_size * Global.menuScale))
|
||||
|
||||
|
||||
func _on_hit_area_mouse_entered() -> void:
|
||||
hoverColor.visible = true
|
||||
|
||||
|
||||
func _on_hit_area_mouse_exited() -> void:
|
||||
hoverColor.visible = false
|
||||
|
||||
var pressedLastEvent = false
|
||||
func _on_hit_area_gui_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
if event.pressed and not pressedLastEvent:
|
||||
if event.button_index == 1 and event.pressed and not pressedLastEvent:
|
||||
pressedLastEvent = true
|
||||
Global.clickSound.play()
|
||||
clicked.emit()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
extends Node3D
|
||||
|
||||
var usableRooms = Dictionary()
|
||||
var roomTemplatesRaw = Dictionary()
|
||||
|
||||
func _ready() -> void:
|
||||
#RMesh.LoadRMesh(self, "GFX\\map\\gatea_opt.rmesh")
|
||||
|
@ -17,7 +17,781 @@ func _ready() -> void:
|
|||
if not roomInfo.has("mesh path"):
|
||||
print(room, roomInfo)
|
||||
continue
|
||||
usableRooms.get_or_add(room, roomInfo)
|
||||
roomTemplatesRaw.get_or_add(room, roomInfo)
|
||||
#RMesh.LoadRMesh(self, roomInfo["mesh path"])
|
||||
|
||||
CreateMap()
|
||||
|
||||
var I_Zone: MapZones = MapZones.new()
|
||||
var RandomSeed: String = ""
|
||||
|
||||
var MapWidth = Main.options.get("options").get("map size").to_int()
|
||||
var MapHeight = Main.options.get("options").get("map size").to_int()
|
||||
|
||||
const RoomScale = 8.0 / 2048.0
|
||||
const HideDistance = 15.0
|
||||
|
||||
var MapTemp = Utils.Init2DArray(MapWidth + 1, MapHeight + 1, 0)
|
||||
var MapFound = Utils.Init2DArray(MapWidth + 1, MapHeight + 1, 0)
|
||||
|
||||
const ZONEAMOUNT = 3
|
||||
|
||||
const ROOM1 = 1
|
||||
const ROOM2 = 2
|
||||
const ROOM2C = 3
|
||||
const ROOM3 = 4
|
||||
const ROOM4 = 5
|
||||
|
||||
var MapRoom: Array
|
||||
var MapName = Utils.Init2DArray(MapWidth, MapHeight, "")
|
||||
var MapRoomID = Utils.Init1DArray(ROOM4 + 1, 0)
|
||||
|
||||
func GetZone(y):
|
||||
return min(floor((float(MapWidth - y) / MapWidth * ZONEAMOUNT)), ZONEAMOUNT -1)
|
||||
|
||||
func SetRoom(room_name, room_type, pos, min_pos, max_pos): # place a room without overwriting others
|
||||
if max_pos < min_pos:
|
||||
print(str("Can't place ", room_name))
|
||||
return false
|
||||
|
||||
print(str("--- SETROOM: ", room_name.to_upper(), " ---"))
|
||||
var looped = false
|
||||
var can_place = true
|
||||
|
||||
while MapRoom[room_type][pos] != "":
|
||||
print(str("found ", MapRoom[room_type][pos]))
|
||||
pos = pos + 1
|
||||
if pos > max_pos:
|
||||
if not looped:
|
||||
pos = min_pos + 1
|
||||
looped = true
|
||||
else:
|
||||
can_place = false
|
||||
break
|
||||
|
||||
print(str(room_name, " ", pos))
|
||||
if can_place:
|
||||
print("--------------")
|
||||
MapRoom[room_type][pos] = room_name
|
||||
return true
|
||||
else:
|
||||
print(str("couldn't place ", room_name))
|
||||
return false
|
||||
|
||||
func CreateMap():
|
||||
print(str("Generating a map using the seed ", RandomSeed))
|
||||
|
||||
I_Zone.Transition[0] = 13
|
||||
I_Zone.Transition[1] = 7
|
||||
I_Zone.HasCustomForest = false
|
||||
I_Zone.HasCustomMT = false
|
||||
|
||||
var x: float
|
||||
var y: float
|
||||
var temp: float
|
||||
#var i: float
|
||||
var tempheight: float
|
||||
var x2: float
|
||||
#var y2: float
|
||||
var width: float
|
||||
var height: float
|
||||
|
||||
var zone: float
|
||||
|
||||
Main.SeedRnd = Utils.GenerateSeedNumber(RandomSeed)
|
||||
|
||||
x = floor(MapWidth / 2)
|
||||
y = MapHeight - 2 # Rand(3, 5)
|
||||
|
||||
for i1 in range(y, MapHeight - 1):
|
||||
MapTemp[x][i1] = 1
|
||||
|
||||
while y < 2:
|
||||
width = randi_range(10, 15)
|
||||
|
||||
if x > MapWidth * 0.6:
|
||||
width = -width
|
||||
elif x > MapWidth * 0.4:
|
||||
x = x - width / 2
|
||||
|
||||
# make sure the hallway doesn't go outside the array
|
||||
if x + width > MapWidth - 3:
|
||||
#x = -width+MapWidth-4
|
||||
width = MapWidth - 3 - x
|
||||
elif x + width < 2:
|
||||
#x = 3-width
|
||||
width = -x + 2
|
||||
|
||||
x = min(x, x + width)
|
||||
width = abs(width)
|
||||
for i1 in range(x, x + width):
|
||||
MapTemp[min(i1, MapWidth)][y] = 1
|
||||
|
||||
height = randi_range(3, 4)
|
||||
if y - height < 1:
|
||||
height = y - 1
|
||||
|
||||
var yhallways = randi_range(4, 5)
|
||||
|
||||
if GetZone(y - height) != GetZone(y - height + 1):
|
||||
height = height - 1
|
||||
|
||||
#For i = 1 To yhallways
|
||||
for i in range(1, yhallways):
|
||||
x2 = max(min(randi_range(x, x + width - 1),MapWidth - 2), 2)
|
||||
while MapTemp[x2][y - 1] or MapTemp[x2 - 1][y - 1] or MapTemp[x2 + 1][y - 1]:
|
||||
x2 = x2 + 1
|
||||
|
||||
if x2 < x + width:
|
||||
if i == 1:
|
||||
tempheight = height
|
||||
if randi_range(1, 2) == 1:
|
||||
x2 = x
|
||||
else:
|
||||
x2 = x + width
|
||||
else:
|
||||
tempheight = randi_range(1, height)
|
||||
|
||||
for y2 in range(y - tempheight, y):
|
||||
if GetZone(y2) != GetZone(y2 + 1): # a room leading from zone to another
|
||||
MapTemp[x2][y2] = 255
|
||||
else:
|
||||
MapTemp[x2][y2] = 1
|
||||
if tempheight == height:
|
||||
temp = x2
|
||||
x = temp
|
||||
y = y - height
|
||||
|
||||
var ZoneAmount = 3
|
||||
var Room1Amount = Utils.Init1DArray(3, 0)
|
||||
var Room2Amount = Utils.Init1DArray(3, 0)
|
||||
var Room2CAmount = Utils.Init1DArray(3, 0)
|
||||
var Room3Amount = Utils.Init1DArray(3, 0)
|
||||
var Room4Amount = Utils.Init1DArray(3, 0)
|
||||
|
||||
# count the amount of rooms
|
||||
#For y = 1 To MapHeight - 1
|
||||
for y1 in range(1, MapHeight - 1):
|
||||
zone = GetZone(y)
|
||||
|
||||
for x1 in range(1, MapWidth - 1):
|
||||
if MapTemp[x1][y1] > 0:
|
||||
temp = min(MapTemp[x1 + 1][y1], 1) + min(MapTemp[x1 - 1][y1], 1)
|
||||
temp = temp + min(MapTemp[x1][y1 + 1], 1) + min(MapTemp[x1][y1 - 1], 1)
|
||||
if MapTemp[x1][y1] < 255:
|
||||
MapTemp[x1][y1] = temp
|
||||
match MapTemp[x1][y1]:
|
||||
1:
|
||||
Room1Amount[zone] = Room1Amount[zone] +1
|
||||
2:
|
||||
if min(MapTemp[x1 + 1][y1], 1) + min(MapTemp[x1 - 1][y1], 1) == 2:
|
||||
Room2Amount[zone] = Room2Amount[zone] + 1
|
||||
elif min(MapTemp[x1][y1 + 1], 1) + min(MapTemp[x1][y1 - 1], 1) == 2:
|
||||
Room2Amount[zone] = Room2Amount[zone] + 1
|
||||
else:
|
||||
Room2CAmount[zone] = Room2CAmount[zone] + 1
|
||||
3:
|
||||
Room3Amount[zone] = Room3Amount[zone] + 1
|
||||
4:
|
||||
Room4Amount[zone] = Room4Amount[zone] + 1
|
||||
|
||||
# force more room1s (if needed)
|
||||
for i in range(0, 2):
|
||||
# need more rooms if there are less than 5 of them
|
||||
temp = -Room1Amount[i] + 5
|
||||
var y2 = 0
|
||||
|
||||
var placed = false
|
||||
|
||||
if temp > 0:
|
||||
for y1 in range((MapHeight/ZoneAmount) * (2 - i) + 1, ((MapHeight/ZoneAmount) * ((2 - i) + 1.0)) - 2):
|
||||
for x1 in range(2, MapWidth - 2):
|
||||
if MapTemp[x1][y1] == 0:
|
||||
if (min(MapTemp[x1 + 1][y], 1) + min(MapTemp[x1 - 1][y1], 1) + min(MapTemp[x1][y1 + 1], 1) + min(MapTemp[x1][y1 - 1], 1)) == 1:
|
||||
#If Rand(4)=1 Then
|
||||
if MapTemp[x1 + 1][y]:
|
||||
x2 = x1 + 1
|
||||
y2 = y1
|
||||
elif MapTemp[x - 1][y]:
|
||||
x2 = x1 - 1
|
||||
y2 = y1
|
||||
elif MapTemp[x][y + 1]:
|
||||
x2 = x1
|
||||
y2 = y1 + 1
|
||||
elif MapTemp[x][y-1]:
|
||||
x2 = x1
|
||||
y2 = y1 - 1
|
||||
|
||||
placed = false
|
||||
if MapTemp[x2][y2] > 1 and MapTemp[x2][y2] < 4:
|
||||
match MapTemp[x2][y2]:
|
||||
2:
|
||||
if min(MapTemp[x2 + 1][y2], 1) + min(MapTemp[x2 - 1][y2], 1) == 2:
|
||||
Room2Amount[i] = Room2Amount[i] - 1
|
||||
Room3Amount[i] = Room3Amount[i] + 1
|
||||
placed = true
|
||||
elif min(MapTemp[x2][y2 + 1], 1) + min(MapTemp[x2][y2 - 1], 1) == 2:
|
||||
Room2Amount[i] = Room2Amount[i] - 1
|
||||
Room3Amount[i] = Room3Amount[i] + 1
|
||||
placed = true
|
||||
3:
|
||||
Room3Amount[i] = Room3Amount[i] - 1
|
||||
Room4Amount[i] = Room4Amount[i] + 1
|
||||
placed = true
|
||||
|
||||
if placed:
|
||||
MapTemp[x2][y2] == MapTemp[x2][y2] + 1
|
||||
MapTemp[x1][y1] = 1
|
||||
Room1Amount[i] = Room1Amount[i] + 1
|
||||
|
||||
temp = temp - 1
|
||||
if temp == 0:
|
||||
break
|
||||
if temp == 0:
|
||||
break
|
||||
|
||||
# force more room4s and room2Cs
|
||||
for i in range(0, 2):
|
||||
var temp2 = 0
|
||||
match i:
|
||||
2:
|
||||
zone = 2
|
||||
temp2 = MapHeight / 3 #-1
|
||||
1:
|
||||
zone = MapHeight / 3 + 1
|
||||
temp2 = MapHeight * (2.0 / 3.0) - 1
|
||||
0:
|
||||
zone = MapHeight * (2.0 / 3.0) + 1
|
||||
temp2 = MapHeight - 2
|
||||
if Room4Amount[i] < 1: # we want at least 1 ROOM4
|
||||
print(str("forcing a ROOM4 into zone ", i))
|
||||
temp = 0
|
||||
|
||||
for y1 in range(zone, temp2):
|
||||
for x1 in range(2, MapWidth - 2):
|
||||
if MapTemp[x1][y1] == 3:
|
||||
if not (MapTemp[x1+1][y1] or MapTemp[x1+1][y1+1] or MapTemp[x1+1][y1-1] or MapTemp[x1+2][y1]):
|
||||
MapTemp[x1+1][y1] = 1
|
||||
temp = 1
|
||||
elif not (MapTemp[x1-1][y1] or MapTemp[x1-1][y1+1] or MapTemp[x1-1][y1-1] or MapTemp[x1-2][y1]):
|
||||
MapTemp[x1-1][y1] = 1
|
||||
temp = 1
|
||||
elif not (MapTemp[x1][y1+1] or MapTemp[x1+1][y1+1] or MapTemp[x1-1][y1+1] or MapTemp[x1][y1+2]):
|
||||
MapTemp[x1][y1+1] = 1
|
||||
temp = 1
|
||||
elif not (MapTemp[x1][y1-1] or MapTemp[x1+1][y1-1] or MapTemp[x1-1][y1-1] or MapTemp[x1][y1-2]):
|
||||
MapTemp[x1][y1-1] = 1
|
||||
temp = 1
|
||||
|
||||
if temp == 1:
|
||||
MapTemp[x1][y1] = 4 # turn this room into a ROOM4
|
||||
print(str("ROOM4 forced into slot (", x1, ", ", y1, ")"))
|
||||
Room4Amount[i] = Room4Amount[i] + 1
|
||||
Room3Amount[i] = Room3Amount[i] - 1
|
||||
Room1Amount[i] = Room1Amount[i] + 1
|
||||
if temp == 1:
|
||||
break
|
||||
if temp == 1:
|
||||
break
|
||||
if temp == 0:
|
||||
print(str("Couldn't place ROOM4 in zone ", i))
|
||||
if Room2CAmount[i] < 1: #we want at least 1 ROOM2C
|
||||
print(str("forcing a ROOM2C into zone ", i))
|
||||
temp = 0
|
||||
|
||||
zone = zone + 1
|
||||
temp2 = temp2 - 1
|
||||
|
||||
#For y = zone To temp2
|
||||
#For x = 3 To MapWidth - 3
|
||||
#If MapTemp(x,y)=1 Then
|
||||
#Select True ;see if adding some rooms is possible
|
||||
#Case MapTemp(x-1,y)>0
|
||||
#If (MapTemp(x,y-1)+MapTemp(x,y+1)+MapTemp(x+2,y))=0 Then
|
||||
#If (MapTemp(x+1,y-2)+MapTemp(x+2,y-1)+MapTemp(x+1,y-1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x+1,y)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x+1)+", "+(y)+")"
|
||||
#MapTemp(x+1,y-1)=1
|
||||
#temp=1
|
||||
#Else If (MapTemp(x+1,y+2)+MapTemp(x+2,y+1)+MapTemp(x+1,y+1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x+1,y)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x+1)+", "+(y)+")"
|
||||
#MapTemp(x+1,y+1)=1
|
||||
#temp=1
|
||||
#EndIf
|
||||
#EndIf
|
||||
#Case MapTemp(x+1,y)>0
|
||||
#If (MapTemp(x,y-1)+MapTemp(x,y+1)+MapTemp(x-2,y))=0 Then
|
||||
#If (MapTemp(x-1,y-2)+MapTemp(x-2,y-1)+MapTemp(x-1,y-1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x-1,y)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x-1)+", "+(y)+")"
|
||||
#MapTemp(x-1,y-1)=1
|
||||
#temp=1
|
||||
#Else If (MapTemp(x-1,y+2)+MapTemp(x-2,y+1)+MapTemp(x-1,y+1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x-1,y)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x-1)+", "+(y)+")"
|
||||
#MapTemp(x-1,y+1)=1
|
||||
#temp=1
|
||||
#EndIf
|
||||
#EndIf
|
||||
#Case MapTemp(x,y-1)>0
|
||||
#If (MapTemp(x-1,y)+MapTemp(x+1,y)+MapTemp(x,y+2))=0 Then
|
||||
#If (MapTemp(x-2,y+1)+MapTemp(x-1,y+2)+MapTemp(x-1,y+1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x,y+1)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x)+", "+(y+1)+")"
|
||||
#MapTemp(x-1,y+1)=1
|
||||
#temp=1
|
||||
#Else If (MapTemp(x+2,y+1)+MapTemp(x+1,y+2)+MapTemp(x+1,y+1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x,y+1)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x)+", "+(y+1)+")"
|
||||
#MapTemp(x+1,y+1)=1
|
||||
#temp=1
|
||||
#EndIf
|
||||
#EndIf
|
||||
#Case MapTemp(x,y+1)>0
|
||||
#If (MapTemp(x-1,y)+MapTemp(x+1,y)+MapTemp(x,y-2))=0 Then
|
||||
#If (MapTemp(x-2,y-1)+MapTemp(x-1,y-2)+MapTemp(x-1,y-1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x,y-1)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x)+", "+(y-1)+")"
|
||||
#MapTemp(x-1,y-1)=1
|
||||
#temp=1
|
||||
#Else If (MapTemp(x+2,y-1)+MapTemp(x+1,y-2)+MapTemp(x+1,y-1))=0 Then
|
||||
#MapTemp(x,y)=2
|
||||
#MapTemp(x,y-1)=2
|
||||
#DebugLog "ROOM2C forced into slot ("+(x)+", "+(y-1)+")"
|
||||
#MapTemp(x+1,y-1)=1
|
||||
#temp=1
|
||||
#EndIf
|
||||
#EndIf
|
||||
#End Select
|
||||
#If temp=1 Then
|
||||
#Room2CAmount[i]=Room2CAmount[i]+1
|
||||
#Room2Amount[i]=Room2Amount[i]+1
|
||||
#EndIf
|
||||
#EndIf
|
||||
#If temp=1 Then Exit
|
||||
#Next
|
||||
#If temp=1 Then Exit
|
||||
#Next
|
||||
#
|
||||
#If temp=0 Then DebugLog "Couldn't place ROOM2C in zone "+i
|
||||
#EndIf
|
||||
#
|
||||
#Next
|
||||
|
||||
var MaxRooms = 55 * MapWidth / 20
|
||||
MaxRooms = max(MaxRooms, Room1Amount[0] + Room1Amount[1] + Room1Amount[2] + 1)
|
||||
MaxRooms = max(MaxRooms, Room2Amount[0] + Room2Amount[1] + Room2Amount[2] + 1)
|
||||
MaxRooms = max(MaxRooms, Room2CAmount[0] + Room2CAmount[1] + Room2CAmount[2] + 1)
|
||||
MaxRooms = max(MaxRooms, Room3Amount[0] + Room3Amount[1] + Room3Amount[2] + 1)
|
||||
MaxRooms = max(MaxRooms, Room4Amount[0] + Room4Amount[1] + Room4Amount[2] + 1)
|
||||
MapRoom = Utils.Init2DArray(ROOM4 + 1, MaxRooms)
|
||||
|
||||
# zone 1 --------------------------------------------------------------------------------------------------
|
||||
|
||||
var min_pos = 1
|
||||
var max_pos = Room1Amount[0] - 1
|
||||
|
||||
MapRoom[ROOM1][0] = "start"
|
||||
SetRoom("roompj", ROOM1, floor(0.1 * float(Room1Amount[0])), min_pos,max_pos)
|
||||
SetRoom("914", ROOM1, floor(0.3 * float(Room1Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room1archive",ROOM1,floor(0.5 * float(Room1Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room205", ROOM1, floor(0.6 * float(Room1Amount[0])), min_pos, max_pos)
|
||||
|
||||
MapRoom[ROOM2C][0] = "lockroom"
|
||||
min_pos = 1
|
||||
max_pos = Room2Amount[0]-1
|
||||
|
||||
MapRoom[ROOM2][0] = "room2closets"
|
||||
SetRoom("room2testroom2", ROOM2, floor(0.1 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2scps", ROOM2, floor(0.2 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2storage", ROOM2, floor(0.3 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2gw_b", ROOM2, floor(0.4 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2sl", ROOM2, floor(0.5 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room012", ROOM2, floor(0.55 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2scps2", ROOM2, floor(0.6 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room1123", ROOM2, floor(0.7 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
SetRoom("room2elevator", ROOM2, floor(0.85 * float(Room2Amount[0])), min_pos, max_pos)
|
||||
|
||||
MapRoom[ROOM3][floor(randf_range(0.2, 0.8) * float(Room3Amount[0]))] = "room3storage"
|
||||
|
||||
MapRoom[ROOM2C][floor(0.5 * float(Room2CAmount[0]))] = "room1162"
|
||||
|
||||
MapRoom[ROOM4][floor(0.3 * float(Room4Amount[0]))] = "room4info"
|
||||
|
||||
# zone 2 --------------------------------------------------------------------------------------------------
|
||||
|
||||
min_pos = Room1Amount[0]
|
||||
max_pos = Room1Amount[0] + Room1Amount[1] - 1
|
||||
|
||||
SetRoom("room079", ROOM1, Room1Amount[0] + floor(0.15 * float(Room1Amount[1])), min_pos, max_pos)
|
||||
SetRoom("room106", ROOM1, Room1Amount[0] + floor(0.3 * float(Room1Amount[1])), min_pos, max_pos)
|
||||
SetRoom("008", ROOM1, Room1Amount[0] + floor(0.4 * float(Room1Amount[1])), min_pos, max_pos)
|
||||
SetRoom("room035", ROOM1, Room1Amount[0] + floor(0.5 * float(Room1Amount[1])), min_pos, max_pos)
|
||||
SetRoom("coffin", ROOM1, Room1Amount[0] + floor(0.7 * float(Room1Amount[1])), min_pos, max_pos)
|
||||
|
||||
min_pos = Room2Amount[0]
|
||||
max_pos = Room2Amount[0] + Room2Amount[1] - 1
|
||||
|
||||
MapRoom[ROOM2][Room2Amount[0] + floor(0.1 * float(Room2Amount[1]))] = "room2nuke"
|
||||
SetRoom("room2tunnel", ROOM2, Room2Amount[0] + floor(0.25 * float(Room2Amount[1])), min_pos, max_pos)
|
||||
SetRoom("room049", ROOM2, Room2Amount[0] + floor(0.4 * float(Room2Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room2shaft",ROOM2,Room2Amount[0] + floor(0.6 * float(Room2Amount[1])), min_pos, max_pos)
|
||||
SetRoom("testroom", ROOM2, Room2Amount[0] + floor(0.7 * float(Room2Amount[1])), min_pos, max_pos)
|
||||
SetRoom("room2servers", ROOM2, Room2Amount[0] + floor(0.9 * Room2Amount[1]), min_pos, max_pos)
|
||||
|
||||
MapRoom[ROOM3][Room3Amount[0] + floor(0.3 * float(Room3Amount[1]))] = "room513"
|
||||
MapRoom[ROOM3][Room3Amount[0] + floor(0.6 * float(Room3Amount[1]))] = "room966"
|
||||
|
||||
MapRoom[ROOM2C][Room2CAmount[0] + floor(0.5 * float(Room2CAmount[1]))] = "room2cpit"
|
||||
|
||||
# zone 3 --------------------------------------------------------------------------------------------------
|
||||
|
||||
MapRoom[ROOM1][Room1Amount[0] + Room1Amount[1] + Room1Amount[2] - 2] = "exit1"
|
||||
MapRoom[ROOM1][Room1Amount[0] + Room1Amount[1] + Room1Amount[2] - 1] = "gateaentrance"
|
||||
MapRoom[ROOM1][Room1Amount[0] + Room1Amount[1]] = "room1lifts"
|
||||
|
||||
min_pos = Room2Amount[0] + Room2Amount[1]
|
||||
max_pos = Room2Amount[0] + Room2Amount[1]+Room2Amount[2] - 1
|
||||
|
||||
MapRoom[ROOM2][min_pos + floor(0.1 * float(Room2Amount[2]))] = "room2poffices"
|
||||
SetRoom("room2cafeteria", ROOM2, min_pos + floor(0.2 * float(Room2Amount[2])), min_pos, max_pos)
|
||||
SetRoom("room2sroom", ROOM2, min_pos + floor(0.3 * float(Room2Amount[2])), min_pos, max_pos)
|
||||
SetRoom("room2servers2", ROOM2, min_pos + floor(0.4 * Room2Amount[2]), min_pos, max_pos)
|
||||
SetRoom("room2offices", ROOM2, min_pos + floor(0.45 * Room2Amount[2]), min_pos, max_pos)
|
||||
SetRoom("room2offices4", ROOM2, min_pos + floor(0.5 * Room2Amount[2]), min_pos, max_pos)
|
||||
SetRoom("room860", ROOM2, min_pos + floor(0.6 * Room2Amount[2]), min_pos, max_pos)
|
||||
SetRoom("medibay", ROOM2, min_pos + floor(0.7 * float(Room2Amount[2])), min_pos, max_pos)
|
||||
SetRoom("room2poffices2", ROOM2, min_pos + floor(0.8 * Room2Amount[2]), min_pos, max_pos)
|
||||
SetRoom("room2offices2", ROOM2, min_pos + floor(0.9 * float(Room2Amount[2])), min_pos, max_pos)
|
||||
|
||||
MapRoom[ROOM2C][Room2CAmount[0] + Room2CAmount[1]] = "room2ccont"
|
||||
MapRoom[ROOM2C][Room2CAmount[0] + Room2CAmount[1] + 1] = "lockroom2"
|
||||
|
||||
MapRoom[ROOM3][Room3Amount[0] + Room3Amount[1] + floor(0.3 * float(Room3Amount[2]))] = "room3servers"
|
||||
MapRoom[ROOM3][Room3Amount[0] + Room3Amount[1] + floor(0.7 * float(Room3Amount[2]))] = "room3servers2"
|
||||
#MapRoom(ROOM3, Room3Amount[0]+Room3Amount[1]) = "room3gw"
|
||||
MapRoom[ROOM3][Room3Amount[0] + Room3Amount[1] + floor(0.5 * float(Room3Amount[2]))] = "room3offices"
|
||||
|
||||
print(MapRoom)
|
||||
|
||||
#----------------------- creating the map --------------------------------
|
||||
|
||||
#temp = 0
|
||||
#Local r.Rooms, spacing# = 8.0
|
||||
#For y = MapHeight - 1 To 1 Step - 1
|
||||
#
|
||||
#;zone% = GetZone(y)
|
||||
#
|
||||
#If y < MapHeight/3+1 Then
|
||||
#zone=3
|
||||
#ElseIf y < MapHeight*(2.0/3.0);-1
|
||||
#zone=2
|
||||
#Else
|
||||
#zone=1
|
||||
#EndIf
|
||||
#
|
||||
#For x = 1 To MapWidth - 2
|
||||
#If MapTemp(x, y) = 255 Then
|
||||
#If y>MapHeight/2 Then ;zone = 2
|
||||
#r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, "checkpoint1")
|
||||
#Else ;If zone = 3
|
||||
#r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, "checkpoint2")
|
||||
#EndIf
|
||||
#ElseIf MapTemp(x, y) > 0
|
||||
#
|
||||
#temp = Min(MapTemp(x + 1, y),1) + Min(MapTemp(x - 1, y),1) + Min(MapTemp(x, y + 1),1) + Min(MapTemp(x, y - 1),1)
|
||||
#
|
||||
#Select temp ;viereisiss<73> ruuduissa olevien huoneiden m<><6D>r<EFBFBD>
|
||||
#Case 1
|
||||
#If MapRoomID(ROOM1) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM1, MapRoomID(ROOM1)) <> "" Then MapName(x, y) = MapRoom(ROOM1, MapRoomID(ROOM1))
|
||||
#EndIf
|
||||
#
|
||||
#r = CreateRoom(zone, ROOM1, x * 8, 0, y * 8, MapName(x, y))
|
||||
#If MapTemp(x, y + 1) Then
|
||||
#r\angle = 180
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#ElseIf MapTemp(x - 1, y)
|
||||
#r\angle = 270
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#ElseIf MapTemp(x + 1, y)
|
||||
#r\angle = 90
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#Else
|
||||
#r\angle = 0
|
||||
#End If
|
||||
#MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
#Case 2
|
||||
#If MapTemp(x - 1, y)>0 And MapTemp(x + 1, y)>0 Then
|
||||
#If MapRoomID(ROOM2) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM2, MapRoomID(ROOM2)) <> "" Then MapName(x, y) = MapRoom(ROOM2, MapRoomID(ROOM2))
|
||||
#EndIf
|
||||
#r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, MapName(x, y))
|
||||
#If Rand(2) = 1 Then r\angle = 90 Else r\angle = 270
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#MapRoomID(ROOM2)=MapRoomID(ROOM2)+1
|
||||
#ElseIf MapTemp(x, y - 1)>0 And MapTemp(x, y + 1)>0
|
||||
#If MapRoomID(ROOM2) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM2, MapRoomID(ROOM2)) <> "" Then MapName(x, y) = MapRoom(ROOM2, MapRoomID(ROOM2))
|
||||
#EndIf
|
||||
#r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, MapName(x, y))
|
||||
#If Rand(2) = 1 Then r\angle = 180 Else r\angle = 0
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#MapRoomID(ROOM2)=MapRoomID(ROOM2)+1
|
||||
#Else
|
||||
#If MapRoomID(ROOM2C) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM2C, MapRoomID(ROOM2C)) <> "" Then MapName(x, y) = MapRoom(ROOM2C, MapRoomID(ROOM2C))
|
||||
#EndIf
|
||||
#
|
||||
#If MapTemp(x - 1, y)>0 And MapTemp(x, y + 1)>0 Then
|
||||
#r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
#r\angle = 180
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#ElseIf MapTemp(x + 1, y)>0 And MapTemp(x, y + 1)>0
|
||||
#r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
#r\angle = 90
|
||||
#TurnEntity(r\obj, 0, r\angle, 0)
|
||||
#ElseIf MapTemp(x - 1, y)>0 And MapTemp(x, y - 1)>0
|
||||
#r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
#TurnEntity(r\obj, 0, 270, 0)
|
||||
#r\angle = 270
|
||||
#Else
|
||||
#r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
#EndIf
|
||||
#MapRoomID(ROOM2C)=MapRoomID(ROOM2C)+1
|
||||
#EndIf
|
||||
#Case 3
|
||||
#If MapRoomID(ROOM3) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM3, MapRoomID(ROOM3)) <> "" Then MapName(x, y) = MapRoom(ROOM3, MapRoomID(ROOM3))
|
||||
#EndIf
|
||||
#
|
||||
#r = CreateRoom(zone, ROOM3, x * 8, 0, y * 8, MapName(x, y))
|
||||
#If (Not MapTemp(x, y - 1)) Then
|
||||
#TurnEntity(r\obj, 0, 180, 0)
|
||||
#r\angle = 180
|
||||
#ElseIf (Not MapTemp(x - 1, y))
|
||||
#TurnEntity(r\obj, 0, 90, 0)
|
||||
#r\angle = 90
|
||||
#ElseIf (Not MapTemp(x + 1, y))
|
||||
#TurnEntity(r\obj, 0, -90, 0)
|
||||
#r\angle = 270
|
||||
#End If
|
||||
#MapRoomID(ROOM3)=MapRoomID(ROOM3)+1
|
||||
#Case 4
|
||||
#If MapRoomID(ROOM4) < MaxRooms And MapName(x,y) = "" Then
|
||||
#If MapRoom(ROOM4, MapRoomID(ROOM4)) <> "" Then MapName(x, y) = MapRoom(ROOM4, MapRoomID(ROOM4))
|
||||
#EndIf
|
||||
#
|
||||
#r = CreateRoom(zone, ROOM4, x * 8, 0, y * 8, MapName(x, y))
|
||||
#MapRoomID(ROOM4)=MapRoomID(ROOM4)+1
|
||||
#End Select
|
||||
#
|
||||
#EndIf
|
||||
#
|
||||
#Next
|
||||
#Next
|
||||
#
|
||||
#r = CreateRoom(0, ROOM1, (MapWidth-1) * 8, 500, 8, "gatea")
|
||||
#MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
#
|
||||
#r = CreateRoom(0, ROOM1, (MapWidth-1) * 8, 0, (MapHeight-1) * 8, "pocketdimension")
|
||||
#MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
#
|
||||
#If IntroEnabled
|
||||
#r = CreateRoom(0, ROOM1, 8, 0, (MapHeight-1) * 8, "173")
|
||||
#MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
#EndIf
|
||||
#
|
||||
#r = CreateRoom(0, ROOM1, 8, 800, 0, "dimension1499")
|
||||
#MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
#
|
||||
#For r.Rooms = Each Rooms
|
||||
#PreventRoomOverlap(r)
|
||||
#Next
|
||||
#
|
||||
#If 0 Then
|
||||
#Repeat
|
||||
#Cls
|
||||
#For x = 0 To MapWidth - 1
|
||||
#For y = 0 To MapHeight - 1
|
||||
#If MapTemp(x, y) = 0 Then
|
||||
#
|
||||
#zone=GetZone(y)
|
||||
#
|
||||
#Color 50*zone, 50*zone, 50*zone
|
||||
#Rect(x * 32, y * 32, 30, 30)
|
||||
#Else
|
||||
#If MapTemp(x, y) = 255 Then
|
||||
#Color 0,200,0
|
||||
#Else If MapTemp(x,y)=4 Then
|
||||
#Color 50,50,255
|
||||
#Else If MapTemp(x,y)=3 Then
|
||||
#Color 50,255,255
|
||||
#Else If MapTemp(x,y)=2 Then
|
||||
#Color 255,255,50
|
||||
#Else
|
||||
#Color 255, 255, 255
|
||||
#EndIf
|
||||
#Rect(x * 32, y * 32, 30, 30)
|
||||
#End If
|
||||
#Next
|
||||
#Next
|
||||
#
|
||||
#For x = 0 To MapWidth - 1
|
||||
#For y = 0 To MapHeight - 1
|
||||
#
|
||||
#If MouseX()>x*32 And MouseX()<x*32+32 Then
|
||||
#If MouseY()>y*32 And MouseY()<y*32+32 Then
|
||||
#Color 255, 0, 0
|
||||
#Else
|
||||
#Color 200, 200, 200
|
||||
#EndIf
|
||||
#Else
|
||||
#Color 200, 200, 200
|
||||
#EndIf
|
||||
#
|
||||
#If MapTemp(x, y) > 0 Then
|
||||
#Text x * 32 +2, (y) * 32 + 2,MapTemp(x, y) +" "+ MapName(x,y)
|
||||
#End If
|
||||
#Next
|
||||
#Next
|
||||
#
|
||||
#Flip
|
||||
#Until KeyHit(28)
|
||||
#EndIf
|
||||
#
|
||||
#
|
||||
#For y = 0 To MapHeight
|
||||
#For x = 0 To MapWidth
|
||||
#MapTemp(x, y) = Min(MapTemp(x, y),1)
|
||||
#Next
|
||||
#Next
|
||||
#
|
||||
#Local d.Doors
|
||||
#Local shouldSpawnDoor%
|
||||
#For y = MapHeight To 0 Step -1
|
||||
#
|
||||
#If y<I_Zone\Transition[1]-1 Then
|
||||
#zone=3
|
||||
#ElseIf y>=I_Zone\Transition[1]-1 And y<I_Zone\Transition[0]-1 Then
|
||||
#zone=2
|
||||
#Else
|
||||
#zone=1
|
||||
#EndIf
|
||||
#
|
||||
#For x = MapWidth To 0 Step -1
|
||||
#If MapTemp(x,y) > 0 Then
|
||||
#If zone = 2 Then temp=2 Else temp=0
|
||||
#
|
||||
#For r.Rooms = Each Rooms
|
||||
#r\angle = WrapAngle(r\angle)
|
||||
#If Int(r\x/8.0)=x And Int(r\z/8.0)=y Then
|
||||
#shouldSpawnDoor = False
|
||||
#Select r\RoomTemplate\Shape
|
||||
#Case ROOM1
|
||||
#If r\angle=90
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM2
|
||||
#If r\angle=90 Or r\angle=270
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM2C
|
||||
#If r\angle=0 Or r\angle=90
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM3
|
||||
#If r\angle=0 Or r\angle=180 Or r\angle=90
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Default
|
||||
#shouldSpawnDoor = True
|
||||
#End Select
|
||||
#If shouldSpawnDoor
|
||||
#If (x+1)<(MapWidth+1)
|
||||
#If MapTemp(x + 1, y) > 0 Then
|
||||
#d.Doors = CreateDoor(r\zone, Float(x) * spacing + spacing / 2.0, 0, Float(y) * spacing, 90, r, Max(Rand(-3, 1), 0), temp)
|
||||
#r\AdjDoor[0] = d
|
||||
#EndIf
|
||||
#EndIf
|
||||
#EndIf
|
||||
#
|
||||
#shouldSpawnDoor = False
|
||||
#Select r\RoomTemplate\Shape
|
||||
#Case ROOM1
|
||||
#If r\angle=180
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM2
|
||||
#If r\angle=0 Or r\angle=180
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM2C
|
||||
#If r\angle=180 Or r\angle=90
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Case ROOM3
|
||||
#If r\angle=180 Or r\angle=90 Or r\angle=270
|
||||
#shouldSpawnDoor = True
|
||||
#EndIf
|
||||
#Default
|
||||
#shouldSpawnDoor = True
|
||||
#End Select
|
||||
#If shouldSpawnDoor
|
||||
#If (y+1)<(MapHeight+1)
|
||||
#If MapTemp(x, y + 1) > 0 Then
|
||||
#d.Doors = CreateDoor(r\zone, Float(x) * spacing, 0, Float(y) * spacing + spacing / 2.0, 0, r, Max(Rand(-3, 1), 0), temp)
|
||||
#r\AdjDoor[3] = d
|
||||
#EndIf
|
||||
#EndIf
|
||||
#EndIf
|
||||
#
|
||||
#Exit
|
||||
#EndIf
|
||||
#Next
|
||||
#
|
||||
#End If
|
||||
#
|
||||
#Next
|
||||
#Next
|
||||
#
|
||||
#For r.Rooms = Each Rooms
|
||||
#;If r\angle >= 360
|
||||
#; r\angle = r\angle-360
|
||||
#;EndIf
|
||||
#r\angle = WrapAngle(r\angle)
|
||||
#r\Adjacent[0]=Null
|
||||
#r\Adjacent[1]=Null
|
||||
#r\Adjacent[2]=Null
|
||||
#r\Adjacent[3]=Null
|
||||
#For r2.Rooms = Each Rooms
|
||||
#If r<>r2 Then
|
||||
#If r2\z=r\z Then
|
||||
#If (r2\x)=(r\x+8.0) Then
|
||||
#r\Adjacent[0]=r2
|
||||
#If r\AdjDoor[0] = Null Then r\AdjDoor[0] = r2\AdjDoor[2]
|
||||
#ElseIf (r2\x)=(r\x-8.0)
|
||||
#r\Adjacent[2]=r2
|
||||
#If r\AdjDoor[2] = Null Then r\AdjDoor[2] = r2\AdjDoor[0]
|
||||
#EndIf
|
||||
#ElseIf r2\x=r\x Then
|
||||
#If (r2\z)=(r\z-8.0) Then
|
||||
#r\Adjacent[1]=r2
|
||||
#If r\AdjDoor[1] = Null Then r\AdjDoor[1] = r2\AdjDoor[3]
|
||||
#ElseIf (r2\z)=(r\z+8.0)
|
||||
#r\Adjacent[3]=r2
|
||||
#If r\AdjDoor[3] = Null Then r\AdjDoor[3] = r2\AdjDoor[1]
|
||||
#EndIf
|
||||
#EndIf
|
||||
#EndIf
|
||||
#If (r\Adjacent[0]<>Null) And (r\Adjacent[1]<>Null) And (r\Adjacent[2]<>Null) And (r\Adjacent[3]<>Null) Then Exit
|
||||
#Next
|
||||
#Next
|
||||
|
|
|
@ -4,8 +4,25 @@ var skipIntro = false
|
|||
|
||||
func _ready() -> void:
|
||||
DisplayServer.window_set_title(str("SCP - Containment Breach v", Global.GAME_VERSION))
|
||||
var width = Main.options.get("options").get("width").to_int()
|
||||
var height = Main.options.get("options").get("height").to_int()
|
||||
var fullscreen = Main.options.get("options").get("fullscreen").to_lower() == "true"
|
||||
DisplayServer.window_set_max_size(Vector2i(width, height))
|
||||
DisplayServer.window_set_min_size(Vector2i(width, height))
|
||||
var window = get_window()
|
||||
window.size = Vector2i(width, height)
|
||||
if not fullscreen:
|
||||
window.move_to_center()
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if fullscreen else DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
|
||||
if skipIntro:
|
||||
get_tree().change_scene_to_file("res://scenes/screens/MainMenu.tscn")
|
||||
skipIntroVideo.call_deferred()
|
||||
else:
|
||||
Global.videoToPlay = "res://GFX/menu/startup_Undertow.avi"
|
||||
get_tree().change_scene_to_file("res://scenes/screens/IntroVideo.tscn")
|
||||
playIntro.call_deferred()
|
||||
|
||||
func skipIntroVideo():
|
||||
get_tree().change_scene_to_file("res://scenes/screens/MainMenu.tscn")
|
||||
|
||||
func playIntro():
|
||||
Global.videoToPlay = "res://GFX/menu/startup_Undertow.avi"
|
||||
get_tree().change_scene_to_file("res://scenes/screens/IntroVideo.tscn")
|
||||
|
|
|
@ -11,8 +11,8 @@ var clickSound: AudioStreamPlayer
|
|||
|
||||
var FPSfactor: float
|
||||
|
||||
func GetTextureFromCache(name:String):
|
||||
var fixedName = name.replace("\\", "/")
|
||||
func GetTextureFromCache(rawFileName:String):
|
||||
var fixedName = rawFileName.replace("\\", "/")
|
||||
if textureCache.has(fixedName):
|
||||
return textureCache.get(fixedName)
|
||||
return null
|
||||
|
@ -20,8 +20,8 @@ func GetTextureFromCache(name:String):
|
|||
var TRANSPARENT_TEXTURE = load("res://a0.png")
|
||||
var MISSING_TEXTURE = load("res://missing.png")
|
||||
|
||||
func LoadTexture(name: String):
|
||||
var fixedName = name.replace("\\", "/")
|
||||
func LoadTexture(rawFileName: String):
|
||||
var fixedName = rawFileName.replace("\\", "/")
|
||||
var fileName = Utils.GetCaseiFileName(str("res://", fixedName))
|
||||
if fileName == null:
|
||||
return MISSING_TEXTURE
|
||||
|
@ -30,15 +30,15 @@ func LoadTexture(name: String):
|
|||
|
||||
return textureCache.get_or_add(fixedName, load(fileName))
|
||||
|
||||
func GetTextureSafe(name: String):
|
||||
var fixedName = name.replace("\\", "/")
|
||||
func GetTextureSafe(rawFileName: String):
|
||||
var fixedName = rawFileName.replace("\\", "/")
|
||||
if textureCache.has(fixedName):
|
||||
return textureCache.get(fixedName)
|
||||
else:
|
||||
return LoadTexture(name)
|
||||
return LoadTexture(rawFileName)
|
||||
|
||||
func LoadAudio(name: String):
|
||||
var fixedName = name.replace("\\", "/")
|
||||
func LoadAudio(rawFileName: String):
|
||||
var fixedName = rawFileName.replace("\\", "/")
|
||||
return audioCache.get_or_add(fixedName, load(str("res://", fixedName)))
|
||||
|
||||
func _ready():
|
||||
|
|
|
@ -7,7 +7,7 @@ func _ready() -> void:
|
|||
$AspectRatioContainer/VideoStreamPlayer.play()
|
||||
$AudioStreamPlayer.play()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
func _process(_delta: float) -> void:
|
||||
if Input.is_action_just_pressed("ui_accept"):
|
||||
_on_video_stream_player_finished()
|
||||
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
extends Control
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
DisplayServer.window_set_title("SCP - Containment Breach Launcher")
|
||||
|
||||
$Launch.connect("clicked", launch)
|
||||
$Exit.connect("clicked", exit)
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
func launch():
|
||||
get_tree().change_scene_to_file("res://scenes/screens/GameStartup.tscn")
|
||||
|
||||
func exit():
|
||||
get_tree().quit.call_deferred()
|
||||
|
|
5
src/Main.gd
Normal file
5
src/Main.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
class_name Main
|
||||
|
||||
static var options = INI.Load("res://options.ini")
|
||||
|
||||
static var SeedRnd = 0
|
|
@ -27,7 +27,7 @@ func quitGame():
|
|||
get_tree().quit.call_deferred()
|
||||
|
||||
var jankyCounter = 0
|
||||
func _process(delta: float) -> void:
|
||||
func _process(_delta: float) -> void:
|
||||
if jankyCounter >= 5 and jankyFix.visible:
|
||||
jankyFix.visible = false
|
||||
else:
|
||||
|
|
751
src/MapSystem.gd
751
src/MapSystem.gd
|
@ -1,751 +0,0 @@
|
|||
class MapSystem
|
||||
|
||||
const RandomSeed = 59395743
|
||||
|
||||
static func CreateMap()
|
||||
#DebugLog ("Generating a map using the seed " + RandomSeed)
|
||||
|
||||
#I_Zone\Transition[0] = 13
|
||||
#I_Zone\Transition[1] = 7
|
||||
#I_Zone\HasCustomForest = False
|
||||
#I_Zone\HasCustomMT = False
|
||||
|
||||
Local x%, y%, temp%
|
||||
Local i%, x2%, y2%
|
||||
Local width%, height%
|
||||
|
||||
Local zone%
|
||||
|
||||
SeedRnd GenerateSeedNumber(RandomSeed)
|
||||
|
||||
Dim MapName$(MapWidth, MapHeight)
|
||||
|
||||
Dim MapRoomID%(ROOM4 + 1)
|
||||
|
||||
x = Floor(MapWidth / 2)
|
||||
y = MapHeight - 2;Rand(3, 5)
|
||||
|
||||
For i = y To MapHeight - 1
|
||||
MapTemp(x, i) = True
|
||||
Next
|
||||
|
||||
Repeat
|
||||
width = Rand(10, 15)
|
||||
|
||||
If x > MapWidth*0.6 Then
|
||||
width = -width
|
||||
ElseIf x > MapWidth*0.4
|
||||
x = x-width/2
|
||||
EndIf
|
||||
|
||||
;make sure the hallway doesn't go outside the array
|
||||
If x+width > MapWidth-3 Then
|
||||
;x = -width+MapWidth-4
|
||||
|
||||
width=MapWidth-3-x
|
||||
ElseIf x+width < 2
|
||||
|
||||
;x = 3-width
|
||||
width=-x+2
|
||||
EndIf
|
||||
|
||||
x = Min(x, x + width)
|
||||
width = Abs(width)
|
||||
For i = x To x + width
|
||||
MapTemp(Min(i,MapWidth), y) = True
|
||||
Next
|
||||
|
||||
height = Rand(3, 4)
|
||||
If y - height < 1 Then height = y-1
|
||||
|
||||
yhallways = Rand(4,5)
|
||||
|
||||
If GetZone(y-height)<>GetZone(y-height+1) Then height=height-1
|
||||
|
||||
For i = 1 To yhallways
|
||||
|
||||
x2 = Max(Min(Rand(x, x + width-1),MapWidth-2),2)
|
||||
While MapTemp(x2, y - 1) Or MapTemp(x2 - 1, y - 1) Or MapTemp(x2 + 1, y - 1)
|
||||
x2=x2+1
|
||||
Wend
|
||||
|
||||
If x2<x+width Then
|
||||
If i = 1 Then
|
||||
tempheight = height
|
||||
If Rand(2)=1 Then x2 = x Else x2 = x+width
|
||||
Else
|
||||
tempheight = Rand(1,height)
|
||||
EndIf
|
||||
|
||||
For y2 = y - tempheight To y
|
||||
If GetZone(y2)<>GetZone(y2+1) Then ;a room leading from zone to another
|
||||
MapTemp(x2, y2) = 255
|
||||
Else
|
||||
MapTemp(x2, y2) = True
|
||||
EndIf
|
||||
Next
|
||||
|
||||
If tempheight = height Then temp = x2
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
x = temp
|
||||
y = y - height
|
||||
Until y < 2
|
||||
|
||||
|
||||
Local ZoneAmount=3
|
||||
Local Room1Amount%[3], Room2Amount%[3],Room2CAmount%[3],Room3Amount%[3],Room4Amount%[3]
|
||||
|
||||
;count the amount of rooms
|
||||
For y = 1 To MapHeight - 1
|
||||
zone% = GetZone(y)
|
||||
|
||||
For x = 1 To MapWidth - 1
|
||||
If MapTemp(x, y) > 0 Then
|
||||
temp = Min(MapTemp(x + 1, y),1) + Min(MapTemp(x - 1, y),1)
|
||||
temp = temp + Min(MapTemp(x, y + 1),1) + Min(MapTemp(x, y - 1),1)
|
||||
If MapTemp(x,y)<255 Then MapTemp(x, y) = temp
|
||||
Select MapTemp(x,y)
|
||||
Case 1
|
||||
Room1Amount[zone]=Room1Amount[zone]+1
|
||||
Case 2
|
||||
If Min(MapTemp(x + 1, y),1) + Min(MapTemp(x - 1, y),1)= 2 Then
|
||||
Room2Amount[zone]=Room2Amount[zone]+1
|
||||
ElseIf Min(MapTemp(x, y + 1),1) + Min(MapTemp(x , y - 1),1)= 2
|
||||
Room2Amount[zone]=Room2Amount[zone]+1
|
||||
Else
|
||||
Room2CAmount[zone] = Room2CAmount[zone]+1
|
||||
EndIf
|
||||
Case 3
|
||||
Room3Amount[zone]=Room3Amount[zone]+1
|
||||
Case 4
|
||||
Room4Amount[zone]=Room4Amount[zone]+1
|
||||
End Select
|
||||
EndIf
|
||||
Next
|
||||
Next
|
||||
|
||||
;force more room1s (if needed)
|
||||
For i = 0 To 2
|
||||
;need more rooms if there are less than 5 of them
|
||||
temp = -Room1Amount[i]+5
|
||||
|
||||
If temp > 0 Then
|
||||
|
||||
For y = (MapHeight/ZoneAmount)*(2-i)+1 To ((MapHeight/ZoneAmount) * ((2-i)+1.0))-2
|
||||
|
||||
For x = 2 To MapWidth - 2
|
||||
If MapTemp(x, y) = 0 Then
|
||||
|
||||
If (Min(MapTemp(x + 1, y),1) + Min(MapTemp(x - 1, y),1) + Min(MapTemp(x, y + 1),1) + Min(MapTemp(x, y - 1),1)) = 1 Then
|
||||
;If Rand(4)=1 Then
|
||||
|
||||
If MapTemp(x + 1, y) Then
|
||||
x2 = x+1 : y2 = y
|
||||
ElseIf MapTemp(x - 1, y)
|
||||
x2 = x-1 : y2 = y
|
||||
ElseIf MapTemp(x, y+1)
|
||||
x2 = x : y2 = y+1
|
||||
ElseIf MapTemp(x, y-1)
|
||||
x2 = x : y2 = y-1
|
||||
EndIf
|
||||
|
||||
placed = False
|
||||
If MapTemp(x2,y2)>1 And MapTemp(x2,y2)<4 Then
|
||||
Select MapTemp(x2,y2)
|
||||
Case 2
|
||||
If Min(MapTemp(x2 + 1, y2),1) + Min(MapTemp(x2 - 1, y2),1)= 2 Then
|
||||
Room2Amount[i]=Room2Amount[i]-1
|
||||
Room3Amount[i]=Room3Amount[i]+1
|
||||
placed = True
|
||||
ElseIf Min(MapTemp(x2, y2 + 1),1) + Min(MapTemp(x2, y2 - 1),1)= 2
|
||||
Room2Amount[i]=Room2Amount[i]-1
|
||||
Room3Amount[i]=Room3Amount[i]+1
|
||||
placed = True
|
||||
EndIf
|
||||
Case 3
|
||||
Room3Amount[i]=Room3Amount[i]-1
|
||||
Room4Amount[i]=Room4Amount[i]+1
|
||||
placed = True
|
||||
End Select
|
||||
|
||||
If placed Then
|
||||
MapTemp(x2,y2)=MapTemp(x2,y2)+1
|
||||
|
||||
MapTemp(x, y) = 1
|
||||
Room1Amount[i] = Room1Amount[i]+1
|
||||
|
||||
temp=temp-1
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
EndIf
|
||||
If temp = 0 Then Exit
|
||||
Next
|
||||
If temp = 0 Then Exit
|
||||
Next
|
||||
EndIf
|
||||
Next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;force more room4s and room2Cs
|
||||
For i = 0 To 2
|
||||
|
||||
Select i
|
||||
Case 2
|
||||
zone=2
|
||||
temp2=MapHeight/3;-1
|
||||
Case 1
|
||||
zone=MapHeight/3+1
|
||||
temp2=MapHeight*(2.0/3.0)-1
|
||||
Case 0
|
||||
zone=MapHeight*(2.0/3.0)+1
|
||||
temp2=MapHeight-2
|
||||
End Select
|
||||
|
||||
If Room4Amount[i]<1 Then ;we want at least 1 ROOM4
|
||||
DebugLog "forcing a ROOM4 into zone "+i
|
||||
temp=0
|
||||
|
||||
For y = zone To temp2
|
||||
For x = 2 To MapWidth - 2
|
||||
If MapTemp(x,y)=3 Then
|
||||
Select 0 ;see if adding a ROOM1 is possible
|
||||
Case (MapTemp(x+1,y) Or MapTemp(x+1,y+1) Or MapTemp(x+1,y-1) Or MapTemp(x+2,y))
|
||||
MapTemp(x+1,y)=1
|
||||
temp=1
|
||||
Case (MapTemp(x-1,y) Or MapTemp(x-1,y+1) Or MapTemp(x-1,y-1) Or MapTemp(x-2,y))
|
||||
MapTemp(x-1,y)=1
|
||||
temp=1
|
||||
Case (MapTemp(x,y+1) Or MapTemp(x+1,y+1) Or MapTemp(x-1,y+1) Or MapTemp(x,y+2))
|
||||
MapTemp(x,y+1)=1
|
||||
temp=1
|
||||
Case (MapTemp(x,y-1) Or MapTemp(x+1,y-1) Or MapTemp(x-1,y-1) Or MapTemp(x,y-2))
|
||||
MapTemp(x,y-1)=1
|
||||
temp=1
|
||||
End Select
|
||||
If temp=1 Then
|
||||
MapTemp(x,y)=4 ;turn this room into a ROOM4
|
||||
DebugLog "ROOM4 forced into slot ("+x+", "+y+")"
|
||||
Room4Amount[i]=Room4Amount[i]+1
|
||||
Room3Amount[i]=Room3Amount[i]-1
|
||||
Room1Amount[i]=Room1Amount[i]+1
|
||||
EndIf
|
||||
EndIf
|
||||
If temp=1 Then Exit
|
||||
Next
|
||||
If temp=1 Then Exit
|
||||
Next
|
||||
|
||||
If temp=0 Then DebugLog "Couldn't place ROOM4 in zone "+i
|
||||
EndIf
|
||||
|
||||
If Room2CAmount[i]<1 Then ;we want at least 1 ROOM2C
|
||||
DebugLog "forcing a ROOM2C into zone "+i
|
||||
temp=0
|
||||
|
||||
zone=zone+1
|
||||
temp2=temp2-1
|
||||
|
||||
For y = zone To temp2
|
||||
For x = 3 To MapWidth - 3
|
||||
If MapTemp(x,y)=1 Then
|
||||
Select True ;see if adding some rooms is possible
|
||||
Case MapTemp(x-1,y)>0
|
||||
If (MapTemp(x,y-1)+MapTemp(x,y+1)+MapTemp(x+2,y))=0 Then
|
||||
If (MapTemp(x+1,y-2)+MapTemp(x+2,y-1)+MapTemp(x+1,y-1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x+1,y)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x+1)+", "+(y)+")"
|
||||
MapTemp(x+1,y-1)=1
|
||||
temp=1
|
||||
Else If (MapTemp(x+1,y+2)+MapTemp(x+2,y+1)+MapTemp(x+1,y+1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x+1,y)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x+1)+", "+(y)+")"
|
||||
MapTemp(x+1,y+1)=1
|
||||
temp=1
|
||||
EndIf
|
||||
EndIf
|
||||
Case MapTemp(x+1,y)>0
|
||||
If (MapTemp(x,y-1)+MapTemp(x,y+1)+MapTemp(x-2,y))=0 Then
|
||||
If (MapTemp(x-1,y-2)+MapTemp(x-2,y-1)+MapTemp(x-1,y-1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x-1,y)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x-1)+", "+(y)+")"
|
||||
MapTemp(x-1,y-1)=1
|
||||
temp=1
|
||||
Else If (MapTemp(x-1,y+2)+MapTemp(x-2,y+1)+MapTemp(x-1,y+1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x-1,y)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x-1)+", "+(y)+")"
|
||||
MapTemp(x-1,y+1)=1
|
||||
temp=1
|
||||
EndIf
|
||||
EndIf
|
||||
Case MapTemp(x,y-1)>0
|
||||
If (MapTemp(x-1,y)+MapTemp(x+1,y)+MapTemp(x,y+2))=0 Then
|
||||
If (MapTemp(x-2,y+1)+MapTemp(x-1,y+2)+MapTemp(x-1,y+1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x,y+1)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x)+", "+(y+1)+")"
|
||||
MapTemp(x-1,y+1)=1
|
||||
temp=1
|
||||
Else If (MapTemp(x+2,y+1)+MapTemp(x+1,y+2)+MapTemp(x+1,y+1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x,y+1)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x)+", "+(y+1)+")"
|
||||
MapTemp(x+1,y+1)=1
|
||||
temp=1
|
||||
EndIf
|
||||
EndIf
|
||||
Case MapTemp(x,y+1)>0
|
||||
If (MapTemp(x-1,y)+MapTemp(x+1,y)+MapTemp(x,y-2))=0 Then
|
||||
If (MapTemp(x-2,y-1)+MapTemp(x-1,y-2)+MapTemp(x-1,y-1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x,y-1)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x)+", "+(y-1)+")"
|
||||
MapTemp(x-1,y-1)=1
|
||||
temp=1
|
||||
Else If (MapTemp(x+2,y-1)+MapTemp(x+1,y-2)+MapTemp(x+1,y-1))=0 Then
|
||||
MapTemp(x,y)=2
|
||||
MapTemp(x,y-1)=2
|
||||
DebugLog "ROOM2C forced into slot ("+(x)+", "+(y-1)+")"
|
||||
MapTemp(x+1,y-1)=1
|
||||
temp=1
|
||||
EndIf
|
||||
EndIf
|
||||
End Select
|
||||
If temp=1 Then
|
||||
Room2CAmount[i]=Room2CAmount[i]+1
|
||||
Room2Amount[i]=Room2Amount[i]+1
|
||||
EndIf
|
||||
EndIf
|
||||
If temp=1 Then Exit
|
||||
Next
|
||||
If temp=1 Then Exit
|
||||
Next
|
||||
|
||||
If temp=0 Then DebugLog "Couldn't place ROOM2C in zone "+i
|
||||
EndIf
|
||||
|
||||
Next
|
||||
|
||||
Local MaxRooms% = 55*MapWidth/20
|
||||
MaxRooms=Max(MaxRooms,Room1Amount[0]+Room1Amount[1]+Room1Amount[2]+1)
|
||||
MaxRooms=Max(MaxRooms,Room2Amount[0]+Room2Amount[1]+Room2Amount[2]+1)
|
||||
MaxRooms=Max(MaxRooms,Room2CAmount[0]+Room2CAmount[1]+Room2CAmount[2]+1)
|
||||
MaxRooms=Max(MaxRooms,Room3Amount[0]+Room3Amount[1]+Room3Amount[2]+1)
|
||||
MaxRooms=Max(MaxRooms,Room4Amount[0]+Room4Amount[1]+Room4Amount[2]+1)
|
||||
Dim MapRoom$(ROOM4 + 1, MaxRooms)
|
||||
|
||||
|
||||
;zone 1 --------------------------------------------------------------------------------------------------
|
||||
|
||||
Local min_pos = 1, max_pos = Room1Amount[0]-1
|
||||
|
||||
MapRoom(ROOM1, 0) = "start"
|
||||
SetRoom("roompj", ROOM1, Floor(0.1*Float(Room1Amount[0])),min_pos,max_pos)
|
||||
SetRoom("914", ROOM1, Floor(0.3*Float(Room1Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room1archive",ROOM1,Floor(0.5*Float(Room1Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room205", ROOM1, Floor(0.6*Float(Room1Amount[0])),min_pos,max_pos)
|
||||
|
||||
MapRoom(ROOM2C, 0) = "lockroom"
|
||||
|
||||
min_pos = 1
|
||||
max_pos = Room2Amount[0]-1
|
||||
|
||||
MapRoom(ROOM2, 0) = "room2closets"
|
||||
SetRoom("room2testroom2", ROOM2, Floor(0.1*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2scps", ROOM2, Floor(0.2*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2storage", ROOM2, Floor(0.3*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2gw_b", ROOM2, Floor(0.4*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2sl", ROOM2, Floor(0.5*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room012", ROOM2, Floor(0.55*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2scps2",ROOM2,Floor(0.6*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room1123",ROOM2,Floor(0.7*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
SetRoom("room2elevator",ROOM2,Floor(0.85*Float(Room2Amount[0])),min_pos,max_pos)
|
||||
|
||||
|
||||
MapRoom(ROOM3, Floor(Rnd(0.2,0.8)*Float(Room3Amount[0]))) = "room3storage"
|
||||
|
||||
MapRoom(ROOM2C, Floor(0.5*Float(Room2CAmount[0]))) = "room1162"
|
||||
|
||||
MapRoom(ROOM4, Floor(0.3*Float(Room4Amount[0]))) = "room4info"
|
||||
|
||||
;zone 2 --------------------------------------------------------------------------------------------------
|
||||
|
||||
min_pos = Room1Amount[0]
|
||||
max_pos = Room1Amount[0]+Room1Amount[1]-1
|
||||
|
||||
SetRoom("room079", ROOM1, Room1Amount[0]+Floor(0.15*Float(Room1Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room106", ROOM1, Room1Amount[0]+Floor(0.3*Float(Room1Amount[1])),min_pos,max_pos)
|
||||
SetRoom("008", ROOM1, Room1Amount[0]+Floor(0.4*Float(Room1Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room035", ROOM1, Room1Amount[0]+Floor(0.5*Float(Room1Amount[1])),min_pos,max_pos)
|
||||
SetRoom("coffin", ROOM1, Room1Amount[0]+Floor(0.7*Float(Room1Amount[1])),min_pos,max_pos)
|
||||
|
||||
min_pos = Room2Amount[0]
|
||||
max_pos = Room2Amount[0]+Room2Amount[1]-1
|
||||
|
||||
MapRoom(ROOM2, Room2Amount[0]+Floor(0.1*Float(Room2Amount[1]))) = "room2nuke"
|
||||
SetRoom("room2tunnel", ROOM2, Room2Amount[0]+Floor(0.25*Float(Room2Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room049", ROOM2, Room2Amount[0]+Floor(0.4*Float(Room2Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room2shaft",ROOM2,Room2Amount[0]+Floor(0.6*Float(Room2Amount[1])),min_pos,max_pos)
|
||||
SetRoom("testroom", ROOM2, Room2Amount[0]+Floor(0.7*Float(Room2Amount[1])),min_pos,max_pos)
|
||||
SetRoom("room2servers", ROOM2, Room2Amount[0]+Floor(0.9*Room2Amount[1]),min_pos,max_pos)
|
||||
|
||||
MapRoom(ROOM3, Room3Amount[0]+Floor(0.3*Float(Room3Amount[1]))) = "room513"
|
||||
MapRoom(ROOM3, Room3Amount[0]+Floor(0.6*Float(Room3Amount[1]))) = "room966"
|
||||
|
||||
MapRoom(ROOM2C, Room2CAmount[0]+Floor(0.5*Float(Room2CAmount[1]))) = "room2cpit"
|
||||
|
||||
|
||||
;zone 3 --------------------------------------------------------------------------------------------------
|
||||
|
||||
MapRoom(ROOM1, Room1Amount[0]+Room1Amount[1]+Room1Amount[2]-2) = "exit1"
|
||||
MapRoom(ROOM1, Room1Amount[0]+Room1Amount[1]+Room1Amount[2]-1) = "gateaentrance"
|
||||
MapRoom(ROOM1, Room1Amount[0]+Room1Amount[1]) = "room1lifts"
|
||||
|
||||
min_pos = Room2Amount[0]+Room2Amount[1]
|
||||
max_pos = Room2Amount[0]+Room2Amount[1]+Room2Amount[2]-1
|
||||
|
||||
MapRoom(ROOM2, min_pos+Floor(0.1*Float(Room2Amount[2]))) = "room2poffices"
|
||||
SetRoom("room2cafeteria", ROOM2, min_pos+Floor(0.2*Float(Room2Amount[2])),min_pos,max_pos)
|
||||
SetRoom("room2sroom", ROOM2, min_pos+Floor(0.3*Float(Room2Amount[2])),min_pos,max_pos)
|
||||
SetRoom("room2servers2", ROOM2, min_pos+Floor(0.4*Room2Amount[2]),min_pos,max_pos)
|
||||
SetRoom("room2offices", ROOM2, min_pos+Floor(0.45*Room2Amount[2]),min_pos,max_pos)
|
||||
SetRoom("room2offices4", ROOM2, min_pos+Floor(0.5*Room2Amount[2]),min_pos,max_pos)
|
||||
SetRoom("room860", ROOM2, min_pos+Floor(0.6*Room2Amount[2]),min_pos,max_pos)
|
||||
SetRoom("medibay", ROOM2, min_pos+Floor(0.7*Float(Room2Amount[2])),min_pos,max_pos)
|
||||
SetRoom("room2poffices2", ROOM2, min_pos+Floor(0.8*Room2Amount[2]),min_pos,max_pos)
|
||||
SetRoom("room2offices2", ROOM2, min_pos+Floor(0.9*Float(Room2Amount[2])),min_pos,max_pos)
|
||||
|
||||
MapRoom(ROOM2C, Room2CAmount[0]+Room2CAmount[1]) = "room2ccont"
|
||||
MapRoom(ROOM2C, Room2CAmount[0]+Room2CAmount[1]+1) = "lockroom2"
|
||||
|
||||
MapRoom(ROOM3, Room3Amount[0]+Room3Amount[1]+Floor(0.3*Float(Room3Amount[2]))) = "room3servers"
|
||||
MapRoom(ROOM3, Room3Amount[0]+Room3Amount[1]+Floor(0.7*Float(Room3Amount[2]))) = "room3servers2"
|
||||
;MapRoom(ROOM3, Room3Amount[0]+Room3Amount[1]) = "room3gw"
|
||||
MapRoom(ROOM3, Room3Amount[0]+Room3Amount[1]+Floor(0.5*Float(Room3Amount[2]))) = "room3offices"
|
||||
|
||||
;----------------------- luodaan kartta --------------------------------
|
||||
|
||||
temp = 0
|
||||
Local r.Rooms, spacing# = 8.0
|
||||
For y = MapHeight - 1 To 1 Step - 1
|
||||
|
||||
;zone% = GetZone(y)
|
||||
|
||||
If y < MapHeight/3+1 Then
|
||||
zone=3
|
||||
ElseIf y < MapHeight*(2.0/3.0);-1
|
||||
zone=2
|
||||
Else
|
||||
zone=1
|
||||
EndIf
|
||||
|
||||
For x = 1 To MapWidth - 2
|
||||
If MapTemp(x, y) = 255 Then
|
||||
If y>MapHeight/2 Then ;zone = 2
|
||||
r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, "checkpoint1")
|
||||
Else ;If zone = 3
|
||||
r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, "checkpoint2")
|
||||
EndIf
|
||||
ElseIf MapTemp(x, y) > 0
|
||||
|
||||
temp = Min(MapTemp(x + 1, y),1) + Min(MapTemp(x - 1, y),1) + Min(MapTemp(x, y + 1),1) + Min(MapTemp(x, y - 1),1)
|
||||
|
||||
Select temp ;viereisiss<EFBFBD> ruuduissa olevien huoneiden m<EFBFBD><EFBFBD>r<EFBFBD>
|
||||
Case 1
|
||||
If MapRoomID(ROOM1) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM1, MapRoomID(ROOM1)) <> "" Then MapName(x, y) = MapRoom(ROOM1, MapRoomID(ROOM1))
|
||||
EndIf
|
||||
|
||||
r = CreateRoom(zone, ROOM1, x * 8, 0, y * 8, MapName(x, y))
|
||||
If MapTemp(x, y + 1) Then
|
||||
r\angle = 180
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
ElseIf MapTemp(x - 1, y)
|
||||
r\angle = 270
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
ElseIf MapTemp(x + 1, y)
|
||||
r\angle = 90
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
Else
|
||||
r\angle = 0
|
||||
End If
|
||||
MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
Case 2
|
||||
If MapTemp(x - 1, y)>0 And MapTemp(x + 1, y)>0 Then
|
||||
If MapRoomID(ROOM2) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM2, MapRoomID(ROOM2)) <> "" Then MapName(x, y) = MapRoom(ROOM2, MapRoomID(ROOM2))
|
||||
EndIf
|
||||
r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, MapName(x, y))
|
||||
If Rand(2) = 1 Then r\angle = 90 Else r\angle = 270
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
MapRoomID(ROOM2)=MapRoomID(ROOM2)+1
|
||||
ElseIf MapTemp(x, y - 1)>0 And MapTemp(x, y + 1)>0
|
||||
If MapRoomID(ROOM2) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM2, MapRoomID(ROOM2)) <> "" Then MapName(x, y) = MapRoom(ROOM2, MapRoomID(ROOM2))
|
||||
EndIf
|
||||
r = CreateRoom(zone, ROOM2, x * 8, 0, y * 8, MapName(x, y))
|
||||
If Rand(2) = 1 Then r\angle = 180 Else r\angle = 0
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
MapRoomID(ROOM2)=MapRoomID(ROOM2)+1
|
||||
Else
|
||||
If MapRoomID(ROOM2C) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM2C, MapRoomID(ROOM2C)) <> "" Then MapName(x, y) = MapRoom(ROOM2C, MapRoomID(ROOM2C))
|
||||
EndIf
|
||||
|
||||
If MapTemp(x - 1, y)>0 And MapTemp(x, y + 1)>0 Then
|
||||
r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
r\angle = 180
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
ElseIf MapTemp(x + 1, y)>0 And MapTemp(x, y + 1)>0
|
||||
r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
r\angle = 90
|
||||
TurnEntity(r\obj, 0, r\angle, 0)
|
||||
ElseIf MapTemp(x - 1, y)>0 And MapTemp(x, y - 1)>0
|
||||
r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
TurnEntity(r\obj, 0, 270, 0)
|
||||
r\angle = 270
|
||||
Else
|
||||
r = CreateRoom(zone, ROOM2C, x * 8, 0, y * 8, MapName(x, y))
|
||||
EndIf
|
||||
MapRoomID(ROOM2C)=MapRoomID(ROOM2C)+1
|
||||
EndIf
|
||||
Case 3
|
||||
If MapRoomID(ROOM3) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM3, MapRoomID(ROOM3)) <> "" Then MapName(x, y) = MapRoom(ROOM3, MapRoomID(ROOM3))
|
||||
EndIf
|
||||
|
||||
r = CreateRoom(zone, ROOM3, x * 8, 0, y * 8, MapName(x, y))
|
||||
If (Not MapTemp(x, y - 1)) Then
|
||||
TurnEntity(r\obj, 0, 180, 0)
|
||||
r\angle = 180
|
||||
ElseIf (Not MapTemp(x - 1, y))
|
||||
TurnEntity(r\obj, 0, 90, 0)
|
||||
r\angle = 90
|
||||
ElseIf (Not MapTemp(x + 1, y))
|
||||
TurnEntity(r\obj, 0, -90, 0)
|
||||
r\angle = 270
|
||||
End If
|
||||
MapRoomID(ROOM3)=MapRoomID(ROOM3)+1
|
||||
Case 4
|
||||
If MapRoomID(ROOM4) < MaxRooms And MapName(x,y) = "" Then
|
||||
If MapRoom(ROOM4, MapRoomID(ROOM4)) <> "" Then MapName(x, y) = MapRoom(ROOM4, MapRoomID(ROOM4))
|
||||
EndIf
|
||||
|
||||
r = CreateRoom(zone, ROOM4, x * 8, 0, y * 8, MapName(x, y))
|
||||
MapRoomID(ROOM4)=MapRoomID(ROOM4)+1
|
||||
End Select
|
||||
|
||||
EndIf
|
||||
|
||||
Next
|
||||
Next
|
||||
|
||||
r = CreateRoom(0, ROOM1, (MapWidth-1) * 8, 500, 8, "gatea")
|
||||
MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
|
||||
r = CreateRoom(0, ROOM1, (MapWidth-1) * 8, 0, (MapHeight-1) * 8, "pocketdimension")
|
||||
MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
|
||||
If IntroEnabled
|
||||
r = CreateRoom(0, ROOM1, 8, 0, (MapHeight-1) * 8, "173")
|
||||
MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
EndIf
|
||||
|
||||
r = CreateRoom(0, ROOM1, 8, 800, 0, "dimension1499")
|
||||
MapRoomID(ROOM1)=MapRoomID(ROOM1)+1
|
||||
|
||||
For r.Rooms = Each Rooms
|
||||
PreventRoomOverlap(r)
|
||||
Next
|
||||
|
||||
If 0 Then
|
||||
Repeat
|
||||
Cls
|
||||
For x = 0 To MapWidth - 1
|
||||
For y = 0 To MapHeight - 1
|
||||
If MapTemp(x, y) = 0 Then
|
||||
|
||||
zone=GetZone(y)
|
||||
|
||||
Color 50*zone, 50*zone, 50*zone
|
||||
Rect(x * 32, y * 32, 30, 30)
|
||||
Else
|
||||
If MapTemp(x, y) = 255 Then
|
||||
Color 0,200,0
|
||||
Else If MapTemp(x,y)=4 Then
|
||||
Color 50,50,255
|
||||
Else If MapTemp(x,y)=3 Then
|
||||
Color 50,255,255
|
||||
Else If MapTemp(x,y)=2 Then
|
||||
Color 255,255,50
|
||||
Else
|
||||
Color 255, 255, 255
|
||||
EndIf
|
||||
Rect(x * 32, y * 32, 30, 30)
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
For x = 0 To MapWidth - 1
|
||||
For y = 0 To MapHeight - 1
|
||||
|
||||
If MouseX()>x*32 And MouseX()<x*32+32 Then
|
||||
If MouseY()>y*32 And MouseY()<y*32+32 Then
|
||||
Color 255, 0, 0
|
||||
Else
|
||||
Color 200, 200, 200
|
||||
EndIf
|
||||
Else
|
||||
Color 200, 200, 200
|
||||
EndIf
|
||||
|
||||
If MapTemp(x, y) > 0 Then
|
||||
Text x * 32 +2, (y) * 32 + 2,MapTemp(x, y) +" "+ MapName(x,y)
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
Flip
|
||||
Until KeyHit(28)
|
||||
EndIf
|
||||
|
||||
|
||||
For y = 0 To MapHeight
|
||||
For x = 0 To MapWidth
|
||||
MapTemp(x, y) = Min(MapTemp(x, y),1)
|
||||
Next
|
||||
Next
|
||||
|
||||
Local d.Doors
|
||||
Local shouldSpawnDoor%
|
||||
For y = MapHeight To 0 Step -1
|
||||
|
||||
If y<I_Zone\Transition[1]-1 Then
|
||||
zone=3
|
||||
ElseIf y>=I_Zone\Transition[1]-1 And y<I_Zone\Transition[0]-1 Then
|
||||
zone=2
|
||||
Else
|
||||
zone=1
|
||||
EndIf
|
||||
|
||||
For x = MapWidth To 0 Step -1
|
||||
If MapTemp(x,y) > 0 Then
|
||||
If zone = 2 Then temp=2 Else temp=0
|
||||
|
||||
For r.Rooms = Each Rooms
|
||||
r\angle = WrapAngle(r\angle)
|
||||
If Int(r\x/8.0)=x And Int(r\z/8.0)=y Then
|
||||
shouldSpawnDoor = False
|
||||
Select r\RoomTemplate\Shape
|
||||
Case ROOM1
|
||||
If r\angle=90
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM2
|
||||
If r\angle=90 Or r\angle=270
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM2C
|
||||
If r\angle=0 Or r\angle=90
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM3
|
||||
If r\angle=0 Or r\angle=180 Or r\angle=90
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Default
|
||||
shouldSpawnDoor = True
|
||||
End Select
|
||||
If shouldSpawnDoor
|
||||
If (x+1)<(MapWidth+1)
|
||||
If MapTemp(x + 1, y) > 0 Then
|
||||
d.Doors = CreateDoor(r\zone, Float(x) * spacing + spacing / 2.0, 0, Float(y) * spacing, 90, r, Max(Rand(-3, 1), 0), temp)
|
||||
r\AdjDoor[0] = d
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
shouldSpawnDoor = False
|
||||
Select r\RoomTemplate\Shape
|
||||
Case ROOM1
|
||||
If r\angle=180
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM2
|
||||
If r\angle=0 Or r\angle=180
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM2C
|
||||
If r\angle=180 Or r\angle=90
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Case ROOM3
|
||||
If r\angle=180 Or r\angle=90 Or r\angle=270
|
||||
shouldSpawnDoor = True
|
||||
EndIf
|
||||
Default
|
||||
shouldSpawnDoor = True
|
||||
End Select
|
||||
If shouldSpawnDoor
|
||||
If (y+1)<(MapHeight+1)
|
||||
If MapTemp(x, y + 1) > 0 Then
|
||||
d.Doors = CreateDoor(r\zone, Float(x) * spacing, 0, Float(y) * spacing + spacing / 2.0, 0, r, Max(Rand(-3, 1), 0), temp)
|
||||
r\AdjDoor[3] = d
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
Exit
|
||||
EndIf
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
Next
|
||||
|
||||
For r.Rooms = Each Rooms
|
||||
;If r\angle >= 360
|
||||
; r\angle = r\angle-360
|
||||
;EndIf
|
||||
r\angle = WrapAngle(r\angle)
|
||||
r\Adjacent[0]=Null
|
||||
r\Adjacent[1]=Null
|
||||
r\Adjacent[2]=Null
|
||||
r\Adjacent[3]=Null
|
||||
For r2.Rooms = Each Rooms
|
||||
If r<>r2 Then
|
||||
If r2\z=r\z Then
|
||||
If (r2\x)=(r\x+8.0) Then
|
||||
r\Adjacent[0]=r2
|
||||
If r\AdjDoor[0] = Null Then r\AdjDoor[0] = r2\AdjDoor[2]
|
||||
ElseIf (r2\x)=(r\x-8.0)
|
||||
r\Adjacent[2]=r2
|
||||
If r\AdjDoor[2] = Null Then r\AdjDoor[2] = r2\AdjDoor[0]
|
||||
EndIf
|
||||
ElseIf r2\x=r\x Then
|
||||
If (r2\z)=(r\z-8.0) Then
|
||||
r\Adjacent[1]=r2
|
||||
If r\AdjDoor[1] = Null Then r\AdjDoor[1] = r2\AdjDoor[3]
|
||||
ElseIf (r2\z)=(r\z+8.0)
|
||||
r\Adjacent[3]=r2
|
||||
If r\AdjDoor[3] = Null Then r\AdjDoor[3] = r2\AdjDoor[1]
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
If (r\Adjacent[0]<>Null) And (r\Adjacent[1]<>Null) And (r\Adjacent[2]<>Null) And (r\Adjacent[3]<>Null) Then Exit
|
||||
Next
|
||||
Next
|
||||
|
||||
End Function
|
|
@ -1,6 +0,0 @@
|
|||
extends Node
|
||||
|
||||
var options = ConfigFile.new()
|
||||
|
||||
func _ready() -> void:
|
||||
options.load("res://options.ini")
|
|
@ -1,4 +1,8 @@
|
|||
extends Control
|
||||
|
||||
func _ready() -> void:
|
||||
get_tree().change_scene_to_file("res://scenes/screens/UpdateChecker.tscn")
|
||||
loadToLauncher.call_deferred()
|
||||
|
||||
func loadToLauncher():
|
||||
#get_tree().change_scene_to_file("res://scenes/screens/UpdateChecker.tscn")
|
||||
get_tree().change_scene_to_file("res://scenes/screens/Launcher.tscn")
|
||||
|
|
|
@ -5,5 +5,5 @@ func _ready() -> void:
|
|||
DisplayServer.window_set_min_size(Vector2i(640, 480))
|
||||
$HTTPRequest.request("https://www.scpcbgame.com/changelog.txt")
|
||||
|
||||
func _on_http_request_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void:
|
||||
func _on_http_request_request_completed(_result: int, _response_code: int, _headers: PackedStringArray, _body: PackedByteArray) -> void:
|
||||
get_tree().change_scene_to_file("res://scenes/screens/Launcher.tscn")
|
||||
|
|
29
src/Utils.gd
29
src/Utils.gd
|
@ -48,3 +48,32 @@ static func GetCaseiFileName(path: String):
|
|||
cachedLookupPaths.get_or_add(dirName.to_lower(), loadedFileNames)
|
||||
|
||||
return str(dirName, "/", loadedFileNames.get(pathParts[-1].to_lower()))
|
||||
|
||||
static func Init1DArray(size: int, initValue: Variant = null) -> Array:
|
||||
var array = []
|
||||
for i in range(size):
|
||||
array.append(initValue)
|
||||
|
||||
return array
|
||||
|
||||
# I want this to be array[y][x] but this is coming from b3d
|
||||
static func Init2DArray(sizeX: int, sizeY: int, initValue: Variant = null) -> Array:
|
||||
var array = []
|
||||
for i in range(sizeX):
|
||||
var yArray = []
|
||||
array.append(yArray)
|
||||
for i1 in range(sizeY):
|
||||
yArray.append(initValue)
|
||||
|
||||
return array
|
||||
|
||||
static func GenerateSeedNumber(seedv: String):
|
||||
var hashv = 0
|
||||
if len(seedv) == 0:
|
||||
return hashv
|
||||
|
||||
for i in range(len(seedv)):
|
||||
var chr = seedv[i].to_ascii_buffer()[0];
|
||||
hashv = ((hashv << 5) - hashv) + chr
|
||||
hashv |= 0
|
||||
return hashv
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
class_name INI
|
||||
|
||||
static func Load(file: String):
|
||||
static func Load(file: String, ignoreLoose:bool = true):
|
||||
var sections = Dictionary()
|
||||
|
||||
var fileHandle = FileAccess.open(file, FileAccess.READ)
|
||||
var fileContent = fileHandle.get_as_text().replace("\r\n", "\n").split("\n")
|
||||
fileHandle.close()
|
||||
|
||||
var currentSection: Dictionary = sections.get_or_add("loose", Dictionary())
|
||||
var currentSection: Dictionary = Dictionary() if ignoreLoose else sections.get_or_add("loose", Dictionary())
|
||||
var sectionName: String = "loose"
|
||||
for line in fileContent:
|
||||
if line.strip_edges().strip_escapes() == "" or line.begins_with(";"):
|
||||
continue
|
||||
|
||||
if line.begins_with("[") and line.ends_with("]"):
|
||||
currentSection = sections.get_or_add(line.substr(1, len(line) - 2), Dictionary())
|
||||
sectionName = line.substr(1, len(line) - 2)
|
||||
currentSection = sections.get_or_add(sectionName, Dictionary())
|
||||
else:
|
||||
var segments = line.split("=")
|
||||
currentSection.get_or_add(segments[0], segments[1])
|
||||
if not ignoreLoose or (ignoreLoose and sectionName != "loose"):
|
||||
var segments = line.replace(" = ", "=").split("=")
|
||||
currentSection.get_or_add(segments[0], segments[1])
|
||||
|
||||
return sections
|
||||
|
|
5
src/objects/MapZones.gd
Normal file
5
src/objects/MapZones.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
class_name MapZones
|
||||
|
||||
var Transition: Array = [0, 0]
|
||||
var HasCustomForest: bool
|
||||
var HasCustomMT: bool
|
Loading…
Add table
Reference in a new issue