public void Build(IEnumerable<Player> players) { Children = new List<View>(); int badgesWidth = (badgeDictionary.Count - 1) * 15; double labelWidth = Width - badgesWidth - 25; LabelView topListTextView = new LabelView("Top 7") { X = 5, Width = Width - 10, Height = 15, Y = 5, }; double offsetY = 25; foreach (Player player in players.Take(7)) { CompositeView row = new CompositeView(Width, 20) { new LabelView(" " + player.PlayerName + " ") { Width = labelWidth, Height = 10, Align = TextAlignment.Left, Y = 5 }, }; double spacing = 0; foreach (var badge in player.Badges) { row.Add(new ImageView(badgeDictionary[badge], 15, 15) { X = labelWidth + spacing, Y = 2.5 }); spacing += 15; } frameView = new FrameView(Width, 20, row); row.X = 5; row.Y = offsetY; row.Width = Width - 10; row.BackgroundColor = new Color(239, 239, 239); Children.Add(row); offsetY += 25; } Children.Add(topListTextView); }
/// <summary> /// Updates the view based on the selected category. /// </summary> /// <param name="user"></param> public void Update(CurrentPlayer user) { CategoryName.Text = user.Categories[Category].Name; ArrowLeft.Visible = Category > 0; ArrowRight.Visible = Category < user.Categories.Count - 1; int totalStars = user.Categories[Category].Count * 3; int userStarsInCategory = 0; CompositeView levelButtons = new CompositeView(400, 400); int levelNumber = 0; int numberOfLevels = user.Categories[Category].Count; foreach (Level level in user.Categories[Category]) { // adds a button for each level in category userStarsInCategory += level.Stars; CompositeView levelButton = new CompositeView(40, 40) { OnClick = () => OnLevelSelect(level), X = levelNumber % (int)Math.Sqrt(numberOfLevels) * 50 + 5, Y = levelNumber / (int)Math.Sqrt(numberOfLevels) * 50 + 5, BackgroundColor = level.Unlocked ? new Color(40, 130, 120) : new Color(190, 190, 190) }; // gives each levelbutton a level number levelButton.Add( new LabelView((levelNumber + 1).ToString()) { Width = levelButton.Width, Height = levelButton.Width * 0.75, BackgroundColor = level.Unlocked ? new Color(40, 130, 120) : new Color(190, 190, 190), TextColor = new Color(255, 255, 255), }); double starsize = levelButton.Width * 0.25; // Centeres the stars horizontally double startPostition = (levelButton.Width - (starsize)) / 2; if (level.Stars == 2) { startPostition = levelButton.Width / 2 - starsize; } else if (level.Stars == 3) { startPostition = (levelButton.Width - (starsize)) / 2 - starsize; } for (int n = 0; n < level.Stars; n++) { levelButton.Add(new ImageView("star_activated.png", starsize, starsize) { Y = levelButton.Height - starsize, X = startPostition }); startPostition += starsize; } levelButtons.Add(levelButton); levelNumber += 1; // finds the badge associated with the specific category switch (user.Categories[Category].Name) { case "Tutorial": BadgeView.Image = "tutorial_badge.png"; break; case "Potenser": BadgeView.Image = "potens_badge.png"; break; case "Brøker": BadgeView.Image = "brøkbadge.png"; break; case "Parenteser": BadgeView.Image = "parenthesis_badge.png"; break; case "Master of Algebra": BadgeView.Image = "master_of_algebrabadge.png"; break; default: break; } } // shows how many start the user have out of the total amount of start possible StarTextView.Text = userStarsInCategory + " / " + totalStars; levelButtons.Width = (int)Math.Sqrt(numberOfLevels) * 50; levelButtons.Height = levelNumber / (int)Math.Sqrt(numberOfLevels) * 50; Levels.SetContent(levelButtons); }
public void Build(CurrentPlayer user) { MenuButton = new ButtonView("Menu", () => { if (OnExit != null) { OnExit(); } }) { Width = 75, Height = 30, BackgroundColor = new Color(193, 57, 43), TextColor = new Color(255, 255, 255), }; TitelView = new CompositeView(200, 40) { X = 100, Y = 10, }; CategoryName = new LabelView(user.Categories[Category].Name) { Width = TitelView.Width * 0.6, Height = TitelView.Height, X = TitelView.X - (TitelView.Width * 0.6) / 2 }; StarTextView = new LabelView("") { Width = TitelView.Width * 0.15, Height = 15, X = CategoryName.X + CategoryName.Width + 7.5, Y = CategoryName.Y + ((CategoryName.Height) / 2) - 7.5 }; StarView = new ImageView("star_activated.png", TitelView.Width * 0.10, TitelView.Width * 0.10) { X = CategoryName.X + CategoryName.Width + StarTextView.Width + 10, Y = CategoryName.Y + 0.5 * (TitelView.Width * 0.10) }; BadgeView = new ImageView("tutorialbadge.png", TitelView.Width * 0.15, TitelView.Width * 0.15) { X = 0 - ((TitelView.Width * 0.10) / 2) + 5, Y = CategoryName.Y + (0.5 * (TitelView.Width * 0.15)) - 10 }; TitelView.Add(StarTextView); TitelView.Add(CategoryName); TitelView.Add(StarView); TitelView.Add(BadgeView); Levels = new FrameView(Width - 100, Height - (CategoryName.Y + CategoryName.Height)) { X = 50, Y = CategoryName.Y + CategoryName.Height, }; ArrowRight = new VectorImageView(345, Levels.Y + Levels.Height / 2 - 75 / 2, 50, 75) { { 0,0 }, { 25,75/2 }, { 0,75 }, }; ArrowRight.Visible = Category < user.Categories.Count - 1; ArrowRight.BackgroundColor = new Color(44, 119, 130); ArrowRight.OnClick = () => { if (Category < user.Categories.Count - 1) { Category++; OnChanged(); } }; ArrowLeft = new VectorImageView(5, Levels.Y + Levels.Height / 2 - 75 / 2, 50, 75) { { 25,75/2 }, { 50,0 }, { 50,75 }, }; ArrowLeft.BackgroundColor = new Color(44, 119, 130); ArrowLeft.OnClick = () => { if (Category > 0) { Category--; OnChanged(); } }; ArrowLeft.Visible = Category > 0; Children.Add(MenuButton); Children.Add(ArrowLeft); Children.Add(ArrowRight); Children.Add(Levels); Children.Add(TitelView); Update(user); }
public void Build(GameModel game) { CurrentPlayer user = game.User; IEnumerable<Player> players = game.Players; BackgroundColor = new Color(255, 255, 255); WelcomeText = new LabelView("Velkommen " + user.PlayerName) { X = 10, Y = 10, Height = 50, Width = 220 }; BadgesView = new CompositeView(220, 40) { X = WelcomeText.X, Y = WelcomeText.Y + WelcomeText.Height }; BadgeInfoText = new LabelView("Badges: ") { Width = 100, Height = 20, X = -10 }; BadgesView.Add(BadgeInfoText); if (user.Badges != null) { // start spacing half the width of a badge int spacing = -10; foreach (BadgeName badge in user.Badges) { if (PlayerView.badgeDictionary.ContainsKey(badge)) { BadgesView.Add(new ImageView(PlayerView.badgeDictionary[badge], 25, 25) { X = BadgeInfoText.X + BadgeInfoText.Width + spacing, }); } spacing += 30; } } VectorImageView playIcon = new VectorImageView(0, 0, 100, 100) { { 25,25 }, { 75,50 }, { 25,75 } }; LogoutButton = new ButtonView("Log ud", () => { if (OnLogout != null) { OnLogout(); } }) { Width = 50, Height = 15, TextColor = new Color(255, 255, 255), BackgroundColor = new Color(193, 57, 43) }; playIcon.BackgroundColor = new Color(255, 255, 255); PlayButton = new CompositeView(100, 100) { playIcon, }; PlayButton.BackgroundColor = new Color(39, 174, 97); PlayButton.X = 10; PlayButton.Y = BadgesView.Y + BadgesView.Height; VectorImageView levelIcon1 = new VectorImageView(0, 0, 100, 100) { { 20,20 }, { 45,20 }, { 45,45 }, { 20,45 }, { 20,20 }, }; VectorImageView levelIcon2 = new VectorImageView(0, 0, 100, 100) { { 80,20 }, { 80,45 }, { 55,45 }, { 55,20 }, { 80,20 }, }; VectorImageView levelIcon3 = new VectorImageView(0, 0, 100, 100) { { 80,80 }, { 55,80 }, { 55,55 }, { 80,55 }, { 80,80 }, }; VectorImageView levelIcon4 = new VectorImageView(0, 0, 100, 100) { { 20,80 }, { 20,55 }, { 45,55 }, { 45,80 }, { 20,80 }, }; levelIcon1.BackgroundColor = new Color(255, 255, 255); levelIcon2.BackgroundColor = new Color(255, 255, 255); levelIcon3.BackgroundColor = new Color(255, 255, 255); levelIcon4.BackgroundColor = new Color(255, 255, 255); LevelButton = new CompositeView(100, 100) { levelIcon1, levelIcon2, levelIcon3, levelIcon4, }; LevelButton.BackgroundColor = new Color(42, 128, 185); LevelButton.X = PlayButton.X + PlayButton.Width + 20; LevelButton.Y = BadgesView.Y + BadgesView.Height; PlayerList = new PlayerListView(players, 160, 200) { X = LevelButton.X + LevelButton.Width + 20, Y = WelcomeText.Y }; Children = new List<View>(){ LogoutButton, WelcomeText, LevelButton, PlayerList, PlayButton, BadgesView }; }