]> icculus.org git repositories - divverent/nexuiz.git/blob - data/scmenu/source/control/window/reference.qc
restructure
[divverent/nexuiz.git] / data / scmenu / source / control / window / reference.qc
1 // DP/Nex Menu
2 // control/window/reference.qc
3
4 //////////////////
5 // Item_Reference
6 ///
7 // NOTE: You use have multiple links to the same window, only one should be visible per frame,
8 // NOTE: else the behavior would be unexpectable
9 // NOTE: FIXME: Atm only references to windows with no parents( thus top layer ) work
10
11 /*
12 ===================
13 Item_Reference_Update
14 ===================
15 */
16 void() Item_Reference_Update =
17 {
18         // update the link and the link's parent
19         if( self.link == "" ) {
20                 self._child = null_entity;
21                 return;
22         }
23
24         if( self.link != self._link.name )
25                 self._link = Menu_GetItem( self.link );
26
27         self._child = self._link;
28         self._child._parent = self;
29 };
30
31 /*
32 ===================
33 Item_Reference_Draw
34 ===================
35 */
36 void() Item_Reference_Draw =
37 {
38         if( sys_debug_ref )
39                 Menu_Fill( self.pos, self.size, '0 0 0.2', 1.0, DRAWFLAG_ADDITIVE );
40 };
41
42 /*
43 ===================
44 Item_Reference_Destroy
45 ===================
46 */
47 void() Item_Reference_Destroy =
48 {
49         String_EntityFree( self, link );
50 };
51
52 /*
53 ===================
54 Item_Reference_Spawn
55 ===================
56 */
57 void() Item_Reference_Spawn =
58 {
59         self.flag = self.flag | FLAG_NOSELECT | FLAG_EMBEDDED;
60
61         String_EntityZone( self, link );
62
63         Item_Reference_Update();
64
65         self._destroy = Item_Reference_Destroy;
66         self._draw = Item_Reference_Draw;
67         self._update = Item_Reference_Update;
68 };