Example #1
0
        public void Draw()
        {
            if (sharedDrawingState.Seed != currentSeed)
            {
                UpdateSeed(sharedDrawingState.Seed);
                currentSeed = sharedDrawingState.Seed;
            }

            if (currentSeed is null)
            {
                return;
            }

            grassRandom.Reset();

            ctx.FillStyle = SkyColor;
            ctx.ClearRect(0, 0, 512, 512);
            ctx.FillRect(0, 0, 512, 512);

            treeDrawingContext.GrowthFactor = EasingHelper.EaseOutQuad(sharedDrawingState.GrowthControl * 0.75 + 0.25);
            treeDrawingContext.LeafFactor   = sharedDrawingState.ThicknessControl * 0.9;
            treeDrawingContext.IsDead       = sharedDrawingState.IsDead;

            var grassHeight = TreeYOffset - 50;

            ctx.FillStyle = GrassBackgroundColor;
            ctx.FillRect(0, grassHeight, CanvasWidth, CanvasHeight - grassHeight);

            var grassForegroundLimit = TreeYOffset - 20;

            for (var y = grassHeight - 10; y < grassForegroundLimit; y += 5)
            {
                DrawGrass(y, 512);
            }

            treeDrawingContext.DrawTree(trunk);

            for (var y = grassForegroundLimit; y < CanvasHeight; y += 5)
            {
                DrawGrass(y, 512);
            }

            DrawWaterHUD();
        }