Починка генерации + небольшой прикол дверей

This commit is contained in:
ThomasCharester committed 2025-12-01 00:02:00 +03:00
1 parent aa4a9e69dd
commit fb9510a6b2
66 files changed
+4803 -1241

No files matched your search

@@ -47,25 +47,14 @@ namespace Code.Generator
// SpawnInitialRoomsAsync();
_orderService.OnOrderGiven += CreateRoomsStack;
RoomTrigger.PlayerEnteredRoom += OnPlayerEntered;
// RoomTrigger.PlayerEnteredRoom += OnPlayerEntered;
CreateInitialRoom();
SpawnNextRoomAsync();
CreateInitialRoom();
}
private void OnEnable()
private void OnPlayerEntered()
{
RoomTrigger.PlayerEnteredRoom += OnPlayerEntered;
}
private void OnDisable()
{
RoomTrigger.PlayerEnteredRoom -= OnPlayerEntered;
}
public void OnPlayerEntered()
{
SpawnNextRoomAsync();
SpawnNextRoom();
if (_spawnedRooms.Count > 3)
{
@@ -95,42 +84,51 @@ namespace Code.Generator
Debug.Log($"комната {room.name} время {room.RoomTimer} осталось: {remainingTime}");
}
CreateSaveRoom();
AddPickupRoom();
Debug.Log($"добавлена зона заказа");
AddSaveRoom();
Debug.Log($"добавлена сейв зона");
Debug.Log($"стек комнат: {_roomIndexesStack.Count}");
SpawnNextRoomAsync();
SpawnNextRoom();
}
private void CreateSaveRoom()
private void AddSaveRoom()
{
var prefab = _factory.GetRandomCachedPrefabOfType(RoomType.Save, out int roomIndex);
Room saveRoom = prefab.GetComponent<Room>();
_roomIndexesStack.Add(new(RoomType.Save, roomIndex));
Debug.Log($"Первая комната: {saveRoom.name}");
int saveRoomIndex = _factory.GetRandomIndexOfType(RoomType.Save);
_roomIndexesStack.Add(new(RoomType.Save, saveRoomIndex));
}
private void AddPickupRoom()
{
int pickupIndex = _factory.GetRandomIndexOfType(RoomType.PickUp);
int insertPos = Random.Range(1, _roomIndexesStack.Count + 1);
_roomIndexesStack.Insert(insertPos, new(RoomType.PickUp, pickupIndex));
}
[Inject] private CurrentSceneEnvironment _currentSceneEnvironment;
private void CreateInitialRoom()
{
GameplaySceneEnvironment gameplaySceneEnvironment = (GameplaySceneEnvironment)_currentSceneEnvironment;
_factory.GetRandomCachedPrefabOfType(RoomType.Initial, out int roomIndex);
// _roomIndexesStack.Add(new(RoomType.Initial, roomIndex));
int roomIndex = _factory.GetRandomIndexOfType(RoomType.Initial);
InitialRoom instantiated = _factory.CreateRoomByIndex(roomIndex, RoomType.Initial).GetComponent<InitialRoom>();
_spawnedRooms.Add(instantiated);
instantiated.transform.position = Vector3.zero;
instantiated.transform.rotation = Quaternion.identity;
gameplaySceneEnvironment.playerSpawnPoint = instantiated.playerSpawn;
instantiated.Initialize();
instantiated.Initialize(_orderService);
Debug.Log($"Первая комната: {instantiated.name}");
}
private void SpawnNextRoomAsync()
private void SpawnNextRoom()
{
if (_nextRoomStackIndex >= _roomIndexesStack.Count)
return;
@@ -149,23 +147,14 @@ namespace Code.Generator
PlaceRoom(room, previousRoom);
}
// Отписываться можно, но Хатико никогда не дождётся вызова уничтоженного объекта.
room.roomTrigger.OnEnter += OnPlayerEntered;
room.roomTrigger.OnExit += _spawnedRooms[^1].Seal;
_spawnedRooms.Add(room);
_nextRoomStackIndex++;
}
private void AddPickupRoom()
{
var prefab = _factory.GetRandomCachedPrefabOfType(RoomType.PickUp, out int pickupIndex);
Room pickupRoom = prefab.GetComponent<Room>();
if (_roomIndexesStack.Count == 0) return;
int insertPos = Random.Range(1, _roomIndexesStack.Count + 1);
_roomIndexesStack.Insert(insertPos, new(RoomType.PickUp, pickupIndex));
}
private void PlaceRoom(Room current, Room previous)
{
@@ -219,11 +208,11 @@ namespace Code.Generator
current.transform.rotation = Quaternion.Euler(0, segmentOriginYRotation, 0);
// locationSegment.isNeedSomeDoors = true;
// locationSegment.AddBadDoorId(locationSegment.LocationSegment.GetDoorOrigins.IndexOf(randomDoorOrigin));
current.Initialize();
current.Initialize(_orderService);
float frameOnTheBallRotation = segmentOriginYRotation + randomDoorOriginRotation.eulerAngles.y;
if (frameOnTheBallRotation > 305f) frameOnTheBallRotation -= 360f;
else if (frameOnTheBallRotation < -45f) frameOnTheBallRotation += 360f;
// float frameOnTheBallRotation = segmentOriginYRotation + randomDoorOriginRotation.eulerAngles.y;
// if (frameOnTheBallRotation > 305f) frameOnTheBallRotation -= 360f;
// else if (frameOnTheBallRotation < -45f) frameOnTheBallRotation += 360f;
// heOnTheBall.AddSlaveLocationSegment(locationSegment.Id);
// heOnTheBall.ReplaceSlaveSegmentDoorOriginYRotation(frameOnTheBallRotation);