[Add] A little spell stuff.

[Add] Woot, Rachel did the character sprite.
This commit is contained in:
Rtch90 2012-02-19 23:16:10 +00:00
parent 4b86f12f3a
commit 45d5720e4b
10 changed files with 228 additions and 210 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -79,4 +79,5 @@ SOURCES += ../src/libUnuk/Engine/WorldManager.cpp \
../src/libUnuk/UI/EventHistory.cpp \
../src/libUnuk/UI/Bar.cpp \
../src/libUnuk/System/Vec2.cpp \
../src/libUnuk/UI/SavegameMenu.cpp
../src/libUnuk/UI/SavegameMenu.cpp \
../src/libUnuk/Engine/Spells.cpp

View File

@ -7,7 +7,7 @@
Game::Game(void) {
Debug::logger->message("Creating characters..");
_player = new Player(&_map);
_map.SetPlayer(_player);
_map.SetPlayer(_player);
_runGameReturnValue = gameMainMenu;
}
@ -19,29 +19,29 @@ Game::~Game(void) {
}
void Game::New(const string& savegameIDArg) {
_saveGameID = savegameIDArg;
NewSavegame(savegameIDArg);
_saveGameID = savegameIDArg;
NewSavegame(savegameIDArg);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
_player->SetXY((float)spawnX, (float)spawnY);
_player->SetXY((float)spawnX, (float)spawnY);
}
void Game::Load(const string& savegameIDArg) {
_saveGameID = savegameIDArg;
LoadSavegame(savegameIDArg);
_saveGameID = savegameIDArg;
LoadSavegame(savegameIDArg);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
_player->SetXY((float)spawnX, (float)spawnY);
_player->SetXY((float)spawnX, (float)spawnY);
}
gameNavVal_t Game::Run(void) {
_player->LoadSprites("../Data/Media/Images/Characters/Player.png", 40, 45);
_player->LoadSprites("../Data/Media/Images/Characters/Reniesta.png", 40, 45);
int fps = 0;
int frame = 0;
@ -252,10 +252,10 @@ void Game::Render(void) {
}
void Game::NewSavegame(const string savegameIDArg) {
string saveFilename = "../Save/" + savegameIDArg;
string saveFilename = "../Save/" + savegameIDArg;
_map.New();
_map.Save(_saveGameID);
_map.New();
_map.Save(_saveGameID);
TiXmlDocument doc;
@ -267,11 +267,11 @@ void Game::NewSavegame(const string savegameIDArg) {
TiXmlText* nameText = new TiXmlText("Allanis"); //TODO: replace with _player->GetName() when it works. --konom
nameElement->LinkEndChild(nameText);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
int spawnX;
int spawnY;
_map.FindSpawnPoint(spawnX, spawnY, 40, 45);
_player->SetXY(spawnX, spawnY);
_player->SetXY(spawnX, spawnY);
std::stringstream xString;
xString << spawnX;
@ -287,21 +287,21 @@ void Game::NewSavegame(const string savegameIDArg) {
TiXmlText* yText = new TiXmlText(yString.str().c_str());
yElement->LinkEndChild(yText);
_player->SetLevelLiteral(1);
_player->SetLevelLiteral(1);
TiXmlElement* levelElement = new TiXmlElement("level");
TiXmlText* levelText = new TiXmlText("1");
levelElement->LinkEndChild(levelText);
TiXmlElement* levelElement = new TiXmlElement("level");
TiXmlText* levelText = new TiXmlText("1");
levelElement->LinkEndChild(levelText);
_player->SetExpLiteral(0);
_player->SetExpLiteral(0);
TiXmlElement* expElement = new TiXmlElement("exp");
TiXmlText* expText = new TiXmlText("0");
expElement->LinkEndChild(expText);
TiXmlElement* expElement = new TiXmlElement("exp");
TiXmlText* expText = new TiXmlText("0");
expElement->LinkEndChild(expText);
TiXmlElement* healthElement = new TiXmlElement("health");
TiXmlText* healthText = new TiXmlText("100");
healthElement->LinkEndChild(healthText);
TiXmlElement* healthElement = new TiXmlElement("health");
TiXmlText* healthText = new TiXmlText("100");
healthElement->LinkEndChild(healthText);
TiXmlElement* mapElement = new TiXmlElement("map");
TiXmlText* mapText = new TiXmlText("map"); //TODO: replace with actual map name.
@ -310,9 +310,9 @@ void Game::NewSavegame(const string savegameIDArg) {
saveElement->LinkEndChild(nameElement);
saveElement->LinkEndChild(xElement);
saveElement->LinkEndChild(yElement);
saveElement->LinkEndChild(levelElement);
saveElement->LinkEndChild(expElement);
saveElement->LinkEndChild(healthElement);
saveElement->LinkEndChild(levelElement);
saveElement->LinkEndChild(expElement);
saveElement->LinkEndChild(healthElement);
saveElement->LinkEndChild(mapElement);
doc.LinkEndChild(decl);
@ -328,11 +328,11 @@ void Game::LoadSavegame(const string savegameIDArg) {
// Converting to XML ftw!
TiXmlDocument mapFile(saveFilename.c_str());
// Create new save if can't load file.
if(!mapFile.LoadFile()) {
New(savegameIDArg);
return;
}
// Create new save if can't load file.
if(!mapFile.LoadFile()) {
New(savegameIDArg);
return;
}
TiXmlElement* rootElem = NULL;
TiXmlElement* dataElem = NULL;
@ -365,35 +365,35 @@ void Game::LoadSavegame(const string savegameIDArg) {
_player->SetXY((float)playerX, (float)playerY);
*/
// <level> - Parse the player level.
dataElem = dataElem->NextSiblingElement("level");
assert(dataElem != NULL);
int playerLevel = atoi(dataElem->GetText());
// </level>
// <level> - Parse the player level.
dataElem = dataElem->NextSiblingElement("level");
assert(dataElem != NULL);
int playerLevel = atoi(dataElem->GetText());
// </level>
_player->SetLevelLiteral(playerLevel);
_player->SetLevelLiteral(playerLevel);
// <exp> - Parse the player exp.
dataElem = dataElem->NextSiblingElement("exp");
assert(dataElem != NULL);
int playerExp = atoi(dataElem->GetText());
// </exp>
// <exp> - Parse the player exp.
dataElem = dataElem->NextSiblingElement("exp");
assert(dataElem != NULL);
int playerExp = atoi(dataElem->GetText());
// </exp>
_player->SetExpLiteral(playerExp);
_player->SetExpLiteral(playerExp);
// <health> - Parse the player health.
dataElem = dataElem->NextSiblingElement("health");
assert(dataElem != NULL);
int playerHealth = atoi(dataElem->GetText());
// </health>
// <health> - Parse the player health.
dataElem = dataElem->NextSiblingElement("health");
assert(dataElem != NULL);
int playerHealth = atoi(dataElem->GetText());
// </health>
_player->SetHealthLiteral(playerHealth);
_player->SetHealthLiteral(playerHealth);
}
// <save>
// </save>
_map.Load(_saveGameID);
_map.Load(_saveGameID);
}
void Game::SaveSavegame(void) {
@ -425,38 +425,38 @@ void Game::SaveSavegame(void) {
yElement->LinkEndChild(yText);
*/
std::stringstream levelString;
levelString << _player->GetLevel();
std::stringstream levelString;
levelString << _player->GetLevel();
TiXmlElement* levelElement = new TiXmlElement("level");
TiXmlText* levelText = new TiXmlText(levelString.str().c_str());
levelElement->LinkEndChild(levelText);
TiXmlElement* levelElement = new TiXmlElement("level");
TiXmlText* levelText = new TiXmlText(levelString.str().c_str());
levelElement->LinkEndChild(levelText);
std::stringstream expString;
expString << _player->GetExp();
std::stringstream expString;
expString << _player->GetExp();
TiXmlElement* expElement = new TiXmlElement("exp");
TiXmlText* expText = new TiXmlText(expString.str().c_str());
expElement->LinkEndChild(expText);
TiXmlElement* expElement = new TiXmlElement("exp");
TiXmlText* expText = new TiXmlText(expString.str().c_str());
expElement->LinkEndChild(expText);
std::stringstream healthString;
healthString << _player->GetHealth();
std::stringstream healthString;
healthString << _player->GetHealth();
TiXmlElement* healthElement = new TiXmlElement("health");
TiXmlText* healthText = new TiXmlText(healthString.str().c_str());
healthElement->LinkEndChild(healthText);
TiXmlElement* healthElement = new TiXmlElement("health");
TiXmlText* healthText = new TiXmlText(healthString.str().c_str());
healthElement->LinkEndChild(healthText);
saveElement->LinkEndChild(nameElement);
//saveElement->LinkEndChild(xElement);
//saveElement->LinkEndChild(yElement);
saveElement->LinkEndChild(levelElement);
saveElement->LinkEndChild(expElement);
saveElement->LinkEndChild(healthElement);
saveElement->LinkEndChild(levelElement);
saveElement->LinkEndChild(expElement);
saveElement->LinkEndChild(healthElement);
doc.LinkEndChild(decl);
doc.LinkEndChild(saveElement);
doc.SaveFile(saveFilename.c_str());
_map.Save(_saveGameID);
_map.Save(_saveGameID);
}

View File

@ -17,23 +17,23 @@ const int Player::EXP_TABLE[MAX_LEVEL] = {
2000,
3500,
5000,
6500,
8500,
10250,
12000,
15000,
25000,
50000,
65000,
80000,
100000
6500,
8500,
10250,
12000,
15000,
25000,
50000,
65000,
80000,
100000
};
Player::Player(LevelGen *mapArg) : Character(mapArg) {
_level = 1;
_exp = 0;
_lastTileX = 0;
_lastTileY = 0;
_lastTileX = 0;
_lastTileY = 0;
}
Player::~Player(void) {
@ -101,14 +101,14 @@ void Player::Update(void) {
// For now The camera will be static.
//SetCamera();
int tileX = x / TILE_WIDTH;
int tileY = y / TILE_HEIGHT;
if(tileX != _lastTileX || tileY != _lastTileY) {
_lastTileX = tileX;
_lastTileY = tileY;
int tileX = x / TILE_WIDTH;
int tileY = y / TILE_HEIGHT;
if(tileX != _lastTileX || tileY != _lastTileY) {
_lastTileX = tileX;
_lastTileY = tileY;
map->GetWorld().OnPlayerMove(this);
}
map->GetWorld().OnPlayerMove(this);
}
_healthBar.SetProgress((float)GetHealth() / 100.0f);
}
@ -133,8 +133,8 @@ void Player::SetCamera(void) {
}
void Player::Move() {
map->MoveIfPossible(this, xVel, yVel, true);
Character::HealthBarScroll();
map->MoveIfPossible(this, xVel, yVel, true);
Character::HealthBarScroll();
}
void Player::SetLevel(int level) {
@ -143,10 +143,10 @@ void Player::SetLevel(int level) {
if(_exp < 0) {
_exp = 0;
}
if(_level == MAX_LEVEL) {
eventHistory->LogEvent("YOU BEAT IT! I'M SO PROUD!");
eventHistory->LogEvent("*Sheds Tear*");
}
if(_level == MAX_LEVEL) {
eventHistory->LogEvent("YOU BEAT IT! I'M SO PROUD!");
eventHistory->LogEvent("*Sheds Tear*");
}
}
void Player::SetExp(int exp) {

View File

@ -4,46 +4,46 @@
#include "Globals.h"
#include "Constants.h"
#include "../libUnuk/Engine/Character.h"
#include "../libUnuk//System/Debug.h"
#include "../libUnuk/System/Debug.h"
class Player : public Character {
public:
Player(LevelGen* mapArg);
~Player(void);
Player(LevelGen* mapArg);
~Player(void);
void HandleInput(void);
void Update(void);
void HandleInput(void);
void Update(void);
void SetName(string nameArg);
string GetName(void) { return _name; }
void SetName(string nameArg);
string GetName(void) { return _name; }
void SetLevel(int level);
int GetLevel(void) { return _level; }
void SetLevel(int level);
int GetLevel(void) { return _level; }
void SetExp(int exp);
int GetExp(void) { return _exp; }
void SetExp(int exp);
int GetExp(void) { return _exp; }
void SetLevelLiteral(int level) { _level = level; }
void SetExpLiteral(int exp) { _exp = exp; }
void SetHealthLiteral(int health) { _health = health; }
void SetLevelLiteral(int level) { _level = level; }
void SetExpLiteral(int exp) { _exp = exp; }
void SetHealthLiteral(int health) { _health = health; }
void SetXY(float xArg, float yArg) { x = xArg, y = yArg; _lastTileX = xArg / TILE_WIDTH; _lastTileY = yArg / TILE_HEIGHT; }
void SetXY(float xArg, float yArg) { x = xArg, y = yArg; _lastTileX = xArg / TILE_WIDTH; _lastTileY = yArg / TILE_HEIGHT; }
static const int MAX_LEVEL = 20;
static const int EXP_TABLE[MAX_LEVEL];
static const int MAX_LEVEL = 20;
static const int EXP_TABLE[MAX_LEVEL];
protected:
void Move(void);
void CheckTileCollisions(void);
void Move(void);
void CheckTileCollisions(void);
private:
void SetCamera(void);
static const float PLAYER_SPEED;
void SetCamera(void);
static const float PLAYER_SPEED;
string _name;
int _level;
int _exp;
string _name;
int _level;
int _exp;
int _lastTileX;
int _lastTileY;
int _lastTileX;
int _lastTileY;
};

View File

@ -9,72 +9,72 @@ ParticleEmitter::~ParticleEmitter(void) {
}
void ParticleEmitter::SetXY(int xArg, int yArg) {
x = xArg;
y = yArg;
x = xArg;
y = yArg;
}
void ParticleEmitter::ForceXY(int xArg, int yArg) {
for(int i = 0; i < _particleCount; i++) {
m_particle[i].x = (float)xArg;
m_particle[i].y = (float)yArg;
}
for(int i = 0; i < _particleCount; i++) {
m_particle[i].x = (float)xArg;
m_particle[i].y = (float)yArg;
}
}
void ParticleEmitter::SetParticleCount(int countArg) {
_particleCount = countArg;
m_particle.resize(_particleCount);
_particleCount = countArg;
m_particle.resize(_particleCount);
for(int i = 0; i < _particleCount; i++) {
m_particle[i].startTime = SDL_GetTicks();
}
for(int i = 0; i < _particleCount; i++) {
m_particle[i].startTime = SDL_GetTicks();
}
}
void ParticleEmitter::SetParticleSpeed(float speedArg) {
_particleSpeed = speedArg;
_particleSpeed = speedArg;
}
void ParticleEmitter::SetParticleType(string typeArg) {
if(!_particleTexture) {
SDL_FreeSurface(_particleTexture);
}
if(!_particleTexture) {
SDL_FreeSurface(_particleTexture);
}
string textureFilename = "../Data/Media/Images/Particles/" + typeArg + ".png";
_particleTexture = LoadImageAlpha(textureFilename.c_str());
string textureFilename = "../../Data/Media/Images/Particles/" + typeArg + ".png";
_particleTexture = LoadImageAlpha(textureFilename.c_str());
}
void ParticleEmitter::SetParticleLifetime(int lifetimeArg) {
_particleLifetime = lifetimeArg;
_particleLifetime = lifetimeArg;
for(int i = 0; i < _particleCount; i++) {
m_particle[i].lifetime = rand() % _particleLifetime + _particleLifetime / 4;
}
for(int i = 0; i < _particleCount; i++) {
m_particle[i].lifetime = rand() % _particleLifetime + _particleLifetime / 4;
}
}
void ParticleEmitter::Render(void) {
for(int i = 0; i < _particleCount; i++) {
ApplySurface((int)m_particle[i].x, (int)m_particle[i].y, _particleTexture, screen);
}
for(int i = 0; i < _particleCount; i++) {
ApplySurface((int)m_particle[i].x, (int)m_particle[i].y, _particleTexture, screen);
}
}
void ParticleEmitter::Update(void) {
for(int i = 0; i < _particleCount; i++) {
if((int)SDL_GetTicks() - m_particle[i].startTime > m_particle[i].lifetime) {
// Reset the x and y coords.
m_particle[i].x = (float)x;
m_particle[i].y = (float)y;
for(int i = 0; i < _particleCount; i++) {
if((int)SDL_GetTicks() - m_particle[i].startTime > m_particle[i].lifetime) {
// Reset the x and y coords.
m_particle[i].x = (float)x;
m_particle[i].y = (float)y;
m_particle[i].xVel = (float)(rand() % 360);
m_particle[i].yVel = (float)(rand() % 360);
m_particle[i].xVel = (float)(rand() % 360);
m_particle[i].yVel = (float)(rand() % 360);
if(rand() % 2)
m_particle[i].xVel = m_particle[i].xVel * -1.0f;
if(rand() % 2)
m_particle[i].yVel = m_particle[i].yVel * -1.0f;
if(rand() % 2)
m_particle[i].xVel = m_particle[i].xVel * -1.0f;
if(rand() % 2)
m_particle[i].yVel = m_particle[i].yVel * -1.0f;
m_particle[i].startTime = SDL_GetTicks();
} else {
m_particle[i].x += m_particle[i].xVel * _particleSpeed;
m_particle[i].y += m_particle[i].yVel * _particleSpeed;
}
}
m_particle[i].startTime = SDL_GetTicks();
} else {
m_particle[i].x += m_particle[i].xVel * _particleSpeed;
m_particle[i].y += m_particle[i].yVel * _particleSpeed;
}
}
}

View File

@ -0,0 +1,17 @@
#include "Spells.h"
Spells::Spells(void) {
}
Spells::~Spells(void) {
}
void Spells::CastSpell() {
}
void Spells::Render(void) {
//_particle->Render();
}

View File

@ -1,4 +1,4 @@
#pragma once;
#pragma once
#include "../../Unuk/Player.h"
#include "../System/Timer.h"
#include "ParticleEmitter.h"
@ -13,9 +13,10 @@ public:
ICE
};
void CastSpell(Player* player);
void CastSpell(/*Player* player*/);
void Render(void);
private:
Timer* _timeBetweenCast;
ParticleEmitter* _particle;
};

View File

@ -187,7 +187,7 @@ void WorldManager::OnPlayerAttack(Player* player) {
}
void WorldManager::OnPlayerMove(Player* player) {
for(std::list<NPC*>::iterator i = _npcs.begin(); i != _npcs.end(); ++i) {
(*i)->OnPlayerMove(player);
}
for(std::list<NPC*>::iterator i = _npcs.begin(); i != _npcs.end(); ++i) {
(*i)->OnPlayerMove(player);
}
}

View File

@ -1,7 +1,6 @@
#pragma once
#include <list>
#include "MemClass.h"
class Character;
class NPC;
class Player;