Починка генерации + небольшой прикол дверей
This commit is contained in:
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);
|
||||
|
||||
Reference in new issue
Block a user