/*
    You "System Include" this because you want the wallpaper
    routine to stay in mem even if this task is killed.
*/

#define NUM_STARS   GR_WIDTH * GR_HEIGHT / 2160
// Derived from ratio for 600 for 1440x900

class Star
{
    U16 x, y;

} wall_stars[NUM_STARS];

U0 (*old_wall_paper)(CTask *task);

U0 WallPaperStars(CTask *task)
{
    I64  i;
    CDC *dc = DCAlias(gr.dc2, task);

    dc->color = YELLOW;

    for (i = 0; i < NUM_STARS; i++)
    {
        GrPlot(dc, wall_stars[i].x, wall_stars[i].y);

        if (++wall_stars[i].y > GR_HEIGHT)
        {
            wall_stars[i].y = 0;
            wall_stars[i].x = RandU16 % GR_WIDTH;
        }
    }

    DCDel(dc);

    //Uncomment the following if you wish. Will draw the old wallpaper over this one.
    //old_wall_paper(task);

    if (gr_palette[0] > gr_palette[15])
        task->text_attr = WHITE << 4 + WHITE;
    else
        task->text_attr = BLACK << 4 + BLACK;

}

U0 WallInit()
{
    I64 i;

    if (Fs != sys_task)
    {
        "\nMust be System Included. (SHIFT-F5 / RightClick->System Include) \n";
        return;
    }
    old_wall_paper = gr.fp_wall_paper;

    for (i = 0; i < NUM_STARS; i++)
    {
        wall_stars[i].x = RandU16 % GR_WIDTH;
        wall_stars[i].y = RandU16 % GR_HEIGHT;
    }

    gr.fp_wall_paper = &WallPaperStars;
}

WallInit;