Exemplo n.º 1
0
        private StorageResources _premiumActive(IDbConnection connection, int userId, StorageResources res, int planetId)
        {
            var level  = 1;
            var newRes = res.CloneDeep();

            if (planetId != 0)
            {
                // todo   создать генератор всех хранишищ
                var p = _planet.GetUserPlanet(connection, planetId, userId);
                if (p.BuildStorage.Level != null)
                {
                    level = (int)p.BuildStorage.Level;
                }
                newRes.Max = Storage.MaxStorable(level, true);
                if (!res.NeedFix())
                {
                    return(newRes);
                }
                var fixedPlanetRes   = FixCurrentResources(newRes);
                var updatedPlanetRes = _planet.SetNewResources(connection, planetId, userId, fixedPlanetRes);
                return(updatedPlanetRes.Resources);
            }

            newRes.Max = Storage.MaxMotherStorable(true);
            if (!res.NeedFix())
            {
                return(newRes);
            }
            var fixedMotherRes = FixCurrentResources(newRes);
            var updatedMother  = _mother.SetNewResources(connection, userId, fixedMotherRes);

            return(updatedMother.Resources);
        }
Exemplo n.º 2
0
        private static void CalcNewRes(IStorage storage, ref StorageResources sourceRes, ref StorageResources targetRes, MaterialResource delta, bool premium, int?storageLevel = null)
        {
            var compareTarget = targetRes.CloneDeep();

            sourceRes.Current = storage.CalculateTransferedRes(false, sourceRes.Current, delta, premium, storageLevel);
            targetRes.Current = storage.CalculateTransferedRes(true, targetRes.Current, delta, premium, storageLevel);

            if (!sourceRes.IsFull())
            {
                return;
            }
            if (targetRes.Current.E - (compareTarget.Current.E + delta.E) > 0)
            {
                var overMax = targetRes.Current.E - targetRes.Max.E;
                sourceRes.Current.E += overMax;
                targetRes.Current.E -= overMax;
            }
            if (targetRes.Current.Ir - (compareTarget.Current.Ir + delta.Ir) > 0)
            {
                var overMax = targetRes.Current.Ir - targetRes.Max.Ir;
                sourceRes.Current.Ir += overMax;
                targetRes.Current.Ir -= overMax;
            }
            if (targetRes.Current.Dm - (compareTarget.Current.Dm + delta.Dm) > 0)
            {
                var overMax = targetRes.Current.Dm - targetRes.Max.Dm;
                sourceRes.Current.Dm += overMax;
                targetRes.Current.Dm -= overMax;
            }
        }
        public IHttpActionResult Equals()
        {
            var src = new StorageResources();

            src.InitializeField();
            src.Current.E  = 10;
            src.Current.Ir = 15;
            src.Current.Dm = 100;
            src.Max.E      = 10;
            src.Max.Ir     = 15;
            src.Max.Dm     = 100;

            var cloneTrue  = src.CloneDeep();
            var cloneFalse = src.CloneDeep();

            cloneFalse.Current.E = 6;

            var otherTrue = new StorageResources();

            otherTrue.InitializeField();
            otherTrue.Current.E  = 10;
            otherTrue.Current.Ir = 15;
            otherTrue.Current.Dm = 100;
            otherTrue.Max.E      = 10;
            otherTrue.Max.Ir     = 15;
            otherTrue.Max.Dm     = 100;


            var result = new
            {
                srcEqcloneTrue  = src.Equals(cloneTrue),
                srcEqcloneFalse = src.Equals(cloneFalse),
                srcEqotherTrue  = src.Equals(otherTrue)
            };

            return(Json(result));
        }