Commit 1fe1fc7e authored by alistert's avatar alistert

Event refactoring.

parent fe5f4bab
...@@ -9,6 +9,7 @@ objects = src/bonus/bonus.o \ ...@@ -9,6 +9,7 @@ objects = src/bonus/bonus.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \ src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \ src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \
src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \ src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \
src/jj2level/jj2event/jj2event.o src/jj2level/jj2event/jj2eventframe.o \
src/jj2level/jj2layer.o src/jj2level/jj2level.o \ src/jj2level/jj2layer.o src/jj2level/jj2level.o \
src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \ src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \
src/level/event/bridge.o src/level/event/guardians.o \ src/level/event/bridge.o src/level/event/guardians.o \
......
...@@ -33,6 +33,7 @@ OBJS = src/bonus/bonus.o \ ...@@ -33,6 +33,7 @@ OBJS = src/bonus/bonus.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \ src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \ src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \
src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \ src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \
src/jj2level/jj2event/jj2event.o src/jj2level/jj2event/jj2eventframe.o \
src/jj2level/jj2layer.o src/jj2level/jj2level.o \ src/jj2level/jj2layer.o src/jj2level/jj2level.o \
src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \ src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \
src/level/event/bridge.o src/level/event/guardians.o \ src/level/event/bridge.o src/level/event/guardians.o \
......
...@@ -9,6 +9,7 @@ objects = src/bonus/bonus.o \ ...@@ -9,6 +9,7 @@ objects = src/bonus/bonus.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \ src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \ src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o \
src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \ src/io/controls.o src/io/file.o src/io/network.o src/io/sound.o \
src/jj2level/jj2event/jj2event.o src/jj2level/jj2event/jj2eventframe.o \
src/jj2level/jj2layer.o src/jj2level/jj2level.o \ src/jj2level/jj2layer.o src/jj2level/jj2level.o \
src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \ src/jj2level/jj2levelframe.o src/jj2level/jj2levelload.o \
src/level/event/bridge.o src/level/event/guardians.o \ src/level/event/bridge.o src/level/event/guardians.o \
......
/*
*
* jj2event.cpp
*
* 2nd July 2010: Created jj2event.cpp from parts of jj2level.cpp
*
* Part of the OpenJazz project
*
*
* Copyright (c) 2005-2010 Alister Thomson
*
* OpenJazz is distributed under the terms of
* the GNU General Public License, version 2.0
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
/*
* Deals with the creating and freeing of JJ2 events.
*
*/
#include "jj2event.h"
#include "baselevel.h"
JJ2Event::JJ2Event (JJ2Event* newNext, unsigned char gridX, unsigned char gridY, unsigned char* properties) {
x = TTOF(gridX);
y = TTOF(gridY);
dx = 0;
dy = 0;
next = newNext;
type = properties[0];
data[0] = properties[1];
data[1] = properties[2];
data[2] = properties[3];
hits = 0;
return;
}
JJ2Event::~JJ2Event () {
return;
}
/*
*
* jj2event.h
*
* 2nd July 2010: Created jj2event.h from parts of jj2level.h
*
* Part of the OpenJazz project
*
*
* Copyright (c) 2005-2010 Alister Thomson
*
* OpenJazz is distributed under the terms of
* the GNU General Public License, version 2.0
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef _JJ2EVENT_H
#define _JJ2EVENT_H
#include "level/movable.h"
// Classes
class JJ2Event : public Movable {
private:
JJ2Event* next;
unsigned char type;
unsigned char data[3];
unsigned char hits; // Number of times the event has been shot
int time; /* Point at which the event will do something, e.g. terminate */
unsigned char anim;
unsigned char frame;
unsigned int flashTime;
public:
JJ2Event (JJ2Event* newNext, unsigned char gridX, unsigned char gridY, unsigned char* properties);
~JJ2Event ();
JJ2Event* step (int msps);
void draw (int change);
};
#endif
/*
*
* jj2eventframe.cpp
*
* 2nd July 2010: Created jj2eventframe.cpp from parts of jj2level.cpp
*
* Part of the OpenJazz project
*
*
* Copyright (c) 2005-2010 Alister Thomson
*
* OpenJazz is distributed under the terms of
* the GNU General Public License, version 2.0
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
/*
* Deals with the playing of JJ2 levels.
*
*/
#include "jj2event.h"
#include "io/gfx/video.h"
JJ2Event* JJ2Event::step (int msps) {
if (next) next = next->step(msps);
return this;
}
void JJ2Event::draw (int change) {
int drawX, drawY;
if (next) next->draw(change);
drawX = getDrawX(change);
drawY = getDrawY(change);
if (type > 2) drawRect(FTOI(drawX) + 8, FTOI(drawY) + 8, 16, 16, type);
return;
}
...@@ -36,8 +36,8 @@ JJ2Layer::JJ2Layer () { ...@@ -36,8 +36,8 @@ JJ2Layer::JJ2Layer () {
width = height = 1; width = height = 1;
grid = new JJ2GridElement *[1]; grid = new JJ2Tile *[1];
*(grid) = new JJ2GridElement[1]; *grid = new JJ2Tile[1];
(*grid)->tile = 0; (*grid)->tile = 0;
...@@ -53,10 +53,10 @@ JJ2Layer::JJ2Layer (int newWidth, int newHeight) { ...@@ -53,10 +53,10 @@ JJ2Layer::JJ2Layer (int newWidth, int newHeight) {
width = newWidth; width = newWidth;
height = newHeight; height = newHeight;
grid = new JJ2GridElement *[height]; grid = new JJ2Tile *[height];
*(grid) = new JJ2GridElement[width * height]; *grid = new JJ2Tile[width * height];
for (row = 0; row < height; row++) grid[row] = *(grid) + (row * width); for (row = 0; row < height; row++) grid[row] = *grid + (row * width);
return; return;
...@@ -65,7 +65,7 @@ JJ2Layer::JJ2Layer (int newWidth, int newHeight) { ...@@ -65,7 +65,7 @@ JJ2Layer::JJ2Layer (int newWidth, int newHeight) {
JJ2Layer::~JJ2Layer () { JJ2Layer::~JJ2Layer () {
delete[] *(grid); delete[] *grid;
delete[] grid; delete[] grid;
return; return;
...@@ -118,7 +118,7 @@ void JJ2Layer::setFrame (unsigned char x, unsigned char y, unsigned char frame) ...@@ -118,7 +118,7 @@ void JJ2Layer::setFrame (unsigned char x, unsigned char y, unsigned char frame)
void JJ2Layer::setTile (unsigned char x, unsigned char y, unsigned short int tile, int tiles) { void JJ2Layer::setTile (unsigned char x, unsigned char y, unsigned short int tile, int tiles) {
JJ2GridElement* ge; JJ2Tile* ge;
ge = grid[y] + x; ge = grid[y] + x;
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
* jj2level.cpp * jj2level.cpp
* *
* 29th June 2010: Created jj2level.cpp from parts of level.cpp * 29th June 2010: Created jj2level.cpp from parts of level.cpp
* 2nd July 2010: Created jj2event.cpp from parts of jj2level.cpp
* 2nd July 2010: Created jj2eventframe.cpp from parts of jj2level.cpp
* *
* Part of the OpenJazz project * Part of the OpenJazz project
* *
...@@ -20,7 +22,7 @@ ...@@ -20,7 +22,7 @@
*/ */
/* /*
* Deals with the creating, playing and freeing of levels. * Deals with the creating, playing and freeing of JJ2 levels.
* *
*/ */
...@@ -62,8 +64,9 @@ JJ2Level::~JJ2Level () { ...@@ -62,8 +64,9 @@ JJ2Level::~JJ2Level () {
int count; int count;
delete[] *events; if (events) delete events;
delete[] events; delete[] *mods;
delete[] mods;
for (count = 0; count < LAYERS; count++) delete layers[count]; for (count = 0; count < LAYERS; count++) delete layers[count];
...@@ -99,7 +102,7 @@ bool JJ2Level::checkMaskUp (fixed x, fixed y) { ...@@ -99,7 +102,7 @@ bool JJ2Level::checkMaskUp (fixed x, fixed y) {
return true; return true;
// Event 1 is one-way // Event 1 is one-way
if (events[tY][tX].type == 1) return false; if (mods[tY][tX].type == 1) return false;
// Check the mask in the tile in question // Check the mask in the tile in question
return (layer->getFlipped(tX, tY)? flippedMask: mask)[(layer->getTile(tX, tY) << 10) + ((y >> 5) & 992) + ((x >> 10) & 31)]; return (layer->getFlipped(tX, tY)? flippedMask: mask)[(layer->getTile(tX, tY) << 10) + ((y >> 5) & 992) + ((x >> 10) & 31)];
...@@ -132,10 +135,11 @@ bool JJ2Level::checkSpikes (fixed x, fixed y) { ...@@ -132,10 +135,11 @@ bool JJ2Level::checkSpikes (fixed x, fixed y) {
tY = FTOT(y); tY = FTOT(y);
// Anything off the edge of the map is not spikes // Anything off the edge of the map is not spikes
// JJ2Layer::getTile while return the blank tile for these cases, so do not need to do anything if ((x < 0) || (y < 0) || (tX >= layer->getWidth()) || (tY >= layer->getHeight()))
return false;
// Event 2 is spikes // Event 2 is spikes
if (events[tY][tX].type != 2) return false; if (mods[tY][tX].type != 2) return false;
// Check the mask in the tile in question // Check the mask in the tile in question
return (layer->getFlipped(tX, tY)? flippedMask: mask)[(layer->getTile(tX, tY) << 10) + ((y >> 5) & 992) + ((x >> 10) & 31)]; return (layer->getFlipped(tX, tY)? flippedMask: mask)[(layer->getTile(tX, tY) << 10) + ((y >> 5) & 992) + ((x >> 10) & 31)];
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
* jj2level.h * jj2level.h
* *
* 29th June 2010: Created jj2level.h from parts of level.h * 29th June 2010: Created jj2level.h from parts of level.h
* 2nd July 2010: Created jj2event.h from parts of jj2level.h
* *
* Part of the OpenJazz project * Part of the OpenJazz project
* *
...@@ -28,7 +29,7 @@ ...@@ -28,7 +29,7 @@
#ifndef _JJ2LEVEL_H #ifndef _JJ2LEVEL_H
#define _JJ2LEVEL_H #define _JJ2LEVEL_H
#include "baselevel.h" #include "baselevel.h"
#include "io/gfx/anim.h" #include "io/gfx/anim.h"
#include "OpenJazz.h" #include "OpenJazz.h"
...@@ -53,25 +54,25 @@ typedef struct { ...@@ -53,25 +54,25 @@ typedef struct {
unsigned char frame; // Current frame being used (for animated tiles) unsigned char frame; // Current frame being used (for animated tiles)
bool flipped; bool flipped;
} JJ2GridElement; } JJ2Tile;
typedef struct { typedef struct {
unsigned char type; unsigned char type;
unsigned char data[3]; int property;
} JJ2Event;
} JJ2Modifier;
// Classes
// Classes
class Font; class Font;
class JJ2Layer { class JJ2Layer {
private: private:
JJ2GridElement** grid; JJ2Tile** grid;
int width, height; int width, height;
public: public:
JJ2Layer (); JJ2Layer ();
...@@ -89,11 +90,15 @@ class JJ2Layer { ...@@ -89,11 +90,15 @@ class JJ2Layer {
}; };
class JJ2Event;
class JJ2Level : public BaseLevel { class JJ2Level : public BaseLevel {
private: private:
SDL_Surface* tileSet; SDL_Surface* tileSet;
SDL_Surface* flippedTileSet; SDL_Surface* flippedTileSet;
JJ2Event* events;
Font* font;
char* mask; char* mask;
char* flippedMask; char* flippedMask;
char* musicFile; char* musicFile;
...@@ -102,8 +107,7 @@ class JJ2Level : public BaseLevel { ...@@ -102,8 +107,7 @@ class JJ2Level : public BaseLevel {
int soundMap[32]; int soundMap[32];
JJ2Layer* layers[LAYERS]; JJ2Layer* layers[LAYERS];
JJ2Layer* layer; JJ2Layer* layer;
JJ2Event** events; JJ2Modifier** mods;
int width, height;
bool TSF; bool TSF;
unsigned char difficulty; unsigned char difficulty;
fixed waterLevel; fixed waterLevel;
...@@ -118,8 +122,6 @@ class JJ2Level : public BaseLevel { ...@@ -118,8 +122,6 @@ class JJ2Level : public BaseLevel {
void draw (); void draw ();
public: public:
Font* font;
JJ2Level (char* fileName, unsigned char diff, bool checkpoint); JJ2Level (char* fileName, unsigned char diff, bool checkpoint);
~JJ2Level (); ~JJ2Level ();
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
*/ */
#include "jj2event/jj2event.h"
#include "jj2level.h" #include "jj2level.h"
#include "game/game.h" #include "game/game.h"
...@@ -39,9 +40,9 @@ ...@@ -39,9 +40,9 @@
int JJ2Level::step () { int JJ2Level::step () {
int x; int x, y;
int msps; int msps;
// Milliseconds per step // Milliseconds per step
msps = ticks - prevStepTicks; msps = ticks - prevStepTicks;
...@@ -50,6 +51,10 @@ int JJ2Level::step () { ...@@ -50,6 +51,10 @@ int JJ2Level::step () {
// Determine the players' trajectories // Determine the players' trajectories
for (x = 0; x < nPlayers; x++) players[x].getJJ2LevelPlayer()->control(ticks, msps); for (x = 0; x < nPlayers; x++) players[x].getJJ2LevelPlayer()->control(ticks, msps);
// Process events
if (events) events = events->step(msps);
// Apply as much of those trajectories as possible, without going into the // Apply as much of those trajectories as possible, without going into the
...@@ -87,11 +92,16 @@ int JJ2Level::step () { ...@@ -87,11 +92,16 @@ int JJ2Level::step () {
void JJ2Level::draw () { void JJ2Level::draw () {
int width, height;
int x, y; int x, y;
unsigned int change; unsigned int change;
width = layer->getWidth();
height = layer->getHeight();
// Calculate viewport // Calculate viewport
if (game && (stage == LS_END)) game->view(paused? 0: ((ticks - prevTicks) * 160)); if (game && (stage == LS_END)) game->view(paused? 0: ((ticks - prevTicks) * 160));
else localPlayer->getJJ2LevelPlayer()->view(ticks, paused? 0: (ticks - prevTicks)); else localPlayer->getJJ2LevelPlayer()->view(ticks, paused? 0: (ticks - prevTicks));
...@@ -112,16 +122,7 @@ void JJ2Level::draw () { ...@@ -112,16 +122,7 @@ void JJ2Level::draw () {
// Show the events // Show the events
/*for (y = 0; y < ITOT(viewH); y++) { if (events) events->draw(change);
for (x = 0; x < ITOT(viewW ); x++) {
if (events[y + FTOT(viewY)][x + FTOT(viewX)].type > 2)
drawRect(8 + TTOI(x) - (FTOI(viewX) & 31), 8 + TTOI(y) - (FTOI(viewY) & 31), 16, 16, events[y + FTOT(viewY)][x + FTOT(viewX)].type);
}
}*/
// Show the players // Show the players
...@@ -129,8 +130,8 @@ void JJ2Level::draw () { ...@@ -129,8 +130,8 @@ void JJ2Level::draw () {
players[x].getJJ2LevelPlayer()->draw(ticks, change); players[x].getJJ2LevelPlayer()->draw(ticks, change);
// Show type of overlapping event // Show type of overlapping modifier
//panelBigFont->showNumber(events[FTOT(players[x].getJJ2LevelPlayer()->getY() + PYO_MID)][FTOT(players[x].getJJ2LevelPlayer()->getX() + PXO_MID)].type, viewW >> 1, viewH >> 1); //panelBigFont->showNumber(mods[FTOT(players[x].getJJ2LevelPlayer()->getY() + PYO_MID)][FTOT(players[x].getJJ2LevelPlayer()->getX() + PXO_MID)].type, viewW >> 1, viewH >> 1);
} }
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
*/ */
#include "jj2event/jj2event.h"
#include "jj2level.h" #include "jj2level.h"
#include "game/game.h" #include "game/game.h"
...@@ -406,7 +407,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) { ...@@ -406,7 +407,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
int count, x, y; int count, x, y;
unsigned char tileQuad[8]; unsigned char tileQuad[8];
short int* quadRefs; short int* quadRefs;
int layerWidth, pitch, layerHeight; int width, pitch, height;
int worldNum; int worldNum;
unsigned char startX, startY; unsigned char startX, startY;
...@@ -518,24 +519,17 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) { ...@@ -518,24 +519,17 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
for (count = 0; count < LAYERS; count++) { for (count = 0; count < LAYERS; count++) {
layerWidth = ((int *)(aBuffer + 8443 + 8))[count]; width = ((int *)(aBuffer + 8443 + 8))[count];
pitch = ((int *)(aBuffer + 8443 + 40))[count]; pitch = ((int *)(aBuffer + 8443 + 40))[count];
layerHeight = ((int *)(aBuffer + 8443 + 72))[count]; height = ((int *)(aBuffer + 8443 + 72))[count];
if (count == 3) {
width = layerWidth;
height = layerHeight;
}
if (aBuffer[8443 + count]) { if (aBuffer[8443 + count]) {
layers[count] = new JJ2Layer(layerWidth, layerHeight); layers[count] = new JJ2Layer(width, height);
for (y = 0; y < layerHeight; y++) { for (y = 0; y < height; y++) {
for (x = 0; x < layerWidth; x++) { for (x = 0; x < width; x++) {
if ((x & 3) == 0) memcpy(tileQuad, cBuffer + (quadRefs[x >> 2] << 3), 8); if ((x & 3) == 0) memcpy(tileQuad, cBuffer + (quadRefs[x >> 2] << 3), 8);
...@@ -558,30 +552,47 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) { ...@@ -558,30 +552,47 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
} }
layer = layers[3]; layer = layers[3];
width = layer->getWidth();
height = layer->getHeight();
// Load events // Load events
startX = 0; startX = 0;
startY = 0; startY = 0;
events = new JJ2Event *[height]; mods = new JJ2Modifier *[height];
*events = new JJ2Event[width * height]; *mods = new JJ2Modifier[width * height];
events = NULL;
for (y = 0; y < height; y++) { for (y = 0; y < height; y++) {
events[y] = events[0] + (y * width); mods[y] = *mods + (y * width);
for (x = 0; x < width; x++) { for (x = 0; x < width; x++) {
events[y][x].type = bBuffer[((y * width) + x) << 2]; count = bBuffer[((y * width) + x) << 2];
events[y][x].data[0] = bBuffer[(((y * width) + x) << 2) + 1];
events[y][x].data[1] = bBuffer[(((y * width) + x) << 2) + 2]; if (count < 33) {
events[y][x].data[2] = bBuffer[(((y * width) + x) << 2) + 3];
mods[y][x].type = count;
mods[y][x].property = bBuffer[(((y * width) + x) << 2) + 1];
if (count == 29) {
// Jazz start pos
startX = x;
startY = y;
}
} else {
if (events[y][x].type == 29) { mods[y][x].type = 0;
startX = x; events = new JJ2Event(events, x, y, bBuffer + (((y * width) + x) << 2));
startY = y;
} }
...@@ -622,8 +633,9 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) { ...@@ -622,8 +633,9 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
delete[] string; delete[] string;
delete[] *events; if (events) delete events;
delete[] events; delete[] *mods;
delete[] mods;
for (count = 0; count < LAYERS; count++) delete layers[count]; for (count = 0; count < LAYERS; count++) delete layers[count];
...@@ -659,8 +671,9 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) { ...@@ -659,8 +671,9 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
delete file; delete file;
delete[] *events; if (events) delete events;
delete[] events; delete[] *mods;
delete[] mods;
for (x = 0; x < LAYERS; x++) delete layers[x]; for (x = 0; x < LAYERS; x++) delete layers[x];
......
...@@ -196,7 +196,7 @@ Bullet* Bullet::step (unsigned int ticks, int msps) { ...@@ -196,7 +196,7 @@ Bullet* Bullet::step (unsigned int ticks, int msps) {
// If the bullet is TNT, hit all destructible events nearby twice // If the bullet is TNT, hit all destructible events nearby twice
if (type == -1) { if (type == -1) {
event = level->events; event = level->getEvents();
while (event) { while (event) {
...@@ -242,7 +242,7 @@ Bullet* Bullet::step (unsigned int ticks, int msps) { ...@@ -242,7 +242,7 @@ Bullet* Bullet::step (unsigned int ticks, int msps) {
// Check if an event has been hit // Check if an event has been hit
event = level->events; event = level->getEvents();
while (event) { while (event) {
......
...@@ -42,7 +42,7 @@ Bridge::Bridge (unsigned char gX, unsigned char gY) { ...@@ -42,7 +42,7 @@ Bridge::Bridge (unsigned char gX, unsigned char gY) {
dx = 0; dx = 0;
dy = 0; dy = 0;
next = level->events; next = level->getEvents();
gridX = gX; gridX = gX;
gridY = gY; gridY = gY;
animType = E_LEFTANIM; animType = E_LEFTANIM;
......
...@@ -57,7 +57,7 @@ Event::Event (unsigned char gX, unsigned char gY) { ...@@ -57,7 +57,7 @@ Event::Event (unsigned char gX, unsigned char gY) {
dx = 0; dx = 0;
dy = 0; dy = 0;
next = level->events; next = level->getEvents();
gridX = gX; gridX = gX;
gridY = gY; gridY = gY;
flashTime = 0; flashTime = 0;
......
...@@ -39,7 +39,7 @@ DeckGuardian::DeckGuardian (unsigned char gX, unsigned char gY) { ...@@ -39,7 +39,7 @@ DeckGuardian::DeckGuardian (unsigned char gX, unsigned char gY) {
dx = 0; dx = 0;
dy = 0; dy = 0;
next = level->events; next = level->getEvents();
gridX = gX; gridX = gX;
gridY = gY; gridY = gY;
flashTime = 0; flashTime = 0;
......
...@@ -225,6 +225,13 @@ void Level::setTile (unsigned char gridX, unsigned char gridY, unsigned char til ...@@ -225,6 +225,13 @@ void Level::setTile (unsigned char gridX, unsigned char gridY, unsigned char til
} }
Event* Level::getEvents () {
return events;
}
signed char* Level::getEvent (unsigned char gridX, unsigned char gridY) { signed char* Level::getEvent (unsigned char gridX, unsigned char gridY) {
int event = grid[gridY][gridX].event; int event = grid[gridY][gridX].event;
......
...@@ -97,6 +97,7 @@ class Level : public BaseLevel { ...@@ -97,6 +97,7 @@ class Level : public BaseLevel {
SDL_Surface* tileSet; SDL_Surface* tileSet;
SDL_Surface* panel; SDL_Surface* panel;
SDL_Surface* panelAmmo[5]; SDL_Surface* panelAmmo[5];
Event* events;
char* musicFile; char* musicFile;
char* sceneFile; char* sceneFile;
Anim animSet[ANIMS]; Anim animSet[ANIMS];
...@@ -125,13 +126,13 @@ class Level : public BaseLevel { ...@@ -125,13 +126,13 @@ class Level : public BaseLevel {
int playBonus (); int playBonus ();
protected: protected:
Font* font;
int load (char* fileName, unsigned char diff, bool checkpoint); int load (char* fileName, unsigned char diff, bool checkpoint);
int step (); int step ();
void draw (); void draw ();
public: public:
Font* font;
Event* events;
Bullet* bullets; Bullet* bullets;
EventPath path[PATHS]; EventPath path[PATHS];
...@@ -144,6 +145,7 @@ class Level : public BaseLevel { ...@@ -144,6 +145,7 @@ class Level : public BaseLevel {
bool checkSpikes (fixed x, fixed y); bool checkSpikes (fixed x, fixed y);
void setNext (int nextLevel, int nextWorld); void setNext (int nextLevel, int nextWorld);
void setTile (unsigned char gridX, unsigned char gridY, unsigned char tile); void setTile (unsigned char gridX, unsigned char gridY, unsigned char tile);
Event* getEvents ();
signed char* getEvent (unsigned char gridX, unsigned char gridY); signed char* getEvent (unsigned char gridX, unsigned char gridY);
unsigned char getEventHits (unsigned char gridX, unsigned char gridY); unsigned char getEventHits (unsigned char gridX, unsigned char gridY);
unsigned int getEventTime (unsigned char gridX, unsigned char gridY); unsigned int getEventTime (unsigned char gridX, unsigned char gridY);
......
...@@ -145,7 +145,7 @@ bool Bird::step (unsigned int ticks, int msps) { ...@@ -145,7 +145,7 @@ bool Bird::step (unsigned int ticks, int msps) {
// Check for nearby targets // Check for nearby targets
target = false; target = false;
event = level->events; event = level->getEvents();
if (player->getFacing()) { if (player->getFacing()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment