]> icculus.org git repositories - divverent/nexuiz.git/blob - scmenu/source/custom/creategame.qm
-Changed some item names to fit to the global name convention.
[divverent/nexuiz.git] / scmenu / source / custom / creategame.qm
1 // Property of Alientrap
2 // custom/creategame.qm
3
4 // uses target and _target
5 // requires neighbors: Picture, Name, Description
6 void() Nex_Automation_UpdateMap_Update =
7 {
8         local entity lItem;
9         local entity lTarget;
10
11         if( self._target.name != "Data::CreateGame::Map" )
12                 self._target = Menu_GetItem( "Data::CreateGame::Map" );
13
14         lTarget = self._target;
15
16         lItem = Menu_GetItem( "Picture" );
17         String_EntitySet( lItem, picture, lTarget._link.picture );
18
19         lItem = Menu_GetItem( "Name" );
20         String_EntitySet( lItem, text, lTarget._link.normal );
21
22         lItem = Menu_GetItem( "Description" );
23         String_EntitySet( lItem, text, lTarget._link.text );
24 };
25
26 void() Nex_Automation_UpdateMap_Destroy =
27 {
28         String_EntityFree( self, target );
29 };
30
31 void() Nex_Automation_UpdateMap =
32 {
33         String_EntityZone( self, target );
34
35         self._update = Nex_Automation_UpdateMap_Update;
36         self._destroy = Nex_Automation_UpdateMap_Destroy;
37 };
38
39 // more concrete functions
40 void() Nex_Action_Map_Next =
41 {
42         local entity lItem;
43
44         lItem = Menu_GetItem( "Data::CreateGame::Map" );
45         lItem._realValue = lItem._realValue + 1;
46         Raise_DataEvent( lItem, ITEM_DATA_SEND );
47 };
48
49 void() Nex_Action_Map_Prev =
50 {
51         local entity lItem;
52
53         lItem = Menu_GetItem( "Data::CreateGame::Map" );
54         lItem._realValue = lItem._realValue - 1;
55         Raise_DataEvent( lItem, ITEM_DATA_SEND );
56 };
57
58 // TODO: Make MaxPlayers real Data items (no container with correct set behavior)
59 void() Nex_Action_Map_Start =
60 {
61         local entity lItem;
62         local float  lNumBots, lSkill;
63         // we need to set the following var
64         lItem = Menu_GetItem( "::Data::CreateGame::NumBots" );
65         lNumBots = stof( lItem.value );
66         lItem = Menu_GetItem( "::Data::CreateGame::BotSkill" );
67         lSkill = stof( lItem.value );
68
69         cvar_set( "saved1", "1" );
70         cvar_set( "scratch1", ftos( pow( 2, lNumBots ) - 1 ) );
71         cvar_set( "scratch2", ftos( lSkill * (pow(4, min(lNumBots, 8)) - 1) / 3) );
72         cvar_set( "scratch3", ftos( lSkill * (pow(4, min(lNumBots - 8, 8)) - 1) / 3) );
73         // Set maxplayers
74         lItem = Menu_GetItem( "::Data::CreateGame::MaxPlayers" );
75         cmd( "maxplayers \"" );
76         cmd( lItem.value );
77         cmd( "\"\n" );
78
79         lItem = Menu_GetItem( "::Data::CreateGame::Map" );
80         cmd( "map \"" );
81         cmd( lItem._link.link );
82         cmd( "\"\n");
83
84         // force the menu to hide
85         m_hide();
86 };
87
88 // init the map list
89 void() Nex_Action_MapList_Init =
90 {
91         Item_DataLink_Nex_MapList_InitWithMapList( self );
92 };