From 79ef19fc5d29987fa0b1b953e241ce8c684cff6f Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sat, 24 Jan 2009 23:16:14 +0000 Subject: [PATCH] A few minor changes --- src/Game.cpp | 26 +++++++++++++++++++++++--- src/Game.hpp | 2 ++ src/Missile.cpp | 14 +++++++++----- src/Missile.hpp | 1 + src/ObjectGrid.cpp | 4 ++++ 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/Game.cpp b/src/Game.cpp index 7895d03..7edeafe 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -377,13 +377,33 @@ void Game::Process() ship.Turn(DEATH_SPIN_RATE); } +// Increase n until it is a multiple of x and y +void Game::MakeMultipleOf(int& n, int x, int y) +{ + cout << n << " --> "; + + while (n % x > 0 || n % y > 0) + ++n; + + cout << n << endl; +} + void Game::StartLevel(int level) { + cout << endl << "Start level " << level << ":" << endl; + // Set level size - viewport.SetLevelWidth(2000 + 2*Surface::SURFACE_SIZE*level); - viewport.SetLevelHeight(1500 + 2*Surface::SURFACE_SIZE*level); + int levelWidth = 2000 + 2*Surface::SURFACE_SIZE*level; + MakeMultipleOf(levelWidth, Surface::SURFACE_SIZE, ObjectGrid::OBJ_GRID_SIZE); + + int levelHeight = 1500 + 2*Surface::SURFACE_SIZE*level; + + viewport.SetLevelWidth(levelWidth); + viewport.SetLevelHeight(levelHeight); flGravity = GRAVITY; + cout << " Dimensions: " << levelWidth << "x" << levelHeight << endl; + // Create the object grid int grid_w = viewport.GetLevelWidth() / ObjectGrid::OBJ_GRID_SIZE; int grid_h = (viewport.GetLevelHeight() - ObjectGrid::OBJ_GRID_TOP @@ -465,7 +485,7 @@ void Game::StartLevel(int level) // Create missiles missiles.clear(); for (int i = 0; i < 10; i++) { - missiles.push_back(Missile(&objgrid, &viewport, Missile::SIDE_LEFT)); + missiles.push_back(Missile(&objgrid, &viewport, Missile::SIDE_RIGHT)); } // Create gateways diff --git a/src/Game.hpp b/src/Game.hpp index 6baac5c..2827c78 100644 --- a/src/Game.hpp +++ b/src/Game.hpp @@ -103,6 +103,8 @@ private: void ExplodeShip(); void EnterDeathWait(int timeout = DEATH_TIMEOUT); void CalculateScore(int padIndex); + + static void MakeMultipleOf(int& n, int x, int y); Viewport viewport; Ship ship; diff --git a/src/Missile.cpp b/src/Missile.cpp index 33baf62..67926da 100644 --- a/src/Missile.cpp +++ b/src/Missile.cpp @@ -26,6 +26,7 @@ Image* Missile::image = NULL; const double Missile::ACCEL(0.1); +const double Missile::MAX_SPEED(5.0); const int Missile::HORIZ_FIRE_RANGE(600); const int Missile::VERT_FIRE_RANGE(50); @@ -101,14 +102,17 @@ void Missile::MoveFlying() dx += speed * sin(angle * M_PI/180); dy += speed * cos(angle * M_PI/180); - exhaust.xpos = dx; - exhaust.ypos = dy + image->GetHeight()/2; + exhaust.xpos = dx + image->GetWidth()/2 + - (image->GetWidth()/2)*sin(angle*(M_PI/180)); + exhaust.ypos = dy + image->GetHeight()/2 + + (image->GetHeight()/2)*cos(angle*(M_PI/180)); exhaust.Process(true); - - speed += ACCEL; + + if (speed < MAX_SPEED) + speed += ACCEL; if (dx > viewport->GetLevelWidth() || dy > viewport->GetLevelHeight() - || dx < 0 || dy < 0) + || dx + image->GetWidth() < 0 || dy < 0) state = DESTROYED; } diff --git a/src/Missile.hpp b/src/Missile.hpp index 611320b..7b77a9a 100644 --- a/src/Missile.hpp +++ b/src/Missile.hpp @@ -49,6 +49,7 @@ private: static Image* image; static const double ACCEL; + static const double MAX_SPEED; static const int HORIZ_FIRE_RANGE, VERT_FIRE_RANGE; }; diff --git a/src/ObjectGrid.cpp b/src/ObjectGrid.cpp index 4c1d2c6..e4618bf 100644 --- a/src/ObjectGrid.cpp +++ b/src/ObjectGrid.cpp @@ -96,6 +96,8 @@ bool ObjectGrid::AllocFreeSpace(int& x, int& y, int width, int height) // void ObjectGrid::UnlockSpace(int x, int y) { + assert(x < width); + assert(y < height); grid[x + (y * width)] = false; } @@ -123,6 +125,8 @@ void ObjectGrid::Reset(int width, int height) // bool ObjectGrid::IsFilled(int x, int y) const { + assert(x < width); + assert(y < height); return grid[x + (width * y)]; } -- 2.39.2