Ответы пользователя по тегу Программирование
  • Как правильно спроектировать "космический корабль"?

    Используй систему статов. Например у тебя есть класс

    enum StatType {
       speed;
       power;
       mobility;
    }
    
    class StatManager {
        // Выставляет начальное значение стата
        void setStateBase(StatType type, float value);
       // Добавляет новый модификатор для стата
        void addStatModf(StatType type, StatModf modf);
        // Удаляет модификатор стата
        void removeStatModf(StatType type, StatModf modf);
        
        // Возвращает значение стата со всеми повешенными на него StatModf 
        Float getStateValue(StatType type);
    }
    
    enum StatModfType {
       set;
       add;
       mult;
    }
    
    class StatModf {
       var StatModfType type; // как именно модификатор влияет
       var Float value;  // значение с которым он влияет
    }


    При выполнении getStateValue перебирай все модификаторы для этого стата на базовое значение.
    Рекомендую применять модификаторы в порядке их типа (StatModfType) вначале set потом mult, потом add а не в порядке добавления. Тут самый простой вариант предложен, подумай и переработай под свои нужны.
    Ответ написан
    1 комментарий