Я работаю над пользовательским классом кнопок для моей игры XNA.Следовательно, я занимаюсь разработкой игры на C #.
Мой класс кнопок очень простой, он предоставляет обязательные события, такие как MouseOver, MouseOut, MouseDown и т. Д. Кроме того, у него есть некоторые открытые свойства, которые влияют на общий вид, например Text, TextAlign, BackgroundColor, TextColor и Font.
Каждая кнопка может находиться в 4 различных состояниях: нормальный, зависший, нажатый и неактивный.Я хотел бы дать разработчикам моей игры возможность указать определенные «перезаписи», которые будут контролировать внешний вид кнопки «на основе состояния».
К сожалению, я не могу придумать причудливое решение.В настоящее время я просто создаю массив, который может содержать отдельный экземпляр Button для каждого состояния.Теперь, если пользователь хочет создать перезапись для, скажем, состояния Hovered, он просто должен создать новый экземпляр Button в соответствующей позиции индекса массива button (я использовал перечисление для этого отображения, которое будет приведено к байтовому значению).чтобы получить правильную позицию индекса).Теперь пользователь может определить перезапись для каждой возможной комбинации свойств <->.
В методе рисования я наконец проверяю, какое состояние в данный момент является активным для моей кнопки, и рисую соответствующий экземпляр кнопки из моего массива.collection.
Это не очень чистое решение, поскольку оно создает большие накладные расходы в случае, если я хочу перезаписать TextColor только для одного состояния.Мне было интересно, как это обычно решается в более профессиональных решениях.
У кого-нибудь есть несколько советов по шаблонам проектирования, которые могут быть полезны в этой области?У меня были проблемы с поиском решения, так как мне не хватало значимых ключевых слов.