From 614a1cc90621d78d710d401e15e6d8bc60b97d9b Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 23 May 2019 21:07:47 +0200 Subject: [PATCH] Fixed zone find --- Moose Development/Moose/Core/Base.lua | 22 ++++++++- Moose Development/Moose/Core/Database.lua | 13 +----- Moose Development/Moose/Core/Event.lua | 18 +++++--- Moose Development/Moose/Functional/Fox2.lua | 50 +++++++++++++++------ 4 files changed, 69 insertions(+), 34 deletions(-) diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index a72fb0e1f..db2f5ddaf 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -595,18 +595,36 @@ do -- Event Handling -- @param Core.Event#EVENTDATA EventData The EventData structure. --- Occurs when any unit begins firing a weapon that has a high rate of fire. Most common with aircraft cannons (GAU-8), autocannons, and machine guns. - -- initiator : The unit that is doing the shooing. + -- initiator : The unit that is doing the shooting. -- target: The unit that is being targeted. -- @function [parent=#BASE] OnEventShootingStart -- @param #BASE self -- @param Core.Event#EVENTDATA EventData The EventData structure. --- Occurs when any unit stops firing its weapon. Event will always correspond with a shooting start event. - -- initiator : The unit that was doing the shooing. + -- initiator : The unit that was doing the shooting. -- @function [parent=#BASE] OnEventShootingEnd -- @param #BASE self -- @param Core.Event#EVENTDATA EventData The EventData structure. + --- Occurs when a new mark was added. + -- MarkID: ID of the mark. + -- @function [parent=#BASE] OnEventMarkAdded + -- @param #BASE self + -- @param Core.Event#EVENTDATA EventData The EventData structure. + + --- Occurs when a mark was removed. + -- MarkID: ID of the mark. + -- @function [parent=#BASE] OnEventMarkRemoved + -- @param #BASE self + -- @param Core.Event#EVENTDATA EventData The EventData structure. + + --- Occurs when a mark text was changed. + -- MarkID: ID of the mark. + -- @function [parent=#BASE] OnEventMarkChange + -- @param #BASE self + -- @param Core.Event#EVENTDATA EventData The EventData structure. + end diff --git a/Moose Development/Moose/Core/Database.lua b/Moose Development/Moose/Core/Database.lua index 5a07d5f5a..0e87d5f7c 100644 --- a/Moose Development/Moose/Core/Database.lua +++ b/Moose Development/Moose/Core/Database.lua @@ -304,16 +304,6 @@ do -- Zones self.ZONES[ZoneName] = nil end - - --- Finds an @{Zone} based on the zone name in the DATABASE. - -- @param #DATABASE self - -- @param #string ZoneName - -- @return Core.Zone#ZONE_BASE The found @{Zone}. - function DATABASE:FindZone( ZoneName ) - - local ZoneFound = self.ZONES[ZoneName] - return ZoneFound - end --- Private method that registers new ZONE_BASE derived objects within the DATABASE Object. @@ -348,7 +338,6 @@ do -- Zones end -- zone - do -- cargo --- Adds a Cargo based on the Cargo Name in the DATABASE. @@ -1166,7 +1155,7 @@ function DATABASE:OnEventNewZone( EventData ) self:F2( { EventData } ) if EventData.Zone then - self:AddZone( EventData.Zone ) + self:AddZone( EventData.Zone.ZoneName, EventData.Zone ) end end diff --git a/Moose Development/Moose/Core/Event.lua b/Moose Development/Moose/Core/Event.lua index 386169cb0..3c00758eb 100644 --- a/Moose Development/Moose/Core/Event.lua +++ b/Moose Development/Moose/Core/Event.lua @@ -272,10 +272,16 @@ EVENTS = { -- @field Wrapper.Airbase#AIRBASE Place The MOOSE airbase object. -- @field #string PlaceName The name of the airbase. -- --- @field weapon The weapon used during the event. --- @field Weapon --- @field WeaponName --- @field WeaponTgtDCSUnit +-- @field #table weapon The weapon used during the event. +-- @field #table Weapon +-- @field #string WeaponName Name of the weapon. +-- @field DCS#Unit WeaponTgtDCSUnit Target DCS unit of the weapon. +-- +-- @field Cargo.Cargo#CARGO Cargo The cargo object. +-- @field #string CargoName The name of the cargo object. +-- +-- @field Core.ZONE#ZONE Zone The zone object. +-- @field #string ZoneName The name of the zone. @@ -959,8 +965,7 @@ function EVENT:onEvent( Event ) Event.PlaceName=Event.Place:GetName() end --- @FC: something like this should be added. ---[[ + -- Mark points. if Event.idx then Event.MarkID=Event.idx Event.MarkVec3=Event.pos @@ -969,7 +974,6 @@ function EVENT:onEvent( Event ) Event.MarkCoalition=Event.coalition Event.MarkGroupID = Event.groupID end -]] if Event.cargo then Event.Cargo = Event.cargo diff --git a/Moose Development/Moose/Functional/Fox2.lua b/Moose Development/Moose/Functional/Fox2.lua index f5fd19aa2..0cf7d1608 100644 --- a/Moose Development/Moose/Functional/Fox2.lua +++ b/Moose Development/Moose/Functional/Fox2.lua @@ -692,7 +692,7 @@ function FOX:onafterMissileLaunch(From, Event, To, missile) end -- end function trackBomb -- Weapon is not yet "alife" just yet. Start timer with a little delay. - self:T(FOX.lid..string.format("Tracking of missile starts in 0.1 seconds.")) + self:T(FOX.lid..string.format("Tracking of missile starts in 0.0001 seconds.")) timer.scheduleFunction(trackMissile, missile.weapon, timer.getTime()+0.0001) end @@ -766,9 +766,6 @@ function FOX:OnEventBirth(EventData) -- Init player data. self.players[playername]=playerData - - -- Init player grades table if necessary. - --self.playerscores[playername]=self.playerscores[playername] or {} end end @@ -860,6 +857,7 @@ function FOX:OnEventShot(EventData) -- Add missile table. table.insert(self.missiles, missile) + -- Trigger MissileLaunch event. self:__MissileLaunch(0.1, missile) end @@ -925,7 +923,7 @@ function FOX:_AddF10Commands(_unitName) -------------------------------- -- F10/F FOX/F1 Help -------------------------------- - local _helpPath=missionCommands.addSubMenuForGroup(gid, "Help", _rootPath) + --local _helpPath=missionCommands.addSubMenuForGroup(gid, "Help", _rootPath) -- F10/FOX/F1 Help/ --missionCommands.addCommandForGroup(gid, "Subtitles On/Off", _helpPath, self._SubtitlesOnOff, self, _unitName) -- F7 --missionCommands.addCommandForGroup(gid, "Trapsheet On/Off", _helpPath, self._TrapsheetOnOff, self, _unitName) -- F8 @@ -934,9 +932,9 @@ function FOX:_AddF10Commands(_unitName) -- F10/F FOX/ ------------------------- - missionCommands.addCommandForGroup(gid, "Launch Alerts On/Off", _rootPath, self._ToggleLaunchAlert, self, _unitName) -- F2 - missionCommands.addCommandForGroup(gid, "Destroy Missiles On/Off", _rootPath, self._ToggleDestroyMissiles, self, _unitName) -- F3 - + missionCommands.addCommandForGroup(gid, "Launch Alerts On/Off", _rootPath, self._ToggleLaunchAlert, self, _unitName) -- F1 + missionCommands.addCommandForGroup(gid, "Destroy Missiles On/Off", _rootPath, self._ToggleDestroyMissiles, self, _unitName) -- F2 + missionCommands.addCommandForGroup(gid, "My Status", _rootPath, self._MyStatus, self, _unitName) -- F3 end else self:E(self.lid..string.format("ERROR: Could not find group or group ID in AddF10Menu() function. Unit name: %s.", _unitName)) @@ -965,17 +963,43 @@ function FOX:_MyStatus(_unitname) if playerData then + local m,mtext=self:_GetTargetMissiles(playerData.name) + local text=string.format("Status of player %s:", playerData.name) + local safe=self:_CheckCoordSafe(playerData.unit:GetCoordinate()) - text=text..string.format("Destroy missiles: %s", playerData.destroy) - text=text..string.format("Launch alert: %s", playerData.launchalert) - text=text..string.format("Me target: %d", self:_GetTargetMissiles(playerData.unit)) - text=text..string.format("Am I safe? %s", self:_CheckCoordSafe(playerData.unit:GetCoordinate())) + text=text..string.format("Destroy missiles: %s", tostring(playerData.destroy)) + text=text..string.format("Launch alert: %s", tostring(playerData.launchalert)) + text=text..string.format("Am I safe? %s", tostring(safe)) + text=text..string.format("Me target: %d\n%s", m, mtext) + + MESSAGE:New(text, 10, "FOX", true):ToClient(playerData.client) end end end +--- Turn player's launch alert on/off. +-- @param #FOX self +-- @param #string playername Name of the player. +-- @return #number Number of missiles targeting the player. +-- @return #string Missile info. +function FOX:_GetTargetMissiles(playername) + + local text="" + local n=0 + for _,_missile in pairs(self.missiles) do + local missile=_missile --#FOX.MissileData + + if missile.targetPlayer.name==playername then + n=n+1 + text=text..string.format("Type %s: active %s\n", missile.missileType, tostring(missile.active)) + end + + end + + return n,text +end --- Turn player's launch alert on/off. -- @param #FOX self @@ -1010,7 +1034,7 @@ function FOX:_ToggleLaunchAlert(_unitname) end end ---- Turn player's +--- Turn destruction of missiles on/off for player. -- @param #FOX self -- @param #string _unitname Name of the player unit. function FOX:_ToggleDestroyMissiles(_unitname)