public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character   = request.Session.Character;
                var facilityEid = request.Data.GetOrDefault <long>(k.facility);
                var targetEids  = request.Data.GetOrDefault <long[]>(k.target);

                _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out InsuraceFacility insuraceFacility);

                insuraceFacility.InsuranceBuy(character, targetEids);

                var list   = InsuranceHelper.InsuranceList(character);
                var result = new Dictionary <string, object>
                {
                    { k.insurance, list }
                };

                if (list.Count > 0)
                {
                    Message.Builder.FromRequest(request).WithData(result).Send();
                }
                else
                {
                    Message.Builder.FromRequest(request).WithEmpty().Send();
                }

                scope.Complete();
            }
        }
示例#2
0
        public void HandleRequest(IRequest request)
        {
            var character   = request.Session.Character;
            var facilityEid = request.Data.GetOrDefault <long>(k.facility);
            var targetEids  = request.Data.GetOrDefault <long[]>(k.target);

            _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out InsuraceFacility insuraceFacility);

            insuraceFacility.InsuranceQuery(character, targetEids, out Dictionary <string, object> result).ThrowIfError();

            Message.Builder.FromRequest(request).WithData(result).Send();
        }
        public void HandleRequest(IRequest request)
        {
            var character = request.Session.Character;

            var targetDefinition = request.Data.GetOrDefault <int>(k.definition);
            var facilityEid      = request.Data.GetOrDefault <long>(k.facility);

            _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out Prototyper prototyper);

            _productionManager.ProductionProcessor.PrototypeQuery(character, targetDefinition, prototyper, out Dictionary <string, object> replyDict).ThrowIfError();

            Message.Builder.FromRequest(request).WithData(replyDict).Send();
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var facilityEid = request.Data.GetOrDefault <long>(k.facility);
                var lineId      = request.Data.GetOrDefault <int>(k.ID);
                var character   = request.Session.Character;

                _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out Mill mill);

                var replyDict = mill.DeleteLine(character, lineId);
                Message.Builder.FromRequest(request).WithData(replyDict).Send();

                scope.Complete();
            }
        }
        public void HandleRequest(IRequest request)
        {
            var facilityEid = request.Data.GetOrDefault <long>(k.facility);
            var character   = request.Session.Character;

            _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out Mill mill);

            var linesList    = mill.GetLinesList(character);
            var facilityInfo = mill.GetFacilityInfo(character);

            var reply = new Dictionary <string, object>
            {
                { k.lineCount, linesList.Count },
                { k.lines, linesList },
                { k.facility, facilityInfo }
            };

            Message.Builder.FromRequest(request).WithData(reply).Send();
        }
示例#6
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character   = request.Session.Character;
                var lineId      = request.Data.GetOrDefault <int>(k.ID);
                var rounds      = request.Data.GetOrDefault <int>(k.rounds);
                var facilityEid = request.Data.GetOrDefault <long>(k.facility);

                _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out Mill mill);

                ProductionLine.LoadById(lineId, out ProductionLine productionLine).ThrowIfError();

                productionLine.CharacterId.ThrowIfNotEqual(character.Id, ErrorCodes.OwnerMismatch);

                var maxRounds = Mill.GetMaxRounds(character);

                if (rounds > maxRounds)
                {
                    rounds = maxRounds;
                }

                ProductionLine.SetRounds(rounds, productionLine.Id).ThrowIfError();

                var linesList    = mill.GetLinesList(character);
                var facilityInfo = mill.GetFacilityInfo(character);

                var reply = new Dictionary <string, object>
                {
                    { k.lineCount, linesList.Count },
                    { k.lines, linesList },
                    { k.facility, facilityInfo }
                };

                Message.Builder.SetCommand(Commands.ProductionLineList).WithData(reply).ToClient(request.Session).Send();

                scope.Complete();
            }
        }
示例#7
0
        public void HandleRequest(IRequest request)
        {
            var lineId      = request.Data.GetOrDefault <int>(k.ID);
            var character   = request.Session.Character;
            var facilityEid = request.Data.GetOrDefault <long>(k.facility);

            _productionManager.GetFacilityAndCheckDocking(facilityEid, character, out Mill mill);

            var productionLine = ProductionLine.LoadByIdAndCharacterAndFacility(character, lineId, facilityEid);

            productionLine.CalculateDecalibrationPenalty(character, out int materialEfficiency, out int timeEfficiency);

            var calibrationProgramDefinition = productionLine.GetCalibrationTemplateDefinition();

            var result = new Dictionary <string, object>
            {
                { k.materialEfficiency, materialEfficiency },
                { k.timeEfficiency, timeEfficiency },
                { k.definition, calibrationProgramDefinition }
            };

            Message.Builder.FromRequest(request).WithData(result).Send();
        }