Example #1
0
// Update the demo
void Demo::Update()
{
	Demo* pDemo = Demo::privGetInstance();
	UNUSED(pDemo);

	// Need to keep track of elapsed time
	static clock_t currTime;
	currTime = clock();
	static clock_t lastTime = currTime;
	float elapsedTime = (float) (currTime - lastTime) / CLOCKS_PER_SEC;
	elapsedTime;
	lastTime = currTime;

	// Max frame time
	if (elapsedTime >= 0.05f) elapsedTime = 0.05f;

	// First check to see if time is slowed
	pDemo->privCheckSlowTime(elapsedTime);

	// Move at one tenth speed if so
	if (pDemo->timeSlowed)
	{
		elapsedTime *= 0.10f;
	}

	// Adjust crosshair position
	pDemo->privMoveCrosshairs(elapsedTime);
	
	// Fire bullet
	pDemo->privFireBullet(elapsedTime);

	// update our bullet
	pDemo->bullet.Update(elapsedTime);

	// update our bricks
	for (int i = 0; i < NUM_BRICKS; i++)
	{
		pDemo->bricks[i].Update(elapsedTime);
	}

	// Check for any collisions and handle them
	pDemo->privCheckCollisions(elapsedTime);

	// Check if space bar is pressed 
	// If so reset the demo
	short space = GetKeyState(0x20);
	bool spacePressed = (space & 0x80) != 0;

	if (spacePressed) pDemo->privReset();
};
Example #2
0
// Run the demo
void Demo::Run()
{
	// Get the instance
	Demo *p = Demo::privGetInstance();

	p->running = true;

	p->privReset();

	// Main message loop
	MSG msg = { 0 };

	// Game Loop until an exit
	while (p->running)
	{
		// Check messages
		if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);

			if (WM_QUIT == msg.message)
			{
				p->Quit();
				continue;
			}
		}
		else
		{
			// called once per frame, update data, transformations, etc
			p->Update();

			// called once per frame, only do rendering here
			p->Draw();
		}
	}
};