public Shipyard(int planetId) { Name = "ps11"; PlanetId = planetId; EPrice = 1; IrPrice = 1; DmPrice = 1; AmPrice = 1; TimePrice = 1; SgPrice = 1; var name = GetName(); var db = new skagryDataContext(); var tblPlanetStructure = db.GetTable <planet_structure>(); var query = from ps in tblPlanetStructure where ps.planet_id == planetId where ps.structure_name == name select new { ps }; foreach (var row in query) { Level = row.ps.level.Value; } }
/// <summary> /// Добавляет К значению хранимых ресурсов значение прироста ресурсов из базы данных из таблицы ресурс рейт. Обработка запроса от клиента. /// </summary> /// <param name="eValueAdded">Добавляемое значения для энергии</param> /// <param name="irValueAdded">Добавляемое значения для Ир</param> /// <param name="dmValueAdded">Добавляемое значения для Дм</param> /// <param name="amValueAdded">Добавляемое значения для АМ</param> public void AddCurrentResources() { var db = new skagryDataContext(); var tblPlanetResourseRate = db.GetTable <planet_resource_rate>(); var query = from prr in tblPlanetResourseRate where prr.planet_id == PlanetId select prr; double newERrate = 0; double newIrrate = 0; double newDmrate = 0; double newAmrate = 0; foreach (var row in query) { newERrate = (double)row.e_rate; newIrrate = (double)row.ir_rate; newDmrate = (double)row.dm_rate; newAmrate = (double)row.am_rate; // row.date_change = DateTime.UtcNow; } AddCurrentResources(newERrate, newIrrate, newDmrate, newAmrate); }
/// <summary> /// Получает текущее значение прироста ресурсов(Evalue E IR Dm Am) в процентах /// </summary> /// <returns>Массив текущих значений</returns> public Hashtable GetCurrentRates() { var rates = new Hashtable(); var db = new skagryDataContext(); var tblPlanetResourseRate = db.GetTable <planet_resource_rate>(); var query = from prr in tblPlanetResourseRate where prr.planet_id == PlanetId where prr.date_change == ( from prrDch in tblPlanetResourseRate where prrDch.planet_id == PlanetId select prrDch.date_change ).Max() select prr; foreach (var row in query) { rates.Add("e_value", GetRate()); rates.Add("e_rate", row.e_rate); rates.Add("ir_rate", row.ir_rate); rates.Add("dm_rate", row.dm_rate); rates.Add("am_rate", row.am_rate); } return(rates); }
/// <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> /// <returns>Дата</returns> public DateTime GetLastDateTime() { var db = new skagryDataContext(); var tblPlanetResourseRate = db.GetTable <planet_resource_rate>(); return((from pr in tblPlanetResourseRate where pr.planet_id == GetPlanetId() select pr.date_change).Max()); }
/// <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 Storage(int planetId) { Name = "ps2"; PlanetId = planetId; //Базовая стоимость EPrice = 1; IrPrice = 546; DmPrice = 78; AmPrice = 12; TimePrice = 600; SgPrice = 12; BaseStorageValue = 55000; //Модификатор на уровень LevelMod = 2; var structures = PlanetHelper.GetStructures(planetId); Level = (int)structures[GetName()]; var db = new skagryDataContext(); var tblResourceStorage = db.GetTable <planet_resource_storage>(); var query = from rs in tblResourceStorage where rs.planet_id == GetPlanetId() where rs.date_change == ( from tmp in tblResourceStorage where tmp.planet_id == GetPlanetId() select tmp.date_change ).Max() select new { rs }; foreach (var row in query) { ECurrent = row.rs.e_current.Value; IrCurrent = row.rs.ir_current.Value; DmCurrent = row.rs.dm_current.Value; AmCurrent = row.rs.am_current.Value; LastDate = (DateTime)row.rs.date_change; } }
// todo zavershit logiku. poluchit mody ot planet_charaktera // на планете должен быть метод который возвразает персоонажа а у персоонажа должен быть метод который возвращает планету // public void FleetConstruction(FleetUnit unit, int cuantity) { var db = new skagryDataContext(); var tblShipyard = db.GetTable <shipyard_turn>(); var startTime = DateTime.UtcNow; var endTime = startTime.AddHours(1); tblShipyard.InsertOnSubmit(new shipyard_turn { planet_id = 1, unit_name = unit.GetName(), cuantity = cuantity, start_time = startTime, end_time = endTime }); }
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(); }