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;
    }
}