void OnTriggerEnter(Collider collider) { if (collider.name == "Baton Pivot") { playerController.keys++; keyManager.DeleteKey(); } }
private void DeleteKey(BaseKey key) { var affectedLockNodes = SaveManager.Data.Nodes.Where(node => node is LockNode).Select(node => node as LockNode).Where(node => node.myRequirement.ContainsKey(key.Id)); var affectedEventNodes = SaveManager.Data.Nodes.Where(node => node is EventKeyNode).Select(node => node as EventKeyNode).Where(node => node.myKeyId == key.Id); if (affectedLockNodes.Any() || affectedEventNodes.Any()) { var deleteActions = new DeleteReplaceForm(); deleteActions.StartPosition = FormStartPosition.CenterParent; deleteActions.ShowDialog(key.Name); if (deleteActions.Result == DeleteResult.Cancel) { return; } if (deleteActions.Result == DeleteResult.Delete) { foreach (var lockNode in affectedLockNodes) { lockNode.myRequirement.RemoveKey(key.Id); } foreach (var node in affectedEventNodes) { node.myKeyId = null; } } if (deleteActions.Result == DeleteResult.Replace) { foreach (var lockNode in affectedLockNodes) { lockNode.myRequirement.ReplaceKey(key.Id, deleteActions.ReplaceId); } foreach (var node in affectedEventNodes.Where(node => node.myKeyId == key.Id)) { if (KeyManager.GetEventKeys().Any(eventKey => eventKey.Id == deleteActions.ReplaceId)) { node.myKeyId = deleteActions.ReplaceId; } else // New Key is not an event { node.myKeyId = Guid.Empty; } } } } KeyManager.DeleteKey(key.Id); SaveManager.Dirty = true; GenerateLists(); }
private void DrawKeyListGUI(KeyManager manager) { int toDeleteIndex = -1; for (int i = 0; i < manager.Keys.Count; i++) { var key = manager.Keys[i]; EditorGUILayout.BeginVertical("box"); EditorGUILayout.BeginHorizontal(); string name = EditorGUILayout.TextField("Name", key.Name); if (!string.IsNullOrEmpty(name)) { manager.RenameKey(i, name); } if (GUILayout.Button("x", EditorStyles.miniButton, InspectorConstants.SmallButtonWidth)) { toDeleteIndex = i; } EditorGUILayout.EndHorizontal(); key.Prefab = (GameObject)EditorGUILayout.ObjectField(key.Prefab, typeof(GameObject), false); key.Colour = EditorGUILayout.ColorField(key.Colour); EditorUtil.DrawIntRange("Keys per Lock", key.KeysPerLock); if (key.KeysPerLock.Min < 1) { key.KeysPerLock.Min = 1; } EditorGUILayout.EndVertical(); } EditorGUILayout.Space(); if (toDeleteIndex != -1) { manager.DeleteKey(toDeleteIndex); } if (GUILayout.Button("Add New Key")) { manager.CreateKey(); } }