public void DoorBehaviour_Use(uint id) { if (SpawnManager.SpawnedObjects.TryGetValue(id, out var spawnableObjectBehaviour)) { if (Vector3.Distance(FougeritePlayer.Location, spawnableObjectBehaviour.transform.position) <= 4) { var door = DoorSettings.GetDoorFromID(id); if (!FougeritePlayer.Inventory.HasItem(door.Item)) { FougeritePlayer.Notice("You need to have " + door.Item + " in your inventory!"); return; } bool open; if (_doorOpenDictionary.ContainsKey(id)) { open = !_doorOpenDictionary[id]; } else { open = true; } spawnableObjectBehaviour.transform.FindChild("Lock").gameObject.SetActive(!open); _doorOpenDictionary[id] = open; foreach (var rpcDictionaryValue in WorldEditorServer.RPCDictionary.Values) { rpcDictionaryValue.DoorBehaviour_SetOpen(id, open); } if (!_doorBehaviour_closing) { StartCoroutine(DoorBehaviour_AutoCloseCoroutine(id)); } // Debug.Log("Set open to " + open); } else { DoorBehaviour_SetNearDoor(id, false); // Debug.Log("Set NearDoor to false."); } } }
public static Door GetDoorFromID(uint id) { Load(); var doors = Doors.Doors.Where(t => t.ID == id).ToArray(); Door door; if (doors.Length == 0) { door = new Door(id, "asdf"); Doors.Doors.Add(door); DoorSettings.Save(); } else { door = doors[0]; } return(door); }