示例#1
0
        public ScrollView GetAddNewLayout(MenuItemType type, BaseMenuItem item = null)
        {
            var scrollView = new ScrollView(this);
            var layout = new LinearLayout(this);
            layout.Orientation = Orientation.Vertical;

            var aLabel = new TextView(this);
            aLabel.Text = string.Format("What is the name of the {0}?", type.ToString());
            layout.AddView(aLabel);

            var textField = new EditText(this);
            layout.AddView(textField);

            var saveButton = new Button(this);
            saveButton.Text = "Create";
            saveButton.Click += (sender, e) =>
            {
                switch (type)
                {
                    case MenuItemType.Game:
                        menu.Games.Add(new GameNode(textField.Text));
                        UpdateMenu();
                        SetContentView(GetHomeLayout());
                        break;
                    case MenuItemType.PlayerCharacter:
                        var newCharacter = new PlayerCharacterNode(textField.Text, (GameNode)item);
                        ((GameNode)item).Characters.Add(newCharacter);
                        var gameItem = (GameNode)UpdateMenu(type, newCharacter);
                        SetContentView(GetGameLayout(gameItem));
                        break;
                    case MenuItemType.Opponent:
                        var newOpponent = new OpponentMatchupNode(textField.Text, (PlayerCharacterNode)item);
                        ((PlayerCharacterNode)item).Opponents.Add(newOpponent);
                        var newItem = (PlayerCharacterNode)UpdateMenu(type, newOpponent);
                        SetContentView(GetCharacterLayout(newItem));
                        break;
                    default:
                        break;
                }
            };
            layout.AddView(saveButton);
            scrollView.AddView(layout);

            return scrollView;
        }
示例#2
0
        public BaseMenuItem UpdateMenu(MenuItemType? type = null, BaseMenuItem item = null)
        {
            foreach(var game in menu.Games)
            {
                foreach(var character in game.Characters)
                {
                    character.Opponents = character.Opponents.OrderBy(x => x.Title).ToList();
                }
                game.Characters = game.Characters.OrderBy(x => x.Title).ToList();
            }
            menu.Games = menu.Games.OrderBy(x => x.Title).ToList();
            XmlSerializer serializer = new XmlSerializer(typeof(MenuNode));
            string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            string filename = Path.Combine(path, "Data.xml");
            using (var streamWriter = new StreamWriter(filename))
            {
                serializer.Serialize(streamWriter, menu);
            }

            string content;

            using (var streamReader = new StreamReader(filename))
            {
                content = streamReader.ReadToEnd();
            }

            menu = menuFactory.GetMenu(content);
            if(type.HasValue && item != null)
            {
                switch(type.Value)
                {
                    case MenuItemType.PlayerCharacter:
                        PlayerCharacterNode pCharacter = (PlayerCharacterNode)item;
                        return menu.Games.Where(x => x.Title == pCharacter.Parent.Title).First();
                    case MenuItemType.Opponent:
                        OpponentMatchupNode oMatchup = (OpponentMatchupNode)item;
                        return menu.Games.Where(x => x.Title == oMatchup.Parent.Parent.Title).First()
                            .Characters.Where(y => y.Title == oMatchup.Parent.Title).First();
                }
            }
            return null;
        }