source: GTP/trunk/App/Demos/Illum/Shark3D/version164x12u/IllumDemo/bin/res/universe/actor/settingplayer.s3d_actor_run @ 2196

Revision 2196, 10.7 KB checked in by szirmay, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14// Definition of a player on the setting.
15//
16// It mainly manages the connection to the client.
17// A player actor lives as long as the connection to the client exists.
18//
19// A player actor does not contain level-specific player information.
20// Such information is managed by a level-specific level-player actor.
21// The level-player actor is created each time again entering a new level.
22// For this, a level must understand a level-player command for producing
23// the a level-player.
24
25// Since each dsc-file formally can only contain a singe actor,
26// we use the group actor to define more than one actor.
27actor_ident "kit_base.group"
28actor_param
29{
30    // Delegate action calls to the children.
31    active 1
32    child_array
33    {
34        ident "kit_base.producer"
35        param
36        {
37            name "player_rawproducer"
38            deleg_name "player_set"
39            active 1
40            ident "kit_base.capsule"
41            param
42            {
43                // Delegate the action calls to all children:
44                active 1
45                // Name of the scope of the capsule.
46                scope "settingplayer"
47                // Name of the capsule actor within its own namespace.
48                // Actors within the capsule can access the capsule
49                // actor itself by this name.
50                local_name "capsule"
51                // Name of the capsule seen from outside
52                // registered in the local namespace. Commands sent
53                // to this actor are delegate to "delegate_target".
54                local_deleg_name "capsule_deleg"
55                // Delegate commands from outside to the dispatcher.
56                deleg_target "dispatch_export"
57                // The capsule contains a group of child actors.
58                child_ident "kit_base.group"
59                child_param
60                {
61                    // Delegate action calls to the children.
62                    active 1
63                    child_array
64                    {
65                        // Dispatcher for events from outside the player
66                        // capsule.
67                        ident "kit_base.dispatch"
68                        param
69                        {
70                            name "dispatch_export"
71                            entry_array
72                            {
73                                cmds "destroy"
74                                targets "levelplayer" "capsule"
75                            }
76                            {
77                                cmds "net_traverse"
78                                targets
79                                    "levelplayer_netproduce"
80                                newcmd "traverse"
81                            }
82                            {
83                                cmds "net_appear"
84                                targets "reproduce"
85                                newcmd "rework"
86                            }
87                            {
88                                cmds "add_motion"
89                                targets "levelplayer"
90                            }
91                            {
92                                // Store the inform-actor in "inform":
93                                cmds "assign_inform" "set_inform"
94                                targets "inform_deleg"
95                                newcmd "set_deleg_target"
96                            }
97                            {
98                                cmds "assign_inform" "set_inform"
99                                targets "informanswer"
100                            }
101                            {
102                                // Refresh connection to setting-player.
103                                cmds "assign_inform"
104                                targets "levelplayer_refresh_charge"
105                                newcmd "perform"
106                            }
107                            {
108                                cmds "search_inform" "search_noinform"
109                                targets "informanswer"
110                            }
111                            {
112                                // Check if a new player must be created.
113                                cmds "check_level"
114                                targets "levelplayer_fetch"
115                                newcmd "check_produce_charge"
116                            }
117                            {
118                                cmds "god" "goto_level_next" "goto_level_prev"
119                                    "special"
120                                // Delegate to the level-player:
121                                targets "levelplayer"
122                            }
123                        }
124                    }
125                    {
126                        ident "kit_base.dispatch"
127                        param
128                        {
129                            name "dispatch"
130                            entry_array
131                            {
132                                cmds "levelplayer_pre"
133                                targets
134                            }
135                            {
136                                cmds "levelplayer_post"
137                                targets
138                            }
139                        }
140                    }
141                    {
142                        // Dispatcher for commands from the level player:
143                        ident "kit_base.dispatch"
144                        param
145                        {
146                            name "dispatch_inform"
147                            entry_array
148                            {
149                                cmds
150                                    "set_gfxmgr_level"
151                                    "set_sndmgr_level"
152                                    "set_state_world"
153                                    "set_state_sky"
154                                    "set_sim_world"
155                                    "set_noise_world"
156                                    "set_sensorstate_world"
157                                    "set_camera"
158                                targets "inform"
159                            }
160                            {
161                                cmds
162                                    "select_link"
163                                    "reproduce"
164                                targets "levelplayer_netproduce"
165                            }
166                        }
167                    }
168                    {
169                        ident "kit_base.deleg"
170                        param
171                        {
172                            name "inform_deleg"
173                            deleg_name "inform"
174                            deleg_target ""
175                            allow_no_target 1
176                            enabled 1
177                        }
178                    }
179                    {
180                        ident "kit_engobj.informanswer"
181                        param
182                        {
183                            name "informanswer"
184                            answer_cmd "add_result"
185                            answer_actor "capsule_deleg"
186                        }
187                    }
188                    {
189                        ident "kit_engobj.informmgr"
190                        param
191                        {
192                            name "levelplayer_informmgr"
193                            //
194                            deleg_name "levelplayer"
195                            // The inform-actor. A level player sends
196                            // its commands to this actor:
197                            inform "dispatch_inform"
198                            ignore_no_charge 1
199                            // Recip about level-player changes.
200                            notify_target "dispatch"
201                            notify_pre_cmd "levelplayer_pre"
202                            notify_post_cmd "levelplayer_post"
203                            // If no level player exists, this command is sent
204                            // to this actor to get a player in a level.
205                            produce_target "^level"
206                            produce_cmd "produce_player"
207                        }
208                    }
209                    {
210                        ident "kit_base.paramvoid"
211                        param
212                        {
213                            name "levelplayer_refresh_charge"
214                            target "levelplayer_informmgr"
215                            cmd "refresh_charge"
216                        }
217                    }
218                    {
219                        ident "kit_engbase.netproducer"
220                        param
221                        {
222                            name "levelplayer_netproduce"
223                            produce_target "levelplayer_informmgr"
224                            produce_cmd "produce_charge"
225                            net_traverse_cmd "net_traverse"
226                        }
227                    }
228                    {
229                        ident "kit_engobj.fetch"
230                        param
231                        {
232                            name "levelplayer_fetch"
233                            query_target "levelplayer_informmgr"
234                            query_cmd "get_charge"
235                            produce_target "levelplayer_netproduce"
236                            produce_cmd "produce"
237                            produce_report_target ""
238                            produce_report_cmd ""
239                            enum_target ""
240                            enum_cmd ""
241                            enum_report_target ""
242                            enum_report_cmd ""
243                        }
244                    }
245                    {
246                        ident "kit_engbase.netreproduce"
247                        param
248                        {
249                            name "reproduce"
250                            producer "^player_producer"
251                            charge "capsule_deleg"
252                            reproduce_cmd "reproduce"
253                        }
254                    }
255                }
256            }
257        }
258    }
259}
Note: See TracBrowser for help on using the repository browser.