Есть у нас 10 игроков у каждого есть свой номер. Не обязательно по порядку.
1,7,25,13,44,18,77,84,33,10
На игрок могут быть наложены быть эффекты, например:
Яд с уроном 3-5 на 5 ходов и горение на 10-20 на 2 хода. Одновременно может быть неограниченное количество эффектов.
P[1] [1,3,7,5],[2,10,20,2].
P[7] [1,3,7,5]
P[25] [2,10,20,2]
Эффекты могут меняться. Допустим один кончился он удалился, либо добавляться новые.
Мы проходим по всем эффектам каждый раз, когда доходим до нужного.
Поэтому нужно:
1) возможность проходить по списку эффектов.
2) добавление в конец
3) удаление из любого места.
Хотя тут спорно, может стоит отмечать, как "Закончилось" и пропускать
var P = new Dictionary();
Либо в структуре должны лежать LIST<> состоящий из массивов?
Игроки в списке. У каждого игрока список наложенных эффектов - List<Effect>. Эффект не должен обрабатывать изменения на игрока, он только хранит информацию об эффекте (это будут очень простые классы с парой-тройкой свойств).
Игрок не должен сам обрабатывать эффекты, для обработки сделать отдельный класс, что-то типа EffectDealer. И в классе обработки хода для каждого игрока запускать этот класс - что-то типа new EffectDealer(gamer).Deal();
И для каждого эффекта у вас будет отдельный класс, который будет изменять свойства игрока в зависимости от эффекта.
Умеете пользоваться интерфейсами? С ними будет гораздо удобнее, если сделать такую архитектуру, как я предлагаю. Если нужна помощь по моей архитектуре, то скажите, я напишу образцы классов для пары эффектов.
Давно собирался показать свою реализацию, но тогда не хватило времени доделать всё, что планировал, поэтому, сразу не дал ссылку. Но всё-таки решил показать, что получилось. https://github.com/lexxpavlov/TinyMages
Это не реальная игра, это демка, которую мне было интересно сделать. А в то время мне было интересно использовать WPF, MVVM, конвертеры, DelegateCommand-ы, а также интерфейсы - интересную реализацию интерфейсов в реальном проекте.
К сожалению, не успел доделать все типы эффектов, которые я планировал, в частности, специальные эффекты.