/// <summary> /// Обновляет максимальные значения объёмов хранимых ресурсов /// </summary> public void UpdateResulstMax() { var db = new skagryDataContext(); var tblResourceStorage = db.GetTable <planet_resource_storage>(); var query = from rs in tblResourceStorage where rs.planet_id == PlanetId select rs; foreach (var row in query) { row.e_max = GetResultEMax(); row.ir_max = GetResultIrMax(); row.dm_max = GetResultDmMax(); row.am_max = GetResultAmMax(); } try { db.SubmitChanges(); } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// Обновляет текущие значения прироста рейтов новыми значениями /// </summary> /// <param name="newERate"></param> /// <param name="newIrRate"></param> /// <param name="newDmRate"></param> /// <param name="newAmRate"></param> public void UpdateRates(double newERate, double newIrRate, double newDmRate, double newAmRate) { var EMaxValue = 100D; newIrRate = (newIrRate < EMaxValue) ? newIrRate : EMaxValue; EMaxValue = EMaxValue - newIrRate; newDmRate = (2 * newDmRate < EMaxValue) ? newDmRate : EMaxValue / 2; EMaxValue = EMaxValue - newDmRate * 2; newAmRate = (5 * newAmRate < EMaxValue) ? newAmRate : EMaxValue / 5; EMaxValue = EMaxValue - newAmRate * 5; newERate = (newERate < EMaxValue) ? newERate : EMaxValue; EMaxValue = EMaxValue - newERate; if (0 < EMaxValue) { newERate = newERate + EMaxValue; } var db = new skagryDataContext(); var tblPlanetResourseRate = db.GetTable <planet_resource_rate>(); var query = from prr in tblPlanetResourseRate where prr.planet_id == PlanetId select prr; foreach (var row in query) { row.e_rate = newERate; row.ir_rate = newIrRate; row.dm_rate = newDmRate; row.am_rate = newAmRate; row.date_change = DateTime.UtcNow; } db.SubmitChanges(); Notify(new NotyfyData { ERate = newERate, IrRate = newIrRate, DmRate = newDmRate, AmRate = newAmRate }); }
/// <summary> /// Добавляет К значению хранимых ресурсов значение прироста ресурсов от обсерверабле /// </summary> /// <param name="eValueAdded">Добавляемое значения для энергии</param> /// <param name="irValueAdded">Добавляемое значения для Ир</param> /// <param name="dmValueAdded">Добавляемое значения для Дм</param> /// <param name="amValueAdded">Добавляемое значения для АМ</param> public void AddCurrentResources(double eValueAdded, double irValueAdded, double dmValueAdded, double amValueAdded) { var db = new skagryDataContext(); var tblPlanetResourceStorage = db.GetTable <planet_resource_storage>(); var newEValue = GetNewResourceValue("EMax", GetECurrent(), eValueAdded); var newIrValue = GetNewResourceValue("IrMax", GetIrCurrent(), irValueAdded); var newDmValue = GetNewResourceValue("DmMax", GetDmCurrent(), dmValueAdded); var newAmValue = GetNewResourceValue("AmMax", GetAmCurrent(), amValueAdded); var query = from rs in tblPlanetResourceStorage where rs.planet_id == PlanetId select rs; foreach (var row in query) { row.e_current = newEValue; row.ir_current = newIrValue; row.dm_current = newDmValue; row.am_current = newAmValue; row.date_change = DateTime.UtcNow; } var oldECurrent = GetECurrent(); var oldIrCurrent = GetIrCurrent(); var oldDmCurrent = GetDmCurrent(); var oldAmCurrent = GetAmCurrent(); var oldLastDate = GetLastDate(); try { db.SubmitChanges(); ECurrent = newEValue; IrCurrent = newIrValue; DmCurrent = newDmValue; AmCurrent = newAmValue; } catch (Exception e) { ECurrent = oldECurrent; IrCurrent = oldIrCurrent; DmCurrent = oldDmCurrent; AmCurrent = oldAmCurrent; LastDate = oldLastDate; } }
public void UpLevel() { var db = new skagryDataContext(); var tblStructureTurn = db.GetTable <structure_turn>(); int charSkillLevel = 0; double charSkillBaseValue = 0; // get character mods Character character = PlanetHelper.GetCharacter(PlanetId); if (null != character) { // todo get from character var charSkills = character.GetSkillLevels(); charSkillLevel = (int)charSkills["s16"]; charSkillBaseValue = character.GetSkill("s16").GetValue(); } var startDate = DateTime.UtcNow; var duration = GetTimePrice() * Math.Pow(GetLevelMod(), GetLevel()); if (0 < charSkillLevel) { duration *= charSkillBaseValue * charSkillLevel; } var endDate = startDate.AddSeconds(duration); tblStructureTurn.InsertOnSubmit(new structure_turn { planet_id = GetPlanetId(), structure_class_name = GetName(), next_level = GetLevel() + 1, start_date = startDate, end_date = endDate }); db.SubmitChanges(); }