-- by modelleicher
-- http://schwabenmodding.bplaced.net
-- geschrieben für den Eicher EA 400 Traktometer

dreh = {};

function dreh.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
end;

function dreh:load(xmlFile)
    -- Analoger Drehzahl --
	self.drehzahlZeiger = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.animatedDetails.drehzahlZeiger#zeigerIndex"));
	self.drehzahlZeigerMultiplicator = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.animatedDetails.drehzahlZeiger#multiplicator"), 20);
	self.drehzahlZeigerMaxRotation = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.animatedDetails.drehzahlZeiger#maxRotation"), 400);
	
	-- Gaspedal aka rpm --
	self.gasPedal = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.animatedDetails.gasPedal#pedalIndex"));
	self.gasPedalMultiplicator = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.animatedDetails.gasPedal#multiplicator"), 10);
	self.gasPedalMaxRot = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.animatedDetails.gasPedal#maxRotation"), -300);
	
	-- Tankfuellstandwarnleuchte --
	self.tankWarnLeuchte = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.animatedDetails.tankWarnLeuchte#index"));
	self.tankWarnMenge = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.animatedDetails.tankWarnLeuchte#warnValue"), 20);
end;

function dreh:delete()
end;
function dreh:mouseEvent(posX, posY, isDown, isUp, button)
end;
function dreh:keyEvent(unicode, sym, modifier, isDown)
end;
function dreh:update(dt)
	if self:getIsActive() then
		-- Analoger Drehzahl --
		if self.isMotorStarted then
			self.drehMath = math.min(500, math.max(0, self.lastSpeed*self.speedDisplayScale*2500));
			local zeigerRotation = self.drehMath * self.drehzahlZeigerMultiplicator;
			if zeigerRotation <= self.drehzahlZeigerMaxRotation then
				setRotation(self.drehzahlZeiger, 0, 0, Utils.degToRad(zeigerRotation));
			else
				setRotation(self.drehzahlZeiger, 0, 0, Utils.degToRad(self.tachoZeigerMaxRotation));	
			end;
			local gasPedalRotation = self.kmhMath * self.gasPedalMultiplicator
			if gasPedalRotation <= self.gasPedalMaxRot then
				setRotation(self.gasPedal, Utils.degToRad(gasPedalRotation), 0, 0);
			else
				setRotation(self.gasPedal, Utils.degToRad(self.gasPedalMaxRot), 0, 0);
			end;
		else
			setRotation(self.tachoZeiger, 0, 0, 0);
		end;
		
		-- Tankfuellstandwarnleuchte --
		local actualTankInhalt = 0;
		if self.fuelCapacity > 0 then
			actualTankInhalt = (self.fuelFillLevel / self.fuelCapacity + 0.0001) * 100;
		end;
		if actualTankInhalt < self.tankWarnMenge then
			setVisibility(self.tankWarnLeuchte, true);
		else
			setVisibility(self.tankWarnLeuchte, false);
		end;

	else
		-- Tankfuellstandwarnleuchte --
		setVisibility(self.tankWarnLeuchte, false);
	end;
end;

function dreh:updateTick(dt)
end;
function dreh:draw()
end;

