Делаете динамический менеджер сцен?

Прямо сейчас мой менеджер сцен работает с перечислением и регистром переключателей.

У меня есть метод, который сцена может вызывать, называется changeScene(MENU_SCENE) и так далее.

В самом диспетчере сцен у меня есть переключатель case, который говорит case MENU_SCENE: return new MenuScene().

Это означает, что каждый раз, когда я добавляю новую сцену, я должен добавить ее в случай переключения.

Есть ли способ сделать это без переключателя? В идеале я хотел бы, чтобы строка возвращала BaseScene*, но то, как я могу думать об этом, по-прежнему будет включать случай переключения (или вложенные ifs, поскольку строки в случаях не разрешены).

Спасибо


person jmasterx    schedule 05.01.2012    source источник


Ответы (1)


Похоже, вам нужна карта, где строка является ключом. Значение зависит от того, что сейчас находится в вашем операторе switch. Это может быть простая следующая строка или указатель на функцию, которую нужно вызвать, если вам нужен специальный код для каждого случая.

person Steve C    schedule 05.01.2012