Вроде ок, осталось проверить на практике нормально, когда комнаты будут готовы
This commit is contained in:
1 parent
c6b097a879
commit
52edef92e3
10 files changed
+328
-22
No files matched your search
@@ -33,12 +33,29 @@ namespace Code.Generator
|
|||||||
{
|
{
|
||||||
_roomIndexesStack.Clear();
|
_roomIndexesStack.Clear();
|
||||||
var remainingTime = _timer;
|
var remainingTime = _timer;
|
||||||
var ladderTimer = 0f;
|
float ladderTimer = 0f;
|
||||||
int totalRooms = generatorConfig.roomAssetReferences.Length;
|
int totalRooms = generatorConfig.roomAssetReferences.Length;
|
||||||
List<int> availableIndexes = new List<int>();
|
List<int> availableIndexes = new List<int>();
|
||||||
for (int i = 0; i < totalRooms; i++)
|
for (int i = 0; i < totalRooms; i++)
|
||||||
availableIndexes.Add(i);
|
availableIndexes.Add(i);
|
||||||
|
|
||||||
|
int saveIndex = FindRoomIndexByType(RoomType.Save);
|
||||||
|
if (saveIndex != -1)
|
||||||
|
{
|
||||||
|
var prefab = _factory.GetCachedPrefab(saveIndex);
|
||||||
|
if (prefab != null)
|
||||||
|
{
|
||||||
|
Room saveRoom = prefab.GetComponent<Room>();
|
||||||
|
if (saveRoom != null)
|
||||||
|
{
|
||||||
|
_roomIndexesStack.Add(saveIndex);
|
||||||
|
availableIndexes.Remove(saveIndex);
|
||||||
|
|
||||||
|
Debug.Log($"Первая комната: {saveRoom.name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while (remainingTime > 0 && availableIndexes.Count > 0)
|
while (remainingTime > 0 && availableIndexes.Count > 0)
|
||||||
{
|
{
|
||||||
int randomIndex = Random.Range(0, availableIndexes.Count);
|
int randomIndex = Random.Range(0, availableIndexes.Count);
|
||||||
@@ -47,33 +64,48 @@ namespace Code.Generator
|
|||||||
var prefab = _factory.GetCachedPrefab(chosenOne);
|
var prefab = _factory.GetCachedPrefab(chosenOne);
|
||||||
if (prefab == null)
|
if (prefab == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Room room = prefab.GetComponent<Room>();
|
Room room = prefab.GetComponent<Room>();
|
||||||
if (room == null)
|
if (room == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (room.RoomType == RoomType.Basic)
|
switch (room.RoomType)
|
||||||
{
|
{
|
||||||
float currentRoomTime = room.RoomTimer;
|
case RoomType.Save or RoomType.PickUp:
|
||||||
if (remainingTime >= currentRoomTime && ladderTimer < 30f)
|
availableIndexes.RemoveAt(randomIndex);
|
||||||
{
|
continue;
|
||||||
_roomIndexesStack.Add(chosenOne);
|
|
||||||
remainingTime -= currentRoomTime;
|
case RoomType.Basic:
|
||||||
ladderTimer += currentRoomTime;
|
float currentRoomTime = room.RoomTimer;
|
||||||
Debug.Log($"комната {room.name} время {currentRoomTime} осталось: {remainingTime}");
|
if (remainingTime >= currentRoomTime && ladderTimer < 30f)
|
||||||
}
|
{
|
||||||
|
_roomIndexesStack.Add(chosenOne);
|
||||||
|
remainingTime -= currentRoomTime;
|
||||||
|
ladderTimer += currentRoomTime;
|
||||||
|
Debug.Log($"комната {room.name} время {currentRoomTime} осталось: {remainingTime}");
|
||||||
|
}
|
||||||
|
availableIndexes.RemoveAt(randomIndex);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RoomType.Ladder:
|
||||||
|
if (ladderTimer >= 30f)
|
||||||
|
{
|
||||||
|
_roomIndexesStack.Add(chosenOne);
|
||||||
|
ladderTimer = 0f;
|
||||||
|
|
||||||
|
availableIndexes.RemoveAt(randomIndex);
|
||||||
|
Debug.Log($"Лестница ура {room.name}");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Debug.Log($"тип комнаты {room.RoomType}");
|
||||||
|
availableIndexes.RemoveAt(randomIndex);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if (room.RoomType == RoomType.Ladder && ladderTimer >= 30f)
|
|
||||||
{
|
|
||||||
_roomIndexesStack.Add(chosenOne);
|
|
||||||
ladderTimer = 0f;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
availableIndexes.RemoveAt(randomIndex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddPickupRoom();
|
||||||
Debug.Log($"стек комнат: {_roomIndexesStack.Count}");
|
Debug.Log($"стек комнат: {_roomIndexesStack.Count}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,11 +131,56 @@ namespace Code.Generator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddSaveZone(List<int> roomIndexes)
|
private int FindRoomIndexByType(RoomType neededType)
|
||||||
{
|
{
|
||||||
|
int totalRooms = generatorConfig.roomAssetReferences.Length;
|
||||||
|
for (int i = 0; i < totalRooms; i++)
|
||||||
|
{
|
||||||
|
var prefab = _factory.GetCachedPrefab(i);
|
||||||
|
if (prefab == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Room room = prefab.GetComponent<Room>();
|
||||||
|
if (room == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (room.RoomType == neededType)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AddPickupRoom()
|
||||||
|
{
|
||||||
|
int pickupIndex = FindRoomIndexByType(RoomType.PickUp);
|
||||||
|
if (pickupIndex == -1)
|
||||||
|
{
|
||||||
|
Debug.Log("PickUp комнат не найдено але");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var prefab = _factory.GetCachedPrefab(pickupIndex);
|
||||||
|
if (prefab == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Room pickupRoom = prefab.GetComponent<Room>();
|
||||||
|
if (pickupRoom == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_roomIndexesStack.Count == 0)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("стек пуст, нет позиции после первой");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int insertPos = Random.Range(1, _roomIndexesStack.Count + 1);
|
||||||
|
|
||||||
|
_roomIndexesStack.Insert(insertPos, pickupIndex);
|
||||||
|
Debug.Log($"PickUp комната '{pickupRoom.name}' позиция {insertPos}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void PlaceRoom(Room current, Room previous)
|
private void PlaceRoom(Room current, Room previous)
|
||||||
{
|
{
|
||||||
if (current.EnterMarker == null || previous.ExitMarker == null)
|
if (current.EnterMarker == null || previous.ExitMarker == null)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace Code.Generator
|
|||||||
{
|
{
|
||||||
Basic,
|
Basic,
|
||||||
Ladder,
|
Ladder,
|
||||||
Save
|
Save,
|
||||||
|
PickUp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1210510213248623221
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2687956200588076758}
|
||||||
|
- component: {fileID: 8483856402102076135}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Ladder
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2687956200588076758
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1210510213248623221}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &8483856402102076135
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1210510213248623221}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ba1a19c534f4401aa287d4b68ce470c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Code.Generator.Room
|
||||||
|
roomType: 1
|
||||||
|
roomTimer: 0
|
||||||
|
enterMarker: {fileID: 0}
|
||||||
|
exitMarker: {fileID: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 90a339f078799f146aee5f482db994df
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2465867831840681817
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3769058183323880653}
|
||||||
|
- component: {fileID: -721043246891927013}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: PickUp
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3769058183323880653
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2465867831840681817}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &-721043246891927013
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2465867831840681817}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ba1a19c534f4401aa287d4b68ce470c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Code.Generator.Room
|
||||||
|
roomType: 3
|
||||||
|
roomTimer: 0
|
||||||
|
enterMarker: {fileID: 0}
|
||||||
|
exitMarker: {fileID: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b9f507af25f113b48a7bafe7c02da64d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &352515001007968155
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3783317667698125959}
|
||||||
|
- component: {fileID: 8644357564221115595}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Room4
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3783317667698125959
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 352515001007968155}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &8644357564221115595
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 352515001007968155}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ba1a19c534f4401aa287d4b68ce470c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Code.Generator.Room
|
||||||
|
roomType: 0
|
||||||
|
roomTimer: 30
|
||||||
|
enterMarker: {fileID: 0}
|
||||||
|
exitMarker: {fileID: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 18c4fdd9261d275489e459ca70dfbcdc
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &4585225813478361630
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4188259080799622194}
|
||||||
|
- component: {fileID: -986518061156804144}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Save
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &4188259080799622194
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4585225813478361630}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &-986518061156804144
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4585225813478361630}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ba1a19c534f4401aa287d4b68ce470c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Code.Generator.Room
|
||||||
|
roomType: 2
|
||||||
|
roomTimer: 0
|
||||||
|
enterMarker: {fileID: 0}
|
||||||
|
exitMarker: {fileID: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3dc54d945f5468649b66664de9a18b12
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Reference in new issue
Block a user