public ScorePage( AssetsLoader assets, ISettingsRepository settingsRepository, IScreenTransformationMatrixProvider matrixScaleProvider, ILocalizedStringsRepository localizedStringsRepository) { _font = assets.Font; _background = assets.OtherSprites["scoreBackground"]; _matrixScaleProvider = matrixScaleProvider; _titleText = localizedStringsRepository.Get(GameStringsLoader.ScorePageTitleString); _titleScalingObject = new ScalingObject(1f, 1.2f, 1.0f); _titleDrawingInfos = new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 100f), Origin = _font.GetTextCenter(_titleText) }; float textsScale = 0.4f; var bestFarts = settingsRepository.GetOrSetInt(GameScores.BestFartsScoreKey, default); var bestNumberOfMeters = settingsRepository.GetOrSetInt(GameScores.BestNumberOfMetersScoreKey, default); var bestVegetablesEaten = settingsRepository.GetOrSetInt(GameScores.BestVegetablesEatenScoreKey, default); _scoreInfos = new List <ScoreRecordText>() { new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.BestNumberOfMetersScoreKey)}{bestNumberOfMeters}", new DrawingInfos() { Position = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 100f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }), new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.BestVegetablesEatenScoreKey)}{bestVegetablesEaten}", new DrawingInfos() { Position = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 140f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }), new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.BestFartsScoreKey)}{bestFarts}", new DrawingInfos() { Position = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 180f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }), }; _nTexts = _scoreInfos.Count; _currentTextId = 0; _fadeObject = new FadeObject(TimeSpan.FromMilliseconds(500), Color.White); _fadeObject.FadeInCompleted += _textFadeObject_FadeInCompleted; _fadeObject.FadeIn(); }
public GameOrchestrator( Func <InfartGame> gameFactory, Func <MainMenuPage> menuFactory, Func <ScorePage> scoreFactory, GraphicsDevice graphicsDevice, AssetsLoader assets, ISettingsRepository settingsRepository, IScreenTransformationMatrixProvider matrixScaleProvider, IWebPageOpener webPageOpener, ILocalizedStringsRepository localizedStringsRepository) { _gameFactory = gameFactory ?? throw new ArgumentNullException(nameof(gameFactory)); _menuFactory = menuFactory ?? throw new ArgumentNullException(nameof(menuFactory)); _scoreFactory = scoreFactory ?? throw new ArgumentNullException(nameof(scoreFactory)); _webPageOpener = webPageOpener ?? throw new ArgumentNullException(nameof(webPageOpener)); _graphicsDevice = graphicsDevice ?? throw new ArgumentNullException(nameof(graphicsDevice)); _assets = assets ?? throw new ArgumentNullException(nameof(assets)); _settingsRepository = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository)); _localizedStringsRepository = localizedStringsRepository ?? throw new ArgumentNullException(nameof(localizedStringsRepository)); _matrixScaleProvider = matrixScaleProvider ?? throw new ArgumentNullException(nameof(matrixScaleProvider)); if (_matrixScaleProvider is DynamicScalingMatrixProvider) { (_matrixScaleProvider as DynamicScalingMatrixProvider).ScaleMatrixChanged += GameOrchestrator_ScaleMatrixChanged; } RegenerateRenderTarget(); ShouldEndApplication = false; _stateTransition = new FadeObject(_fadeDuration, Color.White); _stateTransition.FadeOutCompleted += _stateTransition_FadeOutCompleted; }
public GameOrchestrator( Func <RellowGame> gameFactory, Func <MainMenuPage> menuFactory, GraphicsDevice graphicsDevice, IScreenTransformationMatrixProvider matrixScaleProvider, SoundManager soundManager, IWebPageOpener webPageOpener) { _gameFactory = gameFactory ?? throw new ArgumentNullException(nameof(gameFactory)); _menuFactory = menuFactory ?? throw new ArgumentNullException(nameof(menuFactory)); _webPageOpener = webPageOpener ?? throw new ArgumentNullException(nameof(webPageOpener)); _soundManager = soundManager ?? throw new ArgumentNullException(nameof(soundManager)); _graphicsDevice = graphicsDevice ?? throw new ArgumentNullException(nameof(graphicsDevice)); _matrixScaleProvider = matrixScaleProvider ?? throw new ArgumentNullException(nameof(matrixScaleProvider)); if (_matrixScaleProvider is DynamicScalingMatrixProvider) { (_matrixScaleProvider as DynamicScalingMatrixProvider).ScaleMatrixChanged += GameOrchestrator_ScaleMatrixChanged; } RegenerateRenderTarget(); ShouldEndApplication = false; _stateTransition = new FadeObject(_fadeDuration, Color.White); _stateTransition.FadeOutCompleted += _stateTransition_FadeOutCompleted; }
public RellowGame( IScreenTransformationMatrixProvider matrixScaleProvider, AssetsLoader assetsLoader, GameOrchestrator gameOrchestrator, SoundManager soundManager, ISettingsRepository settingsRepository, ILocalizedStringsRepository localizedStringsRepository) { _localizedStringsRepository = localizedStringsRepository; _matrixScaleProvider = matrixScaleProvider ?? throw new ArgumentNullException(nameof(matrixScaleProvider)); _gameButtonsManager = new GameButtonsManager( assetsLoader, localizedStringsRepository, new Vector2(60f, 800f)); _scoreDifferentialPopups = new List <PopupText>(); _soundManager = soundManager ?? throw new ArgumentNullException(nameof(soundManager)); _gameOrchestrator = gameOrchestrator ?? throw new ArgumentNullException(nameof(gameOrchestrator)); _settingsRepository = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository)); _currentGameState = GameStates.PlayingWaitingForInput; _gameColors = new UIColors(_gameButtonsManager.SpawnableColors.Select(c => c.ColorGraphic).ToArray()); _choiceTime = TimeSpan.FromSeconds(2.5); _backgroundRectangle = new Rectangle(0, 0, matrixScaleProvider.VirtualWidth, matrixScaleProvider.VirtualHeight); _scoreTextTitle = localizedStringsRepository.Get(GameStringsLoader.ScoreStringKey); _gameButtonsManager = new GameButtonsManager( assetsLoader, localizedStringsRepository, new Vector2(60f, 720f)); _gameButtonsManager.OnLost += _gameButtonsManager_OnLost; _gameButtonsManager.OnWon += _gameButtonsManager_OnWon; _writingFont = assetsLoader.WritingFont; _colorTextBackgroundRectangle = new Rectangle( 0, 500, matrixScaleProvider.VirtualWidth, 120); _numberOfVictories = 0; _score = 0; _timeProgressBar = new ProgressBar( new Rectangle( 0, 0, matrixScaleProvider.VirtualWidth, matrixScaleProvider.VirtualHeight), _gameColors.TimerBarColor, (int)_choiceTime.TotalMilliseconds); UpdateScoreString(); NewRound(); }
/// <summary> /// Camera constructor with scale matrix provider /// </summary> /// <param name="screenTransformationMatrixProvider"></param> public Camera2D(IScreenTransformationMatrixProvider screenTransformationMatrixProvider) { Rotation = 0; Zoom = 1; Position = Vector2.Zero; _scalingMatrixProvider = screenTransformationMatrixProvider; Origin = new Vector2(screenTransformationMatrixProvider.VirtualWidth / 2f, screenTransformationMatrixProvider.VirtualHeight / 2f); }
protected override void Initialize() { _matrixScaleProvider = new DynamicScalingMatrixProvider( new GameWindowScreenSizeChangedNotifier(Window), GraphicsDeviceManager.GraphicsDevice, 800, 480, true); base.Initialize(); }
/// <summary> /// Touch event informations /// </summary> /// <param name="screenTransformationMatrixProvider"></param> /// <param name="time"></param> /// <param name="location"></param> public TouchEventArgs( IScreenTransformationMatrixProvider screenTransformationMatrixProvider, TimeSpan time, TouchLocation location) { RawTouchLocation = location; Time = time; var pointPosition = screenTransformationMatrixProvider?.PointToScreen((int)location.Position.X, (int)location.Position.Y) ?? location.Position.ToPoint(); Position = new Vector2(pointPosition.X, pointPosition.Y); }
/// <summary> /// Mouse event infos /// </summary> /// <param name="screenTransformationMatrixProvider"></param> /// <param name="time"></param> /// <param name="previousState"></param> /// <param name="currentState"></param> /// <param name="button"></param> public MouseEventArgs( IScreenTransformationMatrixProvider screenTransformationMatrixProvider, TimeSpan time, MouseState previousState, MouseState currentState, MouseButton button = MouseButton.None) { PreviousState = previousState; CurrentState = currentState; var pointPosition = screenTransformationMatrixProvider?.PointToScreen(currentState.X, currentState.Y) ?? new Point(currentState.X, currentState.Y); Position = new Vector2(pointPosition.X, pointPosition.Y); Button = button; ScrollWheelValue = currentState.ScrollWheelValue; ScrollWheelDelta = currentState.ScrollWheelValue - previousState.ScrollWheelValue; Time = time; }
/// <summary> /// Mouse input listener /// </summary> /// <param name="screenTransformationMatrixProvider"></param> public MouseListener(IScreenTransformationMatrixProvider screenTransformationMatrixProvider) { ScreenTransformationMatrixProvider = screenTransformationMatrixProvider; DoubleClickMilliseconds = 500; DragThreshold = 2; }
public OverlayPopup( string title, string text, SpriteFont font, IScreenTransformationMatrixProvider matrixScaleProvider, ILocalizedStringsRepository localizedStringsRepository, Action playAgainFunction, Action exitFunction) { _font = font; _backgroundRectangle = new Rectangle(0, 0, matrixScaleProvider.VirtualWidth, matrixScaleProvider.VirtualHeight); _backgroundColor = Color.Gray.WithAlpha(0.7f); int popupRectangleWidth = 900; _popupRectangle = new Rectangle( (matrixScaleProvider.VirtualWidth - popupRectangleWidth) / 2, 260, popupRectangleWidth, popupRectangleWidth + 200); _popupBackgroundColor = Definitions.PrimaryBackgroundColor.WithAlpha(1f); _popupRectangleShadow = new Rectangle( _popupRectangle.X + 15, _popupRectangle.Y + 15, _popupRectangle.Width, _popupRectangle.Height); _popupShadowBackgroundColor = Color.Black.WithAlpha(1f); _titleDrawingInfos = new DrawingInfos() { Position = new Vector2( matrixScaleProvider.VirtualWidth / 2, _popupRectangle.Y + _popupRectangle.Height / 4), Origin = _font.GetTextCenter(title), OverlayColor = Color.Black }; _textDrawingInfos = new DrawingInfos() { Position = _titleDrawingInfos.Position + new Vector2(0f, 200f), Origin = _font.GetTextCenter(text), Scale = 0.6f, OverlayColor = Color.White }; TitleText = title; Text = text; _playAgainButton = new FloatingTextButton( localizedStringsRepository.Get(GameStringsLoader.PlayAgainStringKey), new DrawingInfos() { Position = _textDrawingInfos.Position + new Vector2(0f, 250f), Origin = _font.GetTextCenter(localizedStringsRepository.Get(GameStringsLoader.PlayAgainStringKey)), OverlayColor = Definitions.PrimaryForegroundColor, }, _font, playAgainFunction, 0.7f, 0.8f); _exitButton = new FloatingTextButton( localizedStringsRepository.Get(GameStringsLoader.ExitStringKey), new DrawingInfos() { Position = _textDrawingInfos.Position + new Vector2(0f, 450f), Origin = _font.GetTextCenter(localizedStringsRepository.Get(GameStringsLoader.ExitStringKey)), OverlayColor = Definitions.PrimaryForegroundColor }, _font, exitFunction, 0.7f, 0.8f); }
public MainMenuPage( AssetsLoader assetsLoader, GameOrchestrator gameOrchestrator, IScreenTransformationMatrixProvider matrixScaleProvider, ILocalizedStringsRepository localizedStringsRepository, RateMeDialog rateMeDialog, ISettingsRepository settingsRepository) { _backgroundRectangle = new Rectangle(0, 0, matrixScaleProvider.VirtualWidth, matrixScaleProvider.VirtualHeight); var titleFont = assetsLoader.TitleFont; _writingFont = assetsLoader.WritingFont; _rateMeDialog = rateMeDialog ?? throw new ArgumentNullException(nameof(rateMeDialog)); const string titleText = "RELLOW"; _title = new FloatingText( titleText, new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 250f), Origin = titleFont.GetTextCenter(titleText), OverlayColor = _foregroundColor }, titleFont); var playText = localizedStringsRepository.Get(GameStringsLoader.PlayStringKey); _playButton = new FloatingTextButton( playText, new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 850f), Origin = _writingFont.GetTextCenter(playText), OverlayColor = _foregroundColor }, _writingFont, () => { gameOrchestrator.SetGameState(); }); var aboutText = localizedStringsRepository.Get(GameStringsLoader.AboutStringKey); _aboutButton = new FloatingTextButton( aboutText, new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 1150f), Origin = _writingFont.GetTextCenter(aboutText), OverlayColor = _foregroundColor }, _writingFont, () => { gameOrchestrator.SetAboutState(); }); var currentScore = settingsRepository.GetOrSetInt(Definitions.SCORE_KEY, 0); _scoreText = $"{localizedStringsRepository.Get(GameStringsLoader.ScoreStringKey)}:{currentScore}"; _scoreDrawingInfos = new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, matrixScaleProvider.VirtualHeight - 250f - 200f), Origin = _writingFont.GetTextCenter(_scoreText), OverlayColor = _scoreColor, Scale = 0.5f }; }
public GameOverPage( IScreenTransformationMatrixProvider matrixScaleProvider, AssetsLoader assets, ISettingsRepository settingsRepository, int thisGameNumberOfVegetablesEaten, int thisGameNumberOfMeters, int thisGameNumberOfFarts, ILocalizedStringsRepository localizedStringsRepository) { _font = assets.Font; _background = assets.OtherSprites["gameoverBackground"]; _matrixScaleProvider = matrixScaleProvider; _gameOverTextDrawingInfos = new DrawingInfos() { Position = new Vector2() { X = matrixScaleProvider.VirtualWidth / 2f, Y = 100f }, Origin = _font.GetTextCenter(_gameOverText) }; _gameOverScalingObject = new ScalingObject(1f, 1.2f, 1.0f); var bestFarts = settingsRepository.GetOrSetInt(GameScores.BestFartsScoreKey, default(int)); var bestNumberOfMeters = settingsRepository.GetOrSetInt(GameScores.BestNumberOfMetersScoreKey, default(int)); var bestVegetablesEaten = settingsRepository.GetOrSetInt(GameScores.BestVegetablesEatenScoreKey, default(int)); var bestNumberOfVegetablesEatenRecord = false; if (thisGameNumberOfVegetablesEaten > bestVegetablesEaten) { settingsRepository.SetInt(GameScores.BestVegetablesEatenScoreKey, thisGameNumberOfVegetablesEaten); bestNumberOfVegetablesEatenRecord = true; } var bestAliveTimeRecord = false; if (thisGameNumberOfMeters > bestNumberOfMeters) { settingsRepository.SetInt(GameScores.BestNumberOfMetersScoreKey, thisGameNumberOfMeters); bestAliveTimeRecord = true; } var bestNumberOfFartsRecord = false; if (thisGameNumberOfFarts > bestFarts) { settingsRepository.SetInt(GameScores.BestFartsScoreKey, thisGameNumberOfFarts); bestNumberOfFartsRecord = true; } const float textsScale = 0.4f; _scoreInfos = new List <ScoreRecordText>() { new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.NumberOfMetersString)}{thisGameNumberOfMeters}", new DrawingInfos() { Position = new Vector2(_gameOverTextDrawingInfos.Position.X / 2, _gameOverTextDrawingInfos.Position.Y + 200f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }, !bestAliveTimeRecord ? " " : "Record!"), new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.NumbersOfFartsString)}{thisGameNumberOfFarts}", new DrawingInfos() { Position = new Vector2(_gameOverTextDrawingInfos.Position.X / 2, _gameOverTextDrawingInfos.Position.Y + 125f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }, !bestNumberOfFartsRecord ? " " : "Record!"), new ScoreRecordText( $"{localizedStringsRepository.Get(GameStringsLoader.NumberOfVegetablesEaten)}{thisGameNumberOfVegetablesEaten}", new DrawingInfos() { Position = new Vector2(_gameOverTextDrawingInfos.Position.X / 2, _gameOverTextDrawingInfos.Position.Y + 162f), OverlayColor = Color.White.WithAlpha(0), Scale = textsScale }, !bestNumberOfVegetablesEatenRecord ? " " : "Record!"), }; _nTexts = _scoreInfos.Count; _currentTextId = 0; _fadeObject = new FadeObject(TimeSpan.FromMilliseconds(200), Color.White); _fadeObject.FadeInCompleted += _textFadeObject_FadeInCompleted; _fadeObject.FadeIn(); }
public MainMenuPage( AssetsLoader assets, RateMeDialog rateMeDialog, SoundManager soundManager, IScreenTransformationMatrixProvider matrixScaleProvider, ILocalizedStringsRepository localizedStringsRepository) { _font = assets.Font; _matrixScaleProvider = matrixScaleProvider; _rateMeDialog = rateMeDialog ?? throw new ArgumentNullException(nameof(rateMeDialog)); _soundManager = soundManager ?? throw new ArgumentNullException(nameof(soundManager)); _background = assets.OtherSprites["menuBackground"]; _playText = localizedStringsRepository.Get(GameStringsLoader.PlayButtonString); _scoreText = localizedStringsRepository.Get(GameStringsLoader.ScoreButtonString); _fartText = localizedStringsRepository.Get(GameStringsLoader.FartButtonString); _titleImage = assets.OtherSprites["gameTitle"]; _achievementText = "about"; _titleScalingObject = new ScalingObject(1f, 1.2f, 1.0f); _titleDrawingInfos = new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 100f), Origin = _titleImage.SpriteCenter }; _playScalingObject = new ScalingObject(0.5f, 0.7f, 1f); _playDrawingInfos = new DrawingInfos() { Position = new Vector2(140f, 250f), Origin = _font.GetTextCenter(_playText) }; _playTextSize = _font.MeasureString(_playText); _fartScalingObject = new ScalingObject(0.5f, 0.7f, 1f); _fartDrawingInfos = new DrawingInfos() { Position = new Vector2(140f, 320f), Origin = _font.GetTextCenter(_fartText), OverlayColor = new Color(155, 88, 48) }; _fartTextSize = _font.MeasureString(_fartText); _scoreTextSize = _font.MeasureString(_scoreText); _scoreScalingObject = new ScalingObject(0.5f, 0.7f, 1f); _scoreDrawingInfos = new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth - 150f, 250f), Origin = _font.GetTextCenter(_scoreText) }; _aboutTextSize = _font.MeasureString(_achievementText); _aboutScalingObject = new ScalingObject(0.5f, 0.7f, 1f); _aboutDrawingInfos = new DrawingInfos() { Position = new Vector2(matrixScaleProvider.VirtualWidth - 150f, 320f), Origin = _font.GetTextCenter(_achievementText) }; _soundManager.PlayMenuBackground(); }
/// <summary> /// Touch listener constructor /// </summary> /// <param name="screenTransformationMatrixProvider"></param> public TouchListener(IScreenTransformationMatrixProvider screenTransformationMatrixProvider) { _screenTransformationMatrixProvider = screenTransformationMatrixProvider ?? throw new ArgumentNullException(nameof(screenTransformationMatrixProvider)); }