daily pastebin goal
39%
SHARE
TWEET

Untitled

a guest Jan 15th, 2018 83 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package java.game;
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5. import java.util.resource.*;
  6. import java.render.*;   //Text
  7. import java.render.osd.*;   //Text
  8. import java.sound.*;
  9. import java.game.*;
  10.  
  11. abstract public class Track extends Scene implements GameState
  12. {
  13.     final static int RID_CHEVYVAN = cars.traffic.chevy_van:0x00000005r;
  14.  
  15.     //ezeket a leszarmazott allitsa be!
  16.     abstract Vector3    posStart, posStart2;
  17.     abstract Ypr        oriStart, oriStart2;
  18.  
  19.     //hold the id of the currently active trigger (shop, garage, etc)
  20.     int             activeTrigger;
  21.     Vector          trigger = new Vector();
  22.  
  23.     GameState       parentState;
  24.  
  25.     Osd             osd, MirrorOsd;
  26.     int             osdCounter, navCounter;
  27.  
  28.     IngameMenu      ingameMenu;
  29.     int             im_active;
  30.  
  31.     float               camRotate, camTilt;
  32.  
  33.     int             killCar;
  34.     int             Color_Number;
  35.  
  36.     final static int CMD_CHANGECAM_TV = 0;
  37.     final static int CMD_INGAMEMENU = 1;
  38.     final static int CMD_MECHANIC = 2;
  39.     final static int CMD_CAMMOVE = 3;
  40.     final static int CMD_OPPCAM = 4;
  41.     final static int CMD_PAINT = 5;
  42.     final static int CMD_OSDONOFF = 6;
  43.     final static int CMD_CHANGECAM_INT = 7;
  44.     final static int CMD_CHANGECAM_EXT = 8;
  45.     final static int CMD_CRUISECONTROL = 9;
  46.     final static int CMD_CHANGECAM_CHASE = 10;
  47.     final static int CMD_CHANGECAM_INVCH = 11;
  48.     final static int CMD_CHANGECAM_FREE = 12;
  49.     final static int CMD_SIMSPEEDINC = 13;
  50.     final static int CMD_SIMSPEEDDEC = 14;
  51.     final static int CMD_SIMPAUSE = 15;
  52.     final static int CMD_CAMROTATE = 16;
  53.     final static int CMD_QUICKREPAIR = 17;
  54.     final static int CMD_CHANGECAMTARGET = 18;
  55.     final static int CMD_EXIT = 19;
  56.     //final static int CMD_FILTER = 25;
  57.     final static int CMD_TILT7 = 26;
  58.     final static int CMD_TILT8 = 27;
  59.     final static int CMD_TILT9 = 28;
  60.     final static int CMD_TILT0 = 29;
  61.     final static int CMD_POSITION = 30;
  62.     final static int CMD_LIGHTSONOFF = 31;
  63.     final static int CMD_CHANGETIME = 32;
  64.     final static int CMD_NAVONOFF = 33;
  65.  
  66.     final static int CMD_MIRROR = 20;
  67.     final static int CMD_REPAIR = 21;
  68.     final static int CMD_MAP = 22;
  69.     final static int CMD_LOOKBACK = 23;
  70.  
  71. // Hydraulic suspension:
  72.     final static int    CMD_SUSP_FL     = 41;
  73.     final static int    CMD_SUSP_F      = 42;
  74.     final static int    CMD_SUSP_FR     = 43;
  75.     final static int    CMD_SUSP_LS     = 44;
  76.     final static int    CMD_SUSP_ALL    = 45;
  77.     final static int    CMD_SUSP_RS     = 46;
  78.     final static int    CMD_SUSP_RL     = 47;
  79.     final static int    CMD_SUSP_R      = 48;
  80.     final static int    CMD_SUSP_RR     = 49;
  81.  
  82.     final static int    CMD_SUSP_MODE   = 50;
  83.  
  84.     Navigator       nav;
  85.     Marker          mPlayer, mPlayer2;
  86.  
  87.     Player          player, player2;
  88.     GameRef         cursor;
  89.  
  90.     //message display
  91.     Text            messages;
  92.     Text            infoline;
  93.     int             msgtimers;
  94.     int             osdEnabled, navEnabled;
  95.  
  96.     //cam
  97.     GameRef         cam_external;   //external camera instance
  98.     GameRef         cam, MirCam;    //currently active camera instance
  99.     //GameRef       renderer;   // Current using camera
  100.     GameRef         cameraTarget;   //car of the player (usually) or another bot
  101.     GameRef         cameraTarget2;  //another car or object (police, racer, etc.)
  102.     int             cameraMode;
  103.     int             cameraNum;      //ha pl. tobb camera van az adott cameraMode-hoz (pl. belso, de lehet TV, ext, stb. is)
  104.  
  105.     Vector3         lastCamPos;
  106.     Vector3         lastCrossPos;   //for TV-camera
  107.    
  108.     Viewport        vport2, vp2;
  109.  
  110.     final static int CAMMODE_NONE = 0;
  111.     final static int CAMMODE_FOLLOW = 1;
  112.     final static int CAMMODE_TV = 2;
  113.     final static int CAMMODE_CHASE = 3;
  114.     final static int CAMMODE_INVCH = 4;
  115.     final static int CAMMODE_INTERNAL = 5;
  116.     final static int CAMMODE_FREE = 6;
  117.     final static int CAMMODE_POINT = 7;
  118.  
  119.     Mechanic mechanic;
  120.     Painter painter;
  121.     int     mc_active, pt_active;
  122.  
  123.     Rectangle   MirrorFrame, MapViewFrame;
  124.     GameRef     MirCam2;
  125.     float       Rot, Speed, TimeTextWait, camDist;
  126.     int         IntCamNumber, MirrorStatus = 0, TimeTextStatus, GetCarStatus = 0, RepairStatus = 0, MapStatus, OsdStatus, MapZ1, MapZ2;
  127.     Text        TimeText, TimeText2;
  128.     final static float GPS_Min_Zoom = 2, GPS_Max_Zoom = 3;
  129.  
  130.     GameRef     Test;
  131.     RenderRef   Test_Render;
  132.  
  133.     Vector3 rota;
  134.  
  135.  
  136.     public Track()
  137.     {
  138.         createNativeInstance();
  139.  
  140.         player=GameLogic.player;
  141.         player2=GameLogic.player2;
  142.     }
  143.  
  144.    
  145.     public void animate()
  146.     {
  147.         /*if(player.car)
  148.         {
  149.             rota = new Vector3(Math.random()*0.1-0.05, Math.random()*0.1-0.05, 0);
  150.             player.car.chassis.setSlotPos( 18, rota, null );
  151.             player.car.chassis.setSlotPos( 23, rota, null );
  152.         }*/
  153.  
  154.         //setMessage( Math.sqrt(player.car.getSpeedSquare())*3.6 ); // Car Speed
  155.  
  156.         if( TimeTextStatus == 1 && TimeTextWait < System.currentTime() )
  157.         {
  158.             float tim = System.timeWarp(-1.0);
  159.             if( tim == 1.0 || tim == 0.0)
  160.             {
  161.                 TimeTextStatus = 0;
  162.                 TimeText.changeText( "" );
  163.             }
  164.         }
  165.  
  166.         if( nav && nav.cam )
  167.         {
  168.             if( player.car )
  169.             {
  170.                 Speed = Math.sqrt(player.car.getSpeedSquare()) * 0.08;
  171.                 if (Speed > GPS_Max_Zoom)
  172.                     Speed = GPS_Max_Zoom;
  173.             }
  174.  
  175.             Vector3 CamPos;
  176.             Ypr CamYpr;
  177.             Vector3 RendererPos;
  178.             Ypr RendererOri;
  179.  
  180.             if( renderer )
  181.             {
  182.                 RendererPos = renderer.getPos();
  183.                 RendererOri = renderer.getOri();
  184.  
  185.                 nav.gmCamera.setMatrix( new Vector3(RendererPos.x, 0.1, RendererPos.z),  new Ypr(RendererOri.y, 0.0, 0.0) );
  186.                 nav.rmCamera.setMatrix( new Vector3(RendererPos.x/100, 0.1, RendererPos.z/100),  new Ypr(RendererOri.y, 0.0, 0.0) );
  187.             }
  188.  
  189.             if( Config.gpsMode == 0 && player.car || Config.gpsMode == 1 && player.car )// Follow car
  190.             {  
  191.                 CamPos = player.car.getPos();
  192.                 Rot = 0;
  193.  
  194.                 if(Config.gpsMode == 1)
  195.                     Rot = player.car.getOri().y;   
  196.             }
  197.             else
  198.             if( Config.gpsMode == 2 && renderer || Config.gpsMode == 3 && renderer )
  199.             {
  200.                 CamPos = RendererPos;
  201.                 Rot = 0;
  202.  
  203.                 if(Config.gpsMode == 3)
  204.                     Rot = RendererOri.y;
  205.             }
  206.            
  207.             nav.updateNavigator( player.car );         
  208.             nav.cam.setMatrix( new Vector3(CamPos.x/100, GPS_Min_Zoom + Speed, CamPos.z/100),  new Ypr(Rot, -1.57, 0.0) );
  209.         }
  210.  
  211.     // Car position for modders
  212.     /*  if(player.car)
  213.         {
  214.             Vector3 CarVector = player.car.getPos();
  215.             TimeText.changeText( "Pos: X: " + CarVector.x + ", Y: " + CarVector.y + ", Z: " + CarVector.z );
  216.  
  217.             Ypr CarYpr = player.car.getOri();
  218.             TimeText2.changeText( "Car Rotation: Y: " + CarYpr.y + ", P: " + CarYpr.p + ", R: " + CarYpr.r );
  219.         }//*/
  220.     }
  221.  
  222.     public void Mirror( int mode )
  223.     {
  224.         if ( mode == 1)
  225.         {
  226.             if (!MirrorFrame)
  227.                 MirrorFrame = MirrorOsd.createRectangle( 0.0, -0.76, 1.04, 0.46, 2, new ResourceRef(MW_Mod:0x0023r) );
  228.            
  229.             if( !vp2 )
  230.                 vp2 = new Viewport( 16, 0.25, 0.02, 0.5, 0.2 );
  231.             GameRef MirTrg = new GameRef(cameraTarget.getInfo(GII_OWNER));
  232.             cameraTarget.command( "render " + vp2.id() +" "+ MirTrg.id() +" "+ 6);
  233.             //renderer = cameraTarget;
  234.  
  235.             //MirCam = new Camera( map, vp2, 10, 100, 0.1, 50.0, 0.2, 5.0, 0, 0 );
  236.  
  237.         //MirCam2 = new GameRef( player.car.chassis, GameRef.RID_CAMERA, player.car.getPos().toString() +","+ player.car.getOri().toString()+", 0x01,1.5,0.0", "s_cam" );
  238.         //cam.command( "zoom 60 5");
  239.         //cam.queueEvent( null, GameType.EVENT_COMMAND, "render " + vp2.id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  240.         //cam.queueEvent( null, GameType.EVENT_COMMAND, "look "+ cars[curcar].id() +" 0.0, 0.0, 0.0");
  241.         //cam.queueEvent( null, GameType.EVENT_COMMAND, "look "+ map.id() +" 0.0, 0.0, -1000.0");
  242.  
  243.         //MirCam2.command( "install 0 " + player.car.id()+" 0 0 0 "+"0 0 0");//pos.x+" "+pos.y+" "+pos.z );
  244.  
  245.             vp2.activate( Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET );
  246.         }
  247.         else
  248.         if ( mode == 0)
  249.         {
  250.             if (MirrorFrame)
  251.             {
  252.                 MirrorFrame.finalize();
  253.                 MirrorFrame=null;
  254.             }
  255.             if (vp2)
  256.             {
  257.                 vp2.deactivate();
  258.                 vp2=null;
  259.             }
  260.         }
  261.     }
  262.  
  263. //----------------------------------------------------------------------
  264.  
  265.     final static public float Check( float key )
  266.     {
  267.         return Math.sqrt(key)+3.75;
  268.     }
  269.  
  270.  
  271.  
  272.     public void enter( GameState prev_state )
  273.     {
  274.  
  275.         float key = Math.random()*100;
  276.         if( MainMenu.Check(key) != Math.sqrt(key)+3.75 ) Mirans_Mod_protection_error______Please_Resintal_Mirans_Mod();
  277.  
  278.         if( prev_state instanceof RaceSetup )
  279.         {
  280.         }
  281.         else
  282.         {
  283. //          cameraMode = CAMMODE_FOLLOW;    //reset
  284.  
  285.             enterAsyncMode_Script();
  286.             t.setPriority( 2500 );
  287.  
  288.             //test:
  289.             //GameLogic.autoSaveQuiet();
  290.    
  291.             //a gyerekosztalyok implementaljak a kov ket sort, az o enter() metodusukban!
  292.             //Frontend.loadingScreen.show();
  293.             //GfxEngine.flush();
  294.  
  295.             parentState=prev_state;
  296.  
  297.             MirrorOsd = new Osd( 1.0, 0.0, 18 );
  298.             osd = new Osd();
  299.             osd.menuKeysCreated = 1;
  300.             //osd.iLevel=Osd.IL_KEYS;
  301.             osd.alienMp = mp;
  302.  
  303.             //only for ects/intel demo
  304.             //osd.createRectangle( 0.70, -0.80, 0.5, 0.4, -1, new ResourceRef(frontend:0x00AAr) );
  305.  
  306.  
  307.             //---------------------------------time of day dependent stuff:
  308.             addSceneElements( GameLogic.getTime() );
  309.             //-----------------------------------------------------------------------
  310.  
  311.             msgtimers=0;
  312.             messages=osd.createText( null, Frontend.largeFont, Text.ALIGN_CENTER, 0.0, -0.4 );
  313.             TimeText=osd.createText( null, Frontend.largeFont, Text.ALIGN_CENTER, 0.0, -0.5 ); TimeText.changeColor(0xFFFFD600); //Yellow
  314.             TimeText2=osd.createText( null, Frontend.largeFont, Text.ALIGN_CENTER, 0.0, -0.4 ); TimeText2.changeColor(0xFFFFD600); //Yellow
  315.  
  316.             setEventMask( EVENT_CURSOR|EVENT_COMMAND|EVENT_HOTKEY|EVENT_TRIGGER_ON|EVENT_TRIGGER_OFF|EVENT_TIME );
  317.  
  318.             //player
  319.             player.render = new RenderRef( map, player.driverID, "player" );
  320.             player.controller.command( "renderinstance " + player.render.id() );
  321.  
  322.             if (player.car)
  323.             {
  324.                 if( GameLogic.gameMode != GameLogic.GM_DEMO )
  325.                 {
  326.                     lockCar();
  327.                     player.car.command( "setsteer 0" );
  328.  
  329.                     //igy ha valtoztak a config beallitasok, az is szamit neki!
  330.                     player.car.setDefaultTransmission();
  331.                     player.car.setDefaultSteeringHelp();
  332.                     player.controller.command( "controllable " + player.car.id() );
  333.                     //player.car.chassis.Refresher_Start();
  334.                 }
  335.  
  336.                 lastCamPos = new Vector3( 0, 3, 6);
  337.                 lastCamPos.add( player.car.getPos() );
  338.                 changeCamTarget(player.car);
  339.                 changeCamFollow();// cameraPos );
  340.  
  341.                 map.command( "obs_add " + player.car.id() );
  342.             }
  343.  
  344.             if( GameLogic.gameMode == GameLogic.GM_MULTIPLAYER )
  345.             {
  346.                 player2.render = new RenderRef( map, player2.driverID, "player2" );
  347.                 player2.controller.command( "renderinstance " + player2.render.id() );
  348.                
  349.                 if(player2.car)
  350.                 {
  351.                     if( !posStart2 )
  352.                     {
  353.                         posStart2 = new Vector3(posStart.x+10, posStart.y, posStart.z);
  354.                         oriStart2 = new Ypr ( oriStart.y, oriStart.p, oriStart.r );
  355.                     }
  356.  
  357.                     player2.car.setParent( map );
  358.                     player2.car.setMatrix( posStart2, oriStart2 );
  359.                     player2.car.command( "reset" );
  360.                     player2.car.command( "reload" );    //Fuel and NOS
  361.  
  362.                     player2.car.command( "setsteer 0" );
  363.  
  364.                     player2.car.setDefaultTransmission();
  365.                     player2.car.setDefaultSteeringHelp();
  366.                     player2.controller.command( "controllable " + player2.car.id() );
  367.                 }
  368.             }
  369.  
  370.             ingameMenu=new IngameMenu( this );
  371.  
  372.             infoline=osd.createText( null, Frontend.mediumFont, Text.ALIGN_RIGHT, 0.97, 0.57);
  373.  
  374.             osd.endGroup();
  375.  
  376.             painter =  new Painter( player, osd, null, infoline, 1 );
  377.             mechanic = new Mechanic( player, osd, null, infoline, 1 );
  378.  
  379.                 osd.createHotkey( Input.RCDIK_TAB, Input.KEY|Osd.HK_STATIC, CMD_OSDONOFF, this );
  380.                 osd.createHotkey( Input.RCDIK_1, Input.KEY|Osd.HK_STATIC, CMD_SIMSPEEDDEC, this );
  381.                 osd.createHotkey( Input.RCDIK_2, Input.KEY|Osd.HK_STATIC, CMD_SIMSPEEDINC, this );
  382.                 osd.createHotkey( Input.RCDIK_3, Input.KEY|Osd.HK_STATIC, CMD_SIMPAUSE, this );
  383.                 osd.createHotkey( Input.RCDIK_4, Input.KEY|Osd.HK_STATIC, CMD_CAMROTATE, this );
  384.                 //osd.createHotkey( Input.RCDIK_5, Input.KEY|Osd.HK_STATIC, CMD_FILTER, this );
  385.                 osd.createHotkey( Input.RCDIK_7, Input.KEY|Osd.HK_STATIC, CMD_TILT7, this );
  386.                 osd.createHotkey( Input.RCDIK_8, Input.KEY, CMD_TILT8, this );
  387.                 osd.createHotkey( Input.RCDIK_9, Input.KEY, CMD_TILT9, this );
  388.                 osd.createHotkey( Input.RCDIK_0, Input.KEY|Osd.HK_STATIC, CMD_TILT0, this );
  389.                 osd.createHotkey( Input.RCDIK_L, Input.KEY, CMD_LIGHTSONOFF, this );
  390.                 osd.createHotkey( Input.RCDIK_T, Input.KEY, CMD_CHANGETIME, this );
  391.                 osd.createHotkey( Input.RCDIK_N, Input.KEY|Osd.HK_STATIC, CMD_NAVONOFF, this );
  392.  
  393.             osd.createHotkey( Input.RCDIK_F1, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_INT, this );
  394.             osd.createHotkey( Input.RCDIK_F2, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_TV, this );
  395.             osd.createHotkey( Input.RCDIK_F3, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_EXT, this );
  396.             osd.createHotkey( Input.RCDIK_F4, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_CHASE, this );
  397.             osd.createHotkey( Input.RCDIK_F5, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_INVCH, this );
  398.             osd.createHotkey( Input.RCDIK_F6, Input.KEY|Osd.HK_STATIC, CMD_REPAIR, this );
  399.             osd.createHotkey( Input.RCDIK_F7, Input.KEY|Osd.HK_STATIC, CMD_QUICKREPAIR, this );
  400.             osd.createHotkey( Input.RCDIK_F9, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAM_FREE, this );
  401.         //cheat keys:
  402.             if( GameLogic.cheats )
  403.             {
  404.             osd.createHotkey( Input.RCDIK_F8, Input.KEY|Osd.HK_STATIC, CMD_CHANGECAMTARGET, this );
  405.             }
  406.            
  407.             osd.createHotkey( Input.AXIS_MENU, Input.VIRTUAL|Osd.HK_STATIC, CMD_INGAMEMENU, this );
  408.             osd.createHotkey( Input.AXIS_CURSOR_BUTTON2, Input.VIRTUAL|Osd.HK_STATIC, CMD_CAMMOVE, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  409.    
  410.             osd.createHotkey( Input.AXIS_MAP, Input.VIRTUAL|Osd.HK_STATIC, CMD_MAP, this );
  411.             osd.createHotkey( Input.RCDIK_P, Input.KEY|Osd.HK_STATIC, CMD_POSITION, this );
  412.             osd.createHotkey( Input.AXIS_HELP, Input.VIRTUAL|Osd.HK_STATIC, CMD_CRUISECONTROL, this );
  413.             osd.createHotkey( Input.AXIS_LOOK_REAR, Input.VIRTUAL|Osd.HK_STATIC, CMD_LOOKBACK, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );        
  414.  
  415.         // Pneumatic suspension
  416.             osd.createHotkey( Input.AXIS_SPECIAL_1, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_FL, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  417.             osd.createHotkey( Input.AXIS_SPECIAL_2, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_F, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  418.             osd.createHotkey( Input.AXIS_SPECIAL_3, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_FR, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  419.             osd.createHotkey( Input.AXIS_SPECIAL_4, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_LS, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  420.             osd.createHotkey( Input.AXIS_SPECIAL_5, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_ALL, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  421.             osd.createHotkey( Input.AXIS_SPECIAL_6, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_RS, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  422.             osd.createHotkey( Input.AXIS_SPECIAL_7, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_RL, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  423.             osd.createHotkey( Input.AXIS_SPECIAL_8, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_R, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  424.             osd.createHotkey( Input.AXIS_FIRE_PRI, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_RR, Event.F_KEY_PRESS|Event.F_KEY_RELEASE );
  425.             osd.createHotkey( Input.AXIS_FIRE_SEC, Input.VIRTUAL|Osd.HK_STATIC, CMD_SUSP_MODE, this );
  426.  
  427.             MirrorOsd.show();
  428.  
  429.             osd.show(); //kulonfele messageknek, hotkeyeknek kell
  430.             osdEnabled = 1;
  431.             enableOsd( osdEnabled );    //player osd, navigator
  432.  
  433.             if( nav )
  434.             {
  435.                 mPlayer = nav.addMarker( player );
  436.  
  437.                 if( GameLogic.gameMode == GameLogic.GM_MULTIPLAYER )
  438.                     mPlayer2 = nav.addMarker( GameLogic.player2 );
  439.             }
  440.  
  441.            
  442.             Sound.changeMusicSet( Sound.MUSIC_SET_DRIVING );
  443.  
  444.             // special request: reset mouse and set sensitivity
  445.             Input.getAxis (1, -1 - (Config.mouseSensitivity * 100.0f));
  446.  
  447.             addTimer( 1, 2 );   //one sec tick starter
  448.  
  449. //start automatic camerachanges
  450.             if (1)
  451.             if( GameLogic.gameMode == GameLogic.GM_DEMO )
  452.                 addTimer (5, 4 );
  453.         }
  454.  
  455.         new ResourceRef( particles:0x0106r ).cache(); //def spark
  456.         new ResourceRef( particles:0x0002r ).cache(); //def smoke
  457.         new ResourceRef( particles:0x000Ar ).cache(); //def skidmark
  458.  
  459.         new SfxRef( sound:0x000Br ).cache(); //def collision
  460.         new SfxRef( sound:0x0006r ).cache(); //def skid
  461.         new SfxRef( sound:0x0015r ).cache(); //def horn
  462.         new SfxRef( sound:0x000Ar ).cache(); //def ignition
  463.         new SfxRef( sound:0x0017r ).cache(); //def gear up
  464.         new SfxRef( sound:0x0018r ).cache(); //def gear down
  465.         new SfxRef( sound:0x001Ar ).precache(); //def air
  466.         new SfxRef( sound:0x000Dr ).precache(); //tyre out
  467.  
  468.         if( GameLogic.gameMode == GameLogic.GM_QUICKRACE && !(prev_state instanceof RaceSetup) )
  469.         {
  470.         }
  471.         else
  472.         {  
  473.             Thread.sleep( 1 ); // Wait
  474.             Frontend.loadingScreen.hide();  //waits! -------------------------------------
  475.         }
  476.  
  477.         player.controller.reset();
  478.         player.controller.activateState( ControlSet.DRIVERSET );
  479.  
  480.         player2.controller.reset();
  481.         player2.controller.activateState( ControlSet.DRIVERSET );
  482.  
  483.         enableAnimateHook();
  484.        
  485.         Mirror(MirrorStatus);
  486.  
  487.         //Test = new GameRef( map, MW_Mod:0x0076r, "0,5,0"+","+"0,0,0," + 1, "nightracer1" );
  488.         //Test = new GameRef( map, parts.wings:0x0028r, "0,5,0"+","+"0,0,0," + 1, "Wing" );
  489.         //Test = new GameRef( map, cars.racers.addon:0x00000015r, "0,1,0"+","+"0,0,0," + 1, "Wing" );
  490.  
  491.         //Test_Render = new RenderRef( map, maps.skydome:0x0013r, "egbolt-dawn_02" );
  492.         Test_Render = new RenderRef( map, MW_Mod:0x0079r, "egbolt-dawn_02" );
  493.     }
  494.  
  495.     public void exit( GameState next_state )
  496.     {
  497.         disableAnimateHook();
  498.  
  499.         if( next_state instanceof RaceSetup )
  500.         {
  501.         }
  502.         else
  503.         {  
  504.             removeAllTimers();
  505.             trigger.removeAllElements();
  506.  
  507.             changeCamNone();
  508.  
  509.             if (player.car)
  510.             {
  511.                 map.command( "obs_rem " + player.car.id() );
  512.  
  513.                 posStart = player.car.getPos();
  514.                 oriStart = player.car.getOri();
  515.                 player.controller.command( "leave " + player.car.id() );
  516.                 //player.car.chassis.Refresher_Stop();
  517.             }
  518.  
  519.             player.render.destroy();
  520.             releaseCar();
  521.  
  522.             if( killCar || GetCarStatus == 1 && GameLogic.gameMode == GameLogic.GM_CARREER )
  523.             {
  524.                 player.car.destroy();
  525.                 player.car=null;
  526.                 killCar = 0;
  527.             }
  528.  
  529.             if (GameLogic.gameMode==GameLogic.GM_MULTIPLAYER && player2.car)
  530.             {
  531.                 map.command( "obs_rem " + player2.car.id() );
  532.  
  533.                 posStart2 = player2.car.getPos();
  534.                 oriStart2 = player2.car.getOri();
  535.                 player2.controller.command( "leave " + player2.car.id() );
  536.  
  537.                 player2.render.destroy();
  538.  
  539.                 player2.car.command( "start" );
  540.                 player2.car.command( "reset" );
  541.                 player2.car.setParent( player2 );
  542.                 player2.car.setMatrix( null, null );
  543.             }
  544.  
  545.             mechanic.hide();
  546.             painter.hide();
  547.  
  548.             //kill sky and sun
  549.             remSceneElements();
  550.  
  551.             map.setWater(new Vector3(0.0,-1000000.0,-1500.0), new Vector3(0.0,1.0,0.0), 300.0, 50.0);
  552.             map.delTraffic();
  553.             map.setPedestrianDensity( 0.0 );
  554.             map.unload();
  555.            
  556.             osdEnabled = 0;
  557.             enableOsd( osdEnabled );
  558.  
  559.             if( nav )
  560.             {
  561.                 //nav.hide();
  562.                 nav.remMarker( mPlayer );   mPlayer=null;
  563.  
  564.                 if(GameLogic.gameMode==GameLogic.GM_MULTIPLAYER)
  565.                     nav.remMarker( mPlayer2 ); 
  566.                 mPlayer2=null;
  567.             }
  568.  
  569.             if (MirrorFrame)
  570.                 MirrorFrame.finalize();
  571.             Mirror(0);
  572.  
  573.             osd.hide();
  574.             osd=null;
  575.  
  576.             clearEventMask( EVENT_ANY );
  577.  
  578.             leaveAsyncMode_Script();
  579.  
  580.             GfxEngine.flush();
  581.  
  582.         }
  583.  
  584.         //allitsa vissza az 'idoszamitast' ha pl verseny vegen a lassitott mod kozben lepteti ki!
  585.         System.timeWarp(1.0);
  586.  
  587.  
  588.         player.controller.reset();
  589.         player.controller.activateState( ControlSet.MENUSET );
  590.     }
  591.  
  592.     //call this after camera settings have been changed
  593.     public void resetCamera()
  594.     {
  595.         if( cameraMode == CAMMODE_TV || cameraMode == CAMMODE_FOLLOW )
  596.         {
  597.             cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  598.             renderer = cam;
  599.  
  600.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  601.         }
  602. //      else
  603. //          System.log( "cannot reset unsupported cam type" );
  604.     }
  605.  
  606.  
  607.     public void changeCamTV( )//Vector3 destPos )
  608.     {
  609.         if ( !cameraTarget ) return;
  610.         if ( !cameraTarget.id() ) return;
  611.         Vector3 destPos = cameraTarget.getPos();
  612.         if ( !destPos ) return;
  613.         Vector3 actdestPos = new Vector3(destPos);
  614.         Vector3 vel = cameraTarget.getVel();
  615.         if (vel)
  616.         {
  617.             vel.mul(3.0f);
  618.             destPos.add(vel);
  619.         }
  620.  
  621.         if( cameraMode == CAMMODE_INTERNAL && !cameraNum )
  622.             player.car.command( "filter 3 0" ); //running geart kifilterezzuk
  623.  
  624.         Vector3 camPos;
  625.  
  626.         if (cameraMode == CAMMODE_FREE)
  627.         {
  628.             player.controller.command( "leave " + cam.id() );
  629.             player.controller.command( "controllable " + player.car.id() );
  630.             player.controller.activateState( 5, 0 );
  631.  
  632.             lastCrossPos = map.getNearestCross( destPos, 0 );   //ToDo: getnearestCamera
  633.             if (cam)
  634.                 camPos = cam.getPos();
  635.             else
  636.                 camPos = destPos;
  637.         } else
  638.         {
  639.             camPos = map.getNearestCross( destPos, 0 ); //ToDo: getnearestCamera
  640.             if (camPos)
  641.             {
  642.                 if (cameraMode == CAMMODE_TV)
  643.                 if (lastCrossPos)
  644.                 if (camPos.distance( lastCrossPos ) < 0.1)
  645.                 {
  646.                     //ha esetleg valtozott a cameratarget...
  647.                     ResourceRef bone = new ResourceRef( cameraTarget.getInfo(GameType.GII_BONE) );
  648.                     cam.command( "look " + bone.id() + " 0,0,-1" );
  649.  
  650.                     return;
  651.                 }
  652.                 lastCrossPos = new Vector3(camPos);
  653.                 camPos.y += 0.2 + 3.0*Math.random();
  654.             } else
  655.             {
  656.                 if (cam)
  657.                     camPos = cam.getPos();
  658.                 else
  659.                     camPos = destPos;
  660.                 if (!camPos)
  661.                     camPos = lastCamPos;
  662.             }
  663.  
  664.             if (cameraMode == CAMMODE_TV)
  665.             {
  666.                 if (lastCamPos)
  667.                 {
  668.                     if (camPos.distance( lastCamPos ) < 0.1)
  669.                         return;
  670.                     if (lastCamPos.distance(actdestPos) < camPos.distance(actdestPos))
  671.                         return; //jobb a mostani
  672.                 }
  673.             } else
  674.                 addTimer( 3,3 );    //start changing cameras every 3 seconds
  675.         }
  676.  
  677.         changeCamNone();
  678.         if (!camPos)    return;
  679.  
  680.         Vector3 pTemp = new Vector3(actdestPos);
  681.         pTemp.sub( camPos );
  682.         Ypr yTemp = new Ypr( pTemp );
  683.  
  684. //      cam = new GameRef( map, GameRef.RID_CAMERA, camPos.toString() + "," + yTemp.toString() + ",0x06", "track tv cam" );
  685.         cam = new GameRef( map, GameRef.RID_CAMERA, camPos.toString() + "," + yTemp.toString() + ",0x02", "track tv cam" );
  686.         cam.command( "autozoom 1 0 " + (0.2+Math.random()*0.8) + " " + (Math.random()*0.2) );
  687.         cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  688.         renderer = cam;
  689.         //if(MB_Animator) MB_Animator.changeCam(renderer);
  690.         cam.command( "torque 0.1" );
  691.         cam.command( "roll " + (Math.random()-0.5) );
  692.  
  693.         lastCamPos = new Vector3(camPos);
  694.         cameraMode = CAMMODE_TV;
  695.  
  696. //      if (cameraTarget)
  697. //      {
  698. //          GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  699. //          con.command( "viewport 0");// + osd.getViewport().id() );
  700.             ResourceRef bone = new ResourceRef( cameraTarget.getInfo(GameType.GII_BONE) );
  701.             cam.command( "look " + bone.id() + " 0,0,-1" );
  702. //          if ( osdEnabled )
  703. //              cameraTarget.command( "osd "+ osd.id() +" "+ con.id()); //enable osd
  704. //      } else
  705. //          cam.command( "look " + map.id() + destPos.toString() );
  706.     }
  707.  
  708.     public void changeCamInternal( )//Vector3 pos )
  709.     {
  710.         if (!cameraTarget)  return;
  711.         if (!cameraTarget.id()) return;
  712.  
  713.         if (cameraMode == CAMMODE_FREE)
  714.         {
  715.             player.controller.command( "leave " + cam.id() );
  716.             player.controller.command( "controllable " + player.car.id() );
  717.             player.controller.activateState( 5, 0 );
  718.         }
  719.  
  720. //      changeCamNone();
  721.  
  722.         int cameras = cameraTarget.getInfo( GameType.GII_RENDER );
  723.         if (cameras == 0)   return;
  724.  
  725.         if (cameraMode == CAMMODE_INTERNAL)
  726.         {//change to _next_ int.cam.
  727.             if (++cameraNum >= cameras)
  728.                 cameraNum = 0;
  729.  
  730.             if(cameras>2 && cameraNum >= cameras-2) // Skip mirror and look back cameras
  731.                 cameraNum = 0;
  732.  
  733.             GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  734.             cameraTarget.command( "render " + osd.getViewport().id() +" "+ con.id() +" "+ cameraNum);
  735.             renderer = cameraTarget;
  736.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  737.         } else
  738.         {
  739.             GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  740.             if (cam)
  741.             {
  742.                 lastCamPos = cam.getPos();
  743.                 cam.command( "hide " + osd.getViewport().id());
  744.                 if (cam != cam_external)
  745.                     cam.destroy();  //TV
  746.             }
  747.  
  748.             if (cameraNum < 0)
  749.                 cameraNum = (-cameraNum)%cameras;
  750.             else
  751.                 cameraNum = 0;
  752.  
  753.             cameraTarget.command( "render " + osd.getViewport().id() +" "+ con.id() +" "+ cameraNum);
  754.             renderer = cameraTarget;
  755.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  756. //          if ( osdEnabled )
  757. //              cameraTarget.command( "osd 0 " + con.id()); //disable osd
  758.         }
  759.         cameraMode = CAMMODE_INTERNAL;
  760.  
  761.         if( !cameraNum )
  762.             player.car.command( "filter 3 2" ); //running geart kifilterezzuk
  763.         else
  764.             player.car.command( "filter 3 0" ); //running geart kifilterezzuk
  765.  
  766.     }
  767.  
  768.     public void changeCamInternal( int num )
  769.     {
  770.         if (cameraMode == CAMMODE_INTERNAL)
  771.         {
  772.             GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  773.             cameraTarget.command( "render " + osd.getViewport().id() +" "+ con.id() +" "+ num);
  774.             renderer = cameraTarget;
  775.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  776.         }
  777.         else
  778.         {
  779.             cameraNum = -num;
  780.             changeCamInternal();
  781.         }
  782.     }
  783.  
  784.     void makeCamExternal()  //ennek ki kellene kapcsolnia a renderert, ha az nem az ext. cam.
  785.     {
  786.         Vector3 pos;
  787.  
  788.         if (cameraMode == CAMMODE_FREE)
  789.         {
  790.             player.controller.command( "leave " + cam.id() );
  791.             player.controller.command( "controllable " + player.car.id() );
  792.             player.controller.activateState( 5, 0 );
  793.         }
  794.  
  795.         if( cameraMode == CAMMODE_INTERNAL && !cameraNum )
  796.             player.car.command( "filter 3 0" ); //running geart kifilterezzuk
  797.  
  798.  
  799.         if (cam_external)
  800.             if (!cam_external.id())
  801.                 cam_external = null;    //drop
  802.  
  803.         if( cam_external )
  804.         {
  805.             if (renderer)
  806.             if (renderer != cam_external)
  807.             {
  808.                 renderer.command( "hide " + osd.getViewport().id());
  809.                 renderer = null;
  810.             }
  811. /*          if (cameraMode == CAMMODE_INTERNAL)
  812.             {
  813. //              GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  814.                 cameraTarget.command( "hide " + osd.getViewport().id());// +" "+ con.id());
  815. //              if ( osdEnabled )
  816. //                  cameraTarget.command( "osd "+ osd.id() +" "+ con.id()); //enable osd
  817.             }
  818. */          if (cam && cam != cam_external)
  819.             {
  820.                 cam.destroy();  //TV
  821.                 cam = null;
  822.             }
  823.  
  824.             cam = cam_external;
  825.         }
  826.  
  827.         if (!cam_external)
  828.         {
  829.             changeCamNone();
  830.            
  831.             if (lastCamPos)
  832.                 pos = lastCamPos;
  833.             else
  834.                 pos = new Vector3(0,-10000,0);  //patch
  835.                
  836.             Vector3 pTemp = cameraTarget.getPos();
  837.             if (!pTemp)
  838.             {
  839. //              System.log("Missing cameratarget! Ext.camera not created!");
  840.                 return;
  841.             }
  842.             Ypr yTemp;
  843.             pTemp.sub( pos );
  844.  
  845.             //ha tul mesze ment (tvben), lerakjuk moge
  846.             if( pTemp.length() > 70.0 )
  847.             {
  848.                 pos = cameraTarget.getPos();
  849.                 if (!pos)   return;
  850.                 Vector3 displ = new Vector3( pTemp );
  851.                 displ.normalize();
  852.                 displ.mul( 5.0 );
  853.  
  854.                 pTemp = new Vector3( pos );
  855.                 pos.sub( displ );
  856.                 pos.y+=2.0;
  857.  
  858.                 pTemp.sub( pos );
  859.  
  860.                 yTemp = new Ypr( pTemp );
  861.             }
  862.             else
  863.             {
  864.                 yTemp = new Ypr( pTemp );
  865.             }
  866.  
  867.             cam = new GameRef( map, GameRef.RID_CAMERA, pos.toString() + "," + yTemp.toString() + ",0x02, 1.0,0, 0.01", "external track cam" );
  868.             cam_external = cam;
  869.  
  870.             lastCamPos = new Vector3(pos);
  871.         }
  872.     }
  873.  
  874.     public void changeCamFollow( )//Vector3 pos )
  875.     {
  876.         makeCamExternal();
  877.  
  878.         cam.command( "dist 4.0 15.0");
  879.         cam.command( "smooth 1.0 1.0");
  880.         cam.command( "force 1.0 1.0 -1.0" );    //defaults are in config.java
  881.         cam.command( "torque 0.2" );
  882.         cam.command( "roll 0" );
  883.  
  884.         //cam.command( "dist 2.0 10.0");
  885.         //cam.command( "smooth 0.5 0.5");
  886.         //cam.command( "force 1.6 0.5 -0.7" );  //defaults are in config.java
  887.         //cam.command( "torque 0.1" );
  888.         //cam.command( "roll 0" );
  889.  
  890.         cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  891.         renderer = cam;
  892.         //if(MB_Animator) MB_Animator.changeCam(renderer);
  893.  
  894.         GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  895.         con.command( "viewport " + osd.getViewport().id() );
  896.         con.command( "camera " + cam.id() );
  897.  
  898.         cameraMode = CAMMODE_FOLLOW;
  899.     }
  900.  
  901.     public void changeCamPoint( Vector3 pos )
  902.     {
  903.         makeCamExternal();
  904.  
  905.         GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  906.         con.command( "viewport 0");// + osd.getViewport().id() );
  907.         ResourceRef bone = new ResourceRef( cameraTarget.getInfo(GameType.GII_BONE) );
  908.  
  909.         Vector3 pTemp = cameraTarget.getPos();
  910.         if (!pTemp) return;
  911.         pTemp.sub( pos );
  912.         Ypr yTemp = new Ypr( pTemp );
  913.  
  914.         cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  915.         renderer = cam;
  916.         //if(MB_Animator) MB_Animator.changeCam(renderer);
  917.         cam.command( "move " + bone.id() + " 0,1,0 0.1 0,-0.2,-3" );
  918.         cam.command( "look " + map.id() + " "+pos.x+","+pos.y+","+pos.z );
  919.         cam.command( "roll " + (Math.random()-0.5) );
  920.         cameraMode = CAMMODE_POINT;
  921.     }
  922.  
  923.     public void changeCamChase()
  924.     {
  925.         if (!cameraTarget2)
  926.         {
  927.             changeCamFollow();
  928.         } else
  929.         if (!cameraTarget2.id())
  930.         {
  931.             changeCamFollow();
  932.         } else
  933.         {
  934.             makeCamExternal();
  935.  
  936.             GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  937.             con.command( "viewport 0");// + osd.getViewport().id() );
  938.             ResourceRef bone = new ResourceRef( cameraTarget.getInfo(GameType.GII_BONE) );
  939.             cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  940.             renderer = cam;
  941.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  942. //          cam.command( "move " + bone.id() + " 0,1,0 0.1 0,-0.2,-8" );
  943.             float roll = Math.random()-0.5;
  944.             cam.command( "move " + bone.id() + " 0,"+(Math.random())+",0 0.01 " + roll*-3.0 + ",-0.2," + (-3-5*Math.random()) );
  945.             cam.command( "look " + cameraTarget2.id() + " 0,0,-1 " + roll*0.6 + ",0,-1" );
  946.             cam.command( "roll " + roll );
  947.             cam.command( "zoom " + (20.0+70.0*Math.random()) +" 5" );
  948.         }
  949.         cameraMode = CAMMODE_CHASE;
  950.     }
  951.  
  952.     public void changeCamInvChase()
  953.     {
  954.         if (!cameraTarget2)
  955.         {
  956.             changeCamFollow();
  957.         } else
  958.         if (!cameraTarget2.id())
  959.         {
  960.             changeCamFollow();
  961.         } else
  962.         {
  963.             makeCamExternal();
  964.  
  965.             GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  966.             con.command( "viewport 0");// + osd.getViewport().id() );
  967.             ResourceRef bone = new ResourceRef( cameraTarget2.getInfo(GameType.GII_BONE) );
  968.             cam.command( "render " + osd.getViewport().id() + " 0 0 1 " + (Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET) );
  969.             renderer = cam;
  970.             //if(MB_Animator) MB_Animator.changeCam(renderer);
  971. //          cam.command( "move " + bone.id() + " 0,1,0 0.1 0,-0.2,-8" );
  972. //          cam.command( "look " + cameraTarget.id() + " 0,0,-1" );
  973.             float roll = Math.random()-0.5;
  974.             cam.command( "move " + bone.id() + " 0,"+(Math.random())+",0 0.01 " + roll*-3.0 + ",-0.2," + (-3-5*Math.random()) );
  975.             cam.command( "look " + cameraTarget.id() + " 0,0,-1 " + roll*0.6 + ",0,-1" );
  976.             cam.command( "roll " + roll );
  977.             cam.command( "zoom " + (20.0+70.0*Math.random()) +" 5" );
  978.         }
  979.         cameraMode = CAMMODE_INVCH;
  980.     }
  981.  
  982.     public void changeCamFree()
  983.     {
  984. //'freestyle' camera for debug
  985.         makeCamExternal();
  986.         player.controller.command( "leave " + player.car.id() );
  987.         player.controller.command( "controllable " + cam.id() );
  988.         player.controller.activateState( 5, 1 );
  989.         cameraMode = CAMMODE_FREE;
  990.     }
  991.  
  992.     public void enablePicInPic()
  993.     {
  994. //debug test:
  995. //      vport2 = new Viewport( 12, 0.1, 0.1, 0.3, 0.3 );
  996.         vport2 = new Viewport( 12, 0.99, 0.01, 0.3, 4.0/3.0, -1.0, 0.0 );
  997.         vport2.activate( Viewport.RENDERFLAG_CLEARDEPTH | Viewport.RENDERFLAG_CLEARTARGET );
  998.         GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  999.         cameraTarget.command( "render " + vport2.id() +" "+ con.id() +" "+ cameraNum);
  1000. //      renderer = cameraTarget;
  1001.     }
  1002.  
  1003.     public void changeCamNone()
  1004.     {
  1005.         if (renderer)
  1006.         {
  1007.             renderer.command( "hide " + osd.getViewport().id());
  1008.             renderer = null;
  1009.         }
  1010.  
  1011.         if( cameraMode == CAMMODE_INTERNAL && !cameraNum )
  1012.             player.car.command( "filter 3 0" ); //running geart kifilterezzuk
  1013.  
  1014. /*      if (cameraMode == CAMMODE_INTERNAL)
  1015.         {
  1016. //          GameRef con = new GameRef(cameraTarget.getInfo(GII_OWNER));
  1017.             cameraTarget.command( "hide " + osd.getViewport().id());// +" "+ con.id());
  1018.         }
  1019. */      if( cam )
  1020.         {
  1021.             cam.destroy();
  1022.             if (cam_external == cam)
  1023.                 cam_external = null;
  1024.             if (renderer == cam)
  1025.                 renderer = null;
  1026.             cam = null;
  1027.         }
  1028.     }
  1029.  
  1030.     public void refreshCamera()
  1031.     {
  1032.         if (cameraMode == CAMMODE_FOLLOW)
  1033.         {
  1034.             changeCamNone();
  1035.             changeCamFollow();
  1036.         }
  1037.         else
  1038.         if (cameraMode == CAMMODE_INTERNAL)
  1039.             changeCamInternal();
  1040.         else
  1041.         if (cameraMode == CAMMODE_TV)
  1042.             changeCamTV();
  1043.         else
  1044.         if (cameraMode == CAMMODE_CHASE)
  1045.             changeCamChase();
  1046.         else
  1047.         if (cameraMode == CAMMODE_INVCH)
  1048.             changeCamInvChase();
  1049.     }
  1050.  
  1051.     public void changeCamTarget( GameRef obj )
  1052.     {
  1053.         if (cameraTarget == obj)
  1054.             return;
  1055. //      if (cameraMode == CAMMODE_INTERNAL)
  1056.         if (renderer && cameraTarget)
  1057.         if (renderer.id() == cameraTarget.id())
  1058.         {
  1059.             renderer.command( "hide " + osd.getViewport().id());
  1060.             renderer = null;
  1061.         }
  1062.         cameraTarget = obj;
  1063.         refreshCamera();
  1064.     }
  1065.  
  1066.     public void changeCamTarget2( GameRef obj )
  1067.     {
  1068.         if (cameraTarget2 == obj)
  1069.             return;
  1070.         if (renderer && cameraTarget2)
  1071.         if (renderer.id() == cameraTarget2.id())
  1072.         {
  1073.             renderer.command( "hide " + osd.getViewport().id());
  1074.             renderer = null;
  1075.         }
  1076.         cameraTarget2 = obj;
  1077.         if ((cameraMode == CAMMODE_CHASE)
  1078.          || (cameraMode == CAMMODE_INVCH))
  1079.             refreshCamera();
  1080.     }
  1081.  
  1082.     public Trigger addTrigger( Trigger t, Vector3 pos, RenderRef marker, String handler )
  1083.     {
  1084.         trigger.addElement(t);
  1085.         addNotification( t.trigger, EVENT_TRIGGER_ON, EVENT_SAME, null, handler );
  1086.         addNotification( t.trigger, EVENT_TRIGGER_OFF, EVENT_SAME, null, handler );
  1087.        
  1088.         if( marker )
  1089.         {
  1090.             t.marker = nav.addMarker( marker, pos, 0 );
  1091.             t.nav = nav;
  1092.         }
  1093.  
  1094.         return t;
  1095.     }
  1096.  
  1097.  
  1098.     public Trigger addTrigger( Vector3 pos, GameRef type, RenderRef marker, String handler, float r, String alias )
  1099.     {
  1100.         return addTrigger( new Trigger( map, null, pos, r, alias ), pos, marker, handler );
  1101.     }
  1102.  
  1103.     public void removeTrigger( Trigger t )
  1104.     {
  1105.         if( t )
  1106.         {
  1107.             remNotification( t.trigger, EVENT_TRIGGER_ON|EVENT_TRIGGER_OFF );
  1108.             trigger.removeElement(t);
  1109.             t.finalize();
  1110.         }
  1111.     }
  1112.  
  1113.     //el/visszaveszi a kocsit a playertol
  1114.     public void lockCar()
  1115.     {
  1116.         if (player.car)
  1117.         {
  1118.             player.car.setParent( map );
  1119.             player.car.setMatrix( posStart, oriStart );
  1120.             player.car.command( "reset" );
  1121.             player.car.command( "reload" ); //Fuel and NOS
  1122.         }
  1123.     }
  1124.  
  1125.     public void releaseCar()
  1126.     {
  1127.         if (player.car)
  1128.         {
  1129.             player.car.setParent( player );
  1130.             player.car.command( "reset" );
  1131.         }
  1132.     }
  1133.  
  1134.  
  1135.     public void setMessage( String str )
  1136.     {
  1137.         messages.changeText( str );
  1138.         addTimer( 2, 0 );
  1139.         ++msgtimers;
  1140.     }
  1141.  
  1142.     public void handleEvent( GameRef obj_ref, int event, int param )
  1143.     {
  1144.         //intet kellene visszadnia, jelezve, hogy feldolgozta-e az uzenetet!
  1145.         if( event == EVENT_TIME )
  1146.         {
  1147.             if( param == 0 )
  1148.             {
  1149.                 if( !--msgtimers )
  1150.                     messages.changeText( "" ); 
  1151.             }
  1152.             else
  1153.             if( param == 2 )
  1154.             {
  1155.                 addTimer( 1, 2 );   //one sec tick
  1156.  
  1157.                 if( GameLogic.timeout )
  1158.                 {
  1159.                     if( !--GameLogic.timeout )
  1160.                         GameLogic.changeActiveSection( parentState );
  1161.                 }
  1162.             }
  1163.             else
  1164.             if( param == 3 )
  1165.             {
  1166.                 if( cameraMode == CAMMODE_TV )
  1167.                 {
  1168. //                  if (player.car)
  1169.                         changeCamTV();
  1170.                     addTimer( 3, 3 ); //3mp-kent keresunk neki uj post
  1171.                 }
  1172.             }
  1173.             else
  1174.             if( param == 4 )
  1175.             {
  1176.                 if ( GameLogic.gameMode == GameLogic.GM_DEMO )
  1177.                 {//random camera changes
  1178.                     int changed = 0;
  1179.                     if (Math.random() > 0.3f)
  1180.                     {
  1181.                         int cam = 2.0*Math.random();
  1182.                         cameraMode = 2+cam%3;
  1183.                         changed++;
  1184.                     } else
  1185.                     {
  1186.                         int cam = 3.0*Math.random();
  1187.                         changeCamInternal(1+cam%3);
  1188.                     }
  1189.  
  1190.                     if (Math.random() > 0.7f)
  1191.                         if (cameraTarget2)
  1192.                         {
  1193.                             GameRef         t2 = cameraTarget2;
  1194.                            
  1195.                             if (renderer && cameraTarget)
  1196.                             if (renderer.id() == cameraTarget.id())
  1197.                             {
  1198.                                 renderer.command( "hide " + osd.getViewport().id());
  1199.                                 renderer = null;
  1200.                             }
  1201.                             cameraTarget2 = cameraTarget;
  1202.                             cameraTarget = t2;
  1203.                             changed++;
  1204.                         }
  1205.                     if (changed)
  1206.                     {
  1207.                         refreshCamera();
  1208.                         addTimer (5, 4 );
  1209.                     } else
  1210.                     {
  1211.                         addTimer (2, 4 );
  1212.                     }
  1213.                 }
  1214.             }
  1215.         }
  1216.     }
  1217.  
  1218.  
  1219.     public void handleEvent( GameRef obj_ref, int event, String param )
  1220.     {
  1221.         int tok = -1;
  1222.  
  1223.         if( event == EVENT_CURSOR )
  1224.         {
  1225.             int ec = param.token( ++tok ).intValue();
  1226.  
  1227.             int cursor_id = param.token( ++tok ).intValue();
  1228.             if (ec == GameType.EC_RCLICK)
  1229.             {
  1230.                 GameRef dest = new GameRef(param.token( ++tok ).intValue());
  1231.                 int cat = dest.getInfo(GameType.GII_CATEGORY);
  1232.                 if( cat == GIR_CAT_PART || cat == GIR_CAT_VEHICLE )
  1233. //                  cam.command( "look " + dest.id() + " 0,0,0" );
  1234.                     cam.command( "look " + dest.id() + " " + param.token( ++tok ) + "," + param.token( ++tok ) + "," + param.token( ++tok ) );
  1235.             }
  1236.         }
  1237.     }
  1238.  
  1239.  
  1240.     public void handleMessage( Message m )
  1241.     {
  1242.         if( m.type == Message.MT_EVENT )
  1243.         {
  1244.             int cmd=m.cmd;
  1245.  
  1246.  
  1247.             if( cmd == CMD_LOOKBACK )
  1248.             {
  1249.                 if(cameraMode == CAMMODE_FOLLOW)
  1250.                 {
  1251.                     if( ((Event)m).flags )  //press
  1252.                     {
  1253.                         //makeCamExternal();
  1254.  
  1255.                         Vector3 v = new Vector3();
  1256.                         v.diff( cameraTarget.getPos(), cam.getPos() );
  1257.                         camDist = v.length();
  1258.  
  1259.                         Vector3 Dist = new Vector3( 0.0, 1.5, -camDist );// distance
  1260.                         Vector3 b = cameraTarget.getPos();
  1261.                         float CarOri = cameraTarget.getOri().y;
  1262.  
  1263.                         Dist.rotate( new Ypr( CarOri, 0.0, 0.0 ) ); // rotate Dist Vector
  1264.                         Dist.sub( new Vector3( -b.x, -b.y, -b.z) ); // Set Pivot of rotate
  1265.  
  1266.                         cam.command( "force 2.0 1.0 -1.0" );    //defaults are in config.java
  1267.                         cam.command( "simulate 0" );
  1268.  
  1269.                         ResourceRef bone = new ResourceRef( cameraTarget.getInfo(GameType.GII_BONE) );
  1270.                         cam.command( "move " + bone.id() + " 0,1.5,-" + camDist + " 0.001 0,-0.2, 0" );
  1271.                         cam.command( "look " + bone.id() + " 0,1.3,0" );
  1272.  
  1273.                         Dist.y += 1;
  1274.                         cam.setMatrix( Dist, new Ypr(CarOri+3.14, 0, 0) );
  1275.                     }
  1276.                     else
  1277.                     {
  1278.                         changeCamFollow();
  1279.  
  1280.                         Vector3 Dist = new Vector3( 0.0, 2.0, 0.9*camDist );// distance
  1281.                         Vector3 b = cameraTarget.getPos();
  1282.                         float CarOri = cameraTarget.getOri().y;
  1283.  
  1284.                         Dist.rotate( new Ypr( CarOri, 0.0, 0.0 ) ); // rotate Dist Vector
  1285.                         Dist.sub( new Vector3( -b.x, -b.y, -b.z) ); // Set Pivot of rotate
  1286.  
  1287.                         cam.setMatrix( Dist, new Ypr(CarOri, 0, 0) );
  1288.                     }
  1289.                 }
  1290.                 else
  1291.                 if(cameraMode == CAMMODE_INTERNAL)
  1292.                 {
  1293.                     if( ((Event)m).flags )  //press
  1294.                     {
  1295.                         IntCamNumber = cameraNum; //Member current camera number
  1296.  
  1297.                         changeCamInternal(5);
  1298.                     }
  1299.                     else //Relase
  1300.                     {
  1301.                         changeCamInternal(IntCamNumber); //Back to old camera
  1302.                     }
  1303.                 }
  1304.             }
  1305.             else
  1306.             if( cmd == CMD_MIRROR )
  1307.             {
  1308.                 MirrorStatus += 1;
  1309.                 if (MirrorStatus >= 2) MirrorStatus = 0;
  1310.  
  1311.                 Mirror(MirrorStatus);
  1312.             }
  1313.             else
  1314.             if( cmd == CMD_MAP )
  1315.             {
  1316.                 if( nav )
  1317.                 {
  1318.                     if( MapStatus == 1 ) // ON
  1319.                     {
  1320.                         osd.vp.resize( 0, 0, 1, 1 );
  1321.                         enableOsd(OsdStatus);
  1322.                         MapViewFrame.finalize();
  1323.                         GPS_Min_Zoom = MapZ1;
  1324.                         GPS_Max_Zoom = MapZ2;
  1325.  
  1326.                         MapStatus = 0;
  1327.                     }
  1328.                     else // OFF
  1329.                     {
  1330.                         OsdStatus = osdEnabled;
  1331.                         enableOsd(0);
  1332.                         MapViewFrame = MirrorOsd.createRectangle( 0.63, 0.63, 0.72, 0.72, -1, new ResourceRef( MW_Mod:0x0054r ) );
  1333.                         osd.vp.resize( 0.64, 0.64, 0.35, 0.35 );
  1334.                         nav.ViewMap();
  1335.                         MapZ1 = GPS_Min_Zoom;
  1336.                         MapZ2 = GPS_Max_Zoom;
  1337.  
  1338.                         GPS_Min_Zoom += 3;
  1339.                         GPS_Max_Zoom += 4.5;
  1340.  
  1341.                         MapStatus = 1;
  1342.                     }
  1343.                 }
  1344.             }
  1345.             else
  1346.             if( cmd >= CMD_SUSP_FL && cmd <= CMD_SUSP_MODE ) // All suspension buttons
  1347.             {
  1348.                 if( player.car )
  1349.                 {
  1350.                     if( player.car.chassis )
  1351.                     {
  1352.                         //setMessage( cmd - 40 ); \\Text for bebuging
  1353.  
  1354.                         if( ((Event)m).flags )  //press
  1355.                             player.car.chassis.Hsuspension( 1, cmd - 40 );
  1356.                         else    //release
  1357.                             player.car.chassis.Hsuspension( 0, cmd - 40 );
  1358.                     }
  1359.                 }
  1360.             }
  1361.             else
  1362.             if( cmd == CMD_POSITION )
  1363.             {
  1364.                 if ( System.timeWarp(-1.0) > 0.0 )
  1365.                 {
  1366.                     {
  1367.                     Vector3 CarVector = player.car.getPos();
  1368.                     TimeText.changeText( "Pos: X: " + CarVector.x + ", Y: " + CarVector.y + ", Z: " + CarVector.z );
  1369.                     Ypr CarYpr = player.car.getOri();
  1370.                     TimeText2.changeText( "Car Rotation: Y: " + CarYpr.y + ", P: " + CarYpr.p + ", R: " + CarYpr.r );
  1371.                     }
  1372.                     System.timeWarp(0.0);
  1373.                 }
  1374.                 else
  1375.                 {
  1376.                     {
  1377.                     Vector3 CarVector = player.car.getPos();
  1378.                     TimeText.changeText( " " );
  1379.                     Ypr CarYpr = player.car.getOri();
  1380.                     TimeText2.changeText( " ");
  1381.                     }
  1382.                     System.timeWarp( 1.0 );
  1383.                 }
  1384.             }
  1385.             else
  1386.             if( cmd == CMD_CRUISECONTROL )
  1387.             {
  1388.                 int newCruise = 1-player.car.getCruiseControl();
  1389.                 player.car.setCruiseControl( newCruise );
  1390.                 if( newCruise )
  1391.                 {
  1392.                     setMessage( "Cruise control on" );
  1393.  
  1394.  
  1395.                 }
  1396.                 else
  1397.                 {
  1398.                     setMessage( "Cruise control off" );
  1399.  
  1400.                 }
  1401.             }
  1402.             else
  1403.             if( cmd == CMD_CAMMOVE )
  1404.             {
  1405.                 if( ((Event)m).flags )
  1406.                 {   //press
  1407.                     player.controller.user_Add( Input.AXIS_LOOK_UPDOWN, ControlSet.MOUSE, 1,    -1.0f, 1.0f, -1.0f, 1.0f);
  1408.                     player.controller.user_Add( Input.AXIS_LOOK_LEFTRIGHT,  ControlSet.MOUSE, 0,    -1.0f, 1.0f, -1.0f, 1.0f);
  1409.                 }
  1410.                 else
  1411.                 {   //release
  1412.                     player.controller.user_Del( Input.AXIS_LOOK_UPDOWN, ControlSet.MOUSE, 1 );
  1413.                     player.controller.user_Del( Input.AXIS_LOOK_LEFTRIGHT,  ControlSet.MOUSE, 0 );
  1414.                 }
  1415.             } else
  1416.  
  1417.             if( cmd == CMD_CHANGECAM_TV )
  1418.             {
  1419. //              if( cameraMode != CAMMODE_TV )
  1420. //              {
  1421.                     changeCamTV();
  1422. //              }
  1423.             } else
  1424.             if( cmd == CMD_CHANGECAM_INT )
  1425.             {
  1426.                 changeCamInternal();
  1427.             } else
  1428.             if( cmd == CMD_CHANGECAM_EXT )
  1429.             {
  1430.                 if (cameraMode != CAMMODE_FOLLOW)
  1431.                 {
  1432.                     changeCamFollow();
  1433.                 }
  1434.             } else
  1435.             if( cmd == CMD_CHANGECAM_CHASE )
  1436.             {
  1437.                 changeCamChase();
  1438.             } else
  1439.             if( cmd == CMD_CHANGECAM_INVCH )
  1440.             {
  1441.                 changeCamInvChase();
  1442.             } else
  1443.             if( cmd == CMD_CHANGECAM_FREE )
  1444.             {
  1445.                 if (cameraMode != CAMMODE_FOLLOW)
  1446.                     changeCamFollow();
  1447.        
  1448.                 changeCamFree();
  1449. //              enablePicInPic();
  1450.             } else
  1451.             if( cmd == CMD_CHANGECAMTARGET )
  1452.             {
  1453.                 if (player.car)
  1454.                 {
  1455.                     int old_time = System.timeWarp(-1);
  1456.                     System.timeWarp(0.0); // Pause
  1457.  
  1458.                     Vector3 CarPos = new Vector3 (player.car.getPos());
  1459.                     Ypr CarYpr = new Ypr (player.car.getOri());
  1460.                     player.render.destroy(); // Driver destroy
  1461.                    
  1462.                     if( nav )
  1463.                         nav.remMarker( mPlayer );
  1464.  
  1465.                     if (GetCarStatus == 0)
  1466.                     {
  1467.                         releaseCar();  
  1468.                         player.carlot.lockPlayerCar();
  1469.                         player.carlot.saveCar( player.carlot.curcar );
  1470.                         player.carlot.flushCars();
  1471.  
  1472.                         GetCarStatus = 1;
  1473.                     }
  1474.                     else
  1475.                     {
  1476.                         player.car.destroy();
  1477.                         player.car = null;
  1478.                     }
  1479.  
  1480.                     VehicleDescriptor nee = GameLogic.getVehicleDescriptor( VehicleType.VS_DEMO );
  1481.                     player.car = new Vehicle( player, nee.id, nee.colorIndex, 1+Math.random(), 1+Math.random(), 1, 1 );
  1482.                    
  1483.                     player.car.setParent( map );
  1484.                     player.controller.command( "controllable " + player.car.id() );
  1485.                     player.car.setMatrix( CarPos, new Ypr(CarYpr.y, 0.0, 0.0) );
  1486.  
  1487.                     player.render = new RenderRef( map, player.driverID, "player" );
  1488.                     player.controller.command( "renderinstance " + player.render.id() );
  1489.  
  1490.                     player.car.setDefaultTransmission();
  1491.                     player.car.setDefaultSteeringHelp();
  1492.  
  1493.                     //lastCamPos = new Vector3( 0, 3, 6);
  1494.                     //lastCamPos.add( player.car.getPos() );
  1495.                     changeCamTarget(player.car);
  1496.                     changeCamFollow();// cameraPos );
  1497.  
  1498.                     map.command( "obs_add " + player.car.id() );
  1499.  
  1500.                     player.car.command( "reload");
  1501.                     System.timeWarp( old_time );
  1502.                     player.car.wakeUp();
  1503.  
  1504.                     if (nav)
  1505.                         mPlayer = nav.addMarker( player );
  1506.                     //Color_Number = Math.random() * GameLogic.CARCOLORS.length;
  1507.                     //player.car.command( "texture " + GameLogic.CARCOLORS[Color_Number] + " 1" ); 
  1508.                 }
  1509.             }
  1510.             else
  1511.             if( cmd == CMD_OSDONOFF )
  1512.             {
  1513.                 osdEnabled = 1-osdEnabled;
  1514.                 enableOsd( osdEnabled );
  1515.                 if (MirrorStatus == 1)
  1516.                     Mirror( osdEnabled );
  1517.             }
  1518.             else
  1519.             if( cmd == CMD_CAMROTATE )
  1520.             {
  1521.                 if( camRotate )
  1522.                 {
  1523.                     cam.command( "angle 0 0" );     //0.7853 = (2*pi)/8.0
  1524.                 }
  1525.                 else
  1526.                 {
  1527.                     cam.command( "angle 0 8.0 0.7853" );        //0.7853 = (2*pi)/8.0
  1528.                 }
  1529.  
  1530.                 camRotate = 1-camRotate;
  1531.             }
  1532.             /*else
  1533.             if( cmd == CMD_FILTER )
  1534.             {
  1535.                 if (1)
  1536.                 {
  1537.                     Frontend.show( new ResourceRef(sl:0x0003r) ); // Background image
  1538.                 }
  1539.                 else
  1540.                 {
  1541.                     Frontend.hide();
  1542.                 }
  1543.             }*/
  1544.             else
  1545.             if( cmd == CMD_TILT7 )
  1546.             {
  1547.                 if( camTilt )
  1548.                 {
  1549.                     cam.command( "roll " + (Math.random()*-0.5) );
  1550.                 }
  1551.                 else
  1552.                 {
  1553.                     cam.command( "roll " + (Math.random()*0.5) );
  1554.                 }
  1555.                 camTilt = 1-camTilt;
  1556.             }
  1557.             else
  1558.             if( cmd == CMD_TILT8 )
  1559.             {  
  1560.                 if ( camTilt < 1.5735 )
  1561.                 camTilt += 0.03496 ;    // 3.147 = 180°
  1562.                 cam.command( "roll " + camTilt );
  1563.             }
  1564.             else
  1565.             if( cmd == CMD_TILT9 )
  1566.             {  
  1567.                 if ( camTilt > -1.5735 )
  1568.                 camTilt -= 0.03496 ;    // 3.147 = 180°
  1569.                 cam.command( "roll " + camTilt );
  1570.             }
  1571.             else
  1572.             if( cmd == CMD_TILT0 )
  1573.             {
  1574.                 camTilt = 0 ;   // 3.147 = 180°
  1575.                 cam.command( "roll " + camTilt );
  1576.             }
  1577.             else
  1578.             if( cmd == CMD_LIGHTSONOFF )
  1579.             {
  1580.                 GameLogic.setTime( GameLogic.getTime() + 12*3600 );
  1581.                 if( GameLogic.getTime() >= 24*3600 )
  1582.                 {
  1583.                     GameLogic.setTime( GameLogic.getTime() - 24*3600 );
  1584.                 }
  1585.             }
  1586.             else
  1587.             if( cmd == CMD_CHANGETIME )
  1588.             {
  1589.             GameLogic.spendTime( 3600 );
  1590.             super.refresh( GameLogic.getTime() );
  1591.             refreshCamera();
  1592.             }
  1593.             else
  1594.             if( cmd == CMD_NAVONOFF )
  1595.             {  
  1596.                 navEnabled = 1-navEnabled;
  1597.                 enableNav( navEnabled );
  1598.             }
  1599.             else
  1600.             if( cmd == CMD_QUICKREPAIR )
  1601.             {
  1602.                 //GameLogic.spendTime( 1*3600 );
  1603.                 //super.refresh( GameLogic.getTime() );
  1604.                 //renderer.command( "hide " + osd.getViewport().id());
  1605.                 //refreshCamera();
  1606.  
  1607.                 Ypr CarYpr = new Ypr (player.car.getOri());
  1608.  
  1609.                 if (CarYpr.r > 1.3 || CarYpr.r < -1.3 || CarYpr.p > 1.3 || CarYpr.p < -1.3)
  1610.                 {
  1611.                     Vector3 CarPos = new Vector3 (player.car.getPos());
  1612.                     player.car.setMatrix( CarPos, new Ypr(CarYpr.y, 0.0, 0.0) );
  1613.                     player.car.command( "idle");
  1614.                     player.car.wakeUp();
  1615.                 }
  1616.  
  1617.                 player.car.repair();
  1618.                 player.car.command( "reload" );
  1619.             }
  1620.             else
  1621.             if( cmd == CMD_SIMPAUSE )
  1622.             {
  1623.                 TimeTextStatus = 1; TimeTextWait = System.currentTime()+2;
  1624.  
  1625.                 if ( System.timeWarp(-1.0) > 0.0 )
  1626.                 {
  1627.                     System.timeWarp(0.0);
  1628.                     cam.command( "simulate 1" );
  1629.                     TimeText.changeText( "Time: Pause" );
  1630.                 }
  1631.                 else
  1632.                 {
  1633.                     cam.command( "simulate 0" );
  1634.                     TimeText.changeText( "Time: Normal" );
  1635.                     System.timeWarp( 1.0 );
  1636.                     if( camRotate )
  1637.                         cam.command( "angle 0 10.0 0.7853" );       //0.7853 = (2*pi)/8.0
  1638.                 }
  1639.             }
  1640.             else
  1641.             if( cmd == CMD_SIMSPEEDINC )
  1642.             {
  1643.                 TimeTextStatus = 1; TimeTextWait = System.currentTime()+2;
  1644.  
  1645.                 float t = 2.0*System.timeWarp(-1.0);
  1646.                 if( t < 8.0 )
  1647.                 {
  1648.                     if( t == 0.0 )
  1649.                         t = 1.0/512;
  1650.                     System.timeWarp( t );
  1651.                 }
  1652.                    
  1653.                 if( t == 1.0 )
  1654.                 {
  1655.                     cam.command( "simulate 0" );
  1656.                     TimeText.changeText( "Time: Normal" );
  1657.                 }
  1658.                 else
  1659.                 if( t > 1.0 )
  1660.                 {
  1661.                     cam.command( "simulate 0" );
  1662.                     TimeText.changeText( "Time: x" + System.timeWarp(-1.0) );
  1663.                 }
  1664.                 else
  1665.                 {
  1666.                     cam.command( "simulate 1" );
  1667.                     TimeText.changeText( "Time: x" + System.timeWarp(-1.0) );
  1668.                 }
  1669.                
  1670.                 if( camRotate )
  1671.                 cam.command( "angle 0 10.0 0.7853" );       //0.7853 = (2*pi)/8.0
  1672.             }
  1673.             else
  1674.             if( cmd == CMD_SIMSPEEDDEC )
  1675.             {
  1676.                 TimeTextStatus = 1; TimeTextWait = System.currentTime()+2;
  1677.  
  1678.                 float t = 0.5*System.timeWarp(-1.0);
  1679.                 if (t < 1.0/512)
  1680.                     t = 0.0;
  1681.                 System.timeWarp(t);
  1682.                
  1683.                 if( t == 0)
  1684.                 {
  1685.                     TimeText.changeText( "Time: Pause" );
  1686.                 }
  1687.                 else
  1688.                 if( t == 1.0 )
  1689.                 {
  1690.                     cam.command( "simulate 0" );
  1691.                     TimeText.changeText( "Time: Normal" );
  1692.                 }
  1693.                 else
  1694.                 if( t > 1.0 )
  1695.                 {
  1696.                     cam.command( "simulate 0" );
  1697.                     TimeText.changeText( "Time: x" + System.timeWarp(-1.0) );
  1698.                 }
  1699.                 else
  1700.                 {
  1701.                     cam.command( "simulate 1" );
  1702.                     TimeText.changeText( "Time: x" + System.timeWarp(-1.0) );
  1703.                 }
  1704.  
  1705.                 if( camRotate )
  1706.                     cam.command( "angle 0 10.0 0.7853" );       //0.7853 = (2*pi)/8.0
  1707.             }
  1708.             else
  1709.             if( cmd == CMD_INGAMEMENU )
  1710.             {
  1711.                 if( mc_active )
  1712.                     osdCommand( CMD_MECHANIC );
  1713.                 else
  1714.                 if( pt_active )
  1715.                     osdCommand( CMD_PAINT );
  1716.                 else
  1717.                 {
  1718.                     if( im_active )
  1719.                     {
  1720.                         ingameMenu.hide();
  1721.  
  1722.                         //hatha valtozott az ingamemenuben!!
  1723.                         player.car.setDefaultTransmission();
  1724.                         player.car.setDefaultSteeringHelp();
  1725.                         player.car.setDefaultASR();
  1726.                         player.car.setDefaultABS();
  1727.  
  1728.                         //hatha valtozott a gpsmode?
  1729.                         if( nav )
  1730.                             nav.changeMode( Config.gpsMode );
  1731.  
  1732.  
  1733.                         //System.timeWarp(1.0);
  1734.  
  1735.                         if( ingameMenu.reqTrackExit )
  1736.                         {
  1737.                             int spec;
  1738.  
  1739.                             if( this instanceof ROCTrack )
  1740.                             {
  1741.                                 if( !this.testMode )
  1742.                                 {
  1743.                                     spec = 1;
  1744.                                 }
  1745.                             }
  1746.  
  1747.                             if( spec )
  1748.                                 this.giveUpRace();
  1749.                             else
  1750.                                 GameLogic.changeActiveSection( parentState );
  1751.                         }
  1752.                     }
  1753.                     else
  1754.                     {
  1755.                         //System.timeWarp(0.0);
  1756.                         ingameMenu.show();
  1757.                         if( cam && cam.id() )
  1758.                             ingameMenu.setActiveCamera( cam );
  1759.                     }
  1760.  
  1761.                     im_active=1-im_active;
  1762.                 }
  1763.             }
  1764.             else
  1765.             if( cmd == CMD_EXIT )
  1766.             {
  1767.                 if( mc_active )
  1768.                     osdCommand( CMD_MECHANIC );
  1769.  
  1770.                 if( pt_active )
  1771.                     osdCommand( CMD_PAINT );
  1772.  
  1773.                 if( im_active )
  1774.                     osdCommand( CMD_INGAMEMENU );
  1775.  
  1776.                 GameLogic.changeActiveSection( parentState );
  1777.             }
  1778.             else
  1779.             if( cmd == CMD_REPAIR )
  1780.             {
  1781.                 if( RepairStatus == 0 )
  1782.                 {
  1783.                     enableOsd(0);
  1784.                     mechanic.filterInventory( 0,0,0 );
  1785.                     mechanic.show();
  1786.                     mechanic.mode = 0;
  1787.                     cam.command( "look " + player.car.id() + " 0,0,0 0,0,0 0.2" );
  1788.                     cam.command( "move " + player.car.id() + " 0,0,0 3.5" );
  1789.                     cam.command( "dist 1.0 10.0");
  1790.                     cam.command( "smooth 0.05 0.5");
  1791.                     cam.command( "simulate 1" );
  1792.                     Input.cursor.addHandler(this);  //kivancsiak vagyunk ra, mit csinal az eger
  1793.                     RepairStatus = 1;
  1794.                 }
  1795.                 else
  1796.                 if( RepairStatus == 1 )
  1797.                 {
  1798.                     mechanic.mode = 1;
  1799.                     Input.cursor.setPointer( Frontend.pointers, "B");
  1800.  
  1801.                     RepairStatus = 2;
  1802.                 }
  1803.                 else
  1804.                 if( RepairStatus == 2 )
  1805.                 {
  1806.                     mechanic.hide();
  1807.                     painter.show();
  1808.                     Input.cursor.setPointer( Frontend.pointers, "D");
  1809.  
  1810.                     RepairStatus = 3;
  1811.                 }
  1812.                 else
  1813.                 if( RepairStatus == 3)
  1814.                 {
  1815.                     RepairStatus = 0;
  1816.  
  1817.                     mechanic.hide();
  1818.                     painter.hide();
  1819.  
  1820.                     player.controller.command( "camera" + cam.id() );
  1821.                     painter.hide();
  1822.                     enableOsd(1);
  1823.                 }
  1824.             }
  1825.             else
  1826.             if( cmd == CMD_MECHANIC )
  1827.             {
  1828.                 if( mc_active )
  1829.                 {
  1830.                     cam.command( "dist 2.5 10.0");
  1831.                     cam.command( "smooth 0.5 0.5");
  1832.                     cam.command( "force 1.6 0.4 -0.4" );
  1833.                     cam.command( "torque 0.05" );
  1834.                     player.controller.command( "camera" + cam.id() );
  1835.  
  1836.                     Input.cursor.remHandler(this);  //kivancsiak vagyunk ra, mit csinal az eger
  1837.                     player.car.command( "start" );  //release
  1838.                     mechanic.hide();
  1839.                     mechanic.filterInventory( 1,1,1 );
  1840.                     enableOsd(1);
  1841.                 }
  1842.                 else
  1843.                 {
  1844.                     enableOsd(0);
  1845.                     mechanic.filterInventory( 0,0,0 );
  1846.                     mechanic.show();
  1847.                     cam.command( "look " + player.car.id() + " 0,0,0 0,0,0 0.2" );
  1848.                     cam.command( "move " + player.car.id() + " 0,0,0 3.5" );
  1849.                     cam.command( "dist 2.5 4.6");
  1850.                     cam.command( "smooth 0.05 0.5");
  1851.                     player.car.command( "stop" );   //grab
  1852.                     Input.cursor.addHandler(this);  //kivancsiak vagyunk ra, mit csinal az eger
  1853.                 }
  1854.  
  1855.                 mc_active=1-mc_active;
  1856.             }
  1857.             else
  1858.             if( cmd == CMD_PAINT )
  1859.             {
  1860.                 if( pt_active )
  1861.                 {
  1862.                     cam.command( "dist 2.5 10.0");
  1863.                     cam.command( "smooth 0.5 0.5");
  1864.                     cam.command( "force 1.6 0.4 -0.4" );
  1865.                     cam.command( "torque 0.01" );
  1866.                     player.controller.command( "camera" + cam.id() );
  1867.                     player.car.command( "start" );  //release
  1868.                     painter.hide();
  1869.                     enableOsd(1);
  1870.                 }
  1871.                 else
  1872.                 {
  1873.                     enableOsd(0);
  1874.  
  1875.                     painter.show();
  1876.                     cam.command( "look " + player.car.id() + " 0,0,0 0,0,0 0.2" );
  1877.                     cam.command( "move " + player.car.id() + " 0,0,0 3.5" );
  1878.                     cam.command( "dist 2.5 4.6");
  1879.                     cam.command( "smooth 0.05 0.5");
  1880.                     player.car.command( "stop" );   //grab
  1881.                 }
  1882.  
  1883.                 pt_active=1-pt_active;
  1884.             }
  1885.  
  1886.         }
  1887.     }
  1888.  
  1889.     public void osdCommand( int cmd )
  1890.     {
  1891.         mp.putMessage( new Event( cmd ) );
  1892.     }
  1893.  
  1894.     public void enableOsd( int enable )
  1895.     {
  1896.         if( enable )
  1897.         {
  1898.             osdCounter++;
  1899.             if( osdCounter == 1 )   // 0 -> 1
  1900.             {
  1901.                 player.showOsd();
  1902.                 //osd.show(0);  //csak screenshotozashoz!!
  1903.             }
  1904.         }
  1905.         else
  1906.         {
  1907.             osdCounter--;
  1908.             if( osdCounter == 0 )   // 1 -> 0
  1909.             {
  1910.                 player.hideOsd();
  1911.                 //osd.hide(0);  //csak screenshotozashoz!!
  1912.             }
  1913.         }
  1914.     }
  1915.  
  1916.     public void enableNav( int enable )
  1917.     {
  1918.         if( enable )
  1919.         {
  1920.             navCounter++;
  1921.             if( navCounter == 1 )   // 0 -> 1
  1922.             {
  1923.                 nav.show();
  1924.                 //osd.show(0);  //csak screenshotozashoz!!
  1925.             }
  1926.         }
  1927.         else
  1928.         {
  1929.             navCounter--;
  1930.             if( navCounter == 0 )   // 1 -> 0
  1931.             {
  1932.                 nav.hide();
  1933.                 //osd.hide(0);  //csak screenshotozashoz!!
  1934.             }
  1935.         }
  1936.     }
  1937. }
RAW Paste Data
Top