Mercurial > projects > myrrdin
view src/viewconsumer.d @ 4:292df259cc85
view + sprite consumers, animated sprite working
author | fred@reichbier.de |
---|---|
date | Fri, 18 Jul 2008 16:12:41 +0200 |
parents | |
children |
line wrap: on
line source
module viewconsumer; import dsfml.window.all; import dsfml.system.all; import dsfml.graphics.all; import consumer; import renderer; import tango.io.Stdout; /* That is a consumer which sets and manipulates the render window view */ class ViewConsumer : Consumer { protected View view; this(Renderer renderer) { super(renderer); // set the initial view this.view = renderer.app.getView(); this.view.setFromRect(new FloatRect(0, 0, renderer.app.getWidth(), renderer.app.getHeight())); this.update_view(); } protected void update_view() { this.renderer.app.setView(this.view); } void move_view(float x=0, float y=0) { this.view.move(x, y); } } class InteractiveViewConsumer : ViewConsumer { this(Renderer renderer) { super(renderer); } bool handle_event(Event evt) { if (evt.Type == Event.EventType.KEYPRESSED) { float x=0, y=0; if(evt.Key.Code == KeyCode.LEFT) x -= 2; if(evt.Key.Code == KeyCode.RIGHT) x += 2; if(evt.Key.Code == KeyCode.UP) y -= 2; if(evt.Key.Code == KeyCode.DOWN) y += 2; if(x != 0 || y != 0) { Stdout.formatln("{} fps", 1.0 / this.renderer.app.getFrameTime()); this.move_view(x, y); return true; } } return false; } }