示例#1
0
 public static extern void SetRasterCallback(RasterCallback callback);
示例#2
0
 private static extern void TLN_SetRasterCallback(RasterCallback callback);
示例#3
0
    /* entry point */
    static int Main(string[] args)
    {
        int   c;
        int   frame = 0;
        float speed = 0;

        /* setup engine */
        engine     = Engine.Init(Hres, Vres, 2, 0, 20);
        foreground = engine.Layers[0];
        background = engine.Layers[1];

        /* load resources*/
        engine.LoadPath = "../assets/sonic";
        LoadLayer(foreground, "Sonic_md_fg1.tmx");
        LoadLayer(background, "Sonic_md_bg1.tmx");

        // load sequences for animations
        SequencePack sp            = SequencePack.FromFile("Sonic_md_seq.sqx");
        Sequence     waterSequence = sp.Find("seq_water");
        Palette      palette       = background.Palette;

        engine.Animations[0].SetPaletteAnimation(palette, waterSequence, true);

        /* setup raster callback */
        RasterCallback callback = new RasterCallback(MyRasterEffects);

        engine.SetRasterCallback(callback);

        /* main loop */
        window = Window.Create(null, WindowFlags.Vsync);
        while (window.Process())
        {
            /* inputs */
            if (window.GetInput(Input.Right))
            {
                speed += 0.02f;
                if (speed > 1.0f)
                {
                    speed = 1.0f;
                }
            }
            else if (speed > 0.0f)
            {
                speed -= 0.02f;
                if (speed < 0.0f)
                {
                    speed = 0.0f;
                }
            }

            if (window.GetInput(Input.Left))
            {
                speed -= 0.02f;
                if (speed < -1.0f)
                {
                    speed = -1.0f;
                }
            }
            else if (speed < 0.0f)
            {
                speed += 0.02f;
                if (speed > 0.0f)
                {
                    speed = 0.0f;
                }
            }

            /* scroll */
            posForeground += 3 * speed;
            foreground.SetPosition((int)posForeground, 0);
            for (c = 0; c < NumBackgroundStrips; c++)
            {
                posBackground[c] += (incBackground[c] * speed);
            }

            /* render to window */
            window.DrawFrame(frame);
            frame++;
        }

        /* deinit */
        sp.Delete();
        engine.Deinit();

        return(0);
    }