public void HandleRequest(IRequest request) { var assignmentId = request.Data.GetOrDefault <int>(k.ID); var info = TransportAssignment.Get(assignmentId); var character = request.Session.Character; info.ownercharacter.ThrowIfNotEqual(character, ErrorCodes.AccessDenied); var volumeWrapperContainer = info.GetContainer(); //depending on the owner status a different character must be used var ownerCharacter = info.taken ? info.volunteercharacter : character; volumeWrapperContainer.ReloadItems(ownerCharacter); var containerInfo = volumeWrapperContainer.ToDictionary(); var result = new Dictionary <string, object> { { k.container, containerInfo }, { k.assignment, info.ToDictionary() } }; Message.Builder.FromRequest(request).WithData(result).Send(); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var id = request.Data.GetOrDefault <int>(k.ID); var character = request.Session.Character; TransportAssignment.RetrieveTransportAssignment(id, character); scope.Complete(); } }
public Dictionary <string, object> GetAssignmentInfo() { var result = ToDictionary(); if (AssignmentId > 0) { var transportAssignmentInfo = TransportAssignment.Get(AssignmentId); result.Add(k.assignment, transportAssignmentInfo.ToPrivateDictionary()); } return(result); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var wrapperEid = request.Data.GetOrDefault <long>(k.eid); var character = request.Session.Character; TransportAssignment.ManualDeliverTransportAssignment(character, wrapperEid); scope.Complete(); } }
public void HandleRequest(IRequest request) { var character = request.Session.Character; var info = TransportAssignment.GetRunningTransportAssignments(character).ToDictionary(true, character); var result = new Dictionary <string, object> { { k.transportAssignments, info }, { k.count, TransportAssignment.GetCountInfo(character) } }; Message.Builder.FromRequest(request).WithData(result).Send(); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var assignmentId = request.Data.GetOrDefault <int>(k.ID); var info = TransportAssignment.Get(assignmentId); var character = request.Session.Character; info.GiveUpAssignment(character); scope.Complete(); } }
public void HandleRequest(IRequest request) { var offset = request.Data.GetOrDefault <int>(k.offset); var character = request.Session.Character; var info = TransportAssignment.TransportAssignmentHistory(offset, character.Id); var result = new Dictionary <string, object> { { k.history, info } }; Message.Builder.FromRequest(request).WithData(result).Send(); }
public override void Update(TimeSpan time) { MissionAdministrator.Update(time); _transportAssignmentInterval.Update(time); if (!_transportAssignmentInterval.Passed) { return; } _transportAssignmentInterval.Reset(); TransportAssignment.CleanUpExpiredAssignmentsAsync(); }
public override void OnDeleteFromDb() { if (IsRepackaged) { return; } if (!IsDeleteAllowed()) { base.OnDeleteFromDb(); IsInAssignment().ThrowIfTrue(ErrorCodes.ContainerInAssignment); } TransportAssignment.ContainerDestroyed(this); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var wrapperContainerEid = request.Data.GetOrDefault <long>(k.eid); var reward = request.Data.GetOrDefault <long>(k.reward); var collateral = request.Data.GetOrDefault <long>(k.collateral); var sourceBaseEid = request.Data.GetOrDefault <long>(k.sourceBase); var targetBaseEid = request.Data.GetOrDefault <long>(k.targetBase); var durationDays = request.Data.GetOrDefault <int>(k.duration); var character = request.Session.Character; TransportAssignment.SubmitTransportAssignment(character, wrapperContainerEid, reward, collateral, sourceBaseEid, targetBaseEid, durationDays); scope.Complete(); } }
/// <summary> /// Make the docking happen /// </summary> /// <param name="zone"></param> /// <param name="dockingBase"></param> public void DockToBase(IZone zone, DockingBase dockingBase) { States.Dock = true; var publicContainer = dockingBase.GetPublicContainer(); FullArmorRepair(); publicContainer.AddItem(this, false); publicContainer.Save(); dockingBase.DockIn(Character, NormalUndockDelay, ZoneExitType.Docked); Transaction.Current.OnCommited(() => { RemoveFromZone(); MissionHelper.MissionAdvanceDockInTarget(Character.Id, zone.Id, CurrentPosition); TransportAssignment.DeliverTransportAssignmentAsync(Character); }); }
/// <summary> /// A volunteer takes a transport assignment /// </summary> private static void TakeTransportAssignment(int id, Character character) { var transportAssignmentInfo = TransportAssignment.Get(id); transportAssignmentInfo.ownercharacter.ThrowIfEqual(character, ErrorCodes.WTFErrorMedicalAttentionSuggested); transportAssignmentInfo.taken.ThrowIfTrue(ErrorCodes.TransportAssignmentIsTaken); transportAssignmentInfo.volunteercharacter.ThrowIfNotEqual(null, ErrorCodes.TransportAssignmentIsTaken); transportAssignmentInfo.TakeCollateral(character); transportAssignmentInfo.expiry.ThrowIfLess(DateTime.Now, ErrorCodes.TransportAssignmentExpired); transportAssignmentInfo.volunteercharacter = character; transportAssignmentInfo.taken = true; transportAssignmentInfo.started = DateTime.Now; transportAssignmentInfo.UpdateToDb(); VolumeWrapperContainer volumeWrapperContainer; PublicContainer publicContainer; transportAssignmentInfo.GiveToVolunteer(out volumeWrapperContainer, out publicContainer); transportAssignmentInfo.WriteLog(TransportAssignmentEvent.take, publicContainer.Parent); var extraInfo = new Dictionary <string, object> { { k.assignment, transportAssignmentInfo.ToDictionary() } }; var assignmentInfo = new Dictionary <string, object> { { k.assignment, transportAssignmentInfo.ToPrivateDictionary() } }; //send info to volunteer TransportAssignment.SendCommandWithTransportAssignmentsAndContainer(Commands.TransportAssignmentTake, publicContainer, character, assignmentInfo); //send info to principal Message.Builder.SetCommand(Commands.TransportAssignmentAccepted).WithData(extraInfo).ToCharacter(transportAssignmentInfo.ownercharacter).Send(); }