예제 #1
0
int main(int argc, char **argv)
{
	/*SATCollision::TestCollision();
	return 0;*/

	const int winWidth = 800;
	const int winHeight = 600;

	initRandom();

	sf::RenderWindow window(sf::VideoMode(winWidth, winHeight), "Test");
	sf::Clock deltaTimer;

	sf::Time frameTime = sf::seconds(1.0f/60.0f);

	deltaTimer.restart();

    artemis::World world;
    artemis::SystemManager * sm = world.getSystemManager();
    MovementSystem * movementsys = (MovementSystem*)sm->setSystem(new MovementSystem());
	AngularSystem * angularsys = (AngularSystem*)sm->setSystem(new AngularSystem());
    PlayerInputSystem * inputsys = (PlayerInputSystem*)sm->setSystem(new PlayerInputSystem());
	BeamSystem* beamsys = (BeamSystem*)sm->setSystem(new BeamSystem());
	RenderSystem * rendersys = (RenderSystem*)sm->setSystem(new RenderSystem(window));
	//RenderBoxSystem * renderboxsys = (RenderBoxSystem*)sm->setSystem(new RenderBoxSystem(window));
	CollisionSystem * collisionsys = (CollisionSystem*)sm->setSystem(new CollisionSystem());
	DestroySystem * destroysys = (DestroySystem*)sm->setSystem(new DestroySystem());
	AnimSystem * animatesys = (AnimSystem*)sm->setSystem(new AnimSystem());
	ExpiresSystem * expiresys = (ExpiresSystem*)sm->setSystem(new ExpiresSystem());
    artemis::EntityManager * em = world.getEntityManager();

    sm->initializeAll();

	EntityFactory::CreatePlayer(world, sf::Vector2f(0.0f, 0.0f));

	bool running = true;

    while(running){
        world.loopStart();
        world.setDelta(deltaTimer.getElapsedTime().asSeconds());
		deltaTimer.restart();

		inputsys->SetMouse(sf::Mouse::getPosition(window));
		beamsys->SetMouse(sf::Mouse::getPosition(window));
		sf::Event anEvent;
		while(window.pollEvent(anEvent)) {
			if(anEvent.type == sf::Event::KeyPressed) {
				inputsys->KeyDown(anEvent.key.code);
			} else if(anEvent.type == sf::Event::KeyReleased) {
				inputsys->KeyRelease(anEvent.key.code);
			} else if(anEvent.type == sf::Event::MouseButtonPressed) {
				inputsys->MousePress(anEvent.mouseButton.button);
			} else if(anEvent.type == sf::Event::MouseButtonReleased) {
				inputsys->MouseRelease(anEvent.mouseButton.button);
			} else if(anEvent.type == sf::Event::Closed) {
				running = false;
			}
		}

		expiresys->process();
		inputsys->process();
		animatesys->process();
        movementsys->process();
		angularsys->process();
		beamsys->process();
		collisionsys->process();
		destroysys->process();

		window.clear();
		rendersys->process();
		//renderboxsys->process();
		window.display();

		sf::Time timePassed = deltaTimer.getElapsedTime();
		if(timePassed < frameTime) {
			sf::sleep(frameTime - timePassed);
		}
    }

    return 0;
}