mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Revised client and database logic. Still work in progress.
This commit is contained in:
@@ -28,9 +28,34 @@ function MISSILETRAINER:New( Distance )
|
||||
|
||||
_EVENTDISPATCHER:OnShot( self._EventShot, self )
|
||||
|
||||
self.DB = DATABASE:New():FilterStart()
|
||||
self.DBClients = self.DB.Clients
|
||||
self.DBUnits = self.DB.Units
|
||||
|
||||
self.DB:ForEachClient(
|
||||
--- @param Client#CLIENT Client
|
||||
function( Client )
|
||||
Client:Message( "Welcome to the Missile Trainer", 10, "ID", "TEST" )
|
||||
--Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil )
|
||||
--Client.MenuOnOff = MENU_CLIENT:New( Client, "On/Off", Client.MainMenu )
|
||||
--Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuOnOff, MISSILETRAINER._MenuMessages, { MenuSelf = self, MessagesOnOff = true } )
|
||||
--Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuOnOff, MISSILETRAINER._MenuMessages, { MenuSelf = self, MessagesOnOff = false } )
|
||||
end
|
||||
)
|
||||
|
||||
self.DisplayMessages = true
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function MISSILETRAINER._MenuMessages( MenuParameters )
|
||||
|
||||
local self = MenuParameters.MenuSelf
|
||||
local MessagesOnOff = MenuParameters.MessagesOnOff
|
||||
|
||||
self.DisplayMessages = MessagesOnOff
|
||||
end
|
||||
|
||||
--- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME.
|
||||
-- @see MISSILETRAINER
|
||||
function MISSILETRAINER:_EventShot( Event )
|
||||
@@ -51,17 +76,23 @@ function MISSILETRAINER:_EventShot( Event )
|
||||
|
||||
self:T( TrainerTargetSkill )
|
||||
|
||||
if TrainerTargetSkill == "Client" or TrainerTargetSkill == "Player" then
|
||||
self.Schedulers[#self.Schedulers+1] = SCHEDULER:New( self, self._FollowMissile, { TrainerSourceDCSUnit, TrainerWeapon, TrainerTargetDCSUnit }, 0.5, 0.05, 0 )
|
||||
local Client = self.DBClients[TrainerTargetDCSUnitName]
|
||||
if Client then
|
||||
local TrainerSourceUnit = UNIT:New(TrainerSourceDCSUnit)
|
||||
local TrainerTargetUnit = UNIT:New(TrainerTargetDCSUnit)
|
||||
self.Schedulers[#self.Schedulers+1] = SCHEDULER:New( self, self._FollowMissile, { TrainerSourceUnit, TrainerWeapon, TrainerTargetUnit, Client }, 0.5, 0.05, 0 )
|
||||
end
|
||||
end
|
||||
|
||||
function MISSILETRAINER:_FollowMissile( TrainerSourceDCSUnit, TrainerWeapon, TrainerTargetDCSUnit )
|
||||
self:F( { TrainerSourceDCSUnit, TrainerWeapon, TrainerTargetDCSUnit } )
|
||||
---
|
||||
-- @param #MISSILETRAINER self
|
||||
-- @param DCSUnit#Unit TrainerSourceDCSUnit
|
||||
-- @param DCSWeapon#Weapon TrainerWeapon
|
||||
-- @param DCSUnit#Unit TrainerTargetDCSUnit
|
||||
-- @param Client#CLIENT Client
|
||||
function MISSILETRAINER:_FollowMissile( TrainerSourceUnit, TrainerWeapon, TrainerTargetUnit, Client )
|
||||
self:F( { TrainerSourceUnit, TrainerWeapon, TrainerTargetUnit, Client } )
|
||||
|
||||
local TrainerSourceUnit = UNIT:New( TrainerSourceDCSUnit )
|
||||
local TrainerTargetUnit = UNIT:New( TrainerTargetDCSUnit )
|
||||
|
||||
local PositionMissile = TrainerWeapon:getPoint()
|
||||
local PositionTarget = TrainerTargetUnit:GetPositionVec3()
|
||||
|
||||
@@ -70,11 +101,17 @@ function MISSILETRAINER:_FollowMissile( TrainerSourceDCSUnit, TrainerWeapon, Tra
|
||||
( PositionMissile.z - PositionTarget.z )^2
|
||||
) ^ 0.5
|
||||
|
||||
MESSAGE:New( "Distance Missle = " .. Distance, nil, 0.2, "/Missile" ):ToAll()
|
||||
if self.DisplayMessages then
|
||||
self:T( Distance )
|
||||
MESSAGE:New( "Distance Missile = " .. Distance, "TEST", 0.2, "ID" ):ToAll()
|
||||
end
|
||||
|
||||
if Distance <= self.Distance then
|
||||
TrainerWeapon:destroy()
|
||||
MESSAGE:New( "Missle Destroyed", nil, 5, "/Missile" ):ToAll()
|
||||
if self.DisplayMessages then
|
||||
self:T( "Destroyed" )
|
||||
MESSAGE:New( "Missile Destroyed", "TEST", 5, "ID" ):ToAll()
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user