public static void UnloadUpgradable(Ship ship, int uniqueid) { var defenition = Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId); var lvl = defenition?.Levels.Level.FirstOrDefault(n => n.Id == ship.TargetLevel); if (lvl != null) { ship.LogUnload(); var upg = Core.GlobalData.Upgradeables.FirstOrDefault(n => n.DefId == ship.TargetId); if (upg != null) { upg.Progress += lvl.MaterialKoef * SendingHelper.GetCapacity(ship); } Networking.AddTask( new Task.UnloadShipTask( ship.InstId, Core.GlobalData.Level, Enums.EObject.upgradeable, SendingHelper.GetCapacity(ship), lvl.MaterialKoef * SendingHelper.GetCapacity(ship), SendingHelper.GetSailors(ship), lvl.Sailors, ship.TargetLevel, null, uniqueid)); SendingHelper.NullShip(ship); } }
public static void UnloadOutpost(Ship ship, int uniqueid) { var loc = Core.GlobalData.Outposts.Where(n => n.DefId == ship.TargetId).First(); ship.LogUnload(); var outp = Core.GlobalData.Outposts.Where(n => n.DefId == ship.TargetId).FirstOrDefault(); if (outp.CargoOnTheWay <= ship.Sailors()) { outp.CargoOnTheWay -= ship.Sailors(); } Networking.AddTask( new Task.DockShipTaskOutPost( ship, false, SendingHelper.GetCapacity(ship), ship.Cargo, SendingHelper.GetSailors(ship), ship.Crew, ship.TargetLevel, loc.CargoOnTheWay + loc.Crew, loc.RequiredCrew, uniqueid)); SendingHelper.NullShip(ship); }
public static void UnloadContractor(Ship ship, int uniqueid) { var currentcontractor = Definitions.ConDef.Items.Item .FirstOrDefault(n => n.DefId == ship.TargetId); var quest = currentcontractor?.Quests.Quest.FirstOrDefault(n => n.Id == ship.TargetLevel); if (quest == null) { return; } if (currentcontractor.Type == "static") { var usedshit = quest.MaterialKoef * SendingHelper.GetCapacity(ship); var lcontract = Core.GlobalData.Contracts.FirstOrDefault(n => n.DefId == ship.TargetId); // TODO: increasing of progress or amount! ship.LogUnload(); Networking.AddTask( new Task.DockShipTaskContractor( ship, false, SendingHelper.GetCapacity(ship), usedshit, SendingHelper.GetSailors(ship), currentcontractor.Sailors, ship.TargetLevel, currentcontractor.DefId, lcontract.Progress, (int)quest.InputAmount(), quest.ObjectiveTypeId, uniqueid)); } else { var usedshit = quest.MaterialKoef * SendingHelper.GetCapacity(ship); var lcontract = Core.GlobalData.Contracts.FirstOrDefault(n => n.DefId == ship.TargetId); var inp = quest.InputAmount(); // TODO: increasing of progress or amount! ship.LogUnload(); Networking.AddTask( new Task.DockShipTaskContractor( ship, false, SendingHelper.GetCapacity(ship), usedshit, SendingHelper.GetSailors(ship), currentcontractor.Sailors, ship.TargetLevel, currentcontractor.DefId, lcontract.Progress, (int)quest.InputAmount(), quest.ObjectiveTypeId, uniqueid)); } SendingHelper.NullShip(ship); }
public static async Task <TransferMessages.TransferCompled> Send <TSender, TCommand>(this TSender sender, TCommand command, TimeSpan timeout, DataTransferManager manager, Action <string> messages, Func <ITransferData?> getdata) where TSender : ISender where TCommand : FileTransferCommand <TSender, TCommand> { command.Manager = manager; var id = await SendingHelper.Send <FileTransactionId, TCommand>(sender, command, messages, timeout, false); var tranfer = await command.Manager.AskAwaitOperation(new AwaitRequest(timeout, id.Id)); return(await tranfer.TryStart(getdata)); }
public static void LoadUpgradeable(Ship ship) { var lvl = Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId)?.Levels .Level.First(n => n.Id == ship.TargetLevel); if (lvl != null) { Logger.Info( Localization.SHIPS_LOADING + LocalizationCache.GetNameFromLoc( Definitions.ShipDef.Items.Item.First(n => n.DefId == ship.DefId).NameLoc, Definitions.ShipDef.Items.Item.First(n => n.DefId == ship.DefId).Name)); Core.GlobalData.Upgradeables.First(n => n.DefId == ship.TargetId).CargoOnTheWay -= lvl.MaterialKoef * SendingHelper.GetCapacity(ship); Core.GlobalData.Upgradeables.First(n => n.DefId == ship.TargetId).Progress += lvl.MaterialKoef * SendingHelper.GetCapacity(ship); Networking.AddTask(new Task.LoadShipUpgradeableTask(ship.InstId)); ship.Loaded = 1; } }
public static void UnloadWreck(Ship ship, int uniqueid) { var wrk = Core.GlobalData.Wrecks.Where(n => n.InstId == ship.TargetId).FirstOrDefault(); if (wrk != null) { ship.LogUnload(); Networking.AddTask( new Task.UnloadShipTask( ship.InstId, Core.GlobalData.Level, Enums.EObject.wreck, SendingHelper.GetCapacity(ship), 0, SendingHelper.GetSailors(ship), wrk.Sailors, ship.TargetLevel, null, uniqueid)); SendingHelper.NullShip(ship); } }
public static void UnloadSocialcontract(Ship ship, int uniqueid) { var co = Core.GlobalData.SocialContracts.Where(n => n.InstId == ship.TargetId) .FirstOrDefault(); if (co == null) { return; } ship.LogUnload(); Networking.AddTask( new Task.DockShipSocialContractor( ship, false, ship.Capacity(), co.MaterialKoef / co.Amount, ship.Sailors(), co.Sailors, ship.TargetLevel, uniqueid)); SendingHelper.NullShip(ship); }
public static void UnloadMarketplace(Ship ship, int uniqueid) { var market = Definitions.MarketDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId); var lvl = Definitions.MarketDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId); var mat = lvl?.Materials.Material.FirstOrDefault(n => n.Id == ship.MaterialId); if (mat != null) { ship.LogUnload(); Networking.AddTask( new Task.UnloadShipTask( ship.InstId, Core.GlobalData.Level, Enums.EObject.marketplace, SendingHelper.GetCapacity(ship), mat.InputKoef * SendingHelper.GetCapacity(ship), SendingHelper.GetSailors(ship), market.Sailors, ship.TargetLevel, null, uniqueid)); SendingHelper.NullShip(ship); } }
public static Task Send <TSender, TCommand>(this TSender sender, TCommand command, TimeSpan timeout, Action <string> messages) where TCommand : SimpleCommand <TSender, TCommand>, IReporterMessage where TSender : ISender => SendingHelper.Send <object, TCommand>(sender, command, messages, timeout, true);