public Menu(MenuDefinition menuDefinition, IList <MenuItem> menuItems, FilteredKeyListener keyListener, Texture2D[] messageTextures, Texture2D selectTexture) : base(null) { MenuDefinition = menuDefinition; MenuItems = menuItems; SelectedIndex = 0; KeyListener = keyListener; SelectTexture = selectTexture; MessageTextures = messageTextures; }
public void Load(Stream stream) { using (stream) { using (var reader = new StreamReader(stream)) { var json = reader.ReadToEnd(); MenuData = JsonConvert.DeserializeObject <MenuData>(json); } } var menuSelectTexture = ContentManager.Load <Texture2D>(MenuData.SelectTextureName); foreach (var menuDefinition in MenuData.MenuDefinitions) { var menuItems = new List <MenuItem>(); var messageTextures = new Texture2D[menuDefinition.MessageTextures.Length]; for (var i = 0; i < messageTextures.Length; ++i) { messageTextures[i] = ContentManager.Load <Texture2D>(menuDefinition.MessageTextures[i]); } foreach (var itemDefinition in menuDefinition.MenuItems) { menuItems.Add(new MenuItem { Definition = itemDefinition, Texture = ContentManager.Load <Texture2D>(itemDefinition.TextureName) }); } //create a FilteredKeyListener to track the keys for the menus var trackKeys = new Keys[] { Keys.W, Keys.S, Keys.Down, Keys.Up, Keys.Enter }; var keyListener = new FilteredKeyListener(trackKeys); var menu = new Menu(menuDefinition, menuItems, keyListener, messageTextures, menuSelectTexture); Menus.Add(menuDefinition.Name, menu); } }