Nel mio gioco voglio che i personaggi siano in grado di lanciare incantesimi che infliggono una certa quantità di danno di un certo tipo ad altri personaggi nel gioco.
Voglio anche abilità che annullino una quantità di danno di un certo tipo da equipaggiare a un personaggio.
Non voglio dover programmare un enorme muro di resistenze al danno che di solito è 0 per ogni singolo personaggio nel gioco (in più voglio abilità che possono anche raddoppiare danno o trasformarlo), voglio la capacità innescata di essere in grado di modificare altre abilità. quindi ho pensato di mettere gli oggetti incantesimo in pila in modo che altre abilità possano modificarli. ma ecco il problema ogni abilità ha diversi nomi, numeri e tipi di variabili. Come posso accedere a ogni abilità che infligge danno da fuoco senza programmare un caso nella classe modificatore di abilità per ogni singola abilità che infligge una certa quantità di danno di un certo tipo. devo scrivere una lunga lista di attributi di abilità nella super classe, la maggior parte dei quali non userò? se lo faccio, è altrettanto brutto di dover scrivere un enorme elenco di variabili che modificano le abilità su ciascun personaggio. Voglio programmare un gioco senza dover scrivere lunghi elenchi di attributi su classi che non vengono utilizzate il 99% delle volte. È persino possibile?
es. Voglio un'abilità passiva che raddoppia la quantità di danni da fuoco che infliggi.
NON voglio farlo: Spell.target.fireDamageMultiplier = 2; perché poi avrò tonnellate di attributi simili su ogni singola entità
NON POSSO farlo: Spell.damage * = 2; perché non tutte le abilità hanno un attributo di danno
NON voglio farlo: Firebolt.damage * = 2; perché allora devo scrivere un caso speciale per ogni abilità che ha un attributo di danno
Ho pensato di avere diverse classi di abilità di quante ne possa ereditare la capacità, ma ho sentito di non farlo e c # non ha ereditarietà multipla. Leggo anche per favorire la composizione dell'ereditarietà, ma poi ho di nuovo il problema di avere una lunga lista di variabili (o riferimenti al tipo di incantesimo) per ogni incantesimo che nella maggior parte dei casi non userò. quindi questo non ha ancora risolto il mio problema di scrivere codice disordinato che diventa fuori controllo più abilità aggiungo.
Quindi, come faccio a modificare le abilità senza scrivere un caso speciale per ogni singola abilità?