Menu getMenuFromNode(XmlNode menuNode) { Menu menu = new Menu(menuNode.Attributes["background"].InnerText, bool.Parse(menuNode.Attributes["canGoBack"].InnerText), game, menuNode.Attributes["initialChoice"].InnerText); ControllerFactory controllerFactory = new ControllerFactory(menu, game, megaman); foreach (XmlNode configItemNode in menuNode.ChildNodes) { if (configItemNode.Name == "choice") { MenuChoice menuChoice = getMenuChoiceFromNode(configItemNode); menu.AddSprite(menuChoice); menu.AddChoice(menuChoice); } else if (configItemNode.Name == "text") { menu.AddSprite(getMenuTextFromNode(configItemNode)); } } menu.AddController(controllerFactory.GetKeyboardController()); menu.AddController(controllerFactory.GetGamePadController()); return menu; }