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