import gengine.*;
import gengine.math.*;
import gengine.components.*;

class MainSystem extends System
{
    private var logoEntity:Entity;
    private var time:Float = 0.0;

    public function new()
    {
        super();
    }

    override public function addToEngine(engine:Engine):Void
    {
        logoEntity = new Entity();
        logoEntity.add(new StaticSprite2D());
        var staticSprite2D:StaticSprite2D = logoEntity.get(StaticSprite2D);
        staticSprite2D.setSprite(Gengine.getResourceCache().getSprite2D("logo.png", true));
        engine.addEntity(logoEntity);
    }

    override public function update(dt:Float):Void
    {
        time += dt;

        var position = logoEntity.position;
        position.x = Math.cos(time * 2) * 128;
        logoEntity.position = position;

        if(Gengine.getInput().getScancodePress(41))
        {
            Gengine.exit();
        }
    }
}

class Application
{
    public static function init()
    {
        Gengine.setWindowSize(new IntVector2(640, 480));
        Gengine.setWindowTitle("01-static_sprite_2d");
    }

    public static function start(engine:Engine)
    {
        engine.addSystem(new MainSystem(), 0);
        engine.addSystem(new ScreenshotSystem(), 0);

        Gengine.getRenderer().getDefaultZone().setFogColor(new Color(0.5, 0.5, 0.5, 1));
    }
}