Beispiel #1
0
        public void DeleteAsset(MissionAsset asset)
        {
            Debug.Assert(asset != null, "asset != null");

            EntityDefinition      entity      = asset as EntityDefinition;
            FlightGroupDefinition flightGroup = asset as FlightGroupDefinition;
            FactionDefinition     faction     = asset as FactionDefinition;

            if (entity != null)
            {
                GetFlightGroup(entity.flightGroupId)?.RemoveEntity(entity);
            }
            else if (flightGroup != null)
            {
                faction = GetFaction(flightGroup.factionId);
                if (faction.flightGroups.Count == 1)
                {
                    Debug.Log($"Can't Delete Flight Group {flightGroup.name}, every faction needs at least one flight group");
                    return;
                }
                GetFaction(flightGroup.factionId)?.RemoveFlightGroup(flightGroup);
            }
            else if (faction != null)
            {
                factions.Remove(faction);
            }
            else
            {
                throw new ArgumentException($"Can\'t delete: {asset.GetType().Name}");
            }
            onChange?.Invoke(asset.id);
        }
Beispiel #2
0
 private bool HasFlightGroup(FlightGroupDefinition flightGroup)
 {
     return((
                from faction in factions
                from fg in faction.flightGroups
                where fg == flightGroup
                select fg
                ).FirstOrDefault() != null);
 }
Beispiel #3
0
        public FlightGroupDefinition CreateFlightGroup(FactionDefinition faction)
        {
            if (faction == null || !factions.Contains(faction))
            {
                throw new ArgumentException("Faction not part of this mission!");
            }

            FlightGroupDefinition flightGroup = GameDatabase.ActiveInstance.CreateAsset <FlightGroupDefinition>();

            faction.AddFlightGroup(flightGroup);
            onChange?.Invoke(flightGroup.id);
            return(flightGroup);
        }
Beispiel #4
0
 public EntityDefinition CreateEntityDefinition(FlightGroupDefinition flightGroup)
 {
     if (HasFlightGroup(flightGroup))
     {
         EntityDefinition entity = GameDatabase.ActiveInstance.CreateAsset <EntityDefinition>();
         flightGroup.AddEntity(entity);
         onChange?.Invoke(entity.id);
         return(entity);
     }
     else
     {
         throw new ArgumentException("Flight group not part of any faction in mission");
     }
 }
Beispiel #5
0
        private void OnFlightGroupDrop(FlightGroupDefinition child, MissionAsset dropTarget, int index)
        {
            MissionTreeItem       dropTargetItem = FindMissionItem(dropTarget.id);
            FactionDefinition     faction        = dropTarget as FactionDefinition;
            FlightGroupDefinition flightGroup    = dropTarget as FlightGroupDefinition;

            if (faction != null)
            {
                db.GetCurrentMission().SetFlightGroupFaction(child, faction, index);
            }
            else if (flightGroup != null)
            {
                db.GetCurrentMission().SetFlightGroupFaction(child, dropTargetItem.GetFaction(), index);
            }
        }
Beispiel #6
0
 public void SetFlightGroupFaction(FlightGroupDefinition flightGroup, FactionDefinition faction, int index)
 {
     if (flightGroup.factionId != faction.id)
     {
         FactionDefinition oldFaction = GetFaction(flightGroup.factionId);
         if (oldFaction != null && oldFaction.flightGroups.Count == 1)
         {
             Debug.Log($"Can't Move Flight Group {flightGroup.name}, every faction needs at least one flight group");
             return;
         }
         oldFaction?.RemoveFlightGroup(flightGroup);
     }
     faction.AddFlightGroup(flightGroup, index);
     onChange?.Invoke(flightGroup.id);
 }
Beispiel #7
0
        public void SetEntityFlightGroup(EntityDefinition entity, FlightGroupDefinition flightGroup, int index)
        {
            Debug.Assert(HasFlightGroup(flightGroup), $"Flight group {flightGroup.name} not part of any faction in mission");

            if (entity.flightGroupId == flightGroup.id)
            {
                if (index == -1)
                {
                    index = 0;
                }
                flightGroup.entities.MoveToIndex(entity, index);
            }
            else
            {
                FlightGroupDefinition currentFlightGroup = GetFlightGroup(entity.flightGroupId);
                currentFlightGroup?.RemoveEntity(entity);
                flightGroup.AddEntity(entity, index);
            }
            onChange?.Invoke(entity.id);
        }