Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
openjazz
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
openjazz
Commits
1fe1fc7e
Commit
1fe1fc7e
authored
Jul 02, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Event refactoring.
parent
fe5f4bab
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
276 additions
and
76 deletions
+276
-76
Makefile
Makefile
+1
-0
Makefile.arm
Makefile.arm
+1
-0
Makefile.debian
Makefile.debian
+1
-0
jj2event.cpp
src/jj2level/jj2event/jj2event.cpp
+58
-0
jj2event.h
src/jj2level/jj2event/jj2event.h
+54
-0
jj2eventframe.cpp
src/jj2level/jj2event/jj2eventframe.cpp
+56
-0
jj2layer.cpp
src/jj2level/jj2layer.cpp
+7
-7
jj2level.cpp
src/jj2level/jj2level.cpp
+10
-6
jj2level.h
src/jj2level/jj2level.h
+15
-13
jj2levelframe.cpp
src/jj2level/jj2levelframe.cpp
+16
-15
jj2levelload.cpp
src/jj2level/jj2levelload.cpp
+40
-27
bullet.cpp
src/level/bullet.cpp
+2
-2
bridge.cpp
src/level/event/bridge.cpp
+1
-1
event.cpp
src/level/event/event.cpp
+1
-1
guardians.cpp
src/level/event/guardians.cpp
+1
-1
level.cpp
src/level/level.cpp
+7
-0
level.h
src/level/level.h
+4
-2
bird.cpp
src/player/bird.cpp
+1
-1
No files found.
Makefile
View file @
1fe1fc7e
...
@@ -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
\
...
...
Makefile.arm
View file @
1fe1fc7e
...
@@ -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
\
...
...
Makefile.debian
View file @
1fe1fc7e
...
@@ -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
\
...
...
src/jj2level/jj2event/jj2event.cpp
0 → 100644
View file @
1fe1fc7e
/*
*
* 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
;
}
src/jj2level/jj2event/jj2event.h
0 → 100644
View file @
1fe1fc7e
/*
*
* 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
src/jj2level/jj2event/jj2eventframe.cpp
0 → 100644
View file @
1fe1fc7e
/*
*
* 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
;
}
src/jj2level/jj2layer.cpp
View file @
1fe1fc7e
...
@@ -36,8 +36,8 @@ JJ2Layer::JJ2Layer () {
...
@@ -36,8 +36,8 @@ JJ2Layer::JJ2Layer () {
width
=
height
=
1
;
width
=
height
=
1
;
grid
=
new
JJ2
GridElement
*
[
1
];
grid
=
new
JJ2
Tile
*
[
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
JJ2
GridElement
*
[
height
];
grid
=
new
JJ2
Tile
*
[
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
)
{
JJ2
GridElement
*
ge
;
JJ2
Tile
*
ge
;
ge
=
grid
[
y
]
+
x
;
ge
=
grid
[
y
]
+
x
;
...
...
src/jj2level/jj2level.cpp
View file @
1fe1fc7e
...
@@ -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
(
event
s
[
tY
][
tX
].
type
==
1
)
return
false
;
if
(
mod
s
[
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
(
event
s
[
tY
][
tX
].
type
!=
2
)
return
false
;
if
(
mod
s
[
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
)];
...
...
src/jj2level/jj2level.h
View file @
1fe1fc7e
...
@@ -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
*
*
...
@@ -53,14 +54,14 @@ typedef struct {
...
@@ -53,14 +54,14 @@ 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
;
}
JJ2
GridElement
;
}
JJ2
Tile
;
typedef
struct
{
typedef
struct
{
unsigned
char
type
;
unsigned
char
type
;
unsigned
char
data
[
3
]
;
int
property
;
}
JJ2
Event
;
}
JJ2
Modifier
;
// Classes
// Classes
...
@@ -70,7 +71,7 @@ class Font;
...
@@ -70,7 +71,7 @@ class Font;
class
JJ2Layer
{
class
JJ2Layer
{
private
:
private
:
JJ2
GridElement
**
grid
;
JJ2
Tile
**
grid
;
int
width
,
height
;
int
width
,
height
;
public
:
public
:
...
@@ -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
();
...
...
src/jj2level/jj2levelframe.cpp
View file @
1fe1fc7e
...
@@ -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,7 +40,7 @@
...
@@ -39,7 +40,7 @@
int
JJ2Level
::
step
()
{
int
JJ2Level
::
step
()
{
int
x
;
int
x
,
y
;
int
msps
;
int
msps
;
...
@@ -52,6 +53,10 @@ int JJ2Level::step () {
...
@@ -52,6 +53,10 @@ int JJ2Level::step () {
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
// scenery
// scenery
for
(
x
=
0
;
x
<
nPlayers
;
x
++
)
players
[
x
].
getJJ2LevelPlayer
()
->
move
(
ticks
,
msps
);
for
(
x
=
0
;
x
<
nPlayers
;
x
++
)
players
[
x
].
getJJ2LevelPlayer
()
->
move
(
ticks
,
msps
);
...
@@ -88,10 +93,15 @@ int JJ2Level::step () {
...
@@ -88,10 +93,15 @@ 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(
event
s[FTOT(players[x].getJJ2LevelPlayer()->getY() + PYO_MID)][FTOT(players[x].getJJ2LevelPlayer()->getX() + PXO_MID)].type, viewW >> 1, viewH >> 1);
//panelBigFont->showNumber(
mod
s[FTOT(players[x].getJJ2LevelPlayer()->getY() + PYO_MID)][FTOT(players[x].getJJ2LevelPlayer()->getX() + PXO_MID)].type, viewW >> 1, viewH >> 1);
}
}
...
...
src/jj2level/jj2levelload.cpp
View file @
1fe1fc7e
...
@@ -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
,
layerH
eight
;
int
width
,
pitch
,
h
eight
;
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
++
)
{
layerW
idth
=
((
int
*
)(
aBuffer
+
8443
+
8
))[
count
];
w
idth
=
((
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
,
layerH
eight
);
layers
[
count
]
=
new
JJ2Layer
(
width
,
h
eight
);
for
(
y
=
0
;
y
<
layerH
eight
;
y
++
)
{
for
(
y
=
0
;
y
<
h
eight
;
y
++
)
{
for
(
x
=
0
;
x
<
layerW
idth
;
x
++
)
{
for
(
x
=
0
;
x
<
w
idth
;
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,33 +552,50 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
...
@@ -558,33 +552,50 @@ 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
];
if
(
events
[
y
][
x
].
type
==
29
)
{
mods
[
y
][
x
].
type
=
count
;
mods
[
y
][
x
].
property
=
bBuffer
[(((
y
*
width
)
+
x
)
<<
2
)
+
1
];
if
(
count
==
29
)
{
// Jazz start pos
startX
=
x
;
startX
=
x
;
startY
=
y
;
startY
=
y
;
}
}
}
else
{
mods
[
y
][
x
].
type
=
0
;
events
=
new
JJ2Event
(
events
,
x
,
y
,
bBuffer
+
(((
y
*
width
)
+
x
)
<<
2
));
}
}
}
}
}
...
@@ -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
];
...
...
src/level/bullet.cpp
View file @
1fe1fc7e
...
@@ -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
)
{
...
...
src/level/event/bridge.cpp
View file @
1fe1fc7e
...
@@ -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
;
...
...
src/level/event/event.cpp
View file @
1fe1fc7e
...
@@ -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
;
...
...
src/level/event/guardians.cpp
View file @
1fe1fc7e
...
@@ -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
;
...
...
src/level/level.cpp
View file @
1fe1fc7e
...
@@ -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
;
...
...
src/level/level.h
View file @
1fe1fc7e
...
@@ -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
);
...
...
src/player/bird.cpp
View file @
1fe1fc7e
...
@@ -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
())
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment