-- DOMINO REFLECTION BOX START
|
|
|
|
-- <ContextHelp><![CDATA[
|
|
-- ]]></ContextHelp>
|
|
--
|
|
-- <Display Category="Vehicles" Text="Vehicle Damage Monitor" />
|
|
-- <Legacy Replacement="VehicleDamageMonitor_V2" Expiration="2014-07-23"/>
|
|
--
|
|
-- <ControlIn Name="Enable">
|
|
-- <LinkRule severity="ERROR">
|
|
-- <Target anchor="Vehicle"/>
|
|
-- </LinkRule>
|
|
-- <LinkRule severity="INFO">
|
|
-- <Target anchor="Enabled"/>
|
|
-- </LinkRule>
|
|
-- </ControlIn>
|
|
--
|
|
-- <ControlIn Name="Disable">
|
|
-- <LinkRule severity="ERROR">
|
|
-- <Target anchor="Vehicle"/>
|
|
-- </LinkRule>
|
|
-- <LinkRule severity="INFO">
|
|
-- <Target anchor="Disabled"/>
|
|
-- </LinkRule>
|
|
-- </ControlIn>
|
|
--
|
|
-- <ControlIn Name="GetDamage">
|
|
-- <LinkRule severity="INFO">
|
|
-- <Target anchor="Health"/>
|
|
-- <Target anchor="GotDamage"/>
|
|
-- </LinkRule>
|
|
-- </ControlIn>
|
|
--
|
|
-- <DataIn Name="Vehicle" Type="Nomad|entity"/>
|
|
-- <DataIn Name="DamageThreshold" Type="Core|float" Default="-1.0"/>
|
|
-- <DataIn Name="StaticDamageMultiplier" Type="Core|float" Default="0.0" Legacy="StaticDamageBonus"/>
|
|
-- <DataIn Name="BreakableDamageMultiplier" Type="Core|float" Default="0.0" Legacy="BreakableDamageBonus"/>
|
|
-- <DataIn Name="VehicleDamageMultiplier" Type="Core|float" Default="0.0" Legacy="VehicleDamageBonus"/>
|
|
--
|
|
-- <ControlOut Name="Enabled"/>
|
|
-- <ControlOut Name="Disabled"/>
|
|
-- <ControlOut Name="GotDamage">
|
|
-- <outParam Name = "Damage"/>
|
|
-- </ControlOut>
|
|
-- <ControlOut Name="ThresholdReached" Delayed="true"/>
|
|
--
|
|
-- <DataOut Name="Damage" Type="Core|float"/>
|
|
|
|
-- DOMINO REFLECTION BOX END
|
|
|
|
VehicleDamageMonitor = { }
|
|
|
|
function VehicleDamageMonitor:Create(cbox)
|
|
-- left empty on purpose
|
|
end
|
|
|
|
function VehicleDamageMonitor:Init(cbox)
|
|
self.Vehicle = nil
|
|
self.DamageThreshold = -1
|
|
self.StaticDamageMultiplier = 0.0
|
|
self.BreakableDamageMultiplier = 0.0
|
|
self.VehicleDamageMultiplier = 0.0
|
|
self.missionId = cbox:GetParentMissionId()
|
|
end
|
|
|
|
function VehicleDamageMonitor:ShutDown()
|
|
self._type.UnregisterCallback(self)
|
|
end
|
|
|
|
function VehicleDamageMonitor:Enable()
|
|
if(self.Vehicle == nil) then return end
|
|
|
|
instance = CScriptCallbackSystem_GetInstance()
|
|
|
|
if( self.callidThresholdReached == nil) then
|
|
self.callidThresholdReached = instance:RegisterMissionEventCallback(self.Vehicle, self, "OnThresholdReached", "VehicleDamageThresholdReached", self.missionId)
|
|
end
|
|
|
|
ToggleVehicleDamageMonitor(self.Vehicle, 1, self.DamageThreshold, self.StaticDamageMultiplier, self.BreakableDamageMultiplier, self.VehicleDamageMultiplier)
|
|
|
|
self:Enabled()
|
|
end
|
|
|
|
function VehicleDamageMonitor:Disable()
|
|
if(self.Vehicle == nil) then return end
|
|
|
|
ToggleVehicleDamageMonitor(self.Vehicle, 0, self.DamageThreshold , 0.0, 0.0, 0.0)
|
|
|
|
self._type.UnregisterCallback(self)
|
|
self:Disabled()
|
|
end
|
|
|
|
function VehicleDamageMonitor:GetDamage()
|
|
if(self.Vehicle == nil) then return end
|
|
|
|
self.Damage = GetVehicleDamage(self.Vehicle)
|
|
|
|
self:GotDamage()
|
|
end
|
|
|
|
function VehicleDamageMonitor:UnregisterCallback()
|
|
if(self.Vehicle == nil) then return end
|
|
|
|
instance = CScriptCallbackSystem_GetInstance()
|
|
|
|
if( self.callidThresholdReached ~= nil) then
|
|
instance:RemoveCallback(self.Vehicle, self.callidThresholdReached)
|
|
self.callidThresholdReached = nil
|
|
end
|
|
end
|
|
|
|
function VehicleDamageMonitor:OnThresholdReached()
|
|
self:ThresholdReached()
|
|
end
|
|
|
|
export = VehicleDamageMonitor
|
|
VehicleDamageMonitor = nil
|