1 /**
2 Ladder Control
3 Containes the basic functionality for ladder segments.
4
5 @author Randrian
6 */
7
8 local master;
9 local next_segment;
10 local prev_segment;
11
12 // Ladders are being searched for by FindObject and friends using a property.
13 local IsLadder = true;
14
SetMaster(object new_master,int new_index)15 public func SetMaster(object new_master, int new_index)
16 {
17 master = new_master;
18 return;
19 }
20
GetMaster()21 public func GetMaster()
22 {
23 return master;
24 }
25
26 // Returns whether this segment and the other one are from the same ladder.
IsSameLadder(object other_segment)27 public func IsSameLadder(object other_segment)
28 {
29 return GetMaster() == other_segment->GetMaster();
30 }
31
32 // Returns the segment (start x, start y, end x, end y, angle) on which the clonk can climb.
33 // The coordinate value must be specified with a precision of a 1000.
GetLadderData()34 public func GetLadderData()
35 {
36 // Normally (if not overloaded) interpret the first vertex as start and the second as end.
37 return [
38 GetX(1000) + 1000 * GetVertex(0, 0),
39 GetY(1000) + 1000 * GetVertex(0, 1),
40 GetX(1000) + 1000 * GetVertex(1, 0),
41 GetY(1000) + 1000 * GetVertex(1, 1),
42 0
43 ];
44 }
45
46 // Get the connected previous segment.
GetPreviousLadder()47 public func GetPreviousLadder()
48 {
49 return prev_segment;
50 }
51
52 // Get the connected next segment.
GetNextLadder()53 public func GetNextLadder()
54 {
55 return next_segment;
56 }
57
58 // Set the connected previous segment.
SetPreviousLadder(object ladder)59 public func SetPreviousLadder(object ladder)
60 {
61 prev_segment = ladder;
62 }
63
64 // Set the connected next segment.
SetNextLadder(object ladder)65 public func SetNextLadder(object ladder)
66 {
67 next_segment = ladder;
68 }
69