예제 #1
0
 void OnTriggerEnter(Collider collider)
 {
     if (collider.name == "Baton Pivot")
     {
         playerController.keys++;
         keyManager.DeleteKey();
     }
 }
예제 #2
0
        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();
            }
        }