summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/System.c4g/Aimer.c
diff options
context:
space:
mode:
authorJan <>2015-07-10 18:11:22 +0200
committerJan <_>2015-07-10 18:47:01 +0200
commitf1ece16c08d8c01e1d49a25f0314a96c021e73cb (patch)
tree9bc9f547f2524dee8e62f168f317df465a6cbcdd /TemplePushing.c4s/System.c4g/Aimer.c
parent80b15646d73587f4e15a2897314692b58aa1a47f (diff)
downloadtempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz
tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip
r0.921
Diffstat (limited to 'TemplePushing.c4s/System.c4g/Aimer.c')
-rw-r--r--TemplePushing.c4s/System.c4g/Aimer.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/TemplePushing.c4s/System.c4g/Aimer.c b/TemplePushing.c4s/System.c4g/Aimer.c
new file mode 100644
index 0000000..30a30e9
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/Aimer.c
@@ -0,0 +1,47 @@
+/*-- Aimer appendto --*/
+
+#strict 2
+#appendto AIMR
+
+local targetDir;
+
+private func DoDirControl(int iDir)
+{
+ // Abbruch, wenn das Zielobjekt weg ist
+ if (!pTargetObject) return(Abort());
+ // Richtungsänderung?
+ if (iDir != targetDir)
+ {
+ iAngle=-iAngle;
+ if(GetAction(pTargetObject) != "Scale")
+ {
+ pTargetObject->SetDir(iDir);
+ }
+ pArrow->UpdateAngle(iAngle);
+ pTargetObject->~AimingAngle(iAngle);
+ targetDir = iDir;
+ }
+ else
+ // Tastendruck in Zielrichtung: Zaubern!
+ DoEnter();
+ return(1);
+}
+
+private func DoUpDownControl(int iByChange)
+{
+ // Abbruch, wenn das Zielobjekt weg ist
+ if (!pTargetObject) return(Abort());
+ // Zielrichtung ändern
+ iAngle = BoundBy(Abs(iAngle) + iByChange, 0, 180);
+ if (!targetDir) iAngle *= -1;
+ pArrow->UpdateAngle(iAngle);
+ pTargetObject->~AimingAngle(iAngle);
+ return(1);
+}
+
+public func Create(object pCommandObject, object pMenuObj, int iStartAngle)
+{
+ var ret = _inherited(pCommandObject, pMenuObj, iStartAngle);
+ targetDir = pTargetObject->GetDir();
+ return ret;
+} \ No newline at end of file