public void RenderStats(IStateOwner pOwner, SKCanvas pRenderTarget, PauseGameState Source, GameStateSkiaDrawParameters Element) { //delegate... var PausedState = Source.PausedState; if (PausedState != null) { RenderingProvider.Static.DrawStateStats(pOwner, pRenderTarget, PausedState, Element); } }
void InitStates() { cardSelectionState = new CardSelectionState(this); pairSelectionState = new PairSelectionState(this); memorizeCardsState = new MemorizeCardsState(this, 0.5f); matchingCardsState = new MatchingCardsState(this, 0.2f); pauseGameState = new PauseGameState(this); endGameState = new EndGameState(this); gameState = cardSelectionState; }
private void InitDrawData(IStateOwner pOwner, PauseGameState Source, GameStateSkiaDrawParameters Element) { if (Source.PausedState is GameplayGameState std) { var rgen = new Random(); SKBitmap[] availableImages = std.GetTetrominoSKBitmaps(); var Areause = pOwner.GameArea; Source.FallImages = new List <PauseGameState.PauseFallImageBase>(); for (int i = 0; i < PauseGameState.NumFallingItems; i++) { PauseGameState.PauseFallImageSkiaSharp pfi = new PauseGameState.PauseFallImageSkiaSharp(); pfi.OurImage = TetrisGame.Choose(availableImages); pfi.XSpeed = 0; pfi.YSpeed = (float)(rgen.NextDouble() * 5); pfi.AngleSpeed = 0; //(float)(rgen.NextDouble() * 20) - 10; pfi.XPosition = (float)rgen.NextDouble() * (float)Areause.Width; pfi.YPosition = (float)rgen.NextDouble() * (float)Areause.Height; Source.FallImages.Add(pfi); } } }
public void Render(IStateOwner pOwner, SKCanvas pRenderTarget, PauseGameState Source, GameStateSkiaDrawParameters Element) { if (!Source.DrawDataInitialized) { InitDrawData(pOwner, Source, Element); Source.DrawDataInitialized = true; } if (GameOverTextPaint == null) { GameOverTextPaint = new SKPaint(); GameOverTextPaint.Color = SKColors.Black; GameOverTextPaint.TextSize = 24; GameOverTextPaint.IsAntialias = true; GameOverTextPaint.Typeface = TetrisGame.RetroFontSK; } String sPauseText = "Pause"; SKCanvas g = pRenderTarget; var Bounds = Element.Bounds; var FallImages = Source.FallImages; SKRect MeasureBounds = new SKRect(); var measureresult = GameOverTextPaint.MeasureText(sPauseText, ref MeasureBounds); //render the paused state. //TetrisGame.RetroFontSK if (Source.PauseGamePlayerState != null) { RenderingProvider.Static.DrawElement(Source, pRenderTarget, Source.PauseGamePlayerState, Element); } var ColorShader = SKShader.CreateColor(new SKColor(128, 128, 0, 128)); var PerlinShader = SKShader.CreatePerlinNoiseFractalNoise(0.5f, 0.5f, 4, 0, new SKPointI((int)Element.Bounds.Width, (int)Element.Bounds.Height)); //SKShader.CreatePerlinNoiseFractalNoise(0.5f, 0.5f, 5, (float)TetrisGame.rgen.NextDouble() * 3000000); var DualPerlinShader = SKShader.CreateCompose(SKShader.CreatePerlinNoiseTurbulence(0.5f, 0.5f, 4, (float)TetrisGame.rgen.NextDouble() * 3000000), PerlinShader); var Gradcolors = new SKColor[] { new SKColor(0, 255, 255), new SKColor(255, 0, 255), new SKColor(255, 255, 0), new SKColor(0, 255, 255) }; //var sweep = SKShader.CreateSweepGradient(new SKPoint(128, 128), Gradcolors, null); //var sweep = SKShader.CreateTwoPointConicalGradient(new SKPoint(Element.Bounds.Width / 2, Element.Bounds.Height - 64), Element.Bounds.Width, // new SKPoint(Element.Bounds.Width / 2, 64), Element.Bounds.Width / 4, Gradcolors, null, SKShaderTileMode.Clamp); var sweep = SKShader.CreateLinearGradient(new SKPoint(0, 0), new SKPoint(Element.Bounds.Width, Element.Bounds.Height), Gradcolors, null, SKShaderTileMode.Repeat); // create the second shader var turbulence = SKShader.CreatePerlinNoiseTurbulence(0.05f, 0.05f, 4, 0); // create the compose shader var shader = SKShader.CreateCompose(sweep, turbulence, SKBlendMode.SrcOver); GrayBG.BlendMode = SKBlendMode.Luminosity; //GrayBG.BlendMode = SKBlendMode.Nor; //GrayBG.Color = new SKColor(0,0,0,128); //GrayBG.ColorFilter = SKColorFilter.CreateHighContrast(SKHighContrastConfig.Default); //GrayBG.Shader = SKShader.CreateLinearGradient(new SKPoint(Bounds.Left, Bounds.Top), new SKPoint(Bounds.Right, Bounds.Bottom), new SKColor[] { SKColors.Red, SKColors.Yellow, SKColors.Blue, SKColors.Green }, null, SKShaderTileMode.Repeat); //ColorShader; // SKShader.CreateCompose(ColorShader,DualPerlinShader); GrayBG.Shader = shader; g.DrawRect(Bounds, GrayBG); foreach (var iterate in FallImages) { iterate.Draw(g); } g.ResetMatrix(); SKPoint DrawPos = new SKPoint(Bounds.Width / 2 - MeasureBounds.Width / 2, Bounds.Height / 2 - MeasureBounds.Height / 2); GameOverTextPaint.Color = SKColors.White; g.DrawText(sPauseText, new SKPoint(DrawPos.X + 2, DrawPos.Y + 2), GameOverTextPaint); GameOverTextPaint.Color = SKColors.Navy; g.DrawText(sPauseText, DrawPos, GameOverTextPaint); //retrieve the renderer for the MenuState object. //var basecall = RenderingProvider.Static.GetHandler(typeof(SKCanvas), typeof(MenuState), typeof(GameStateSkiaDrawParameters)); base.Render(pOwner, pRenderTarget, Source, Element); //basecall?.Render(pOwner, pRenderTarget, Source, Element); }