mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 10:15:45 +00:00
Roguelike map
This commit is contained in:
parent
a005e3c480
commit
e1496c9228
18 changed files with 226 additions and 101 deletions
14
Resources/Maps/Roguelite.tres
Normal file
14
Resources/Maps/Roguelite.tres
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
[gd_resource type="Resource" script_class="MapResource" load_steps=3 format=3 uid="uid://6ek4lmtuij4t"]
|
||||||
|
|
||||||
|
[ext_resource type="Resource" uid="uid://cn8tu4jct04rp" path="res://Resources/StartData/Pistol_Start.tres" id="1_e1otp"]
|
||||||
|
[ext_resource type="Script" uid="uid://quy4d4tgvqfy" path="res://Scripts/Resources/MapResource.cs" id="1_nap7o"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_nap7o")
|
||||||
|
LevelId = -2
|
||||||
|
MapName = &"Roguelite"
|
||||||
|
MapDescription = null
|
||||||
|
ScenePath = &"uid://bf1kqr3o6r6d4"
|
||||||
|
WeaponsAllowed = true
|
||||||
|
StartData = ExtResource("1_e1otp")
|
||||||
|
metadata/_custom_type_script = "uid://quy4d4tgvqfy"
|
||||||
9
Resources/RogueliteMaps/TestRGMap.tres
Normal file
9
Resources/RogueliteMaps/TestRGMap.tres
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_resource type="Resource" script_class="RogueliteRoomResource" load_steps=2 format=3 uid="uid://b5x83li01qrav"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bl2ne8w12e3a" path="res://Scripts/Resources/Roguelite/RogueliteRoomResource.cs" id="1_keg4c"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_keg4c")
|
||||||
|
RoomName = &"Test"
|
||||||
|
ScenePath = &"uid://da7hmajaaiohm"
|
||||||
|
metadata/_custom_type_script = "uid://bl2ne8w12e3a"
|
||||||
|
|
@ -21,9 +21,9 @@
|
||||||
[ext_resource type="Resource" uid="uid://byo74ews118nl" path="res://Resources/Music/No_Reason.tres" id="13_fh7cp"]
|
[ext_resource type="Resource" uid="uid://byo74ews118nl" path="res://Resources/Music/No_Reason.tres" id="13_fh7cp"]
|
||||||
[ext_resource type="FontFile" uid="uid://cyk27h5aox1n7" path="res://fonts/sector_034.ttf" id="14_yxkem"]
|
[ext_resource type="FontFile" uid="uid://cyk27h5aox1n7" path="res://fonts/sector_034.ttf" id="14_yxkem"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ogjye"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_quqih"]
|
||||||
atlas = ExtResource("9_riqfo")
|
atlas = ExtResource("9_riqfo")
|
||||||
region = Rect2(64, 0, 32, 16)
|
region = Rect2(576, 0, 32, 16)
|
||||||
|
|
||||||
[sub_resource type="Theme" id="Theme_c7h4d"]
|
[sub_resource type="Theme" id="Theme_c7h4d"]
|
||||||
|
|
||||||
|
|
@ -69,7 +69,7 @@ offset_top = 40.995
|
||||||
offset_right = 186.42
|
offset_right = 186.42
|
||||||
offset_bottom = 56.995
|
offset_bottom = 56.995
|
||||||
rotation = 3.14159
|
rotation = 3.14159
|
||||||
texture = SubResource("AtlasTexture_ogjye")
|
texture = SubResource("AtlasTexture_quqih")
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,10 @@
|
||||||
[gd_scene load_steps=17 format=4 uid="uid://bf1kqr3o6r6d4"]
|
[gd_scene load_steps=13 format=3 uid="uid://bf1kqr3o6r6d4"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_wbqvu"]
|
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_wbqvu"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_3fyis"]
|
[ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_3fyis"]
|
||||||
[ext_resource type="Script" uid="uid://epnwjptvks3t" path="res://Scripts/Resources/LootItem.cs" id="3_3fyis"]
|
[ext_resource type="Resource" uid="uid://6ek4lmtuij4t" path="res://Resources/Maps/Roguelite.tres" id="2_k5t51"]
|
||||||
[ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="3_go1yg"]
|
[ext_resource type="Script" uid="uid://bt2qjgnf1wc2r" path="res://Scripts/Controllers/RogueliteRoomManager.cs" id="4_jtlua"]
|
||||||
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="4_pfafs"]
|
[ext_resource type="Resource" uid="uid://b5x83li01qrav" path="res://Resources/RogueliteMaps/TestRGMap.tres" id="5_gwtv6"]
|
||||||
[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="5_ktre5"]
|
|
||||||
[ext_resource type="Script" uid="uid://v2f387aad33k" path="res://Scripts/Components/FSM/ActorStateMachine.cs" id="6_68lig"]
|
|
||||||
[ext_resource type="SpriteFrames" uid="uid://bcc5mlwwnkvri" path="res://Resources/Sprites/Fairy.tres" id="7_83bvc"]
|
|
||||||
[ext_resource type="Script" uid="uid://cfya7sndh7vy2" path="res://Scenes/CameraController.gd" id="8_y651a"]
|
[ext_resource type="Script" uid="uid://cfya7sndh7vy2" path="res://Scenes/CameraController.gd" id="8_y651a"]
|
||||||
[ext_resource type="Script" uid="uid://c5nxsq3tyxcx6" path="res://Scripts/InventoryManager.cs" id="9_vhvs2"]
|
[ext_resource type="Script" uid="uid://c5nxsq3tyxcx6" path="res://Scripts/InventoryManager.cs" id="9_vhvs2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dkwi1hu1bixoe" path="res://Scenes/HUD/HUD.tscn" id="10_6gk3e"]
|
[ext_resource type="PackedScene" uid="uid://dkwi1hu1bixoe" path="res://Scenes/HUD/HUD.tscn" id="10_6gk3e"]
|
||||||
|
|
@ -15,57 +12,27 @@
|
||||||
[ext_resource type="Script" uid="uid://cnkipcolyj61w" path="res://Scripts/AlarmManager.cs" id="12_eoca5"]
|
[ext_resource type="Script" uid="uid://cnkipcolyj61w" path="res://Scripts/AlarmManager.cs" id="12_eoca5"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="13_4n7t6"]
|
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="13_4n7t6"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_6wo78"]
|
[sub_resource type="NavigationPolygon" id="NavigationPolygon_jtlua"]
|
||||||
script = ExtResource("3_go1yg")
|
vertices = PackedVector2Array(-69.1094, 193.477, -146.813, 182.609, -132, 117.898, -69.8906, 117.117)
|
||||||
EggIndex = 0
|
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||||
StartingEquipment = Array[ExtResource("3_3fyis")]([])
|
outlines = Array[PackedVector2Array]([PackedVector2Array(-159, 191, -140, 108, -60, 107, -59, 205)])
|
||||||
|
parsed_collision_mask = 353
|
||||||
|
source_geometry_mode = 1
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_5xgmc"]
|
[node name="GameScene" type="Node2D" node_paths=PackedStringArray("NavigationRegion")]
|
||||||
|
|
||||||
[node name="GameScene" type="Node2D"]
|
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
script = ExtResource("1_wbqvu")
|
script = ExtResource("1_wbqvu")
|
||||||
|
MapResource = ExtResource("2_k5t51")
|
||||||
PlayerTemplate = ExtResource("2_3fyis")
|
PlayerTemplate = ExtResource("2_3fyis")
|
||||||
SpawnMarkers = Dictionary[int, NodePath]({
|
SpawnMarkers = Dictionary[int, NodePath]({
|
||||||
0: NodePath("PlayerStartPosition")
|
0: NodePath("PlayerStartPosition")
|
||||||
})
|
})
|
||||||
MapStartData = SubResource("Resource_6wo78")
|
NavigationRegion = NodePath("NavigationRegion2D")
|
||||||
|
|
||||||
[node name="Tilemaps" type="Node2D" parent="."]
|
[node name="Maps" type="Node2D" parent="." groups=["navigation_polygon_source_geometry_group"]]
|
||||||
process_mode = 1
|
process_mode = 1
|
||||||
|
script = ExtResource("4_jtlua")
|
||||||
[node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayers")]
|
Rooms = Array[Object]([ExtResource("5_gwtv6")])
|
||||||
tile_map_data = PackedByteArray("AAAEABAAAAAEAAIAAAAEABEAAAAEAAIAAAAEABIAAAAEAAIAAAAEABMAAAAEAAIAAAAEABQAAAAEAAIAAAAEABUAAAAEAAIAAAAEABYAAAAEAAIAAAAFABAAAAAEAAIAAAAFABEAAAAEAAIAAAAFABIAAAAEAAIAAAAFABMAAAAEAAIAAAAFABQAAAAEAAIAAAAFABUAAAAEAAIAAAAFABYAAAAEAAIAAAAGABAAAAAEAAIAAAAGABEAAAAEAAIAAAAGABIAAAAEAAIAAAAGABMAAAAEAAIAAAAGABQAAAAEAAIAAAAGABUAAAAEAAIAAAAGABYAAAAEAAIAAAAHABAAAAAEAAIAAAAHABEAAAAEAAIAAAAHABIAAAAEAAIAAAAHABMAAAAEAAIAAAAHABQAAAAEAAIAAAAHABUAAAAEAAIAAAAHABYAAAAEAAIAAAAIABAAAAAEAAIAAAAIABEAAAAEAAIAAAAIABIAAAAEAAIAAAAIABMAAAAEAAIAAAAIABQAAAAEAAIAAAAIABUAAAAEAAIAAAAIABYAAAAEAAIAAAAJABAAAAAEAAIAAAAJABEAAAAEAAIAAAAJABIAAAAEAAIAAAAJABMAAAAEAAIAAAAJABQAAAAEAAIAAAAJABUAAAAEAAIAAAAJABYAAAAEAAIAAAAKABAAAAAEAAIAAAAKABEAAAAEAAIAAAAKABIAAAAEAAIAAAAKABMAAAAEAAIAAAAKABQAAAAEAAIAAAAKABUAAAAEAAIAAAAKABYAAAAEAAIAAAADABAAAAAEAAIAAAADABEAAAAEAAIAAAADABIAAAAEAAIAAAADABMAAAAEAAIAAAADABQAAAAEAAIAAAADABUAAAAEAAIAAAADABYAAAAEAAIAAAADABcAAAAEAAIAAAADABgAAAAEAAIAAAAEABcAAAAEAAIAAAAEABgAAAAEAAIAAAAFABcAAAAEAAIAAAAFABgAAAAEAAIAAAAGABcAAAAEAAIAAAAGABgAAAAEAAIAAAAHABcAAAAEAAIAAAAHABgAAAAEAAIAAAAIABcAAAAEAAIAAAAIABgAAAAEAAIAAAAJABcAAAAEAAIAAAAJABgAAAAEAAIAAAAKABcAAAAEAAIAAAAKABgAAAAEAAIAAAALABAAAAAEAAIAAAALABEAAAAEAAIAAAALABIAAAAEAAIAAAALABMAAAAEAAIAAAALABQAAAAEAAIAAAALABUAAAAEAAIAAAALABYAAAAEAAIAAAALABcAAAAEAAIAAAALABgAAAAEAAIAAAA=")
|
|
||||||
tile_set = ExtResource("4_pfafs")
|
|
||||||
script = ExtResource("5_ktre5")
|
|
||||||
_solidLayers = [NodePath("../Solid"), NodePath("../Props")]
|
|
||||||
metadata/_edit_lock_ = true
|
|
||||||
|
|
||||||
[node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]]
|
|
||||||
tile_map_data = PackedByteArray("AAACAA0AAAAAAAsAAAADAA0AAAABAAQAAAAEAA0AAAABAAQAAAAFAA0AAAABAAQAAAAGAA0AAAABAAQAAAAHAA0AAAABAAQAAAAIAA0AAAABAAQAAAAJAA0AAAABAAQAAAAKAA0AAAABAAQAAAALAA0AAAABAAQAAAAMAA0AAAABAAsAAAAMAA4AAAAAAAQAAAAMAA8AAAAAAAQAAAAMABAAAAAAAAQAAAAMABEAAAAAAAQAAAAMABMAAAAAAAQAAAAMABIAAAAAAAQAAAAMABQAAAAAAAQAAAAMABUAAAAAAAQAAAAMABYAAAAAAAQAAAAMABcAAAAAAAQAAAAMABgAAAAAAAQAAAAMABkAAAABAAwAAAALABkAAAABAAQAAAAKABkAAAABAAQAAAAJABkAAAABAAQAAAAIABkAAAABAAQAAAAHABkAAAABAAQAAAAGABkAAAABAAQAAAAFABkAAAABAAQAAAAEABkAAAABAAQAAAADABkAAAABAAQAAAACABkAAAAAAAwAAAACABgAAAAAAAQAAAACABYAAAAAAAQAAAACABcAAAAAAAQAAAACABUAAAAAAAQAAAACABQAAAAAAAQAAAACABIAAAAAAAQAAAACABMAAAAAAAQAAAACABEAAAAAAAQAAAACABAAAAAAAAQAAAACAA8AAAAAAAQAAAACAA4AAAAAAAQAAAADAA4AAAABAAEAAAADAA8AAAABAAEAAAAEAA4AAAABAAEAAAAEAA8AAAABAAEAAAAFAA4AAAABAAEAAAAFAA8AAAABAAEAAAAGAA4AAAABAAEAAAAGAA8AAAABAAEAAAAHAA4AAAABAAEAAAAHAA8AAAABAAEAAAAIAA4AAAABAAEAAAAIAA8AAAABAAEAAAAJAA4AAAABAAEAAAAJAA8AAAABAAEAAAAKAA4AAAABAAEAAAAKAA8AAAABAAEAAAALAA4AAAABAAEAAAALAA8AAAABAAEAAAA=")
|
|
||||||
tile_set = ExtResource("4_pfafs")
|
|
||||||
metadata/_edit_lock_ = true
|
|
||||||
|
|
||||||
[node name="Props" type="TileMapLayer" parent="Tilemaps"]
|
|
||||||
tile_set = ExtResource("4_pfafs")
|
|
||||||
metadata/_edit_lock_ = true
|
|
||||||
|
|
||||||
[node name="Actors" type="Node2D" parent="Tilemaps"]
|
|
||||||
metadata/_edit_lock_ = true
|
|
||||||
|
|
||||||
[node name="FSMEnemy" type="CharacterBody2D" parent="Tilemaps/Actors"]
|
|
||||||
position = Vector2(161.783, 298.229)
|
|
||||||
script = ExtResource("6_68lig")
|
|
||||||
metadata/_edit_group_ = true
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Tilemaps/Actors/FSMEnemy"]
|
|
||||||
shape = SubResource("CircleShape2D_5xgmc")
|
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Tilemaps/Actors/FSMEnemy"]
|
|
||||||
sprite_frames = ExtResource("7_83bvc")
|
|
||||||
animation = &"down"
|
|
||||||
|
|
||||||
[node name="Idle" type="Node2D" parent="Tilemaps/Actors/FSMEnemy"]
|
|
||||||
|
|
||||||
[node name="CameraController" type="Camera2D" parent="."]
|
[node name="CameraController" type="Camera2D" parent="."]
|
||||||
process_mode = 1
|
process_mode = 1
|
||||||
|
|
@ -86,11 +53,11 @@ script = ExtResource("9_vhvs2")
|
||||||
[node name="HUD" parent="." instance=ExtResource("10_6gk3e")]
|
[node name="HUD" parent="." instance=ExtResource("10_6gk3e")]
|
||||||
|
|
||||||
[node name="CameraTarget" type="Node2D" parent="."]
|
[node name="CameraTarget" type="Node2D" parent="."]
|
||||||
position = Vector2(115, 328)
|
position = Vector2(154, 103)
|
||||||
script = ExtResource("11_4gy5m")
|
script = ExtResource("11_4gy5m")
|
||||||
|
|
||||||
[node name="PlayerStartPosition" type="Marker2D" parent="."]
|
[node name="PlayerStartPosition" type="Marker2D" parent="."]
|
||||||
position = Vector2(111, 305)
|
position = Vector2(150, 80)
|
||||||
|
|
||||||
[node name="AlarmManager" type="Node2D" parent="."]
|
[node name="AlarmManager" type="Node2D" parent="."]
|
||||||
process_mode = 1
|
process_mode = 1
|
||||||
|
|
@ -99,3 +66,8 @@ script = ExtResource("12_eoca5")
|
||||||
[node name="AudioStreamPlayer2D" parent="." instance=ExtResource("13_4n7t6")]
|
[node name="AudioStreamPlayer2D" parent="." instance=ExtResource("13_4n7t6")]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
autoplay = true
|
autoplay = true
|
||||||
|
|
||||||
|
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."]
|
||||||
|
navigation_polygon = SubResource("NavigationPolygon_jtlua")
|
||||||
|
|
||||||
|
[connection signal="ManagerReady" from="." to="Maps" method="SpawnRoomsGrid"]
|
||||||
|
|
|
||||||
44
Scenes/Maps/RogueliteMaps/Rg1.tscn
Normal file
44
Scenes/Maps/RogueliteMaps/Rg1.tscn
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
[gd_scene load_steps=7 format=4 uid="uid://da7hmajaaiohm"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_dm6kf"]
|
||||||
|
[ext_resource type="Resource" uid="uid://b5x83li01qrav" path="res://Resources/RogueliteMaps/TestRGMap.tres" id="2_5s4nm"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://clieeuln36a7a" path="res://Scenes/Actors/Fairy_FSM.tscn" id="5_b5lqw"]
|
||||||
|
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="5_q5p8k"]
|
||||||
|
[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="6_81nvh"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bb32f4p5e671j" path="res://Scenes/Actors/Fairy_Guard_FSM.tscn" id="6_rlq0q"]
|
||||||
|
|
||||||
|
[node name="Tilemaps" type="Node2D"]
|
||||||
|
process_mode = 1
|
||||||
|
script = ExtResource("1_dm6kf")
|
||||||
|
RoomResource = ExtResource("2_5s4nm")
|
||||||
|
|
||||||
|
[node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayers") groups=["Solid"]]
|
||||||
|
tile_map_data = PackedByteArray("AAAAAAIAAAAEAAIAAAAAAAMAAAAEAAIAAAAAAAQAAAAEAAIAAAAAAAUAAAAEAAIAAAAAAAYAAAAEAAIAAAAAAAcAAAAEAAIAAAAAAAgAAAAEAAIAAAAAAAkAAAAEAAIAAAABAAIAAAAEAAIAAAABAAMAAAAEAAIAAAABAAQAAAAEAAIAAAABAAUAAAAEAAIAAAABAAYAAAAEAAIAAAABAAcAAAAEAAIAAAABAAgAAAAEAAIAAAABAAkAAAAEAAIAAAACAAIAAAAEAAIAAAACAAMAAAAEAAIAAAACAAQAAAAEAAIAAAACAAUAAAAEAAIAAAACAAYAAAAEAAIAAAACAAcAAAAEAAIAAAACAAgAAAAEAAIAAAACAAkAAAAEAAIAAAADAAIAAAAEAAIAAAADAAMAAAAEAAIAAAADAAQAAAAEAAIAAAADAAUAAAAEAAIAAAADAAYAAAAEAAIAAAADAAcAAAAEAAIAAAADAAgAAAAEAAIAAAADAAkAAAAEAAIAAAAEAAIAAAAEAAIAAAAEAAMAAAAEAAIAAAAEAAQAAAAEAAIAAAAEAAUAAAAEAAIAAAAEAAYAAAAEAAIAAAAEAAcAAAAEAAIAAAAEAAgAAAAEAAIAAAAEAAkAAAAEAAIAAAAFAAIAAAAEAAIAAAAFAAMAAAAEAAIAAAAFAAQAAAAEAAIAAAAFAAUAAAAEAAIAAAAFAAYAAAAEAAIAAAAFAAcAAAAEAAIAAAAFAAgAAAAEAAIAAAAFAAkAAAAEAAIAAAAGAAIAAAAEAAIAAAAGAAMAAAAEAAIAAAAGAAQAAAAEAAIAAAAGAAUAAAAEAAIAAAAGAAYAAAAEAAIAAAAGAAcAAAAEAAIAAAAGAAgAAAAEAAIAAAAGAAkAAAAEAAIAAAAHAAIAAAAEAAIAAAAHAAMAAAAEAAIAAAAHAAQAAAAEAAIAAAAHAAUAAAAEAAIAAAAHAAYAAAAEAAIAAAAHAAcAAAAEAAIAAAAHAAgAAAAEAAIAAAAHAAkAAAAEAAIAAAAIAAIAAAAEAAIAAAAIAAMAAAAEAAIAAAAIAAQAAAAEAAIAAAAIAAUAAAAEAAIAAAAIAAYAAAAEAAIAAAAIAAcAAAAEAAIAAAAIAAgAAAAEAAIAAAAIAAkAAAAEAAIAAAAJAAIAAAAEAAIAAAAJAAMAAAAEAAIAAAAJAAQAAAAEAAIAAAAJAAUAAAAEAAIAAAAJAAYAAAAEAAIAAAAJAAcAAAAEAAIAAAAJAAgAAAAEAAIAAAAJAAkAAAAEAAIAAAAKAAIAAAAEAAIAAAAKAAMAAAAEAAIAAAAKAAQAAAAEAAIAAAAKAAUAAAAEAAIAAAAKAAYAAAAEAAIAAAAKAAcAAAAEAAIAAAAKAAgAAAAEAAIAAAAKAAkAAAAEAAIAAAALAAIAAAAEAAIAAAALAAUAAAAEAAIAAAALAAYAAAAEAAIAAAALAAcAAAAEAAIAAAALAAgAAAAEAAIAAAALAAkAAAAEAAIAAAAMAAIAAAAEAAIAAAAMAAUAAAAEAAIAAAAMAAYAAAAEAAIAAAAMAAcAAAAEAAIAAAAMAAgAAAAEAAIAAAAMAAkAAAAEAAIAAAANAAIAAAAEAAIAAAANAAMAAAAEAAIAAAANAAQAAAAEAAIAAAANAAUAAAAEAAIAAAANAAYAAAAEAAIAAAANAAcAAAAEAAIAAAANAAgAAAAEAAIAAAANAAkAAAAEAAIAAAAOAAIAAAAEAAIAAAAOAAMAAAAEAAIAAAAOAAQAAAAEAAIAAAAOAAUAAAAEAAIAAAAOAAYAAAAEAAIAAAAOAAcAAAAEAAIAAAAOAAgAAAAEAAIAAAAOAAkAAAAEAAIAAAAPAAIAAAAEAAIAAAAPAAMAAAAEAAIAAAAPAAQAAAAEAAIAAAAPAAUAAAAEAAIAAAAPAAYAAAAEAAIAAAAPAAcAAAAEAAIAAAAPAAgAAAAEAAIAAAAPAAkAAAAEAAIAAAAQAAIAAAAEAAIAAAAQAAMAAAAEAAIAAAAQAAQAAAAEAAIAAAAQAAUAAAAEAAIAAAAQAAYAAAAEAAIAAAAQAAcAAAAEAAIAAAAQAAgAAAAEAAIAAAAQAAkAAAAEAAIAAAARAAIAAAAEAAIAAAARAAMAAAAEAAIAAAARAAQAAAAEAAIAAAARAAUAAAAEAAIAAAARAAYAAAAEAAIAAAARAAcAAAAEAAIAAAARAAgAAAAEAAIAAAARAAkAAAAEAAIAAAASAAIAAAAEAAIAAAASAAMAAAAEAAIAAAASAAQAAAAEAAIAAAASAAUAAAAEAAIAAAASAAYAAAAEAAIAAAASAAcAAAAEAAIAAAASAAgAAAAEAAIAAAASAAkAAAAEAAIAAAATAAIAAAAEAAIAAAATAAMAAAAEAAIAAAATAAQAAAAEAAIAAAATAAUAAAAEAAIAAAATAAYAAAAEAAIAAAATAAcAAAAEAAIAAAATAAgAAAAEAAIAAAATAAkAAAAEAAIAAAAAAAAAAAAEAAIAAAAAAAEAAAAEAAIAAAABAAAAAAAEAAIAAAABAAEAAAAEAAIAAAACAAAAAAAEAAIAAAACAAEAAAAEAAIAAAADAAAAAAAEAAIAAAADAAEAAAAEAAIAAAAEAAAAAAAEAAIAAAAEAAEAAAAEAAIAAAAFAAAAAAAEAAIAAAAFAAEAAAAEAAIAAAAGAAAAAAAEAAIAAAAGAAEAAAAEAAIAAAAHAAAAAAAEAAIAAAAHAAEAAAAEAAIAAAAIAAAAAAAEAAIAAAAIAAEAAAAEAAIAAAAJAAAAAAAEAAIAAAAJAAEAAAAEAAIAAAAKAAAAAAAEAAIAAAAKAAEAAAAEAAIAAAALAAAAAAAEAAIAAAALAAEAAAAEAAIAAAALAAMAAAAEAAIAAAALAAQAAAAEAAIAAAAMAAAAAAAEAAIAAAAMAAEAAAAEAAIAAAAMAAMAAAAEAAIAAAAMAAQAAAAEAAIAAAANAAAAAAAEAAIAAAANAAEAAAAEAAIAAAAOAAAAAAAEAAIAAAAOAAEAAAAEAAIAAAAPAAAAAAAEAAIAAAAPAAEAAAAEAAIAAAAQAAAAAAAEAAIAAAAQAAEAAAAEAAIAAAARAAAAAAAEAAIAAAARAAEAAAAEAAIAAAASAAAAAAAEAAIAAAASAAEAAAAEAAIAAAATAAAAAAAEAAIAAAATAAEAAAAEAAIAAAA=")
|
||||||
|
tile_set = ExtResource("5_q5p8k")
|
||||||
|
navigation_enabled = false
|
||||||
|
script = ExtResource("6_81nvh")
|
||||||
|
_solidLayers = [NodePath("../Solid"), NodePath("../Props")]
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="Solid" type="TileMapLayer" parent="." groups=["Solid"]]
|
||||||
|
tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAABAAQAAAAGAAAAAAABAAQAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAEAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAEAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAFAAQAAAATAAkAAAABAAwAAAASAAkAAAABAAQAAAARAAkAAAABAAQAAAAQAAkAAAABAAQAAAAPAAkAAAABAAQAAAAOAAkAAAABAAQAAAANAAkAAAABAAQAAAAMAAkAAAABAAQAAAALAAkAAAACAAQAAAAIAAkAAAADAAQAAAAHAAkAAAABAAQAAAAGAAkAAAABAAQAAAAFAAkAAAABAAQAAAAEAAkAAAABAAQAAAADAAkAAAABAAQAAAACAAkAAAABAAQAAAABAAkAAAABAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAFAAQAAAATAAMAAAAKAAgAAAATAAQAAAAKAAkAAAALAAEAAAAKAAgAAAALAAIAAAAKAAkAAAAMAAEAAAAKAAgAAAAMAAIAAAAKAAkAAAANAAEAAAAKAAgAAAANAAIAAAAKAAkAAAAOAAEAAAAKAAgAAAAOAAIAAAAKAAkAAAAPAAEAAAAKAAgAAAAPAAIAAAAKAAkAAAAQAAEAAAAKAAgAAAAQAAIAAAAKAAkAAAARAAEAAAAKAAgAAAARAAIAAAAKAAkAAAASAAEAAAAKAAgAAAASAAIAAAAKAAkAAAABAAEAAAAKAAgAAAABAAIAAAAKAAkAAAACAAEAAAAKAAgAAAACAAIAAAAKAAkAAAADAAEAAAAKAAgAAAADAAIAAAAKAAkAAAAEAAEAAAAKAAgAAAAEAAIAAAAKAAkAAAAFAAEAAAAKAAgAAAAFAAIAAAAKAAkAAAAGAAEAAAAKAAgAAAAGAAIAAAAKAAkAAAAHAAEAAAAKAAgAAAAHAAIAAAAKAAkAAAAIAAEAAAAKAAgAAAAIAAIAAAAKAAkAAAAAAAMAAAAKAAgAAAAAAAQAAAAKAAkAAAA=")
|
||||||
|
tile_set = ExtResource("5_q5p8k")
|
||||||
|
navigation_enabled = false
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="Props" type="TileMapLayer" parent="." groups=["Solid"]]
|
||||||
|
tile_set = ExtResource("5_q5p8k")
|
||||||
|
navigation_enabled = false
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="Actors" type="Node2D" parent="."]
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="FairyFsm" parent="." instance=ExtResource("5_b5lqw")]
|
||||||
|
position = Vector2(68, 74)
|
||||||
|
|
||||||
|
[node name="FairyFsm2" parent="." instance=ExtResource("5_b5lqw")]
|
||||||
|
position = Vector2(245, 105)
|
||||||
|
|
||||||
|
[node name="FairyGuardFsm" parent="." instance=ExtResource("6_rlq0q")]
|
||||||
|
position = Vector2(186, 65)
|
||||||
9
Scripts/Controllers/RogueliteRoom.cs
Normal file
9
Scripts/Controllers/RogueliteRoom.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
using Cirno.Scripts.Resources.Roguelite;
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Cirno.Scripts.Controllers;
|
||||||
|
|
||||||
|
public partial class RogueliteRoom : Node2D
|
||||||
|
{
|
||||||
|
[Export] public RogueliteRoomResource RoomResource { get; set; }
|
||||||
|
}
|
||||||
1
Scripts/Controllers/RogueliteRoom.cs.uid
Normal file
1
Scripts/Controllers/RogueliteRoom.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b2j00riayxkit
|
||||||
50
Scripts/Controllers/RogueliteRoomManager.cs
Normal file
50
Scripts/Controllers/RogueliteRoomManager.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
using System.Linq;
|
||||||
|
using Cirno.Scripts.Resources.Roguelite;
|
||||||
|
using Godot;
|
||||||
|
using Godot.Collections;
|
||||||
|
|
||||||
|
namespace Cirno.Scripts.Controllers;
|
||||||
|
|
||||||
|
public partial class RogueliteRoomManager : Node2D
|
||||||
|
{
|
||||||
|
[Export] public Array<RogueliteRoomResource> Rooms { get; set; }
|
||||||
|
|
||||||
|
[Export] public Node2D SceneContainer { get; set; }
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
// Spawn first room
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SpawnRoomsGrid()
|
||||||
|
{
|
||||||
|
var firstRoom = Rooms.FirstOrDefault();
|
||||||
|
|
||||||
|
var origin = Vector2.Zero;
|
||||||
|
var tileSize = new Vector2(16, 16);
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
SpawnRoom(firstRoom, origin + (firstRoom.Size * new Vector2(i, j) * tileSize));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CallDeferred(MethodName.RebakeNavigationDeferred);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RebakeNavigationDeferred()
|
||||||
|
{
|
||||||
|
GameManager.Instance.RebakeNavigation();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SpawnRoom(RogueliteRoomResource room, Vector2 position)
|
||||||
|
{
|
||||||
|
var roomScene = GD.Load<PackedScene>(room.ScenePath);
|
||||||
|
|
||||||
|
var spawnedScene = this.CreateChild<RogueliteRoom>(roomScene, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Scripts/Controllers/RogueliteRoomManager.cs.uid
Normal file
1
Scripts/Controllers/RogueliteRoomManager.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bt2qjgnf1wc2r
|
||||||
9
Scripts/Enums/GameMode.cs
Normal file
9
Scripts/Enums/GameMode.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace Cirno.Scripts.Enums;
|
||||||
|
|
||||||
|
public enum GameMode
|
||||||
|
{
|
||||||
|
Game,
|
||||||
|
Roguelite,
|
||||||
|
BossRush,
|
||||||
|
SpellCard
|
||||||
|
}
|
||||||
|
|
@ -66,6 +66,8 @@ public partial class GameManager : Node2D
|
||||||
|
|
||||||
[Export] public NavigationRegion2D NavigationRegion { get; private set; }
|
[Export] public NavigationRegion2D NavigationRegion { get; private set; }
|
||||||
|
|
||||||
|
[Signal] public delegate void ManagerReadyEventHandler();
|
||||||
|
|
||||||
// Called when the node enters the scene tree for the first time.
|
// Called when the node enters the scene tree for the first time.
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
|
@ -116,8 +118,15 @@ public partial class GameManager : Node2D
|
||||||
//_ = DelayPlayerSpawn();
|
//_ = DelayPlayerSpawn();
|
||||||
|
|
||||||
CallDeferred(MethodName.DelayPlayerSpawn);
|
CallDeferred(MethodName.DelayPlayerSpawn);
|
||||||
|
|
||||||
|
CallDeferred(MethodName.OnFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnFinished()
|
||||||
|
{
|
||||||
|
EmitSignalManagerReady();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnPlayerRespawned()
|
private void OnPlayerRespawned()
|
||||||
{
|
{
|
||||||
this.ClearBullets();
|
this.ClearBullets();
|
||||||
|
|
|
||||||
|
|
@ -39,14 +39,14 @@ public partial class GlobalState : Node
|
||||||
this.ProcessMode = ProcessModeEnum.Always;
|
this.ProcessMode = ProcessModeEnum.Always;
|
||||||
|
|
||||||
_mapsDatabase = ResourceLoader.Load<MapsDatabase>(_mapsDatabaseResource);
|
_mapsDatabase = ResourceLoader.Load<MapsDatabase>(_mapsDatabaseResource);
|
||||||
|
|
||||||
Viewport root = GetTree().Root;
|
Viewport root = GetTree().Root;
|
||||||
// Using a negative index counts from the end, so this gets the last child node of `root`.
|
// Using a negative index counts from the end, so this gets the last child node of `root`.
|
||||||
CurrentScene = root.GetChild(-1);
|
CurrentScene = root.GetChild(-1);
|
||||||
|
|
||||||
_fader = CreateFader();
|
_fader = CreateFader();
|
||||||
|
|
||||||
_menuMouseTexture =ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
|
_menuMouseTexture = ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
|
||||||
_menuMouseImage = _menuMouseTexture.GetImage();
|
_menuMouseImage = _menuMouseTexture.GetImage();
|
||||||
|
|
||||||
GetTree().GetRoot().SizeChanged += OnSizeChanged;
|
GetTree().GetRoot().SizeChanged += OnSizeChanged;
|
||||||
|
|
@ -65,7 +65,7 @@ public partial class GlobalState : Node
|
||||||
var root = GetTree().GetRoot();
|
var root = GetTree().GetRoot();
|
||||||
var baseSize = root.ContentScaleSize;
|
var baseSize = root.ContentScaleSize;
|
||||||
var newSize = root.Size;
|
var newSize = root.Size;
|
||||||
|
|
||||||
int scaleX = newSize.X / baseSize.X;
|
int scaleX = newSize.X / baseSize.X;
|
||||||
int scaleY = newSize.Y / baseSize.Y;
|
int scaleY = newSize.Y / baseSize.Y;
|
||||||
int scale = Math.Min(scaleX, scaleY); // Ensure pixel-perfect scaling
|
int scale = Math.Min(scaleX, scaleY); // Ensure pixel-perfect scaling
|
||||||
|
|
@ -83,31 +83,25 @@ public partial class GlobalState : Node
|
||||||
|
|
||||||
// The solution is to defer the load to a later time, when
|
// The solution is to defer the load to a later time, when
|
||||||
// we can be sure that no code from the current scene is running:
|
// we can be sure that no code from the current scene is running:
|
||||||
|
|
||||||
//CallDeferred(MethodName.DeferredGotoScene, path, new MapStartDataResource());
|
//CallDeferred(MethodName.DeferredGotoScene, path, new MapStartDataResource());
|
||||||
|
|
||||||
GoToScene(path, new MapStartDataResource());
|
GoToScene(path, new MapStartDataResource());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GoToScene(string path, MapStartDataResource startData)
|
public void GoToScene(string path, MapStartDataResource startData)
|
||||||
{
|
{
|
||||||
GTweenSequenceBuilder.New()
|
GTweenSequenceBuilder.New()
|
||||||
.AppendCallback(() =>
|
.AppendCallback(() => { _loadingPlaque?.Show(); })
|
||||||
{
|
|
||||||
_loadingPlaque?.Show();
|
|
||||||
})
|
|
||||||
//.Append(_fader.TweenModulateAlpha(0, 0f))
|
//.Append(_fader.TweenModulateAlpha(0, 0f))
|
||||||
.Append(_fader.TweenModulateAlpha(1, 0.5f))
|
.Append(_fader.TweenModulateAlpha(1, 0.5f))
|
||||||
.AppendCallback(() =>
|
.AppendCallback(() => { CallDeferred(MethodName.DeferredGotoScene, path, startData); })
|
||||||
{
|
|
||||||
CallDeferred(MethodName.DeferredGotoScene, path, startData);
|
|
||||||
})
|
|
||||||
.Build()
|
.Build()
|
||||||
.PlayUnpausable();
|
.PlayUnpausable();
|
||||||
|
|
||||||
//CallDeferred(MethodName.DeferredGotoScene, path, startData);
|
//CallDeferred(MethodName.DeferredGotoScene, path, startData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GotoScene(MapResource map)
|
public void GotoScene(MapResource map)
|
||||||
{
|
{
|
||||||
this.SessionSettings.LevelNumber = map.LevelId;
|
this.SessionSettings.LevelNumber = map.LevelId;
|
||||||
|
|
@ -122,22 +116,22 @@ public partial class GlobalState : Node
|
||||||
//var sceneParent = CurrentScene.GetParent();
|
//var sceneParent = CurrentScene.GetParent();
|
||||||
//sceneParent.RemoveChild(CurrentScene);
|
//sceneParent.RemoveChild(CurrentScene);
|
||||||
//sceneParent.QueueFree();
|
//sceneParent.QueueFree();
|
||||||
|
|
||||||
// Load a new scene.
|
// Load a new scene.
|
||||||
var nextScene = GD.Load<PackedScene>(path);
|
var nextScene = GD.Load<PackedScene>(path);
|
||||||
|
|
||||||
// Instance the new scene.
|
// Instance the new scene.
|
||||||
CurrentScene = nextScene.Instantiate();
|
CurrentScene = nextScene.Instantiate();
|
||||||
|
|
||||||
// Add it to the active scene, as child of root.
|
// Add it to the active scene, as child of root.
|
||||||
GetTree().Root.AddChild(CurrentScene);
|
GetTree().Root.AddChild(CurrentScene);
|
||||||
|
|
||||||
// Optionally, to make it compatible with the SceneTree.change_scene_to_file() API.
|
// Optionally, to make it compatible with the SceneTree.change_scene_to_file() API.
|
||||||
GetTree().CurrentScene = CurrentScene;
|
GetTree().CurrentScene = CurrentScene;
|
||||||
|
|
||||||
// // Update current scene here too
|
// // Update current scene here too
|
||||||
// CurrentScene = GetTree().Root.GetChild(-1);
|
// CurrentScene = GetTree().Root.GetChild(-1);
|
||||||
|
|
||||||
if (startData is not null && GameManager.Instance is not null)
|
if (startData is not null && GameManager.Instance is not null)
|
||||||
{
|
{
|
||||||
// Call deferred if it gives issues
|
// Call deferred if it gives issues
|
||||||
|
|
@ -148,7 +142,7 @@ public partial class GlobalState : Node
|
||||||
// if (GameManager.Instance is not null) {
|
// if (GameManager.Instance is not null) {
|
||||||
// GameManager.Instance.ApplySessionState(SessionSettings);
|
// GameManager.Instance.ApplySessionState(SessionSettings);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
FadeIn();
|
FadeIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -162,9 +156,8 @@ public partial class GlobalState : Node
|
||||||
_plaqueTemplate = GD.Load<PackedScene>("res://Scenes/HUD/LoadingPlaque.tscn");
|
_plaqueTemplate = GD.Load<PackedScene>("res://Scenes/HUD/LoadingPlaque.tscn");
|
||||||
|
|
||||||
return _plaqueTemplate.Instantiate<Control>();
|
return _plaqueTemplate.Instantiate<Control>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ColorRect CreateFader()
|
private ColorRect CreateFader()
|
||||||
{
|
{
|
||||||
var canvas = new CanvasLayer();
|
var canvas = new CanvasLayer();
|
||||||
|
|
@ -176,19 +169,19 @@ public partial class GlobalState : Node
|
||||||
rect.SetAnchorsPreset(Control.LayoutPreset.FullRect);
|
rect.SetAnchorsPreset(Control.LayoutPreset.FullRect);
|
||||||
rect.Color = new Color(Colors.Black, 1f);
|
rect.Color = new Color(Colors.Black, 1f);
|
||||||
rect.ProcessMode = ProcessModeEnum.Always;
|
rect.ProcessMode = ProcessModeEnum.Always;
|
||||||
|
|
||||||
rect.Modulate = new Color(0,0,0,0);
|
rect.Modulate = new Color(0, 0, 0, 0);
|
||||||
|
|
||||||
rect.MouseFilter = Control.MouseFilterEnum.Ignore;
|
rect.MouseFilter = Control.MouseFilterEnum.Ignore;
|
||||||
|
|
||||||
canvas.CallDeferred("add_child", rect);
|
canvas.CallDeferred("add_child", rect);
|
||||||
|
|
||||||
this.CallDeferred("add_child", canvas);
|
this.CallDeferred("add_child", canvas);
|
||||||
|
|
||||||
_loadingPlaque = LoadPlaque();
|
_loadingPlaque = LoadPlaque();
|
||||||
canvas.CallDeferred("add_child", _loadingPlaque);
|
canvas.CallDeferred("add_child", _loadingPlaque);
|
||||||
_loadingPlaque.Hide();
|
_loadingPlaque.Hide();
|
||||||
|
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -205,18 +198,18 @@ public partial class GlobalState : Node
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly string SaveNameFile = "user://savegame.save";
|
private readonly string SaveNameFile = "user://savegame.save";
|
||||||
|
|
||||||
public void SaveGame()
|
public void SaveGame()
|
||||||
{
|
{
|
||||||
var items = InventoryManager.Instance.Save();
|
var items = InventoryManager.Instance.Save();
|
||||||
|
|
||||||
SessionSettings.Items = items;
|
SessionSettings.Items = items;
|
||||||
|
|
||||||
var serializedSavedata = new Godot.Collections.Dictionary<string, Variant>()
|
var serializedSavedata = new Godot.Collections.Dictionary<string, Variant>()
|
||||||
{
|
{
|
||||||
{ "Items", items },
|
{ "Items", items },
|
||||||
{ "Level", SessionSettings.LevelNumber },
|
{ "Level", SessionSettings.LevelNumber },
|
||||||
{ "Difficulty", (int)SessionSettings.Difficulty}
|
{ "Difficulty", (int)SessionSettings.Difficulty }
|
||||||
};
|
};
|
||||||
|
|
||||||
var saveFile = FileAccess.Open(SaveNameFile, FileAccess.ModeFlags.Write);
|
var saveFile = FileAccess.Open(SaveNameFile, FileAccess.ModeFlags.Write);
|
||||||
|
|
@ -224,16 +217,17 @@ public partial class GlobalState : Node
|
||||||
var jsonString = Json.Stringify(serializedSavedata);
|
var jsonString = Json.Stringify(serializedSavedata);
|
||||||
|
|
||||||
saveFile.StoreLine(jsonString);
|
saveFile.StoreLine(jsonString);
|
||||||
|
|
||||||
GD.Print("Saved data successfully");
|
GD.Print("Saved data successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LoadGame()
|
public bool LoadGame()
|
||||||
{
|
{
|
||||||
if (!FileAccess.FileExists(SaveNameFile))
|
if (!FileAccess.FileExists(SaveNameFile))
|
||||||
{
|
{
|
||||||
return false; // Error! We don't have a save to load.
|
return false; // Error! We don't have a save to load.
|
||||||
}
|
}
|
||||||
|
|
||||||
using var saveFile = FileAccess.Open(SaveNameFile, FileAccess.ModeFlags.Read);
|
using var saveFile = FileAccess.Open(SaveNameFile, FileAccess.ModeFlags.Read);
|
||||||
|
|
||||||
var jsonString = saveFile.GetLine();
|
var jsonString = saveFile.GetLine();
|
||||||
|
|
@ -245,13 +239,13 @@ public partial class GlobalState : Node
|
||||||
GD.Print($"JSON Parse Error: {json.GetErrorMessage()} in {jsonString} at line {json.GetErrorLine()}");
|
GD.Print($"JSON Parse Error: {json.GetErrorMessage()} in {jsonString} at line {json.GetErrorLine()}");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var deserializedSaveData = new Dictionary<string, Variant>((Dictionary)json.Data);
|
var deserializedSaveData = new Dictionary<string, Variant>((Dictionary)json.Data);
|
||||||
|
|
||||||
Dictionary<string, int> items = (Dictionary<string, int>)deserializedSaveData["Items"];
|
Dictionary<string, int> items = (Dictionary<string, int>)deserializedSaveData["Items"];
|
||||||
|
|
||||||
DifficultyLevel difficulty = (DifficultyLevel)deserializedSaveData["Difficulty"].AsInt32();
|
DifficultyLevel difficulty = (DifficultyLevel)deserializedSaveData["Difficulty"].AsInt32();
|
||||||
|
|
||||||
int levelNumber = (int)deserializedSaveData["Level"];
|
int levelNumber = (int)deserializedSaveData["Level"];
|
||||||
|
|
||||||
var levelData = _mapsDatabase.Maps.FirstOrDefault(x => x.LevelId == levelNumber);
|
var levelData = _mapsDatabase.Maps.FirstOrDefault(x => x.LevelId == levelNumber);
|
||||||
|
|
@ -259,25 +253,25 @@ public partial class GlobalState : Node
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.SessionSettings.NewSession();
|
this.SessionSettings.NewSession();
|
||||||
SessionSettings.LevelNumber = levelNumber;
|
SessionSettings.LevelNumber = levelNumber;
|
||||||
SessionSettings.Items = items;
|
SessionSettings.Items = items;
|
||||||
SessionSettings.Difficulty = difficulty;
|
SessionSettings.Difficulty = difficulty;
|
||||||
|
|
||||||
this.GotoScene(levelData);
|
this.GotoScene(levelData);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResizeCursor(float scale)
|
public void ResizeCursor(float scale)
|
||||||
{
|
{
|
||||||
var scaled = (Image)_menuMouseImage.Duplicate();
|
var scaled = (Image)_menuMouseImage.Duplicate();
|
||||||
|
|
||||||
var size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
var size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
||||||
|
|
||||||
scaled.Resize(size.X, size.Y, Image.Interpolation.Nearest);
|
scaled.Resize(size.X, size.Y, Image.Interpolation.Nearest);
|
||||||
|
|
||||||
DisplayServer.CursorSetCustomImage(scaled);
|
DisplayServer.CursorSetCustomImage(scaled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -285,6 +279,4 @@ public partial class GlobalState : Node
|
||||||
{
|
{
|
||||||
GotoScene(CurrentScene.GetSceneFilePath());
|
GotoScene(CurrentScene.GetSceneFilePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
using System;
|
||||||
|
using Cirno.Scripts.Enums;
|
||||||
using Cirno.Scripts.UI;
|
using Cirno.Scripts.UI;
|
||||||
using Godot.Collections;
|
using Godot.Collections;
|
||||||
|
|
||||||
|
|
@ -55,8 +56,6 @@ public partial class MainMenu : CanvasLayer
|
||||||
private void _on_start_button_pressed()
|
private void _on_start_button_pressed()
|
||||||
{
|
{
|
||||||
SpawnMenu<DifficultyMenu>(DifficultyMenuTemplate, SubMenuHolder);
|
SpawnMenu<DifficultyMenu>(DifficultyMenuTemplate, SubMenuHolder);
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
//GetTree().ChangeSceneToFile(GameScene);
|
//GetTree().ChangeSceneToFile(GameScene);
|
||||||
}
|
}
|
||||||
|
|
@ -66,6 +65,7 @@ public partial class MainMenu : CanvasLayer
|
||||||
if (GameScene == null) return;
|
if (GameScene == null) return;
|
||||||
if (GlobalState.Instance.LoadGame())
|
if (GlobalState.Instance.LoadGame())
|
||||||
{
|
{
|
||||||
|
GlobalState.Session.GameMode = GameMode.Game;
|
||||||
GlobalState.Session.AllowSaving = true;
|
GlobalState.Session.AllowSaving = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
Scripts/Resources/Roguelite/RogueliteRoom.cs.uid
Normal file
1
Scripts/Resources/Roguelite/RogueliteRoom.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://d1w6r3yfmw8ag
|
||||||
11
Scripts/Resources/Roguelite/RogueliteRoomResource.cs
Normal file
11
Scripts/Resources/Roguelite/RogueliteRoomResource.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Cirno.Scripts.Resources.Roguelite;
|
||||||
|
|
||||||
|
[GlobalClass]
|
||||||
|
public partial class RogueliteRoomResource : Resource
|
||||||
|
{
|
||||||
|
[Export] public StringName RoomName { get; set; }
|
||||||
|
[Export] public StringName ScenePath { get; set; }
|
||||||
|
[Export] public Vector2 Size { get; set; } = new(20, 10);
|
||||||
|
}
|
||||||
1
Scripts/Resources/Roguelite/RogueliteRoomResource.cs.uid
Normal file
1
Scripts/Resources/Roguelite/RogueliteRoomResource.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bl2ne8w12e3a
|
||||||
|
|
@ -34,6 +34,7 @@ public partial class DifficultyMenu : MenuBase
|
||||||
GlobalState.Session.NewSession();
|
GlobalState.Session.NewSession();
|
||||||
GlobalState.Session.AllowSaving = true;
|
GlobalState.Session.AllowSaving = true;
|
||||||
GlobalState.Session.Difficulty = difficultyLevel;
|
GlobalState.Session.Difficulty = difficultyLevel;
|
||||||
|
GlobalState.Session.GameMode = GameMode.Game;
|
||||||
GlobalState.Instance.GotoScene(StartMap);
|
GlobalState.Instance.GotoScene(StartMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ namespace Cirno.Scripts.Utils;
|
||||||
|
|
||||||
public class SessionSettings
|
public class SessionSettings
|
||||||
{
|
{
|
||||||
|
public GameMode GameMode { get; set; } = GameMode.Game;
|
||||||
public bool SkipDialogues { get; set; } = false;
|
public bool SkipDialogues { get; set; } = false;
|
||||||
public bool GodMode { get; set; } = false;
|
public bool GodMode { get; set; } = false;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue