home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 2 (DVD) / XENIADVD2.iso / Patch / Project Nomads / pnomads_patch2_eng.exe / MAINDIR / Run / scripts / envinit.tcl < prev    next >
Encoding:
Text File  |  2002-10-17  |  34.9 KB  |  842 lines

  1. #--------------------------------------------------------------------
  2. #   envinit.tcl
  3. #
  4. #   Sammlung von Tcl-Prozeduren, welche die Umgebung von
  5. #   Nomads initialisieren (Server-Objekte, Handler-Objekte,
  6. #   Settings, Netzwerk-Initialisierung).
  7. #   
  8. #   20-Mar-99   floh    created
  9. #   01-Jul-99   Bernd
  10. #   13-Jul-99   Bernd
  11. #   14-Jul-99   floh    create_handlers: new n3dnode /world/gui
  12. #   29-Jul-99   floh    + Viewer-Setstate nach opengame
  13. #                       + tod3d/togl-Funktionen
  14. #   30-Jul-99   floh    + ninputhandler ist tot und durch ninputserver
  15. #                         ersetzt
  16. #   23-Aug-99   bernd   game_init in get_gamedata umbenannt
  17. #                       game_cleanup gekillt        
  18. #   20-Sep-99   bernd   Demo Anfang nicht mehr so dramatisch.
  19. #   26-Sep-99   bernd   Demo Anfang: Andere Uhrzeit
  20. #   27-Sep-99   bernd   Demo Anfang
  21. #   05-Okt-99   bernd   Demo Anfang / Sammler suchen Steine
  22. #   21-Okt-99   bernd   neue landungsfΣhige Dummystation
  23. #   01-Nov-99   bernd   Wenn devstation - dann auch unter Win9x im Window
  24. #   26-Nov-99   bernd   John landet jetzt direkt auf der plattform 
  25. #                       hat von Anfang an Handkontrolle
  26. #   30-Nov-99   bernd   Weiter am neuen Input Mapping
  27. #   05-Jan-2000 bernd   Alles mal bissl auf eine Stelle
  28. #   2000-01-13  bernd   Artefakte und Station sind jetzt Owner 0 - st÷ren nicht mehr beim Gucken 
  29. #   2000-01-17  floh    alles auf nd3d7server umgebogen
  30. #   2000-01-02  bernd   Kosmetik
  31. #   15-Feb-2000 floh    Platform-Identifizierung zentralisiert
  32. #                       (get_platform ist jetzt in nsh.tcl)
  33. #   12-Mai-2000 bernd   Zeux fⁿr Wolken
  34. #   06-Jun-00   floh    Soundsupport
  35. #   14-Jun-2000 bernd   WolkenEditor/neue Wolken weiter eingepa▀t
  36. #   19-Jun-00   floh    + experimentell: ncollideserver, ncollhandler2
  37. #   05-Jul-00   floh    + Win2k: default auf OpenGL
  38. #   06-Jul-00   floh    + maximale Sichtentfernung auf 5km
  39. #   13-Jul-00   floh    + maximale Sichtentfernung auf 10km
  40. #                       + endgueltige Kollissions-Tabelle
  41. #   09-Aug-00   floh    + ncollhandler raus
  42. #   28-Aug-00   s3      atmos als standardhimmel ueberall
  43. #   09-Sep-00   floh    + neue Kollissions-Klasse "avoid"
  44. #   26-Sep-00   floh    + neue Kollissions-Klasse "gun"
  45. #   29-Jan-01   floh    + new game handler: eventqueue
  46. #   27-Mar-01   floh    + fixed zbuffer/sbuffer resolution in windowed mode
  47. #                         windowed mode now uses 16 bit zbuffer, fullscreen
  48. #                         is generally 32 bit (32 bit color and 32 bit zbuffer)
  49. #                       + default gfx server under w2k now nd3d7server again
  50. #   07-Aug-01   floh    + nvtuneserver
  51. #   26-Sep-01   floh    + ndatahandler
  52. #   15-Oct-01   floh    + nbookhandler/neventhandler
  53. #   10-Dec-01   floh    + new viewer stuff
  54. #   15-Dec-01   floh    + killed old book stuff
  55. #                       + killed "multiplayer_manual" proc
  56. #                       + killed "umgebung" proc
  57. #   09-Jan-02   floh    + added ncookiehandler
  58. #   11-Jan-02   floh    + mipmap lod configuration
  59. #   31-Jan-02   floh    + configure custom mouse cursors
  60. #   11-Feb-02   floh    + added nfileserver2
  61. #   18-Feb-02   floh    + added nfreeviewer as alternative viewer
  62. #   21-Mar-02   floh    + neuer Audio-Server
  63. #   23-Mar-02   floh    + removed viewer.tcl
  64. #   03-Apr-02   floh    + nfeedbackhandler added
  65. #   08-Apr-02   floh    + nstationhandler raus
  66. #   16-Apr-02   floh    + nanimserver neu
  67. #--------------------------------------------------------------------
  68.  
  69. set providerset 0
  70.  
  71. #--------------------------------------------------------------------
  72. #   create_servers
  73. #   Erzeugt die Nebula-Server-Objekte, initialisiert sie
  74. #   aber nicht.
  75. #   20-Mar-99   floh    created
  76. #   07-May-99   floh    Name des Scenegraph ist jetzt
  77. #                       /sys/servers/sgraph
  78. #   17-May-99   floh    updated
  79. #   05-Jun-99   floh    nlxinputserver (Joystick-Support unter Linux)
  80. #   22-Jun-99   floh    + nmathserver
  81. #   27-Jan-2000 bernd   Erzwingen des gewⁿnschten gfxservers
  82. #   15-Feb-2000 floh    + Support fuer Win2k
  83. #   16-Feb-2000 bernd   + Schreibfehler bei WinNT        
  84. #   03-Jul-01   floh    + nscenegraph2 and nchannelserver
  85. #   05-Aug-01   floh    + shadow server
  86. #--------------------------------------------------------------------
  87. proc create_servers {} {
  88. global nomads_home
  89.  
  90.     global force_3ddevice
  91.  
  92.     # replace standard file server by npk virtual file server
  93.     delete /sys/servers/file2
  94.     new nnpkfileserver /sys/servers/file2
  95.  
  96.     # parse data npk files
  97.     if {[file exists "$nomads_home/data1.npk"]} {
  98.         /sys/servers/file2.parsefile "home:data1.npk"
  99.     }
  100.     /sys/servers/file2.parsefile "home:data.npk"
  101.     
  102.     # enable 3d nodes in world
  103.     new n3dnode /usr/scene
  104.  
  105.     set nomads_platform [get_platform]
  106.  
  107.     set network_class nsocket2
  108.     set comm_class ncommserver
  109.     set console_class nconserver
  110.  
  111.     # ---------------------------------------
  112.     # EingabegerΣte je nach Plattform setzen
  113.     switch $nomads_platform {
  114.         win9x { set input_class ndi8server }
  115.         win2k { set input_class ndi8server }
  116.         winnt { set input_class ninputserver   }
  117.         unix  { set input_class nlxinputserver }
  118.     }
  119.  
  120.     # -----------------------------------------------
  121.     # Audio-Server ist ebenfalls plattformspezifisch
  122.     switch $nomads_platform {
  123.         win9x { set audio_class ndsoundserver2 }
  124.         win2k { set audio_class ndsoundserver2 }
  125.         winnt { set audio_class naudioserver2 }
  126.         unix  { set audio_class naudioserver2 }
  127.     }
  128.  
  129.     # -----------------------------------------------
  130.     # under windows, create a vtune profile server
  131.     switch $nomads_platform {
  132.         win9x { set profile_class nvtuneserver }
  133.         win2k { set profile_class nvtuneserver }
  134.         winnt { set profile_class nvtuneserver }
  135.         unix  { set profile_class nprofileserver }
  136.     }
  137.  
  138.     # ---------------------------------------------------------------
  139.     # Wenn force_3ddevice nicht da ist, dann setzen je nach Plattform
  140.     if  [ catch { set test $force_3ddevice } err ] {
  141.         switch $nomads_platform {
  142.             win9x { set gfx_class nd3d8server }
  143.             win2k { set gfx_class nd3d8server   }
  144.             winnt { set gfx_class nglserver   }
  145.             unix  { set gfx_class nglserver   }
  146.         }
  147.  
  148.     # Wenn force_3ddevice da ist, erzwingen wir den Server
  149.     } else {   
  150.         puts "Forcing: $force_3ddevice"
  151.         if { $force_3ddevice=="Direct3D" } { set gfx_class nd3d8server }
  152.         if { $force_3ddevice=="OpenGL"   } { set gfx_class nglserver   }
  153.     }
  154.  
  155. #    new $profile_class      /sys/servers/profile
  156.     new nfileserver2        /sys/servers/file2
  157.     new $network_class      /sys/servers/network
  158.     new $comm_class         /sys/servers/comm
  159.     new $gfx_class          /sys/servers/gfx
  160.     new $input_class        /sys/servers/input
  161.     new $console_class      /sys/servers/console
  162.     new nscenegraph2        /sys/servers/sgraph2
  163.     new nsbufshadowserver   /sys/servers/shadow
  164.     new nchannelserver      /sys/servers/channel
  165.     new nmathserver         /sys/servers/math
  166.     new nparticleserver     /sys/servers/particle
  167.     new nspecialfxserver    /sys/servers/specialfx
  168.     new $audio_class        /sys/servers/audio
  169.     new nopcodeserver       /sys/servers/collide
  170.     new nanimserver         /sys/servers/anim
  171.     new ncharacterserver    /sys/servers/character
  172. }
  173.  
  174. #--------------------------------------------------------------------
  175. #   togl
  176. #   Schaltet nach OpenGL
  177. #   29-Jul-99   floh    created
  178. #--------------------------------------------------------------------
  179. proc togl { } {
  180. global  devstation
  181.  
  182.     set nomads_platform [get_platform]
  183.     set cwd [psel]
  184.     sel /
  185.     delete /sys/servers/gfx
  186.     new nglserver /sys/servers/gfx
  187.     sel /sys/servers/gfx
  188.     if {$devstation} {
  189.         /sys/servers/gfx.setdisplaymode "dev(0)-type(win)-w(640)-h(480)-title( Nomads)-icon(nomads_icon)"
  190.     } else {
  191.         /sys/servers/gfx.setdisplaymode "dev(0)-type(full)-w(800)-h(600)-bpp(32)-title( Nomads)-icon(nomads_icon)"
  192.     }
  193.     /sys/servers/gfx.setviewvolume -0.1 +0.1 -0.075 +0.075 +0.1 +5000.0
  194.     /sys/servers/gfx.opendisplay
  195.     sel $cwd
  196. }
  197.  
  198. #--------------------------------------------------------------------
  199. #   tod3d
  200. #   Schaltet nach Direct3D
  201. #   29-Jul-99   floh    created
  202. #--------------------------------------------------------------------
  203. proc tod3d { } {
  204. global  devstation
  205.  
  206.     set nomads_platform [get_platform]
  207.     set cwd [psel]
  208.     sel /
  209.     delete /sys/servers/gfx
  210.     new nd3d8server /sys/servers/gfx
  211.     sel /sys/servers/gfx
  212.     if {$devstation} {
  213.         /sys/servers/gfx.setdisplaymode "dev(0)-type(win)-w(640)-h(480)-title( Nomads)-icon(nomads_icon)"
  214.     } else {
  215.         /sys/servers/gfx.setdisplaymode "dev(0)-type(full)-w(800)-h(600)-bpp(32)-title( Nomads)-icon(nomads_icon)"
  216.     }
  217.     /sys/servers/gfx.setviewvolume -0.1 +0.1 -0.075 +0.075 +0.1 +5000.0
  218.     /sys/servers/gfx.opendisplay
  219.     sel $cwd
  220. }
  221.  
  222. #--------------------------------------------------------------------
  223. #   setup_colltable
  224. #
  225. #   18-Oct-01   floh    added "contact" colltype, which only
  226. #                       checks for the first contact
  227. #   08-Mai-01   floh    mg gegen dummyisland
  228. #--------------------------------------------------------------------
  229. proc setup_colltable {multiplayer} {
  230.  
  231.     sel /sys/servers/collide
  232.         .begincollclasses
  233.             .addcollclass plane
  234.             .addcollclass island
  235.             .addcollclass artefact
  236.             .addcollclass building
  237.             .addcollclass maennel
  238.             .addcollclass missile
  239.             .addcollclass avoid
  240.             .addcollclass gun
  241.             .addcollclass generic
  242.             .addcollclass flak
  243.             .addcollclass proximity
  244.             .addcollclass dummyisland
  245.             .addcollclass bauphase
  246.             .addcollclass debris
  247.             .addcollclass ore
  248.             .addcollclass odetector
  249.         .endcollclasses
  250.  
  251.         .begincolltypes
  252.  
  253.             .addcolltype plane plane        contact
  254.             .addcolltype plane island       contact
  255.             .addcolltype plane artefact     ignore
  256.             .addcolltype plane building     contact
  257.             .addcolltype plane maennel      contact
  258.             .addcolltype plane missile      quick
  259.             .addcolltype plane avoid        quick
  260.             .addcolltype plane gun          quick
  261.             .addcolltype plane generic      quick
  262.             .addcolltype plane flak         contact
  263.             .addcolltype plane proximity    quick
  264.             .addcolltype plane dummyisland  contact
  265.             .addcolltype plane bauphase     contact
  266.             .addcolltype plane debris       ignore
  267.             .addcolltype plane ore          contact
  268.             .addcolltype plane odetector    ignore
  269.  
  270.             .addcolltype island plane       contact
  271.             .addcolltype island island      quick
  272.             .addcolltype island artefact    ignore
  273.             .addcolltype island building    ignore
  274.             .addcolltype island maennel     exact
  275.             .addcolltype island missile     exact
  276.             .addcolltype island avoid       quick
  277.             .addcolltype island gun         exact
  278.             .addcolltype island generic     ignore
  279.             .addcolltype island flak        ignore
  280.             .addcolltype island proximity   ignore
  281.             .addcolltype island dummyisland ignore
  282.             .addcolltype island bauphase    ignore  
  283.             .addcolltype island debris      exact    
  284.             .addcolltype island ore         ignore
  285.             .addcolltype island odetector   exact
  286.  
  287.             .addcolltype artefact plane         ignore
  288.             .addcolltype artefact island        ignore
  289.             .addcolltype artefact artefact      ignore
  290.             .addcolltype artefact building      ignore
  291.             .addcolltype artefact maennel       ignore
  292.             .addcolltype artefact missile       ignore
  293.             .addcolltype artefact avoid         ignore
  294.             .addcolltype artefact gun           ignore
  295.             .addcolltype artefact generic       quick
  296.             .addcolltype artefact flak          ignore
  297.             .addcolltype artefact proximity     ignore
  298.             .addcolltype artefact dummyisland   ignore
  299.             .addcolltype artefact bauphase      ignore
  300.             .addcolltype artefact debris        ignore
  301.             .addcolltype artefact ore           ignore
  302.             .addcolltype artefact odetector     ignore
  303.  
  304.             .addcolltype building plane         contact
  305.             .addcolltype building island        ignore
  306.             .addcolltype building artefact      ignore
  307.             .addcolltype building building      ignore
  308.             .addcolltype building maennel       exact
  309.             .addcolltype building missile       exact
  310.             .addcolltype building avoid         quick
  311.             .addcolltype building gun           quick
  312.             .addcolltype building generic       quick
  313.             .addcolltype building flak          ignore
  314.             .addcolltype building proximity     ignore
  315.             .addcolltype building dummyisland   ignore
  316.             .addcolltype building bauphase      ignore
  317.             .addcolltype building debris        exact
  318.             .addcolltype building ore           ignore
  319.             .addcolltype building odetector     ignore
  320.  
  321.             .addcolltype maennel plane          contact
  322.             .addcolltype maennel island         exact
  323.             .addcolltype maennel artefact       ignore
  324.             .addcolltype maennel building       exact
  325.             .addcolltype maennel maennel        exact
  326.             .addcolltype maennel missile        exact
  327.             .addcolltype maennel avoid          quick
  328.             .addcolltype maennel gun            quick
  329.             .addcolltype maennel generic        quick
  330.             .addcolltype maennel flak           exact
  331.             .addcolltype maennel proximity      quick
  332.             .addcolltype maennel dummyisland    exact
  333.             .addcolltype maennel bauphase       exact
  334.             .addcolltype maennel debris         exact
  335.             .addcolltype maennel ore            exact
  336.             .addcolltype maennel odetector      ignore
  337.  
  338.             .addcolltype missile plane          quick
  339.             .addcolltype missile island         exact
  340.             .addcolltype missile artefact       ignore
  341.             .addcolltype missile building       exact
  342.             .addcolltype missile maennel        exact
  343.             .addcolltype missile missile        ignore
  344.             .addcolltype missile avoid          ignore
  345.             .addcolltype missile gun            ignore
  346.             .addcolltype missile generic        ignore
  347.             .addcolltype missile flak           exact
  348.             .addcolltype missile proximity      ignore
  349.             .addcolltype missile dummyisland    exact
  350.             .addcolltype missile bauphase       ignore
  351.             .addcolltype missile debris         quick
  352.             .addcolltype missile ore            exact
  353.             .addcolltype missile odetector      ignore
  354.  
  355.             .addcolltype avoid   plane          quick
  356.             .addcolltype avoid   island         quick
  357.             .addcolltype avoid   artefact       ignore
  358.             .addcolltype avoid   building       quick
  359.             .addcolltype avoid   maennel        quick
  360.             .addcolltype avoid   missile        ignore
  361.             .addcolltype avoid   avoid          ignore
  362.             .addcolltype avoid   gun            ignore
  363.             .addcolltype avoid   generic        ignore
  364.             .addcolltype avoid   flak           ignore
  365.             .addcolltype avoid   proximity      ignore
  366.             .addcolltype avoid   dummyisland    quick
  367.             .addcolltype avoid   bauphase       quick
  368.             .addcolltype avoid   debris         ignore
  369.             .addcolltype avoid   ore            quick
  370.             .addcolltype avoid   odetector      ignore
  371.  
  372.             .addcolltype gun     plane          quick
  373.             .addcolltype gun     island         exact
  374.             .addcolltype gun     artefact       ignore
  375.             .addcolltype gun     building       quick
  376.             .addcolltype gun     maennel        quick
  377.             .addcolltype gun     missile        ignore
  378.             .addcolltype gun     avoid          ignore
  379.             .addcolltype gun     gun            ignore
  380.             .addcolltype gun     generic        ignore
  381.             .addcolltype gun     flak           quick
  382.             .addcolltype gun     proximity      ignore
  383.             .addcolltype gun     dummyisland    exact
  384.             .addcolltype gun     bauphase       ignore
  385.             .addcolltype gun     debris         ignore
  386.             .addcolltype gun     ore            quick
  387.             .addcolltype gun     odetector      ignore
  388.  
  389.             .addcolltype generic plane          quick
  390.             .addcolltype generic island         ignore
  391.             .addcolltype generic artefact       quick
  392.             .addcolltype generic building       quick
  393.             .addcolltype generic maennel        quick
  394.             .addcolltype generic missile        ignore
  395.             .addcolltype generic avoid          ignore
  396.             .addcolltype generic gun            ignore
  397.             .addcolltype generic generic        ignore
  398.             .addcolltype generic flak           quick
  399.             .addcolltype generic proximity      ignore
  400.             .addcolltype generic dummyisland    ignore
  401.             .addcolltype generic bauphase       ignore
  402.             .addcolltype generic debris         ignore
  403.             .addcolltype generic ore            quick
  404.             .addcolltype generic odetector      ignore
  405.  
  406.             .addcolltype flak plane         contact
  407.             .addcolltype flak island        ignore
  408.             .addcolltype flak artefact      ignore
  409.             .addcolltype flak building      ignore
  410.             .addcolltype flak maennel       exact
  411.             .addcolltype flak missile       exact
  412.             .addcolltype flak avoid         ignore
  413.             .addcolltype flak gun           quick
  414.             .addcolltype flak generic       quick
  415.             .addcolltype flak flak          ignore
  416.             .addcolltype flak proximity     ignore
  417.             .addcolltype flak dummyisland   ignore
  418.             .addcolltype flak bauphase      ignore
  419.             .addcolltype flak debris        ignore
  420.             .addcolltype flak odetector     ignore
  421.             
  422.             .addcolltype proximity plane        quick
  423.             .addcolltype proximity island       quick
  424.             .addcolltype proximity artefact     ignore
  425.             .addcolltype proximity building     ignore
  426.             .addcolltype proximity maennel      quick
  427.             .addcolltype proximity missile      ignore
  428.             .addcolltype proximity avoid        ignore
  429.             .addcolltype proximity gun          ignore
  430.             .addcolltype proximity generic      ignore
  431.             .addcolltype proximity flak         ignore
  432.             .addcolltype proximity proximity    ignore
  433.             .addcolltype proximity dummyisland  ignore
  434.             .addcolltype proximity bauphase     ignore
  435.             .addcolltype proximity debris       ignore
  436.             .addcolltype proximity ore          ignore
  437.             .addcolltype proximity odetector    ignore
  438.  
  439.             .addcolltype dummyisland plane       contact
  440.             .addcolltype dummyisland artefact    ignore
  441.             .addcolltype dummyisland building    ignore
  442.             .addcolltype dummyisland maennel     exact
  443.             .addcolltype dummyisland missile     exact
  444.             .addcolltype dummyisland avoid       quick
  445.             .addcolltype dummyisland gun         exact
  446.             .addcolltype dummyisland generic     ignore
  447.             .addcolltype dummyisland flak        ignore
  448.             .addcolltype dummyisland proximity   ignore
  449.             .addcolltype dummyisland dummyisland ignore    
  450.             .addcolltype dummyisland bauphase    ignore
  451.             .addcolltype dummyisland debris      exact   
  452.             .addcolltype dummyisland ore         ignore
  453.             .addcolltype dummyisland island      ignore
  454.             .addcolltype dummyisland odetector   exact
  455.             
  456.             .addcolltype bauphase plane       contact
  457.             .addcolltype bauphase island      ignore
  458.             .addcolltype bauphase artefact    ignore
  459.             .addcolltype bauphase building    ignore
  460.             .addcolltype bauphase maennel     exact
  461.             .addcolltype bauphase missile     ignore
  462.             .addcolltype bauphase avoid       quick
  463.             .addcolltype bauphase gun         ignore
  464.             .addcolltype bauphase generic     ignore
  465.             .addcolltype bauphase flak        ignore
  466.             .addcolltype bauphase proximity   ignore
  467.             .addcolltype bauphase dummyisland ignore    
  468.             .addcolltype bauphase bauphase    ignore
  469.             .addcolltype bauphase debris      ignore
  470.             .addcolltype bauphase ore         ignore
  471.             .addcolltype bauphase odetector   ignore
  472.  
  473.             .addcolltype debris plane       ignore
  474.             .addcolltype debris island      exact
  475.             .addcolltype debris artefact    ignore
  476.             .addcolltype debris building    exact
  477.             .addcolltype debris maennel     exact
  478.             .addcolltype debris missile     quick
  479.             .addcolltype debris avoid       ignore
  480.             .addcolltype debris gun         ignore
  481.             .addcolltype debris generic     ignore
  482.             .addcolltype debris flak        ignore
  483.             .addcolltype debris proximity   ignore
  484.             .addcolltype debris dummyisland exact    
  485.             .addcolltype debris bauphase    ignore
  486.             .addcolltype debris debris      ignore
  487.             .addcolltype debris ore         exact
  488.             .addcolltype debris odetector   ignore
  489.  
  490.             .addcolltype ore plane          contact
  491.             .addcolltype ore island         ignore
  492.             .addcolltype ore artefact       ignore
  493.             .addcolltype ore building       ignore
  494.             .addcolltype ore maennel        exact
  495.             .addcolltype ore missile        exact
  496.             .addcolltype ore avoid          quick
  497.             .addcolltype ore gun            quick
  498.             .addcolltype ore generic        quick
  499.             .addcolltype ore flak           ignore
  500.             .addcolltype ore proximity      ignore
  501.             .addcolltype ore dummyisland    ignore
  502.             .addcolltype ore bauphase       ignore
  503.             .addcolltype ore debris         exact
  504.             .addcolltype ore ore            ignore
  505.             .addcolltype ore odetector      ignore
  506.  
  507.             .addcolltype odetector plane          ignore
  508.             .addcolltype odetector island         exact
  509.             .addcolltype odetector artefact       ignore
  510.             .addcolltype odetector building       ignore
  511.             .addcolltype odetector maennel        ignore
  512.             .addcolltype odetector missile        ignore
  513.             .addcolltype odetector avoid          ignore
  514.             .addcolltype odetector gun            ignore
  515.             .addcolltype odetector generic        ignore
  516.             .addcolltype odetector flak           ignore
  517.             .addcolltype odetector proximity      ignore
  518.             .addcolltype odetector dummyisland    exact
  519.             .addcolltype odetector bauphase       ignore
  520.             .addcolltype odetector debris         ignore
  521.             .addcolltype odetector ore            ignore
  522.             .addcolltype odetector odetector      exact
  523.  
  524.         .endcolltypes
  525. }
  526.  
  527. #--------------------------------------------------------------------
  528. #   load_mouse_cursor
  529. #
  530. #   Load the custom mouse cursor. Must happen when display open.
  531. #--------------------------------------------------------------------
  532. proc load_mouse_cursor {} {
  533.     /sys/servers/gfx.begincursors 1
  534.     /sys/servers/gfx.setcursor 0 home:scripts/cursors/arrow.tga 0 0
  535.     /sys/servers/gfx.endcursors
  536.     /sys/servers/gfx.setcurrentcursor 0
  537.     /sys/servers/gfx.showcursor
  538. }
  539.  
  540. #--------------------------------------------------------------------
  541. #   init_servers
  542. #   Initialisiert die Server-Objekte.
  543. #   20-Mar-99   floh    created
  544. #   25-May-99   floh    definiert die Namen der Standard-Channel
  545. #   16-Jun-99   floh    macht jetzt gleich hier ein askprovider/
  546. #                       setprovider
  547. #   06-Jun-00   floh    + Sound-Server-Initialisierung
  548. #   06-Jul-00   floh    + Viewvolume auf 5000 begrenzt
  549. #   03-Okt-00   af      Artefakte kollidieren nur mit generic und Insel
  550. #   11-Jan-01   floh    + mipmap LOD init
  551. #   31-Jan-02   floh    + custom mouse cursors
  552. #--------------------------------------------------------------------
  553. proc init_servers {} {
  554. global  devstation
  555. global skyeditor
  556.     if  [catch { set dummy $skyeditor } err] { set skyeditor 0 }
  557.  
  558.     set nomads_platform [get_platform]
  559.  
  560.     # initialisiere Netzwerk-Server
  561.     sel /sys/servers/network
  562.         # folgende GUID identifiziert die Applikation (in diesem
  563.         # Fall Nomads) im Netz
  564.         .setguid 138 38 49 117 70 177 64 29 145 195 70 200 153 215 129 109
  565.         #.askprovider
  566.  
  567.         # Wenn man dieses Setprovider auskommentiert, kann man das Spiel mitunter
  568.         # unter NT GAAAANZ wesentlich beschleunigen.
  569.         
  570.         # debugging: Wenn unter NT der Rechner langsam wird, dann einen der
  571.         # Threads (oder mehrere) abschalten und testen, wer der Uebeltaeter
  572.         # ist. Netzsessions sind dann aber nicht mehr moeglich.
  573.         # allowsend     false
  574.         # allowreceive  false
  575.         # allowalarm    false
  576.         #.setprovider 1
  577.     sel ..
  578.  
  579.     # initialisiere Gfx-Server
  580.     sel /sys/servers/gfx
  581.         # Setze Display-Device und -Modus. Wenn das Device oder
  582.         # der Modus nicht existiert, waehlt der GfxServer
  583.         # etwas moeglichst aehnliches aus.
  584.         # In einem System mit mehr als 1 3D-Karte (z.B.
  585.         # S3-Virge/Voodoo) muss man die fuehrende 0 durch eine
  586.         # 1 ersetzen, um an die Voodoo zu kommen. Die Liste
  587.         # der unterstuetzten Devices und Modes findet man auch
  588.         # unter /sys/share/display
  589.  
  590.         if {$devstation} {
  591.             .setdisplaymode "dev(0)-type(win)-w(640)-h(480)-title( Nomads)-icon(nomads_icon)"
  592.         } else {
  593.            .setdisplaymode "dev(0)-type(full)-w(800)-h(600)-bpp(32)-title( Nomads)-icon(nomads_icon)"
  594.         }
  595.  
  596.         if {$skyeditor} {
  597.             .setdisplaymode "dev(0)-type(win)-w(934)-h(770)-bpp(16)-zbuf(16)-title( Nomads)-icon(nomads_icon)"
  598.         }
  599.  
  600.         # definiere das View-Volume, u.a. wird der Aspekt auf
  601.         # 4:3 gesetzt (wegen der Lowlevel-Viewvolume-Definition
  602.         # ist das bissel kompliziert, der GfxServer sollte mal
  603.         # eine Higher-Level-Methode anbieten...
  604.         # Der waagerechte Blickwinkel bleibt auf 90 Grad,
  605.         # der senkrechte Blickwinkel wird aber eingeschraenkt.
  606.         # Der Near Clipping Plane wird auf 10 Zentimeter gesetzt,
  607.         # die Far Plane auf 25 km
  608.  
  609.         .setviewvolume -0.1 +0.1 -0.075 +0.075 +0.1 +5000.0
  610.     sel ..
  611.  
  612.     # initialisiere Channelserver 
  613.     /sys/servers/channel.setchannel1f one 1.0
  614.     /sys/servers/channel.setchannel1f detail 1.0
  615.  
  616.     # initialize shadow server
  617.     /sys/servers/shadow.setcastshadows true
  618.  
  619.     # initialisiere Sound-Server
  620.     sel /sys/servers/audio
  621.         .setmode "chn(24)"
  622.         .openaudio
  623.     sel ..
  624.  
  625.     # OVERLAY und SPECIAL FX SERVER INIT
  626.     sel /sys/servers/specialfx
  627.     new n3dnode root
  628.         sel root
  629.         new n3dnode overlay
  630.             sel overlay
  631.             new noverlayplane plane
  632.             new nshadernode shader
  633.                 sel shader
  634.                 .setrenderpri 10
  635.                 .setlightenable false
  636.                 .setalphaenable true
  637.                 .setzwriteenable false
  638.                 .setfogenable false
  639.                 .setalphablend "srcalpha" "invsrcalpha"
  640.                 .setzfunc "always"
  641.             sel ..                
  642.         sel ..
  643.     sel ..
  644.  
  645.     # initialize mipmap LOD table
  646.     # mipmap LOD table
  647.     set cwd [psel] 
  648.     sel /sys/servers/sgraph2
  649.         .setenablemiplod true
  650.         .beginmiplod 12
  651.         .setmiplod 0 50
  652.         .setmiplod 1 100
  653.         .setmiplod 2 250
  654.         .setmiplod 3 450
  655.         .setmiplod 4 900
  656.         .setmiplod 5 1200
  657.         .setmiplod 6 1400
  658.         .setmiplod 7 1600
  659.         .setmiplod 8 1800
  660.         .setmiplod 9 2000
  661.         .setmiplod 10 2200
  662.         .setmiplod 11 2400
  663.         .endmiplod
  664.     sel $cwd
  665.  
  666.     #----------------------------------------------------------------
  667.     #   Initialisiere Kollissions-Tabelle, beschreibt die einzelnen
  668.     #   Kollissions-Objekt-Typen, und wie diese sich untereinander
  669.     #   testen sollen. (Note: false => Singleplayer)
  670.     #----------------------------------------------------------------
  671.     setup_colltable false
  672. }
  673.  
  674. #--------------------------------------------------------------------
  675. #   kill_servers
  676. #   Killt die von create_servers erzeugten Server-Objekte
  677. #   20-Mar-99   floh    created
  678. #   07-May-99   floh    Name des Scenegraph ist jetzt /sys/servers/sgraph
  679. #   03-Jul-01   floh    nscenegraph2 and nchannelserver
  680. #--------------------------------------------------------------------
  681. proc kill_servers {} {
  682.     /sys/servers/gfx.closedisplay
  683.  
  684.     sel /
  685.     delete /sys/servers/math
  686.     delete /sys/servers/shadow
  687.     delete /sys/servers/sgraph2
  688.     delete /sys/servers/channel
  689.     delete /sys/servers/console
  690.     delete /sys/servers/input
  691.     delete /sys/servers/gfx
  692.     delete /sys/servers/comm
  693.     delete /sys/servers/network
  694.     delete /sys/servers/particle
  695.     delete /sys/servers/anim
  696. #    delete /sys/servers/profile
  697. }
  698.  
  699. #--------------------------------------------------------------------
  700. #   create_handlers
  701. #   Erzeugt die GameHandler-Objekte sowie ein paar Standard-Objekte,
  702. #   die das nrealworld Objekt erwartet.
  703. #   20-Mar-99   floh    created
  704. #   11-May-99   floh    laedt zuerst das Nomads-Klassen-Package
  705. #   03-Jun-99   floh    + erzeugt Octree-Handler
  706. #   14-Jul-99   floh    + /world/gui
  707. #                       - /usr/scene
  708. #   14-Oct-99   floh    + nstationhandler
  709. #   18-May-00   jeremy  + ncloudshandler
  710. #   29-May-00   jeremy  + nweatherhandler
  711. #   09-Aug-00   floh    + ncollhandler raus
  712. #   29-Jan-01   floh    + new: neventqueue
  713. #   15-Dec-01   floh    + killed nstoryhandler, neventqueue
  714. #   09-Jan-02   floh    + ncookiehandler
  715. #--------------------------------------------------------------------
  716. proc create_handlers {} {
  717.     new nphysicshandler     /game/handler/physics
  718.     new noctree             /game/handler/octree
  719.  
  720.     new nweatherhandler     /game/handler/weather
  721.  
  722.     # aaargh, menu handler is at non-standard location !!!
  723.     new nguimenuhandler     /sys/servers/menuhandler    
  724.  
  725.     new ncollhandler2       /game/handler/coll2
  726.     new ndatahandler        /game/handler/data
  727.     new neventhandler       /game/handler/event
  728.     new nbookhandler        /game/handler/book
  729.     new nsearchhandler      /game/handler/search
  730.     new ncookiehandler      /game/handler/cookie
  731.     new nfeedbackhandler    /game/handler/feedback
  732.  
  733.     new nrealworld          /world
  734.     new nroot               /world/clans
  735.     new n3dnode             /world/gui
  736. }
  737.  
  738. #--------------------------------------------------------------------
  739. #   create_viewer
  740. #   07-Jul-00   floh    extracted from create_handlers
  741. #   05-Dec-01   floh    + create alternative new style viewers
  742. #--------------------------------------------------------------------
  743. proc create_viewer {} {
  744. global nomads_home
  745.  
  746.     # new style viewer
  747.     new nviewer2      /world/viewers/identityviewer
  748.     new nchaseviewer  /world/viewers/chaseviewer
  749.     new nfreeviewer   /world/viewers/freeviewer
  750.     /world.setviewer2 /world/viewers/chaseviewer
  751. }
  752.  
  753. #--------------------------------------------------------------------
  754. #   init_handlers
  755. #
  756. #   20-Mar-99   floh    created
  757. #   25-Nov-99   bernd   Input Mapping rausgenommen, mu▀ jetzt extra aufgrufen werden
  758. #                       per: source  $nomads_home/scripts/input.tcl
  759. #   18-May-00   jeremy  + ncloudshandler
  760. #   31-May-00   jeremy  + nweatherhandler
  761. #   20-Oct-2000 bernd   ganzen alten schei▀ zu den wolken raus
  762. #--------------------------------------------------------------------
  763. proc init_handlers {} {
  764.  
  765.     global nomads_home
  766.  
  767.     set nomads_platform [get_platform]
  768.  
  769.     # Wasseroberflaeche. Voererst, um "Kompatibilitaet" zum bisherigen
  770.     # zu erreichen, eine grosse Scheibe an Position 0
  771.     /game/handler/physics.addblayer 0 0 0    1 10000 10000  12 0  0 0 0.0 0.0
  772.  
  773.     # initialize the event handler
  774.     /game/handler/event.setlogging true
  775.  
  776.     # initialize data handler
  777.     /game/handler/data.setdatapaths "home:data.n" "/data"
  778.     
  779.     # suchbereich
  780. #    /game/handler/search.setmaxwatchdistance 150
  781.     /game/handler/search.setmaxwatchdistance 500
  782.     /game/handler/search.setmaxwatchangle 15
  783.     /game/handler/search.setcursor /data/watchcursor01/crosshair01
  784.     /game/handler/search.sethaircross /data/crosshair01/crosshair01
  785. }    
  786.  
  787. #--------------------------------------------------------------------
  788. #   kill_handlers
  789. #   Raeumt die von create_handlers erzeugten Objekte weg.
  790. #   20-Mar-99   floh    created
  791. #--------------------------------------------------------------------
  792. proc kill_handlers {} {
  793.     sel /
  794.     delete /world/gui
  795.     delete /world/clans
  796.     delete /game
  797. }
  798.  
  799. #--------------------------------------------------------------------
  800. #
  801. #   Datenbibliothek laden und in definierte Reihenfolge bringen
  802. #
  803. #   16-Jun-99   floh    Handler-Initialisierung muss hier
  804. #                       raus, weil die Multiplayer-Init jetzt
  805. #                       ueber das Welt-Objekt passiert
  806. #   23-Aug-99   bernd   game_init umbenannt in get_gamedata
  807. #                       Die Routine macht ja nur noch das - damit wird demo.tcl lesbarer
  808. #   26-Sep-01   floh    laedt jetzt nur noch was wirklich fuers Menue
  809. #                       notwendig ist (Ausnahme: BACKPACK!)
  810. #--------------------------------------------------------------------
  811. proc get_data {} {
  812. global demoFlag
  813.  
  814.     set cwd [psel]
  815.  
  816.     # load the minimal data required for operating the menu
  817.     sel /game/handler/data
  818.     .loadpermanent shaders
  819.     .loadpermanent if_menu
  820.     .loadpermanent if_ebar
  821.     .loadpermanent if_emptyslot
  822.     .loadpermanent if_hilfe
  823.     .loadpermanent if_marker
  824.     .loadpermanent if_possesicons
  825.     .loadpermanent backpack
  826.     .loadpermanent libobjects
  827.     .loadpermanent crosshair01
  828.     .loadpermanent watchcursor01
  829.     .loadpermanent sky
  830.  
  831.     if {!$demoFlag} {
  832.         .loadpermanent backpack_g
  833.         .loadpermanent backpack_s
  834.     }
  835.  
  836.     sel $cwd
  837. }
  838.  
  839. #--------------------------------------------------------------------
  840. #   EOF
  841. #-------------------------------------------------------------------
  842.