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); }
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(); }
/// <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))); }
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()]; }
/// <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); }