Esempio n. 1
0
 private void handleCommodityEjectedEvent(CommodityEjectedEvent @event)
 {
     if (_handleCommodityEjectedEvent(@event))
     {
         writeInventory();
     }
 }
Esempio n. 2
0
 private void handleCommodityEjectedEvent(CommodityEjectedEvent @event)
 {
     if (@event.timestamp > updateDat)
     {
         updateDat = @event.timestamp;
         if (_handleCommodityEjectedEvent(@event))
         {
             writeInventory();
         }
     }
 }
Esempio n. 3
0
        private bool _handleCommodityEjectedEvent(CommodityEjectedEvent @event)
        {
            bool  update = false;
            Cargo cargo  = GetCargoWithEDName(@event.commodityDefinition?.edname);

            if (cargo != null)
            {
                if (EDDI.Instance?.Vehicle != Constants.VEHICLE_SHIP)
                {
                    if (@event.missionid != null)
                    {
                        cargo.haulage -= @event.amount;
                    }
                    else
                    {
                        cargo.owned -= @event.amount;
                    }
                    cargo.CalculateNeed();
                    update = true;
                }

                Haulage haulage = cargo.haulageData.FirstOrDefault(h => h.missionid == @event.missionid);
                if (haulage != null)
                {
                    MissionMonitor missionMonitor = (MissionMonitor)EDDI.Instance.ObtainMonitor("Mission monitor");
                    switch (haulage.typeEDName)
                    {
                    case "delivery":
                    case "deliverywing":
                    case "smuggle":
                    {
                        haulage.status = "Failed";
                        Mission mission = missionMonitor?.GetMissionWithMissionId(@event.missionid ?? 0);
                        if (mission != null)
                        {
                            mission.statusDef = MissionStatus.FromEDName("Failed");
                        }
                        update = true;
                    }
                    break;
                    }
                }
            }
            return(update);
        }
Esempio n. 4
0
        public void _handleCommodityEjectedEvent(CommodityEjectedEvent @event)
        {
            Cargo cargo = GetCargoWithEDName(@event.commodityDefinition?.edname);

            if (cargo != null)
            {
                bool handled = false;

                // Check for related missions
                if (cargo.haulageamounts.Any())
                {
                    cargo.ejected += @event.amount;
                    foreach (HaulageAmount haulageAmount in cargo.haulageamounts)
                    {
                        string type  = haulageAmount.name.Split('_').ElementAtOrDefault(1).ToLowerInvariant();
                        int    total = cargo.haulageamounts.Where(ha => ha.name.ToLowerInvariant().Contains(type)).Sum(ha => ha.amount);
                        switch (type)
                        {
                        case "altruism":
                        case "collect":
                        case "collectwing":
                        case "mining":
                        case "piracy":
                        {
                            if (cargo.owned >= @event.amount)
                            {
                                cargo.owned -= @event.amount;
                                handled      = true;
                            }
                        }
                        break;

                        case "delivery":
                        case "deliverywing":
                        case "rescue":
                        case "salvage":
                        case "smuggle":
                        {
                            if (cargo.haulage >= @event.amount)
                            {
                                cargo.haulage -= @event.amount;
                                handled        = true;
                            }
                        }
                        break;
                        }
                        if (handled)
                        {
                            break;
                        }
                    }
                }

                // Otherwise, order of preference is owned -> stolen
                if (!handled)
                {
                    if (cargo.owned >= @event.amount)
                    {
                        cargo.owned -= @event.amount;
                    }
                    else if (cargo.stolen >= @event.amount)
                    {
                        cargo.stolen -= @event.amount;
                    }
                }
                RemoveCargo(cargo);
            }
        }