96 lines
2.1 KiB
C#
Raw Normal View History

2024-03-20 18:57:25 +03:00
using System.Collections.Generic;
using Mirror;
2024-03-19 21:51:11 +03:00
using UnityEngine;
namespace Level.BuildModules
{
2024-03-20 18:57:25 +03:00
public enum RoomDoor : byte
{
2024-03-20 19:15:58 +03:00
U = 0,
2024-03-20 18:57:25 +03:00
D,
L,
R,
U2,
D2,
L2,
R2,
U3,
D3,
L3,
R3
}
public class Room : NetworkBehaviour
2024-03-19 21:51:11 +03:00
{
public GameObject DoorU;
public GameObject DoorD;
public GameObject DoorL;
public GameObject DoorR;
public GameObject DoorU2;
public GameObject DoorD2;
public GameObject DoorL2;
public GameObject DoorR2;
public GameObject DoorU3;
public GameObject DoorD3;
public GameObject DoorL3;
public GameObject DoorR3;
public int roomSize = 6;
2024-03-20 18:57:25 +03:00
private List<GameObject> _doors = new();
private readonly SyncHashSet<RoomDoor> _disabledDoors = new();
2024-03-19 21:51:11 +03:00
2024-03-20 19:15:58 +03:00
private void Awake()
2024-03-20 18:57:25 +03:00
{
_doors.AddRange(new List<GameObject>
2024-03-19 21:51:11 +03:00
{
2024-03-20 18:57:25 +03:00
DoorU, DoorD, DoorL, DoorR,
DoorU2, DoorD2, DoorL2, DoorR2,
DoorU3, DoorD3, DoorL3, DoorR3
});
}
public override void OnStartClient()
{
_disabledDoors.Callback += OnDisabledDoorsChanged;
UpdateDoors();
}
void OnDisabledDoorsChanged(SyncHashSet<RoomDoor>.Operation op, RoomDoor door)
{
UpdateDoors();
}
2024-03-19 21:51:11 +03:00
2024-03-20 18:57:25 +03:00
[Server]
public void Finish()
{
RpcUpdateDoors();
}
[Server]
public void DisableDoor(RoomDoor door)
{
_disabledDoors.Add(door);
}
[ClientRpc]
void RpcUpdateDoors()
{
UpdateDoors();
}
[Client]
void UpdateDoors()
{
foreach (var door in _disabledDoors)
{
2024-03-20 21:17:05 +03:00
Destroy(_doors[(int)door]);
// _doors[(int)door].GetComponent<>
// _doors[(int)door].SetActive(false);
2024-03-19 21:51:11 +03:00
}
}
}
}