From c1bc5ec714f3d5aa51c1ec70dd0e82597d82848e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Thu, 4 Apr 2024 18:03:57 +0200 Subject: [PATCH] ValueStack, wollte ich aber gar nicht haben... --- 3d Prototyp/Assets/Scripts/ValueStack.cs | 54 +++++++++++++++++++ 3d Prototyp/Assets/Scripts/ValueStack.cs.meta | 3 ++ 2 files changed, 57 insertions(+) create mode 100644 3d Prototyp/Assets/Scripts/ValueStack.cs create mode 100644 3d Prototyp/Assets/Scripts/ValueStack.cs.meta diff --git a/3d Prototyp/Assets/Scripts/ValueStack.cs b/3d Prototyp/Assets/Scripts/ValueStack.cs new file mode 100644 index 00000000..bde1241f --- /dev/null +++ b/3d Prototyp/Assets/Scripts/ValueStack.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; + +/// +/// Ermöglicht das erstellen einer Variable mit gestapeltem Wert, sodass überschreiben und zurücksetzen möglich ist. +/// +public class ValueStack : Stack +{ + /// + /// Erzeugt eine neue Instanz des ValueStacks und initialisiert diesen mit dem Standardwert. + /// + public ValueStack() + { + Push(default); + } + + /// + /// Erzeugt eine neue Instanz des ValueStacks und initialisiert diesen mit dem gegebenen Wert. + /// + /// Der Wert, mit dem der Stack initialisiert werden soll. + public ValueStack(T initialValue) + { + Push(initialValue); + } + + /// + /// Setzt den Wert des Stacks auf den gegebenen Wert. + /// + /// Der Wert, auf den der Stack gesetzt werden soll. + /// Der gegebene Wert um Verkettung von Expression zu ermöglichen. + public new T Push(T value) + { + base.Push(value); + + return value; + } + + /// + /// Popt den obersten Wert des Stacks, wenn der Stack nur noch einen Wert enthält, wird nicht gepopt und dieser zurückgegeben. + /// + public new T Pop() + { + if (Count == 1) + return Peek(); + + return base.Pop(); + } + + /// + /// Gibt den aktuellen Wert des ValueStacks zurück. + /// + public T CurrentValue() => Peek(); + + public static implicit operator T(ValueStack stack) => stack.CurrentValue(); +} \ No newline at end of file diff --git a/3d Prototyp/Assets/Scripts/ValueStack.cs.meta b/3d Prototyp/Assets/Scripts/ValueStack.cs.meta new file mode 100644 index 00000000..958a0c55 --- /dev/null +++ b/3d Prototyp/Assets/Scripts/ValueStack.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c7221cc10b464cef9d2e892b110099d5 +timeCreated: 1712243859 \ No newline at end of file