예제 #1
0
    public override void OnInspectorGUI()
    {
        planet = (Planet)target;

        DrawDefaultInspector();
        GUILayout.Space(5);

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Generate New"))
        {
            planet.Generate();
        }
        if (GUILayout.Button("Build"))
        {
            planet.Build();
        }
        if (GUILayout.Button("Build Async"))
        {
            planet.BuildAsync();
        }
        if (GUILayout.Button("Save Fields"))
        {
            PlanetHelper.Save(planet.num, file, planet.chunks);
        }

        if (GUILayout.Button("Load Fields"))
        {
            PlanetHelper.Load(planet.num, file, planet.chunks);
        }
        GUILayout.EndHorizontal();

        file = GUILayout.TextField(file);
    }
예제 #2
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;
            }
        }
        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();
        }
예제 #4
0
        /// <summary>
        /// Получает максимальный обхем всего хранилища
        /// </summary>
        /// <returns>Максимальный обхем всего хранилища с учетом всех модификаторов</returns>
        public double GetResultValue()
        {
            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["s12"];
                charSkillBaseValue = character.GetSkill("s12").GetValue();
            }

            return(BaseStorageValue * (Math.Pow(LevelMod, GetLevel() - 1) * ((charSkillLevel * charSkillBaseValue) + 1)));
        }
예제 #5
0
        public EnergyConvertr(int planetId)
        {
            Name = "ps3";

            //Базовая стоимость
            EPrice    = 1;
            IrPrice   = 1;
            DmPrice   = 1;
            AmPrice   = 1;
            TimePrice = 1;
            SgPrice   = 1;

            BaseEnergyConvertrWaste = 0.5;

            //Модификатор на уровень
            LevelMod = 2;

            var structures = PlanetHelper.GetStructures(planetId);

            PlanetId = planetId;

            Level = (int)structures[GetName()];
        }
예제 #6
0
        /// <summary>
        /// Возвращает новое значение для выбранного хранимого ресурса
        /// </summary>
        /// <param name="resourceName">Имя ресурса для прироста. Пример: 'EMax (См. GetResultEMax())'</param>
        /// <param name="resourceCurrentValue">Текущие значени для ресурса по имени resourceName </param>
        /// <param name="resourceValueAdded"> Добавляемое значение (прирост - источник индустриальный комплекс, мазер, юниты)</param>
        /// <returns></returns>
        private double GetNewResourceValue(string resourceName, double resourceCurrentValue, double resourceValueAdded)
        {
            //время в часах прошедшее после последнего добавления значний в базу
            var CurrentDate = DateTime.UtcNow;
            var duration    = CurrentDate.Subtract(LastDate).TotalHours;

            string     methodGetMax = "GetResult" + resourceName;
            Type       thisType     = this.GetType();
            MethodInfo theMethod    = thisType.GetMethod(methodGetMax);

            double maxResourceValue = (double)theMethod.Invoke(this, null);

            var units = PlanetHelper.GetUnits(PlanetId);

            var unitClasses = units.Properties();

            double armyBaseSumECost = 0;

            foreach (JProperty unitDiccionary in unitClasses)
            {
                var unitClassAlias = unitDiccionary.Name;

                if ("a" == unitClassAlias.Substring(0, 1))
                {
                    var unitClass = UnitHelper.GetUnitClass((string)unitClassAlias);

                    if (unitClass != null)
                    {
                        var type = Type.GetType(unitClass);

                        if (type != null)
                        {
                            ArmyUnit unit = (ArmyUnit)Activator.CreateInstance(type);

                            armyBaseSumECost += unit.ArmyECoast * (int)units[unitClassAlias];
                        }
                    }
                }
            }

            var    mainCharacter      = PlanetHelper.GetMainCharacter(1);
            var    charSkillLevel     = 0;
            double charSkillBaseValue = 0;

            if (null != mainCharacter)
            {
                var charSkills = mainCharacter.GetSkillLevels();

                charSkillLevel     = (int)charSkills["s20"];
                charSkillBaseValue = mainCharacter.GetSkill("s20").GetValue();
            }

            var armyResultSumECost = armyBaseSumECost;

            if (0 < charSkillLevel)
            {
                armyResultSumECost = armyBaseSumECost * (charSkillLevel * charSkillBaseValue);
            }

            double saldoResource = 0;

            saldoResource += resourceValueAdded;

            if ("EMax" == resourceName)
            {
                saldoResource -= armyResultSumECost;
            }

            double sumResourceValue = resourceCurrentValue + saldoResource * duration;

            double intSumResourceValue = sumResourceValue;

            return((intSumResourceValue < maxResourceValue) ? intSumResourceValue : maxResourceValue);
        }