-- Specialization for Fendt614LSA mod
-- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
function BlinkerVehicle.prerequisitesPresent(specializations)
return SpecializationUtil.hasSpecialization(Motorized, specializations);
function BlinkerVehicle:load(xmlFile)
--[[Bremse/Bremslicht start]]--
self.brakeForce = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.brakeForce"), 10);
self.motorBrakeForce = self.motor.brakeForce;
local brakeSound = getXMLString(xmlFile, "vehicle.brakeSound#file");
if brakeSound ~= nil and brakeSound ~= "" then
brakeSound = Utils.getFilename(brakeSound, self.baseDirectory);
self.brakeSound = createSample("brakeSound");
loadSample(self.brakeSound, brakeSound, false);
self.brakeSoundPitchOffset = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.brakeSound#pitchOffset"), 0);
self.lightsbrake = Utils.indexToObject(self.rootNode, getXMLString(xmlFile, "vehicle.extra_lights.brake#index"));
self.exhaustParticleLow = {};
Utils.loadParticleSystem(xmlFile, self.exhaustParticleLow, "vehicle.exhaustParticleLow", self.rootNode, false, nil, self.baseDirectory);
self.exhaustParticleHigh = {};
Utils.loadParticleSystem(xmlFile, self.exhaustParticleHigh, "vehicle.exhaustParticleHigh", self.rootNode, false, nil, self.baseDirectory);
self.maxRpm3 = self.motor.maxRpm[3];
--[[Bremse/Bremslicht ende]]--
turn1SoundFile = Utils.getFilename("sounds/turn1.wav", self.baseDirectory);
self.turn1 = createSample("turn1");
loadSample(self.turn1, turn1SoundFile, false);
turn2SoundFile = Utils.getFilename("sounds/turn2.wav", self.baseDirectory);
self.turn2 = createSample("turn2");
loadSample(self.turn2, turn2SoundFile, false);
self.numTurnlights = Utils.getNoNil(getXMLInt(xmlFile, "vehicle.turnlights#count"), 0);
for i=1, self.numTurnlights do
local turnlightnamei = string.format("vehicle.turnlights.turnlight" .. "%d", i);
self.turnlights[i] = Utils.indexToObject(self.rootNode, getXMLInt(xmlFile, turnlightnamei .. "#index"));
setVisibility(self.turnlights[i], false);
self.turnlightsActive = false;
self.numTurnlights2 = Utils.getNoNil(getXMLInt(xmlFile, "vehicle.turnlights2#count"), 0);
for i=1, self.numTurnlights2 do
local turnlightnamei2 = string.format("vehicle.turnlights2.turnlight" .. "%d", i);
self.turnlights2[i] = Utils.indexToObject(self.rootNode, getXMLInt(xmlFile, turnlightnamei2 .. "#index"));
setVisibility(self.turnlights2[i], false);
self.turnlightsActive2 = false;
function BlinkerVehicle:delete()
function BlinkerVehicle:mouseEvent(posX, posY, isDown, isUp, button)
function BlinkerVehicle:keyEvent(unicode, sym, modifier, isDown)
if InputBinding.isPressed(InputBinding.F936VARIO_TURNRIGHTLIGHT) then
self.flashLeft = not self.flashLeft;
self.flashlightsRightActive = false;
self.flashlightsWarnerActive = false;
self.flashlightsRight2Active = false;
self.turnlightsActive2 = false;
self.flashWarner = false;
if InputBinding.isPressed(InputBinding.F936VARIO_WARNLIGHT) then
self.flash = not self.flash;
self.flashlightsRightActive = false;
self.flashlightsLeftActive = false;
self.flashWarner = not self.flashWarner;
if InputBinding.isPressed(InputBinding.F936VARIO_TURNLEFTLIGHT) then
self.flashRight = not self.flashRight;
self.flashlightsLeftActive = false;
self.flashlightsWarnerActive = false;
self.flashlightsLeft2Active = false;
self.turnlightsActive = false;
self.flashWarner = false;
function BlinkerVehicle:update(dt)
--[[Bremse/Bremslicht start]]--
self.motor.maxRpm[3] = string.format("%d",(self.revLimit * self.maxRpm3 / 100));
if self.motor.brakeForce == self.brakeForce and getInputAxis(Input.AXIS_Y) ~= 0 then
self.motor.maxRpm[3] = 0;
if (self.movingDirection*self.lastSpeed*(-getInputAxis(Input.AXIS_Y))) < -0.001 then
self.motor.brakeForce = self.brakeForce;
self.motor.brakeForce = self.motorBrakeForce;
setVisibility(self.lightsbrake, brake);
if self.brakeOn and not brake then
if self.brakeSound ~= nil then
setSamplePitch(self.brakeSound, self.brakeSoundPitchOffset);
playSample(self.brakeSound, 1, 1, 0);
if getInputAxis(Input.AXIS_Y) ~= 0 and not brake then
Utils.setEmittingState(self.exhaustParticleLow, false);
Utils.setEmittingState(self.exhaustParticleHigh, true);
Utils.setEmittingState(self.exhaustParticleLow, false);
Utils.setEmittingState(self.exhaustParticleHigh, false);
--[[Bremse/Bremslicht ende]]--
if self.delayOn >= 0 then
self.delayOn = self.delayOn -dt;
if not self.flashlightsRightActive then
self.flashlightsRightActive = true;
self.flashlightsLeftActive = true;
self.flashlightsWarnerActive = true;
self.turnlightsActive2 = true;
self.turnlightsActive = true;
playSample(self.turn1, 1, 0.7, 0);
if self.delayOff >= 0 then
self.delayOff = self.delayOff -dt;
if self.flashlightsRightActive then
if self.delayOff < 0 then
self.flashlightsLeftActive = false;
self.flashlightsRightActive = false;
self.flashlightsWarnerActive = false;
self.turnlightsActive2 = false;
self.turnlightsActive = false;
playSample(self.turn2, 1, 0.7, 0);
if self.delayOnRight >= 0 then
self.delayOnRight = self.delayOnRight -dt;
if not self.flashlightsRightActive then
if self.delayOnRight < 0 then
self.delayOffRight = 500;
self.flashlightsRightActive = true;
self.turnlightsActive2 = true;
playSample(self.turn1,1,0.7,0);
if self.delayOffRight >= 0 then
self.delayOffRight = self.delayOffRight -dt;
if self.flashlightsRightActive then
if self.delayOffRight < 0 then
self.flashlightsRightActive = false;
self.turnlightsActive2 = false;
playSample(self.turn2,1,0.7,0);
if not self.flashWarner then
self.turnlightsActive2 = false;
if self.delayOnLeft >= -1 then
self.delayOnLeft = self.delayOnLeft -dt;
if not self.flashlightsLeftActive then
if self.delayOnLeft < 0 then
self.flashlightsLeftActive = true;
self.turnlightsActive = true;
playSample(self.turn1,1,0.7,0);
if self.delayOffLeft >= 0 then
self.delayOffLeft = self.delayOffLeft -dt;
if self.flashlightsLeftActive then
if self.delayOffLeft < 0 then
self.flashlightsLeftActive = false;
self.turnlightsActive = false;
playSample(self.turn2,1,0.7,0);
if not self.flashWarner then
self.turnlightsActive = false;
if self.turnlightsActive then
for i=1, self.numTurnlights do
local turnlight = self.turnlights[i];
setVisibility(turnlight, self.turnlightsActive);
for i=1, self.numTurnlights do
local turnlight = self.turnlights[i];
setVisibility(turnlight, self.turnlightsActive, false);
if self.turnlightsActive2 then
for i=1, self.numTurnlights2 do
local turnlight2 = self.turnlights2[i];
setVisibility(turnlight2, self.turnlightsActive2);
for i=1, self.numTurnlights2 do
local turnlight2 = self.turnlights2[i];
setVisibility(turnlight2, self.turnlightsActive2, false);
function BlinkerVehicle:draw()