summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/System.c4g/Aimer.c
blob: cc9490b7d67f4fb3d5510ffb40fa6238569c8d06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*-- Improve Aimer selection --*/

#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;
}

public func Initialize()
{
	SetVisibility(VIS_Owner | VIS_Allies);
	return _inherited(...);
}