Делаю игру для учебного проекта. На этапе инициализации у меня будет несколько вариантов выбора: первый boolean мод разработчика, вторым будет следовать выбор типа игры из двух enum и дальше третий выбор режим игры из трёх enum. На этапе инициализации игры я заполняю каждое поле, они финальные. Единственная проблема, я не могу понять как мне лучше хранить поведение игры.
Есть идея делать это так:
private final Map<Boolean, Map<GameType, Map<GameMode, ? extends BiFunction<Object[], Object[], Object>>>> behaviour;
Далее создать много наследников от BiFunction и инициализировать их следующим образом:
this.behaviour.put(false, new HashMap<>().put(GameType.RECHERCHE, new HashMap<>().put(GameMode.CHALLENGER, new myBehaviourFunctionOne())));
Правда тут у меня уже что-то не работает, проблема с типами.
и дальше в процессе выбора я бы хотел выдавать эту функцию с помощью геттера.
public <T extends BiFunction<Object[], Object[], Object>> T getBehaviour() {
return behaviour.get(isDevMode).get(gameType).get(gameMode);
}
В общем нужен совет в правильном ли направлении я иду, или есть более простые варианты реализации таких задач?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости