예제 #1
0
        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;
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
        /// <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());
        }
예제 #6
0
        /// <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
            });
        }
예제 #7
0
        /// <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;
            }
        }
예제 #8
0
        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;
            }
        }
예제 #9
0
        // 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();
        }