Все сложнее...
Распределение и потребление работает нормально.
Модули на персонаже (экземпляры класса, наследованные от абстрактного класcа modulBasys) используют энергию в виде float величины EnergyPower
Они имеют максимально возможное значение и PowerEnergy не должно его превышать.
Контролируется это при помощи конструктора
Используется csharp
private float energyPower;//Текущее количество энергии
public float EnergyPower
{
get { return energyPower; }
set
{
energyPower = Mathf.Clamp(value, 0, energyMaxValue);
}
}
Модуль реактор пополняет у них всех значение PowerEnergy поочередно за один цикл
Используется csharp
private void ReloadAllEnergy()
{
foreach (ModulBasys modul in botController.modulController)
{
if (modul.modulStatus == ModulStatus.On)
{
EnergyPower -= modul.ReloadEnergy(power);
}
}
}
Проблемы и путаница возникает в меню распределения потребления энергии, которое работает с процентами от reactor.power
Т.е. я вызываю меню. В нем обьекты с экземплярами классов UI_ModulEnergy. В эти классы передается ссылка на соответствующие экземпляры классов ModulBasys (которые висят на персонаже) а так же в локальные переменные energyReloadQuoue и energyMaxValue.
Важно то, что energyReloadQuoue это процент от reactor.power а energyMaxValue это конкретная величина.
По нажатии на любой из обьектов UI_ModulEnergy появляется слайдер и можно регулировать процент потребления энергии, Но. Регулировка происходит процентами и ограничения должны быть в конкретной величине.
Ограничение контролируется таким образом
Используется csharp
private float energyReloadQuoue; //Процент потребления энергии
public float EnergyReloadQuoue
{
get { return energyReloadQuoue; }
set
{
if (value > 0)
{
energyReloadQuoue = Mathf.Clamp(value, 0, (energyMaxValue * 100) / reactorPower);
}
else
{
energyReloadQuoue = 0;
}
}
}
Сумбурно описал, но могу пояснить, если что...
Класс распределения энергии
http://pastebin.com/YEa36DUxБуду безмерно благодарен , а то уже несколько раз переписывал, все равно запутываюсь.