Концептуальная реализация апгрейда оружия в игре - C#
Формулировка задачи:
Есть игра в которой есть оружие. Например у него есть УРОН, ВРЕМЯ ПЕРЕЗАРЯДКИ, КОЛ-ВО ПАТРОНОВ В МАГАЗИНЕ и ВЕС оружия. Не могу концептуально врубиться как реализовать чтобы каждый параметр имел, например, 4 стадии улучшения, соответственно для каждой стадии своя цена (рассчитывается динамически в зависимости от стоимости пушки и некоего коэффициента для данного параметра). Все это дело сохранялось потом каким-то образом, грубо говоря "что сереализовать?" При этом чтобы можно было добавляя новое оружие в игру автоматически присваивать возможность улучшения.
Еще вдогонку вопрос как нормальные люди реализуют такую схему когда у каждой стадии есть имя и описание:
Может создать класс с константами улучшений и описания?
name[0] = "УРОН";
desc[0,0] = "пули из серебра";
desc[0,1] = "улучшенные механизмы";
name[1] = "КОЛ-ВО ПАТРОНОВ";
desc[1,0] = "увеличение обоймы";
desc[1,1] = "двойной магазин";
for(int i =0; i < updates; i++) {
Modding newMod = new Modding();
newMod.name = name[i];
for(int k =0; k < desc.GetLength(2); k++) {
newMod.desc = desc[k];
//рисуем кнопку с описанием
}
}Решение задачи: «Концептуальная реализация апгрейда оружия в игре»
textual
Листинг программы
[Serializable]
public class Weapon : List<IGameComponent>
{
}
[Serializable]
public class Damage : IGameComponent
{
private float[] prices = {2f, 3.5f, 4f, 5.5f};
private string[] names = { "Стандарт", "Стандарт +", "Профи", "Супер" };
public int UpgradeLevel { get; set; }
public float PriceKoeff
{
get { return prices[UpgradeLevel]; }
}
public string Name
{
get { return names[UpgradeLevel]; }
}
}
public interface IGameComponent
{
int UpgradeLevel { get; set; }
float PriceKoeff { get; }
string Name { get; }
}