Revision: 2663 http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2663&view=rev Author: ulteq Date: 2012-05-25 07:56:04 +0000 (Fri, 25 May 2012) Log Message: ----------- -Cleanup: prepares for anti roll back in auto transmission (DRIVE)
Modified Paths: -------------- trunk/source/main/gameplay/RoRFrameListener.cpp Modified: trunk/source/main/gameplay/RoRFrameListener.cpp =================================================================== --- trunk/source/main/gameplay/RoRFrameListener.cpp 2012-05-25 07:20:59 UTC (rev 2662) +++ trunk/source/main/gameplay/RoRFrameListener.cpp 2012-05-25 07:56:04 UTC (rev 2663) @@ -2209,7 +2209,7 @@ // replay mode if (curr_truck->replaymode) { - if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_REPLAY_FORWARD, 0.1f) && curr_truck->replaypos<=0) + if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_REPLAY_FORWARD, 0.1f) && curr_truck->replaypos <= 0) { curr_truck->replaypos++; } @@ -2217,7 +2217,7 @@ { curr_truck->replaypos--; } - if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_REPLAY_FAST_FORWARD, 0.1f) && curr_truck->replaypos+10<=0) + if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_REPLAY_FAST_FORWARD, 0.1f) && curr_truck->replaypos+10 <= 0) { curr_truck->replaypos+=10; } @@ -2386,38 +2386,25 @@ curr_truck->hydrodircommand = sum; - if ((tmp_left_digital<tmp_left_analog) || (tmp_right_digital<tmp_right_analog)) - curr_truck->hydroSpeedCoupling=false; - else - curr_truck->hydroSpeedCoupling=true; - - // arcade_brake: brake + drive reverse + accelerate? - bool arcadeControls = BSETTING("ArcadeControls", false); - - float accval = INPUTENGINE.getEventValue(EV_TRUCK_ACCELERATE); - float brake = INPUTENGINE.getEventValue(EV_TRUCK_BRAKE); - - // arcade controls are only working with auto-clutch! - if (!arcadeControls || curr_truck->engine->getAutoMode() > BeamEngine::SEMIAUTO) + if ((tmp_left_digital < tmp_left_analog) || (tmp_right_digital < tmp_right_analog)) { - // classic mode, realistic - if (curr_truck->engine) - { - curr_truck->engine->autoSetAcc(accval); - } - curr_truck->brake = brake * curr_truck->brakeforce; + curr_truck->hydroSpeedCoupling = false; } else { - // start engine - if (accval > 0 && curr_truck->engine && curr_truck->engine->hasContact() && !curr_truck->engine->isRunning()) - { - curr_truck->engine->start(); - } + curr_truck->hydroSpeedCoupling = true; + } - // arcade controls: hey - people wanted it x| ... <- and it's convenient - if (curr_truck->engine->getGear() >= 0) + if (curr_truck->engine) + { + bool arcadeControls = BSETTING("ArcadeControls", false); + + float accval = INPUTENGINE.getEventValue(EV_TRUCK_ACCELERATE); + float brake = INPUTENGINE.getEventValue(EV_TRUCK_BRAKE); + + // arcade controls are only working with auto-clutch! + if (!arcadeControls || curr_truck->engine->getAutoMode() > BeamEngine::SEMIAUTO) { - // neutral or drive forward, everything is as its used to be: brake is brake and accel. is accel. + // classic mode, realistic if (curr_truck->engine) { curr_truck->engine->autoSetAcc(accval); @@ -2425,61 +2412,81 @@ curr_truck->brake = brake * curr_truck->brakeforce; } else { - // reverse gear, reverse controls: brake is accel. and accel. is brake. - if (curr_truck->engine) + // start engine + if (accval > 0 && curr_truck->engine && curr_truck->engine->hasContact() && !curr_truck->engine->isRunning()) { - curr_truck->engine->autoSetAcc(brake); + curr_truck->engine->start(); } - curr_truck->brake = accval * curr_truck->brakeforce; - } - // only when the truck really is not moving anymore - if (fabs(curr_truck->WheelSpeed) <= 0.1f && curr_truck->nodes[0].Velocity.length() < 0.2f) - { - // switching point, does the user want to drive forward from backward or the other way round? change gears? - if (brake > 0.5f && accval < 0.5f && curr_truck->engine->getGear() >= 0) + // arcade controls: hey - people wanted it x| ... <- and it's convenient + if (curr_truck->engine->getGear() >= 0) { - // we are on the brake, jump to reverse gear - if (curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC) + // neutral or drive forward, everything is as its used to be: brake is brake and accel. is accel. + if (curr_truck->engine) { - curr_truck->engine->autoShiftSet(BeamEngine::REAR); - } else + curr_truck->engine->autoSetAcc(accval); + } + curr_truck->brake = brake * curr_truck->brakeforce; + } else + { + // reverse gear, reverse controls: brake is accel. and accel. is brake. + if (curr_truck->engine) { - curr_truck->engine->setGear(-1); + curr_truck->engine->autoSetAcc(brake); } - } else if (brake < 0.5f && accval > 0.5f && curr_truck->engine->getGear() < 0) + curr_truck->brake = accval * curr_truck->brakeforce; + } + + // only when the truck really is not moving anymore + if (fabs(curr_truck->WheelSpeed) <= 0.1f) { - // we are on the gas pedal, jump to first gear when we were in rear gear - if (curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC) - { - curr_truck->engine->autoShiftSet(BeamEngine::DRIVE); - } else + // switching point, does the user want to drive forward from backward or the other way round? change gears? + if (brake > 0.5f && accval < 0.5f && curr_truck->engine->getGear() >= 0) { - curr_truck->engine->setGear(1); + // we are on the brake, jump to reverse gear + if (curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC) + { + curr_truck->engine->autoShiftSet(BeamEngine::REAR); + } else + { + curr_truck->engine->setGear(-1); + } + } else if (brake < 0.5f && accval > 0.5f && curr_truck->engine->getGear() < 0) + { + // we are on the gas pedal, jump to first gear when we were in rear gear + if (curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC) + { + curr_truck->engine->autoShiftSet(BeamEngine::DRIVE); + } else + { + curr_truck->engine->setGear(1); + } } } } - } -#ifdef USE_OPENAL - if (curr_truck->brake > curr_truck->brakeforce/6.0) - SoundScriptManager::getSingleton().trigStart(curr_truck, SS_TRIG_BRAKE); - else - SoundScriptManager::getSingleton().trigStop(curr_truck, SS_TRIG_BRAKE); -#endif //OPENAL - //IMI - // gear management -- it might should be transferred to a standalone function of Beam or RoRFrameListener - if (curr_truck->engine) - { + + // IMI + // gear management -- it might, should be transferred to a standalone function of Beam or RoRFrameListener if (curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC) { - if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_AUTOSHIFT_UP)) curr_truck->engine->autoShiftUp(); - if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_AUTOSHIFT_DOWN)) curr_truck->engine->autoShiftDown(); + if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_AUTOSHIFT_UP)) + { + curr_truck->engine->autoShiftUp(); + } + if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_AUTOSHIFT_DOWN)) + { + curr_truck->engine->autoShiftDown(); + } } - if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_TOGGLE_CONTACT)) curr_truck->engine->toggleContact(); - if (INPUTENGINE.getEventBoolValue(EV_TRUCK_STARTER) && curr_truck->engine->hasContact() && !curr_truck->replaymode) + if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_TOGGLE_CONTACT)) { - //starter + curr_truck->engine->toggleContact(); + } + + if (INPUTENGINE.getEventBoolValue(EV_TRUCK_STARTER) && curr_truck->engine->hasContact()) + { + // starter curr_truck->engine->setstarter(1); #ifdef USE_OPENAL SoundScriptManager::getSingleton().trigStart(curr_truck, SS_TRIG_STARTER); @@ -2494,7 +2501,7 @@ if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_SWITCH_SHIFT_MODES)) { - //Toggle Auto shift + // toggle Auto shift curr_truck->engine->toggleAutoMode(); // force gui update @@ -2521,7 +2528,7 @@ #endif //USE_MYGUI } - //joy clutch + // joy clutch float cval = INPUTENGINE.getEventValue(EV_TRUCK_MANUAL_CLUTCH); curr_truck->engine->setManualClutch(cval); @@ -2634,15 +2641,27 @@ } } } - if (!found) curr_truck->engine->shiftTo(0); + if (!found) + { + curr_truck->engine->shiftTo(0); + } } // end of if (gear_changed) } // end of shitmode > BeamEngine::MANUAL } // end of ->engine +#ifdef USE_OPENAL + if (curr_truck->brake > curr_truck->brakeforce / 6.0f) + { + SoundScriptManager::getSingleton().trigStart(curr_truck, SS_TRIG_BRAKE); + } else + { + SoundScriptManager::getSingleton().trigStop(curr_truck, SS_TRIG_BRAKE); + } +#endif // USE_OPENAL } // end of ->replaymode if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_TOGGLE_AXLE_LOCK)) { - //Toggle Auto shift + // toggle auto shift if (!curr_truck->getAxleLockCount()) { #ifdef USE_MYGUI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Rigsofrods-devel mailing list Rigsofrods-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel