public void UpdateCurrentKeyBindText() { EnsureInitializedKeyBindGroups(); StringBuilder sb = new StringBuilder(); for (int s = 0; s < keyBindGroups.Length; ++s) { KBindGroup ks = keyBindGroups[s]; if (ks.keyBindList.Count == 0) { continue; } sb.Append("[" + ks.name + "]\n"); for (int i = 0; i < ks.keyBindList.Count; ++i) { KBind kb = ks.keyBindList[i]; bool needsPriority = true; bool hasKeys = true; if (kb.keyCombinations.Length != 0 && (kb.keyCombinations.Length != 1 || kb.keyCombinations[0].key != KCode.None)) { KCombination theseKeys = kb.keyCombinations[0]; bool hasPrev = i > 0; bool hasNext = i < ks.keyBindList.Count - 1; KBind prev = (hasPrev) ? ks.keyBindList[i - 1] : null; KBind next = (hasNext) ? ks.keyBindList[i + 1] : null; KCombination prevKeys = hasPrev && prev.keyCombinations.Length > 0 ? prev.keyCombinations[0] : null; KCombination nextKeys = hasNext && next.keyCombinations.Length > 0 ? next.keyCombinations[0] : null; needsPriority = (prevKeys != null && prevKeys.CompareTo(theseKeys) == 0 || nextKeys != null && nextKeys.CompareTo(theseKeys) == 0); } else { hasKeys = false; } if (hasKeys) { sb.Append(kb.ShortDescribe(" | ")); } else { sb.Append("(no keys)"); } sb.Append(" :"); if (needsPriority) { sb.Append(kb.priority.ToString()); } sb.Append(": "); sb.Append(kb.name); sb.Append("\n"); } } if (axisBinds.Count > 0) { sb.Append("[Axis]\n"); for (int i = 0; i < axisBinds.Count; ++i) { AxBind ab = axisBinds[i]; sb.Append(ab.ShortDescribe(" | ")); sb.Append(" :: "); sb.Append(ab.name); sb.Append("\n"); } } CurrentKeyBindings = sb.ToString(); }
/// sort by keypress public int CompareTo(KeyTrigger other) { return(kp.CompareTo(other.kp)); }