From ced3d03bdb3ce866d832e03fb212865140905a9a Mon Sep 17 00:00:00 2001 From: Thomas Leyh Date: Sun, 24 Jul 2016 08:14:18 +0200 Subject: Add project files. --- V3/Screens/StatisticsScreen.cs | 186 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 V3/Screens/StatisticsScreen.cs (limited to 'V3/Screens/StatisticsScreen.cs') diff --git a/V3/Screens/StatisticsScreen.cs b/V3/Screens/StatisticsScreen.cs new file mode 100644 index 0000000..90e0ff4 --- /dev/null +++ b/V3/Screens/StatisticsScreen.cs @@ -0,0 +1,186 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Ninject; +using V3.Input; +using V3.Widgets; + +namespace V3.Screens +{ + /// + /// The screen for the statistics. + /// + // ReSharper disable once ClassNeverInstantiated.Global + public sealed class StatisticsScreen : AbstractScreen, IInitializable + { + private readonly ContentManager mContentManager; + private readonly IMenuFactory mMenuFactory; + private readonly MenuActions mMenuActions; + private readonly WidgetFactory mWidgetFactory; + private readonly AchievementsAndStatistics mAchievementsAndStatistics; + + private Button mButtonBack; + private SelectButton mSelectMission; + + private List mMenuList = new List(); + private Texture2D mRectangle; + + public StatisticsScreen(ContentManager contentManager, MenuActions menuActions, WidgetFactory widgetFactory, + IMenuFactory menuFactory, AchievementsAndStatistics achievementsAndStatistics) + : base(false, true) + { + mContentManager = contentManager; + mMenuActions = menuActions; + mWidgetFactory = widgetFactory; + mMenuFactory = menuFactory; + mAchievementsAndStatistics = achievementsAndStatistics; + } + + public void Initialize() + { + mRectangle = mContentManager.Load("Sprites/WhiteRectangle"); + + mButtonBack = mWidgetFactory.CreateButton("Zurück"); + mSelectMission = mWidgetFactory.CreateSelectButton(); + + var menu = mMenuFactory.CreateFormMenu(); + mMenuList.Add(menu); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Auswahl")); + menu.Widgets.Add(mSelectMission); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Zeit")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + string.Format("{0:T}",mAchievementsAndStatistics.mUsedTime))); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Getötete Gegner")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + string.Format("{0:00000}", mAchievementsAndStatistics.mKilledCreatures))); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Verlorene Einheiten")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + string.Format("{0:00000}", mAchievementsAndStatistics.mLostServants))); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("zurückgelegte Entfernung")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + string.Format("{0:00000}", mAchievementsAndStatistics.mWalkedDistance) + " m")); + + menu.Widgets.Add(mWidgetFactory.CreateEmptyWidget()); + menu.Widgets.Add(mButtonBack); + + menu = mMenuFactory.CreateFormMenu(); + + mMenuList.Add(menu); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Auswahl")); + menu.Widgets.Add(mSelectMission); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Zeit")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "00:00:00")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Getötete Gegner")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Verlorene Einheiten")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("zurückgelegte Entfernung")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateEmptyWidget()); + menu.Widgets.Add(mButtonBack); + + menu = mMenuFactory.CreateFormMenu(); + + mMenuList.Add(menu); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Auswahl")); + menu.Widgets.Add(mSelectMission); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Zeit")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "00:00:00")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Getötete Gegner")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Verlorene Einheiten")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("zurückgelegte Entfernung")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateEmptyWidget()); + menu.Widgets.Add(mButtonBack); + + for (var i = 0; i < mMenuList.Count; i++) + mSelectMission.Values.Add($"Mission {i + 1}"); + + menu = mMenuFactory.CreateFormMenu(); + + mMenuList.Add(menu); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Auswahl")); + menu.Widgets.Add(mSelectMission); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Zeit")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "00:00:00")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Getötete Gegner")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("Verlorene Einheiten")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateLabel("zurückgelegte Entfernung")); + menu.Widgets.Add(mWidgetFactory.CreateLabel(" " + "000000")); + + menu.Widgets.Add(mWidgetFactory.CreateEmptyWidget()); + menu.Widgets.Add(mButtonBack); + + mSelectMission.Values.Add("Gesamt"); + } + + public override bool HandleKeyEvent(IKeyEvent keyEvent) + { + if (keyEvent.KeyState == KeyState.Down && keyEvent.Key == Keys.Escape) + mMenuActions.Close(this); + + return true; + } + + public override bool HandleMouseEvent(IMouseEvent mouseEvent) + { + GetCurrentMenu().HandleMouseEvent(mouseEvent); + return true; + } + + public override void Update(GameTime gameTime) + { + if (mButtonBack.IsClicked) + { + mMenuActions.Close(this); + } + GetCurrentMenu().Update(); + } + + public override void Draw(GameTime gameTime, SpriteBatch spriteBatch) + { + var menu = GetCurrentMenu(); + var backgroundRectangle = new Rectangle((int)menu.Position.X, + (int)menu.Position.Y, (int)menu.Size.X, (int)menu.Size.Y); + backgroundRectangle.X -= 30; + backgroundRectangle.Y -= 30; + backgroundRectangle.Width += 60; + backgroundRectangle.Height += 60; + + spriteBatch.Begin(); + spriteBatch.Draw(mRectangle, backgroundRectangle, Color.LightGray); + spriteBatch.End(); + + GetCurrentMenu().Draw(spriteBatch); + } + + private IMenu GetCurrentMenu() + { + return mMenuList[mSelectMission.SelectedIndex]; + } + } +} -- cgit v1.2.1