_=[[
------------------------------------------------------------------------------------------------------------------------------------------------------
AttacherSetRpm Specialization
Idee und ertse Versuche: "Pitzmann Tuning"
Realisierung: "Sven777b"
V1.0 12.07.2011
------------------------------------------------------------------------------------------------------------------------------------------------------
frei verwendbar, keine erlaubnis nötig.
free for use, no permission needed.
Modifikationen erst nach Rücksprache!!
modifications only with my permission!!
------------------------------------------------------------------------------------------------------------------------------------------------------
AttacherSetRpm Beschreibung:

Diese Speci sorgt dafür das der Spritverbrauch und die Drehzahl des Fahrzeuges immer dann erhöht wird wenn ein Anhänger oder Anbaugerät arbeitet, kippt 
oder auf- beziehungsweise zuklappt (vorausgesetzt der Anhänger oder das Anbaugerät benutzt die Standardspecis für diese Aktionen). Ausserdem wird die 
Drehzahl und der Spritverbrauch auch dann erhöht wenn man einen Frontlader, falls vorhanden, bewegt.
Weiter hat man die Möglichkeit bei Drehzahlerhöhung die Rundumleuchte, falls vorhanden, mitlaufen zu lassen (ausgenommen ist hier die Drehzahlerhöhung 
per Tastendruck).
------------------------------------------------------------------------------------------------------------------------------------------------------
Einträge in Fahrzeug XML:

	<togglebeacon> 	
	<togglebeacon vehiclesetrpmbeacon="true" />
	</togglebeacon> 

Wenn hier der Eintrag "true" vorgenommen wird leuchtet die RUL bei Drehzahlerhöhung mit (ausgenommen ist hier die Drehzahlerhöhung per Tastendruck).
Wenn hier der Eintrag "false" vorgenommen wird leuchtet die RUL bei Drehzahlerhöhung nicht mit.
------------------------------------------------------------------------------------------------------------------------------------------------------
Einträge in moddesc:

    <specializations>
	<specialization name="AttacherSetRpm" className="AttacherSetRpm" filename="AttacherSetRpm.lua" />
    </specializations>
	
und folgendes natürlich nach <specialization name="motorized" />:

    <vehicleTypes>
	...
	...
	<specialization name="AttacherSetRpm" />
        </type>
    </vehicleTypes>

	
wenn eine Drehzahlerhöhung zum einschalten per Tastndruck gewünscht wird (hier ist die RUL in jedem Fall inaktiv), 
muß noch dieser Eintrag vorgenommen werden:

    <inputBindings>
	<input name="togglerpm" key1="___" button="" />	
    </inputBindings>
	
Bei "___" einfach gewünchte Taste eintragen (zB für F7 dann "KEY_f7")
------------------------------------------------------------------------------------------------------------------------------------------------------
]]

AttacherSetRpm = {};


function AttacherSetRpm.prerequisitesPresent(specializations)
	print("Specialization AttacherSetRpm by Pitzmann Tuning and Sven777b");
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
end;


function AttacherSetRpm:load(xmlFile)
	self.engine = false;
	self.rul = false;
	self.standardMinRpm = self.motor.minRpm;
	self.auswahl = Utils.getNoNil(getXMLBool(xmlFile, "vehicle.togglebeacon.togglebeacon#vehiclesetrpmbeacon"),true);
end;


function AttacherSetRpm:delete()
end;

function AttacherSetRpm:mouseEvent(posX, posY, isDown, isUp, button)
end;


function AttacherSetRpm:keyEvent(unicode, sym, modifier, isDown)
end;


function AttacherSetRpm:update(dt)
	if self:getIsActiveForInput() then
		if InputBinding.hasEvent(InputBinding.togglerpm) then
			self.engine = not self.engine;
		end;
	end;
end;


function AttacherSetRpm:updateTick(dt)
	if self:getIsActive() then 
			local einschalten = checkImplements(self);
		if self.cylinderedHydraulicSoundEnabled then 
			einschalten = true; 
		end;
		if einschalten and self.auswahl then
			if not self.beaconLightsActive then 
				self:setBeaconLightsVisibility(true);
				self.rul = true;
			end;
		else
			if self.rul then
				self:setBeaconLightsVisibility(false);
				self.rul = false;
			end;
		end;
		if einschalten and self.isMotorStarted or self.engine and self.isMotorStarted then
			local fuelUsed = 0.00000001*dt*math.abs(self.motor.minRpm);
			self:setFuelFillLevel(self.fuelFillLevel-fuelUsed);
			g_currentMission.missionStats.fuelUsageTotal = g_currentMission.missionStats.fuelUsageTotal + fuelUsed;
			g_currentMission.missionStats.fuelUsageSession = g_currentMission.missionStats.fuelUsageSession + fuelUsed;
			if self.motor.minRpm == self.standardMinRpm then
				self.motor.minRpm = math.max(self.motor.minRpm-1000, -1000);
			end;
		else
			if self.motor.minRpm ~= self.standardMinRpm then
				self.motor.minRpm = self.standardMinRpm;
			end;
		end;
	end;
end;


function AttacherSetRpm:draw()
end;


function AttacherSetRpm:onLeave()
	self.engine = false;
	self.rul = false;
	self.motor.minRpm = self.standardMinRpm;
end;

function checkImplements( objekt ) 
	if objekt.attachedImplements ~= nil then 
		for _, implement in pairs(objekt.attachedImplements) do 
			if implement.object.foldAnimTime ~= nil then 
				if implement.object.foldAnimTime > 0 and implement.object.foldAnimTime < 1 then 
				return true; 
				end; 
			end; 
			if implement.object.tipState == Trailer.TIPSTATE_CLOSING or implement.object.tipState == Trailer.TIPSTATE_OPENING or implement.object.isTurnedOn then 
				return true; 
				end; 
			if implement.object.attachedImplements ~= nil then 
				if checkImplements(implement.object) == true then 
					return true; 
				end; 
			end; 
		end; 
	end; 
	return false; 
end;