From a833703731c53e850a1028f845facb54982105e9 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 13 Jul 2024 15:21:51 +0200 Subject: [PATCH] xx --- Moose Development/Moose/Core/Database.lua | 11 +++++---- Moose Development/Moose/Core/Event.lua | 29 ++++++++++++----------- Moose Development/Moose/Core/Set.lua | 4 ++++ Moose Development/Moose/Core/Spawn.lua | 19 ++++++++++----- Moose Development/Moose/Ops/Airboss.lua | 1 + Moose Development/Moose/Ops/ArmyGroup.lua | 1 + Moose Development/Moose/Ops/NavyGroup.lua | 3 ++- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/Moose Development/Moose/Core/Database.lua b/Moose Development/Moose/Core/Database.lua index dec6bd64c..b4931a644 100644 --- a/Moose Development/Moose/Core/Database.lua +++ b/Moose Development/Moose/Core/Database.lua @@ -135,7 +135,7 @@ function DATABASE:New() self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._EventOnDeadOrCrash ) - --self:HandleEvent( EVENTS.UnitLost, self._EventOnDeadOrCrash ) -- DCS 2.7.1 for Aerial units no dead event ATM + self:HandleEvent( EVENTS.UnitLost, self._EventOnDeadOrCrash ) -- DCS 2.7.1 for Aerial units no dead event ATM self:HandleEvent( EVENTS.Hit, self.AccountHits ) self:HandleEvent( EVENTS.NewCargo ) self:HandleEvent( EVENTS.DeleteCargo ) @@ -188,6 +188,7 @@ end --- Deletes a Unit from the DATABASE based on the Unit Name. -- @param #DATABASE self function DATABASE:DeleteUnit( DCSUnitName ) + self:T("DeleteUnit "..tostring(DCSUnitName)) self.UNITS[DCSUnitName] = nil end @@ -1569,7 +1570,6 @@ end -- @param #DATABASE self -- @param Core.Event#EVENTDATA Event function DATABASE:_EventOnDeadOrCrash( Event ) - if Event.IniDCSUnit then local name=Event.IniDCSUnitName @@ -1577,7 +1577,7 @@ function DATABASE:_EventOnDeadOrCrash( Event ) if Event.IniObjectCategory == 3 then --- - -- STATICS + -- STATICS --- if self.STATICS[Event.IniDCSUnitName] then @@ -1587,7 +1587,7 @@ function DATABASE:_EventOnDeadOrCrash( Event ) --- -- Maybe a UNIT? --- - + -- Delete unit. if self.UNITS[Event.IniDCSUnitName] then self:T("STATIC Event for UNIT "..tostring(Event.IniDCSUnitName)) @@ -1610,7 +1610,8 @@ function DATABASE:_EventOnDeadOrCrash( Event ) -- Delete unit. if self.UNITS[Event.IniDCSUnitName] then - self:DeleteUnit(Event.IniDCSUnitName) + self:ScheduleOnce(1,self.DeleteUnit,self,Event.IniDCSUnitName) + --self:DeleteUnit(Event.IniDCSUnitName) end -- Remove client players. diff --git a/Moose Development/Moose/Core/Event.lua b/Moose Development/Moose/Core/Event.lua index b6bbe84a4..6df0cd70e 100644 --- a/Moose Development/Moose/Core/Event.lua +++ b/Moose Development/Moose/Core/Event.lua @@ -262,9 +262,10 @@ EVENTS = { WeaponRearm = world.event.S_EVENT_WEAPON_REARM or -1, WeaponDrop = world.event.S_EVENT_WEAPON_DROP or -1, -- Added with DCS 2.9.x - UnitTaskTimeout = world.event.S_EVENT_UNIT_TASK_TIMEOUT or -1, + --UnitTaskTimeout = world.event.S_EVENT_UNIT_TASK_TIMEOUT or -1, + UnitTaskComplete = world.event.S_EVENT_UNIT_TASK_COMPLETE or -1, UnitTaskStage = world.event.S_EVENT_UNIT_TASK_STAGE or -1, - MacSubtaskScore = world.event.S_EVENT_MAC_SUBTASK_SCORE or -1, + --MacSubtaskScore = world.event.S_EVENT_MAC_SUBTASK_SCORE or -1, MacExtraScore = world.event.S_EVENT_MAC_EXTRA_SCORE or -1, MissionRestart = world.event.S_EVENT_MISSION_RESTART or -1, MissionWinner = world.event.S_EVENT_MISSION_WINNER or -1, @@ -652,24 +653,24 @@ local _EVENTMETA = { Text = "S_EVENT_WEAPON_DROP" }, -- DCS 2.9 - [EVENTS.UnitTaskTimeout] = { - Order = 1, - Side = "I", - Event = "OnEventUnitTaskTimeout", - Text = "S_EVENT_UNIT_TASK_TIMEOUT " - }, + --[EVENTS.UnitTaskTimeout] = { + -- Order = 1, + -- Side = "I", + -- Event = "OnEventUnitTaskTimeout", + -- Text = "S_EVENT_UNIT_TASK_TIMEOUT " + --}, [EVENTS.UnitTaskStage] = { Order = 1, Side = "I", Event = "OnEventUnitTaskStage", Text = "S_EVENT_UNIT_TASK_STAGE " }, - [EVENTS.MacSubtaskScore] = { - Order = 1, - Side = "I", - Event = "OnEventMacSubtaskScore", - Text = "S_EVENT_MAC_SUBTASK_SCORE" - }, + --[EVENTS.MacSubtaskScore] = { + -- Order = 1, + --Side = "I", + --Event = "OnEventMacSubtaskScore", + --Text = "S_EVENT_MAC_SUBTASK_SCORE" + --}, [EVENTS.MacExtraScore] = { Order = 1, Side = "I", diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index ca82b1ada..798f4c4cd 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -1516,6 +1516,7 @@ do self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._EventOnDeadOrCrash ) + self:HandleEvent( EVENTS.UnitLost, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.PlayerLeaveUnit, self._EventOnDeadOrCrash ) if self.Filter.Zones then self.ZoneTimer = TIMER:New(self._ContinousZoneFilter,self) @@ -1548,6 +1549,7 @@ do self:UnHandleEvent(EVENTS.Dead) self:UnHandleEvent(EVENTS.Crash) self:UnHandleEvent(EVENTS.RemoveUnit) + self:UnHandleEvent(EVENTS.UnitLost) if self.Filter.Zones and self.ZoneTimer and self.ZoneTimer:IsRunning() then self.ZoneTimer:Stop() @@ -2622,6 +2624,7 @@ do -- SET_UNIT self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._EventOnDeadOrCrash ) + self:HandleEvent( EVENTS.UnitLost, self._EventOnDeadOrCrash ) if self.Filter.Zones then self.ZoneTimer = TIMER:New(self._ContinousZoneFilter,self) local timing = self.ZoneTimerInterval or 30 @@ -7845,6 +7848,7 @@ do -- SET_OPSGROUP self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._EventOnDeadOrCrash ) + self:HandleEvent( EVENTS.UnitLost, self._EventOnDeadOrCrash ) end return self diff --git a/Moose Development/Moose/Core/Spawn.lua b/Moose Development/Moose/Core/Spawn.lua index 75664cee9..ad430a33a 100644 --- a/Moose Development/Moose/Core/Spawn.lua +++ b/Moose Development/Moose/Core/Spawn.lua @@ -1238,7 +1238,7 @@ function SPAWN:InitPositionVec2(Vec2) self:T( { self.SpawnTemplatePrefix, Vec2} ) self.SpawnInitPosition = Vec2 self.SpawnFromNewPosition = true - self:I("MaxGroups:"..self.SpawnMaxGroups) + self:T("MaxGroups:"..self.SpawnMaxGroups) for SpawnGroupID = 1, self.SpawnMaxGroups do self:_SetInitialPosition( SpawnGroupID ) end @@ -1390,9 +1390,10 @@ function SPAWN:InitArray( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) self.SpawnGroups[SpawnGroupID].Visible = true self:HandleEvent( EVENTS.Birth, self._OnBirth ) - self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) + --self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._OnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._OnDeadOrCrash ) + self:HandleEvent( EVENTS.UnitLost, self._OnDeadOrCrash ) if self.Repeat then self:HandleEvent( EVENTS.Takeoff, self._OnTakeOff ) self:HandleEvent( EVENTS.Land, self._OnLand ) @@ -1797,8 +1798,9 @@ function SPAWN:SpawnWithIndex( SpawnIndex, NoBirth ) if not NoBirth then self:HandleEvent( EVENTS.Birth, self._OnBirth ) end - self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) + --self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._OnDeadOrCrash ) + self:HandleEvent( EVENTS.UnitLost, self._OnDeadOrCrash ) self:HandleEvent( EVENTS.RemoveUnit, self._OnDeadOrCrash ) if self.Repeat then self:HandleEvent( EVENTS.Takeoff, self._OnTakeOff ) @@ -3853,11 +3855,11 @@ end -- @param #number SpawnIndex Spawn index. -- @return #number self.SpawnIndex function SPAWN:_GetSpawnIndex( SpawnIndex ) - self:F2( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) + self:T( { template=self.SpawnTemplatePrefix, SpawnIndex=SpawnIndex, SpawnMaxGroups=self.SpawnMaxGroups, SpawnMaxUnitsAlive=self.SpawnMaxUnitsAlive, AliveUnits=self.AliveUnits, TemplateUnits=#self.SpawnTemplate.units } ) if (self.SpawnMaxGroups == 0) or (SpawnIndex <= self.SpawnMaxGroups) then if (self.SpawnMaxUnitsAlive == 0) or (self.AliveUnits + #self.SpawnTemplate.units <= self.SpawnMaxUnitsAlive) or self.UnControlled == true then - self:F( { SpawnCount = self.SpawnCount, SpawnIndex = SpawnIndex } ) + self:T( { SpawnCount = self.SpawnCount, SpawnIndex = SpawnIndex } ) if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then self.SpawnCount = self.SpawnCount + 1 SpawnIndex = self.SpawnCount @@ -3898,12 +3900,17 @@ function SPAWN:_OnBirth( EventData ) end +--- -- @param #SPAWN self -- @param Core.Event#EVENTDATA EventData function SPAWN:_OnDeadOrCrash( EventData ) - self:F( self.SpawnTemplatePrefix ) + self:T( "Dead or crash event ID "..EventData.id) + self:T( "Dead or crash event for "..self.SpawnTemplatePrefix ) + + if EventData.id == EVENTS.Dead then return end local unit=UNIT:FindByName(EventData.IniUnitName) + --local group=GROUP:FindByName(EventData.IniGroupName) if unit then diff --git a/Moose Development/Moose/Ops/Airboss.lua b/Moose Development/Moose/Ops/Airboss.lua index 244e252ed..31116dde9 100644 --- a/Moose Development/Moose/Ops/Airboss.lua +++ b/Moose Development/Moose/Ops/Airboss.lua @@ -3623,6 +3623,7 @@ function AIRBOSS:onafterStart( From, Event, To ) self:HandleEvent( EVENTS.PlayerLeaveUnit, self._PlayerLeft ) self:HandleEvent( EVENTS.MissionEnd ) self:HandleEvent( EVENTS.RemoveUnit ) + self:HandleEvent( EVENTS.UnitLost, self.OnEventRemoveUnit ) -- self.StatusScheduler=SCHEDULER:New(self) -- self.StatusScheduler:Schedule(self, self._Status, {}, 1, 0.5) diff --git a/Moose Development/Moose/Ops/ArmyGroup.lua b/Moose Development/Moose/Ops/ArmyGroup.lua index 62f3dfec4..40f04de61 100644 --- a/Moose Development/Moose/Ops/ArmyGroup.lua +++ b/Moose Development/Moose/Ops/ArmyGroup.lua @@ -403,6 +403,7 @@ function ARMYGROUP:New(group) self:HandleEvent(EVENTS.Birth, self.OnEventBirth) self:HandleEvent(EVENTS.Dead, self.OnEventDead) self:HandleEvent(EVENTS.RemoveUnit, self.OnEventRemoveUnit) + self:HandleEvent(EVENTS.UnitLost, self.OnEventRemoveUnit) self:HandleEvent(EVENTS.Hit, self.OnEventHit) -- Start the status monitoring. diff --git a/Moose Development/Moose/Ops/NavyGroup.lua b/Moose Development/Moose/Ops/NavyGroup.lua index 0ed715fc9..585b39d98 100644 --- a/Moose Development/Moose/Ops/NavyGroup.lua +++ b/Moose Development/Moose/Ops/NavyGroup.lua @@ -393,7 +393,8 @@ function NAVYGROUP:New(group) -- Handle events: self:HandleEvent(EVENTS.Birth, self.OnEventBirth) self:HandleEvent(EVENTS.Dead, self.OnEventDead) - self:HandleEvent(EVENTS.RemoveUnit, self.OnEventRemoveUnit) + self:HandleEvent(EVENTS.RemoveUnit, self.OnEventRemoveUnit) + self:HandleEvent(EVENTS.UnitLost, self.OnEventRemoveUnit) -- Start the status monitoring. self.timerStatus=TIMER:New(self.Status, self):Start(1, 30)