[Fix] Memory managment now working, and utilized.

This commit is contained in:
Rtch90 2012-02-19 14:51:53 +00:00
parent 7ca0ad0d7d
commit d55d16ac61
4 changed files with 118 additions and 98 deletions

View File

@ -23,46 +23,46 @@ enum gameNavVal_t { gameMainMenu, gameQuitGame };
class Game { class Game {
public: public:
Game(void); Game(void);
~Game(void); ~Game(void);
void New(const string& savegameIDArg); void New(const string& savegameIDArg);
void Load(const string& savegameIDArg); void Load(const string& savegameIDArg);
gameNavVal_t Run(void);
gameNavVal_t Run(void);
private: private:
void HandleInput(void); void HandleInput(void);
void UpdateGame(void); void UpdateGame(void);
void Render(void); void Render(void);
void NewSavegame(const string savegameIDArg); void NewSavegame(const string savegameIDArg);
void LoadSavegame(const string savegameIDArg); void LoadSavegame(const string savegameIDArg);
void SaveSavegame(void); void SaveSavegame(void);
static const int MAX_FPS = 200; static const int MAX_FPS = 200;
static const int GAME_UPDATES_PER_SECOND = 60; static const int GAME_UPDATES_PER_SECOND = 60;
static const int SKIP_TICKS = 1000 / GAME_UPDATES_PER_SECOND; static const int SKIP_TICKS = 1000 / GAME_UPDATES_PER_SECOND;
bool _gameRunning; bool _gameRunning;
gameNavVal_t _runGameReturnValue; gameNavVal_t _runGameReturnValue;
string _saveGameID; string _saveGameID;
string _mapID; string _mapID;
Text _gameUpdateTime; Text _gameUpdateTime;
Text _gameRenderTime; Text _gameRenderTime;
Text _playerXY; Text _playerXY;
Text _npcHealth; Text _npcHealth;
IngameMenu _ingameMenu; IngameMenu _ingameMenu;
LevelGen _map; LevelGen _map;
Player* _player; Player* _player;
Text _playerHealth; Text _playerHealth;
Text _playerExp; Text _playerExp;
Bar _playerHealthBar; Bar _playerHealthBar;
Bar _playerExpBar; Bar _playerExpBar;
}; };

View File

@ -45,28 +45,29 @@ public:
void OnAttack(void); void OnAttack(void);
// inline void* operator new(size_t size) { // Overload new and delete operators to utilize MemManager.
// return gMemManager.Allocate(size); inline void* operator new(size_t size) {
// } return gMemManager.Allocate(size);
// }
// inline void operator delete(void* object) {
// gMemManager.Free(object); inline void operator delete(void* object) {
// } gMemManager.Free(object);
// }
// inline void* operator new [](size_t size) {
// return gMemManager.Allocate(size); inline void* operator new [](size_t size) {
// } return gMemManager.Allocate(size);
// }
// inline void operator delete [](void* object) {
// gMemManager.Free(object); inline void operator delete [](void* object) {
// } gMemManager.Free(object);
}
enum {
FACING_UP, enum {
FACING_RIGHT, FACING_UP,
FACING_DOWN, FACING_RIGHT,
FACING_LEFT FACING_DOWN,
}; FACING_LEFT
};
protected: protected:
void HealthBarScroll(void); void HealthBarScroll(void);

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <list> #include <list>
#include "MemClass.h"
class Character; class Character;
class NPC; class NPC;
@ -10,26 +11,43 @@ class LevelGen;
class WorldManager { class WorldManager {
public: public:
WorldManager(LevelGen* level); WorldManager(LevelGen* level);
~WorldManager(void); ~WorldManager(void);
void Update(void); void Update(void);
void Render(void); void Render(void);
void AddNPC(NPC* npc); void AddNPC(NPC* npc);
void RemoveNPC(int index); void RemoveNPC(int index);
NPC* GetNPC(int index); NPC* GetNPC(int index);
NPC* GetNPCAt(int xArg, int yArg); NPC* GetNPCAt(int xArg, int yArg);
void CreateNPC(int x, int y); void CreateNPC(int x, int y);
bool CheckCollision(const SDL_Rect& charRect, Character* exclude);
int GetNPCCount() { return _npcs.size(); } bool CheckCollision(const SDL_Rect& charRect, Character* exclude);
void OnPlayerAttack(Player* player); int GetNPCCount() { return _npcs.size(); }
void OnPlayerMove(Player* player);
void OnPlayerAttack(Player* player);
void OnPlayerMove(Player* player);
// Overload new and delete operators to utilize MemManager.
inline void* operator new(size_t size) {
return gMemManager.Allocate(size);
}
inline void operator delete(void* object) {
gMemManager.Free(object);
}
inline void* operator new [](size_t size) {
return gMemManager.Allocate(size);
}
inline void operator delete [](void* object) {
gMemManager.Free(object);
}
private: private:
LevelGen* _level; LevelGen* _level;
std::list<NPC*> _npcs; std::list<NPC*> _npcs;
}; };

View File

@ -14,6 +14,7 @@
#include "../LevelGen/MapTile.h" #include "../LevelGen/MapTile.h"
#include "../System/Debug.h" #include "../System/Debug.h"
#include "../Engine/WorldManager.h" #include "../Engine/WorldManager.h"
#include "../Engine/MemClass.h"
using namespace std; using namespace std;
class Character; class Character;
@ -24,16 +25,16 @@ public:
LevelGen(void); LevelGen(void);
~LevelGen(void); ~LevelGen(void);
void New(void); void New(void);
void Load(const string& filename); void Load(const string& filename);
void Save(const string& filename); void Save(const string& filename);
void Update(void); void Update(void);
void Render(void); void Render(void);
void FindSpawnPoint(int& xArg, int& yArg, int objWidth, int objHeight); void FindSpawnPoint(int& xArg, int& yArg, int objWidth, int objHeight);
void MoveIfPossible(Character* character, float xVel, float yVel, bool isPlayer = false); void MoveIfPossible(Character* character, float xVel, float yVel, bool isPlayer = false);
bool CanMoveToPoint(int xArg, int yArg); bool CanMoveToPoint(int xArg, int yArg);
bool GetTileSolidity(int xArg, int yArg); bool GetTileSolidity(int xArg, int yArg);
int GetTileX(int xArg, int yArg); int GetTileX(int xArg, int yArg);
int GetTileY(int xArg, int yArg); int GetTileY(int xArg, int yArg);
@ -46,35 +47,35 @@ public:
int GetTileZLevel(int xArg, int yArg); int GetTileZLevel(int xArg, int yArg);
MapTile& GetTile(int xArg, int yArg); MapTile& GetTile(int xArg, int yArg);
string GetCurrentMap(void); string GetCurrentMap(void);
WorldManager& GetWorld(void) { return _world; } WorldManager& GetWorld(void) { return _world; }
void SetPlayer(Player* player) { _player = player; } void SetPlayer(Player* player) { _player = player; }
private: private:
void Unload(void); void Unload(void);
void DoMagic(void); void DoMagic(void);
void GenerateEntities(const std::string& name, int frequency); void GenerateEntities(const std::string& name, int frequency);
void MakeWalkingPaths(void); void MakeWalkingPaths(void);
void GenerateEnemies(void); void GenerateEnemies(void);
string _currentMap; string _currentMap;
int x; int x;
int y; int y;
static const int TILE_ARRAY_SIZE = 150; static const int TILE_ARRAY_SIZE = 150;
MapTile _tile[TILE_ARRAY_SIZE][TILE_ARRAY_SIZE]; MapTile _tile[TILE_ARRAY_SIZE][TILE_ARRAY_SIZE];
static const int BOUNDARIES_X = (SCREEN_WIDTH / TILE_WIDTH);
static const int BOUNDARIES_Y = (SCREEN_HEIGHT / TILE_HEIGHT);
TextureManager _tileTextures; static const int BOUNDARIES_X = (SCREEN_WIDTH / TILE_WIDTH);
TextureManager _entityTextures; static const int BOUNDARIES_Y = (SCREEN_HEIGHT / TILE_HEIGHT);
WorldManager _world; TextureManager _tileTextures;
TextureManager _entityTextures;
Player* _player;
WorldManager _world;
Player* _player;
}; };