Сохранение поведения во вложенных Map

192
02 июля 2018, 19:20

Делаю игру для учебного проекта. На этапе инициализации у меня будет несколько вариантов выбора: первый 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);
    }

В общем нужен совет в правильном ли направлении я иду, или есть более простые варианты реализации таких задач?

READ ALSO
Digital Asset Links file not found

Digital Asset Links file not found

Я хочу сделать имплементацию диплинк

175
Неправильное поведение программы (Java)

Неправильное поведение программы (Java)

Описание проблемы скорее будет понятнее представленным кодом:

173
Как получить создателя файла в git

Как получить создателя файла в git

Всем привет! Как можно получить автора какого-либо файла, сохраненного в git репозитории, с помощью Java (использую класс JGit для подключения к git) ? И вообще...

177
Использование метода split класса String в Java

Использование метода split класса String в Java

В данный момент изучаю по книгам Ввод-ВыводЗадача такая необходимо получить из потока ввода с клавиатуры 2-а числовых значения, которые при...

177