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); }
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)); }