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
ac000e21
Commit
ac000e21
authored
Apr 30, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Palette effects are now interface-specific rather than global. Added planet approach sequences.
parent
6aad385b
Changes
41
Show whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
582 additions
and
288 deletions
+582
-288
Makefile
Makefile
+2
-1
Makefile.arm
Makefile.arm
+2
-1
Makefile.debian
Makefile.debian
+2
-1
OpenJazz.h
src/OpenJazz.h
+9
-41
baselevel.cpp
src/baselevel.cpp
+3
-7
baselevel.h
src/baselevel.h
+12
-11
bonus.cpp
src/bonus/bonus.cpp
+5
-11
clientgame.cpp
src/game/clientgame.cpp
+3
-9
game.cpp
src/game/game.cpp
+45
-8
servergame.cpp
src/game/servergame.cpp
+1
-0
controls.cpp
src/io/controls.cpp
+4
-2
file.cpp
src/io/file.cpp
+6
-4
file.h
src/io/file.h
+1
-1
paletteeffects.h
src/io/gfx/paletteeffects.h
+10
-19
sprite.cpp
src/io/gfx/sprite.cpp
+15
-13
sprite.h
src/io/gfx/sprite.h
+3
-1
video.cpp
src/io/gfx/video.cpp
+1
-1
video.h
src/io/gfx/video.h
+2
-2
network.cpp
src/io/network.cpp
+3
-0
sound.cpp
src/io/sound.cpp
+24
-19
bullet.cpp
src/level/bullet.cpp
+1
-1
demolevel.cpp
src/level/demolevel.cpp
+4
-2
eventframe.cpp
src/level/event/eventframe.cpp
+1
-0
level.cpp
src/level/level.cpp
+17
-11
level.h
src/level/level.h
+4
-2
levelframe.cpp
src/level/levelframe.cpp
+2
-1
levelload.cpp
src/level/levelload.cpp
+3
-3
loop.h
src/loop.h
+44
-0
main.cpp
src/main.cpp
+89
-90
gamemenu.cpp
src/menu/gamemenu.cpp
+2
-0
mainmenu.cpp
src/menu/mainmenu.cpp
+1
-0
menuutil.cpp
src/menu/menuutil.cpp
+2
-0
setupmenu.cpp
src/menu/setupmenu.cpp
+1
-0
planet.cpp
src/planet/planet.cpp
+150
-0
planet.h
src/planet/planet.h
+16
-4
player.cpp
src/player/player.cpp
+4
-3
playerframe.cpp
src/player/playerframe.cpp
+2
-1
scene.cpp
src/scene/scene.cpp
+30
-8
sceneload.cpp
src/scene/sceneload.cpp
+1
-10
util.cpp
src/util.cpp
+2
-0
util.h
src/util.h
+53
-0
No files found.
Makefile
View file @
ac000e21
...
...
@@ -12,9 +12,10 @@ objects = src/bonus/bonus.o \
src/level/levelframe.o src/level/levelload.o
\
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o
\
src/menu/menuutil.o src/menu/setupmenu.o
\
src/planet/planet.o
\
src/player/bird.o src/player/player.o src/player/playerframe.o
\
src/scene/scene.o src/scene/sceneload.o
\
src/baselevel.o src/main.o src/movable.o src/
planet.o src/
util.o
\
src/baselevel.o src/main.o src/movable.o src/util.o
\
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.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
...
...
Makefile.arm
View file @
ac000e21
...
...
@@ -36,9 +36,10 @@ OBJS = src/bonus/bonus.o \
src/level/levelframe.o src/level/levelload.o
\
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o
\
src/menu/menuutil.o src/menu/setupmenu.o
\
src/planet/planet.o
\
src/player/bird.o src/player/player.o src/player/playerframe.o
\
src/scene/scene.o src/scene/sceneload.o
\
src/baselevel.o src/main.o src/movable.o src/
planet.o src/
util.o
\
src/baselevel.o src/main.o src/movable.o src/util.o
\
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.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
...
...
Makefile.debian
View file @
ac000e21
...
...
@@ -12,9 +12,10 @@ objects = src/bonus/bonus.o \
src/level/levelframe.o src/level/levelload.o
\
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o
\
src/menu/menuutil.o src/menu/setupmenu.o
\
src/planet/planet.o
\
src/player/bird.o src/player/player.o src/player/playerframe.o
\
src/scene/scene.o src/scene/sceneload.o
\
src/baselevel.o src/main.o src/movable.o src/
planet.o src/
util.o
\
src/baselevel.o src/main.o src/movable.o src/util.o
\
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.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/OpenJazz.h
View file @
ac000e21
...
...
@@ -15,6 +15,8 @@
* 3rd June 2009: Created network.h from parts of OpenJazz.h
* 13th July 2009: Created controls.h from parts of OpenJazz.h
* 13th July 2009: Created graphics.h from parts of OpenJazz.h
* 30th April 2010: Created util.h from parts of OpenJazz.h
* 30th April 2010: Created loop.h from parts of OpenJazz.h
*
* Part of the OpenJazz project
*
...
...
@@ -142,14 +144,11 @@
#define MUL(x, y) (((x) * (y)) >> 10)
#define DIV(x, y) (((x) << 10) / (y))
// Enum
enum
LoopType
{
NORMAL_LOOP
,
TYPING_LOOP
,
SET_KEY_LOOP
,
SET_JOYSTICK_LOOP
};
#ifdef VERBOSE
#define LOG(x, y) log(x, y)
#else
#define LOG(x, y)
#endif
// Datatype
...
...
@@ -159,39 +158,8 @@ typedef int fixed;
// Variable
// Time
EXTERN
unsigned
int
globalTicks
;
// Trigonometric function look-up tables
EXTERN
fixed
sinLut
[
1024
];
// Functions in main.cpp
EXTERN
int
loop
(
LoopType
type
);
// Functions in util.cpp
EXTERN
bool
fileExists
(
const
char
*
fileName
);
EXTERN
char
*
createString
(
const
char
*
string
);
EXTERN
char
*
createString
(
const
char
*
first
,
const
char
*
second
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
int
extension
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
const
char
*
extension
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
int
level
,
int
extension
);
EXTERN
char
*
createEditableString
(
const
char
*
string
);
EXTERN
void
log
(
const
char
*
message
);
EXTERN
void
log
(
const
char
*
message
,
const
char
*
detail
);
EXTERN
void
log
(
const
char
*
message
,
int
number
);
EXTERN
void
logError
(
const
char
*
message
,
const
char
*
detail
);
EXTERN
fixed
fSin
(
fixed
angle
);
EXTERN
fixed
fCos
(
fixed
angle
);
#ifdef VERBOSE
#define LOG(x, y) log(x, y)
#else
#define LOG(x, y)
#endif
#endif
src/baselevel.cpp
View file @
ac000e21
...
...
@@ -42,6 +42,8 @@ BaseLevel::BaseLevel () {
// Arbitrary initial value
smoothfps
=
50.0
f
;
paletteEffects
=
NULL
;
paused
=
false
;
// Set the level stage
...
...
@@ -56,13 +58,7 @@ BaseLevel::~BaseLevel () {
stopMusic
();
// Free the palette effects
if
(
paletteEffects
)
{
delete
paletteEffects
;
paletteEffects
=
NULL
;
}
if
(
paletteEffects
)
delete
paletteEffects
;
SDL_FreeSurface
(
tileSet
);
...
...
src/baselevel.h
View file @
ac000e21
...
...
@@ -24,7 +24,7 @@
#define _BASELEVEL_H
#include "
OpenJazz
.h"
#include "
io/gfx/paletteeffects
.h"
#include <SDL/SDL.h>
...
...
@@ -63,6 +63,7 @@ class BaseLevel {
protected
:
SDL_Surface
*
tileSet
;
Sprite
*
spriteSet
;
PaletteEffect
*
paletteEffects
;
SDL_Color
palette
[
256
];
int
sprites
;
unsigned
int
tickOffset
,
prevStepTicks
,
prevTicks
,
ticks
;
...
...
src/bonus/bonus.cpp
View file @
ac000e21
...
...
@@ -38,6 +38,8 @@
#include "io/sound.h"
#include "menu/menu.h"
#include "player/player.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
@@ -598,8 +600,8 @@ void Bonus::draw () {
if
(
sprite
)
{
nX
=
DIV
(
MUL
(
sX
,
playerCos
)
+
MUL
(
sY
,
playerSin
),
divisor
);
dst
.
x
=
FTOI
(
nX
*
canvasW
)
+
(
(
canvasW
-
(
ITOF
(
sprite
->
getWidth
()
<<
5
)
/
divisor
))
>>
1
);
dst
.
y
=
(
canvasH
-
(
ITOF
(
sprite
->
getHeight
()
<<
5
)
/
divisor
))
>>
1
;
dst
.
x
=
FTOI
(
nX
*
canvasW
)
+
(
canvasW
>>
1
);
dst
.
y
=
canvasH
>>
1
;
sprite
->
drawScaled
(
dst
.
x
,
dst
.
y
,
DIV
(
F32
,
divisor
));
}
...
...
@@ -642,7 +644,6 @@ void Bonus::draw () {
int
Bonus
::
play
()
{
const
char
*
options
[
3
]
=
{
"continue game"
,
"setup options"
,
"quit game"
};
PaletteEffect
*
levelPE
;
bool
pmenu
,
pmessage
;
int
stats
,
option
;
unsigned
int
returnTime
;
...
...
@@ -663,7 +664,7 @@ int Bonus::play () {
while
(
true
)
{
if
(
loop
(
NORMAL_LOOP
)
==
E_QUIT
)
return
E_QUIT
;
if
(
loop
(
NORMAL_LOOP
,
paletteEffects
)
==
E_QUIT
)
return
E_QUIT
;
if
(
controls
.
release
(
C_ESCAPE
))
{
...
...
@@ -703,18 +704,11 @@ int Bonus::play () {
if
(
!
gameMode
)
{
// Don't want palette effects in setup menu
levelPE
=
paletteEffects
;
paletteEffects
=
NULL
;
if
(
menu
->
setup
()
==
E_QUIT
)
return
E_QUIT
;
// Restore level palette
video
.
setPalette
(
palette
);
// Restore palette effects
paletteEffects
=
levelPE
;
}
break
;
...
...
src/game/clientgame.cpp
View file @
ac000e21
...
...
@@ -32,6 +32,8 @@
#include "level/level.h"
#include "menu/menu.h"
#include "player/player.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
@@ -246,14 +248,6 @@ int ClientGame::setLevel (char* fileName) {
int
ret
;
// Free the palette effects
if
(
paletteEffects
)
{
delete
paletteEffects
;
paletteEffects
=
NULL
;
}
video
.
setPalette
(
menu
->
palettes
[
1
]);
// Wait for level data to start arriving
...
...
src/game/game.cpp
View file @
ac000e21
...
...
@@ -32,7 +32,9 @@
#include "io/gfx/video.h"
#include "io/sound.h"
#include "level/level.h"
#include "planet/planet.h"
#include "player/player.h"
#include "util.h"
#include <string.h>
...
...
@@ -92,12 +94,15 @@ int Game::setLevel (char *fileName) {
int
Game
::
play
()
{
Planet
*
planet
;
Bonus
*
bonus
;
char
*
bonusFil
e
;
char
*
fileNam
e
;
bool
checkpoint
;
int
ret
;
int
planetId
;
checkpoint
=
false
;
planetId
=
-
1
;
// Play the level(s)
while
(
true
)
{
...
...
@@ -134,9 +139,9 @@ int Game::play () {
}
else
if
(
ret
==
WON
)
{
// Go to next level
bonusFil
e
=
createFileName
(
F_BONUSMAP
,
(
levelFile
[
10
]
*
10
)
+
levelFile
[
11
]
-
527
);
setLevel
(
bonusFil
e
);
delete
[]
bonusFil
e
;
fileNam
e
=
createFileName
(
F_BONUSMAP
,
(
levelFile
[
10
]
*
10
)
+
levelFile
[
11
]
-
527
);
setLevel
(
fileNam
e
);
delete
[]
fileNam
e
;
}
...
...
@@ -154,6 +159,38 @@ int Game::play () {
}
planet
=
NULL
;
fileName
=
createFileName
(
F_PLANET
,
levelFile
+
strlen
(
levelFile
)
-
3
);
try
{
planet
=
new
Planet
(
fileName
,
planetId
);
}
catch
(
int
e
)
{
// Do nothing
}
delete
[]
fileName
;
if
(
planet
)
{
if
(
planet
->
play
()
==
E_QUIT
)
{
delete
planet
;
delete
level
;
return
E_QUIT
;
}
planetId
=
planet
->
getId
();
delete
planet
;
}
ret
=
level
->
play
();
if
(
ret
<=
0
)
{
...
...
src/game/servergame.cpp
View file @
ac000e21
...
...
@@ -31,6 +31,7 @@
#include "io/network.h"
#include "level/level.h"
#include "player/player.h"
#include "util.h"
#include <string.h>
...
...
src/io/controls.cpp
View file @
ac000e21
...
...
@@ -26,11 +26,13 @@
#include "controls.h"
#include "loop.h"
#if defined(WIZ) || defined(GP2X)
#include "platforms/wiz.h"
#endif
Controls
::
Controls
()
{
int
count
;
...
...
src/io/file.cpp
View file @
ac000e21
...
...
@@ -23,6 +23,7 @@
#include "file.h"
#include "io/gfx/video.h"
#include "util.h"
#include <string.h>
...
...
@@ -74,7 +75,7 @@ bool File::open (const char* path, const char* name, bool write) {
filePath
=
createString
(
path
,
name
);
#ifdef UPPERCASE_FILENAMES
for
(
count
=
strlen
(
path
);
count
<
strlen
(
filePath
)
;
count
++
)
{
for
(
count
=
strlen
(
path
);
filePath
[
count
]
;
count
++
)
{
if
((
filePath
[
count
]
>=
97
)
&&
(
filePath
[
count
]
<=
122
))
filePath
[
count
]
-=
32
;
...
...
@@ -82,7 +83,7 @@ bool File::open (const char* path, const char* name, bool write) {
#endif
#ifdef LOWERCASE_FILENAMES
for
(
count
=
strlen
(
path
);
count
<
strlen
(
filePath
)
;
count
++
)
{
for
(
count
=
strlen
(
path
);
filePath
[
count
]
;
count
++
)
{
if
((
filePath
[
count
]
>=
65
)
&&
(
filePath
[
count
]
<=
90
))
filePath
[
count
]
+=
32
;
...
...
@@ -428,12 +429,13 @@ unsigned char* File::loadPixels (int length, int key) {
}
void
File
::
loadPalette
(
SDL_Color
*
palette
)
{
void
File
::
loadPalette
(
SDL_Color
*
palette
,
bool
rle
)
{
unsigned
char
*
buffer
;
int
count
;
buffer
=
loadRLE
(
768
);
if
(
rle
)
buffer
=
loadRLE
(
768
);
else
buffer
=
loadBlock
(
768
);
for
(
count
=
0
;
count
<
256
;
count
++
)
{
...
...
src/io/file.h
View file @
ac000e21
...
...
@@ -60,7 +60,7 @@ class File {
SDL_Surface
*
loadSurface
(
int
width
,
int
height
);
unsigned
char
*
loadPixels
(
int
length
);
unsigned
char
*
loadPixels
(
int
length
,
int
key
);
void
loadPalette
(
SDL_Color
*
palette
);
void
loadPalette
(
SDL_Color
*
palette
,
bool
rle
=
true
);
};
...
...
src/io/gfx/paletteeffects.h
View file @
ac000e21
...
...
@@ -124,8 +124,7 @@ class FlashPaletteEffect : public PaletteEffect {
unsigned
char
red
,
green
,
blue
;
// Flash colour
public
:
FlashPaletteEffect
(
unsigned
char
newRed
,
unsigned
char
newGreen
,
unsigned
char
newBlue
,
int
newDuration
,
PaletteEffect
*
nextPE
);
FlashPaletteEffect
(
unsigned
char
newRed
,
unsigned
char
newGreen
,
unsigned
char
newBlue
,
int
newDuration
,
PaletteEffect
*
nextPE
);
void
apply
(
SDL_Color
*
shownPalette
,
bool
direct
,
int
mspf
);
...
...
@@ -141,8 +140,7 @@ class RotatePaletteEffect : public PaletteEffect {
fixed
position
;
public
:
RotatePaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
RotatePaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
void
apply
(
SDL_Color
*
shownPalette
,
bool
direct
,
int
mspf
);
...
...
@@ -152,14 +150,13 @@ class RotatePaletteEffect : public PaletteEffect {
class
SkyPaletteEffect
:
public
PaletteEffect
{
private
:
SDL_Color
*
skyPalette
;
SDL_Color
*
skyPalette
;
unsigned
char
first
;
/* The first palette index affected */
int
amount
;
/* The number of (consecutive) palette indices affected */
fixed
speed
;
// Relative Y speed - as in Jazz 2
public
:
SkyPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
SDL_Color
*
newSkyPalette
,
PaletteEffect
*
nextPE
);
SkyPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
SDL_Color
*
newSkyPalette
,
PaletteEffect
*
nextPE
);
void
apply
(
SDL_Color
*
shownPalette
,
bool
direct
,
int
mspf
);
...
...
@@ -174,8 +171,7 @@ class P2DPaletteEffect : public PaletteEffect {
fixed
speed
;
// Relative X & Y speed - as in Jazz 2
public
:
P2DPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
P2DPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
void
apply
(
SDL_Color
*
shownPalette
,
bool
direct
,
int
mspf
);
...
...
@@ -190,8 +186,7 @@ class P1DPaletteEffect : public PaletteEffect {
fixed
speed
;
// Relative X & Y speed - as in Jazz 2
public
:
P1DPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
P1DPaletteEffect
(
unsigned
char
newFirst
,
int
newAmount
,
fixed
newSpeed
,
PaletteEffect
*
nextPE
);
void
apply
(
SDL_Color
*
shownPalette
,
bool
direct
,
int
mspf
);
...
...
@@ -211,10 +206,6 @@ class WaterPaletteEffect : public PaletteEffect {
};
// Variable
EXTERN
PaletteEffect
*
paletteEffects
;
#endif
src/io/gfx/sprite.cpp
View file @
ac000e21
...
...
@@ -138,31 +138,33 @@ void Sprite::drawScaled (int x, int y, fixed scale) {
unsigned
char
*
srcRow
;
unsigned
char
*
dstRow
;
unsigned
char
pixel
,
key
;
int
width
,
height
;
int
width
,
height
,
fullWidth
,
fullHeight
;
int
dstX
,
dstY
;
int
srcX
,
srcY
;
key
=
pixels
->
format
->
colorkey
;
width
=
FTOI
(
pixels
->
w
*
scale
);
if
(
x
+
width
>
canvasW
)
width
=
canvasW
-
x
;
if
(
x
<
-
width
)
return
;
// Off-screen
fullWidth
=
FTOI
(
pixels
->
w
*
scale
);
if
(
x
<
-
(
fullWidth
>>
1
))
return
;
// Off-screen
if
(
x
+
(
fullWidth
>>
1
)
>
canvasW
)
width
=
canvasW
+
(
fullWidth
>>
1
)
-
x
;
else
width
=
fullWidth
;
height
=
FTOI
(
pixels
->
h
*
scale
);
if
(
y
+
height
>
canvasH
)
height
=
canvasH
-
y
;
if
(
y
<
-
height
)
return
;
// Off-screen
fullHeight
=
FTOI
(
pixels
->
h
*
scale
);
if
(
y
<
-
(
fullHeight
>>
1
))
return
;
// Off-screen
if
(
y
+
(
fullHeight
>>
1
)
>
canvasH
)
height
=
canvasH
+
(
fullHeight
>>
1
)
-
y
;
else
height
=
fullHeight
;
if
(
SDL_MUSTLOCK
(
canvas
))
SDL_LockSurface
(
canvas
);
if
(
y
<
0
)
{
if
(
y
<
(
fullHeight
>>
1
)
)
{
srcY
=
-
y
;
srcY
=
(
fullHeight
>>
1
)
-
y
;
dstY
=
0
;
}
else
{
srcY
=
0
;
dstY
=
y
;
dstY
=
y
-
(
fullHeight
>>
1
)
;
}
...
...
@@ -171,15 +173,15 @@ void Sprite::drawScaled (int x, int y, fixed scale) {
srcRow
=
((
unsigned
char
*
)(
pixels
->
pixels
))
+
(
pixels
->
pitch
*
DIV
(
srcY
,
scale
));
dstRow
=
((
unsigned
char
*
)(
canvas
->
pixels
))
+
(
canvas
->
pitch
*
dstY
);
if
(
x
<
0
)
{
if
(
x
<
(
fullWidth
>>
1
)
)
{
srcX
=
-
x
;
srcX
=
(
fullWidth
>>
1
)
-
x
;
dstX
=
0
;
}
else
{
srcX
=
0
;
dstX
=
x
;
dstX
=
x
-
(
fullWidth
>>
1
)
;
}
...
...
src/io/gfx/sprite.h
View file @
ac000e21
...
...
@@ -25,6 +25,8 @@
#define _SPRITE_H
#include "OpenJazz.h"
#include <SDL/SDL.h>
...
...
src/io/gfx/video.cpp
View file @
ac000e21
...
...
@@ -267,7 +267,7 @@ void Video::expose () {
}
void
Video
::
flip
(
int
mspf
)
{
void
Video
::
flip
(
int
mspf
,
PaletteEffect
*
paletteEffects
)
{
SDL_Color
shownPalette
[
256
];
...
...
src/io/gfx/video.h
View file @
ac000e21
...
...
@@ -24,7 +24,7 @@
#define _VIDEO_H
#include "
OpenJazz
.h"
#include "
paletteeffects
.h"
#include <SDL/SDL.h>
...
...
@@ -91,7 +91,7 @@ class Video {
#endif
void
expose
();
void
flip
(
int
mspf
);
void
flip
(
int
mspf
,
PaletteEffect
*
paletteEffects
);
};
...
...
src/io/network.cpp
View file @
ac000e21
...
...
@@ -32,6 +32,9 @@
#include "gfx/video.h"
#include "network.h"
#include "loop.h"
#include "util.h"
#ifdef USE_SOCKETS
#ifdef WIN32
#include <winsock.h>
...
...
src/io/sound.cpp
View file @
ac000e21
...
...
@@ -30,32 +30,37 @@
#include "file.h"
#include "sound.h"
#include "util.h"
#include <SDL/SDL_audio.h>
#ifdef USE_MODPLUG
#include <modplug.h>
#endif
#ifdef __SYMBIAN32__
#define SOUND_FREQ 22050
#define SOUND_FREQ 22050
#else
#define SOUND_FREQ 44100
#define SOUND_FREQ 44100
#endif
#ifdef USE_MODPLUG
#include <modplug.h>
#ifdef __SYMBIAN32__
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_LINEAR
#define MUSIC_FLAGS MODPLUG_ENABLE_MEGABASS
#elif defined(WIZ) || defined(GP2X)
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_LINEAR
#define MUSIC_FLAGS 0
#else
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_FIR
#define MUSIC_FLAGS MODPLUG_ENABLE_NOISE_REDUCTION | MODPLUG_ENABLE_REVERB | MODPLUG_ENABLE_MEGABASS | MODPLUG_ENABLE_SURROUND
#endif
ModPlugFile
*
musicFile
;
#ifdef __SYMBIAN32__
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_LINEAR
#define MUSIC_FLAGS MODPLUG_ENABLE_MEGABASS
#else
#if defined(WIZ) || defined(GP2X)
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_LINEAR
#define MUSIC_FLAGS 0
#else
#define MUSIC_RESAMPLEMODE MODPLUG_RESAMPLE_FIR
#define MUSIC_FLAGS MODPLUG_ENABLE_NOISE_REDUCTION | MODPLUG_ENABLE_REVERB | MODPLUG_ENABLE_MEGABASS | MODPLUG_ENABLE_SURROUND
#endif
#endif
#endif
SDL_AudioSpec
audioSpec
;
...
...
src/level/bullet.cpp
View file @
ac000e21
...
...
@@ -66,7 +66,7 @@ Bullet::Bullet (Player* sourcePlayer, bool lower, unsigned int ticks) {
time
=
ticks
+
T_TNT
;
// Red flash
paletteEffects
=
new
FlashPaletteEffect
(
255
,
0
,
0
,
T_TNT
,
paletteEffects
);
level
->
flash
(
255
,
0
,
0
,
T_TNT
);
}
else
{
...
...
src/level/demolevel.cpp
View file @
ac000e21
...
...
@@ -35,6 +35,8 @@
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "player/player.h"
#include "loop.h"
#include "util.h"
DemoLevel
::
DemoLevel
(
const
char
*
fileName
)
{
...
...
@@ -108,7 +110,7 @@ int DemoLevel::play () {
while
(
true
)
{
// Do general processing
if
(
loop
(
NORMAL_LOOP
)
==
E_QUIT
)
return
E_QUIT
;
if
(
loop
(
NORMAL_LOOP
,
paletteEffects
)
==
E_QUIT
)
return
E_QUIT
;
if
(
controls
.
release
(
C_ESCAPE
))
return
E_NONE
;
...
...
src/level/event/eventframe.cpp
View file @
ac000e21
...
...
@@ -34,6 +34,7 @@
#include "io/gfx/video.h"
#include "io/sound.h"
#include "player/player.h"
#include "util.h"
#include <stdlib.h>
...
...
src/level/level.cpp
View file @
ac000e21
...
...
@@ -53,6 +53,8 @@
#include "menu/menu.h"
#include "player/player.h"
#include "scene/scene.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
@@ -102,6 +104,7 @@ Level::~Level () {
}
delete
[]
sceneFile
;
delete
[]
musicFile
;
return
;
...
...
@@ -387,6 +390,15 @@ void Level::playSound (int sound) {
}
void
Level
::
flash
(
unsigned
char
red
,
unsigned
char
green
,
unsigned
char
blue
,
int
duration
)
{
paletteEffects
=
new
FlashPaletteEffect
(
red
,
green
,
blue
,
duration
,
paletteEffects
);
return
;
}
void
Level
::
setStage
(
LevelStage
newStage
)
{
unsigned
char
buffer
[
MTL_L_STAGE
];
...
...
@@ -505,7 +517,6 @@ int Level::play () {
const
char
*
options
[
5
]
=
{
"continue game"
,
"save game"
,
"load game"
,
"setup options"
,
"quit game"
};
PaletteEffect
*
levelPE
;
char
*
string
;
bool
pmessage
,
pmenu
;
int
stats
,
option
;
...
...
@@ -529,9 +540,11 @@ int Level::play () {
video
.
setPalette
(
palette
);
playMusic
(
musicFile
);
while
(
true
)
{
if
(
loop
(
NORMAL_LOOP
)
==
E_QUIT
)
return
E_QUIT
;
if
(
loop
(
NORMAL_LOOP
,
paletteEffects
)
==
E_QUIT
)
return
E_QUIT
;
if
(
controls
.
release
(
C_ESCAPE
))
{
...
...
@@ -579,18 +592,11 @@ int Level::play () {
if
(
!
gameMode
)
{
// Don't want palette effects in setup menu
levelPE
=
paletteEffects
;
paletteEffects
=
NULL
;
if
(
menu
->
setup
()
==
E_QUIT
)
return
E_QUIT
;
// Restore level palette
video
.
setPalette
(
palette
);
// Restore palette effects
paletteEffects
=
levelPE
;
}
break
;
...
...
src/level/level.h
View file @
ac000e21
...
...
@@ -92,6 +92,7 @@ class Scene;
class
Level
:
public
BaseLevel
{
private
:
char
*
musicFile
;
char
*
sceneFile
;
Anim
animSet
[
ANIMS
];
char
miscAnims
[
4
];
...
...
@@ -148,6 +149,7 @@ class Level : public BaseLevel {
void
setWaterLevel
(
unsigned
char
gridY
);
fixed
getWaterLevel
();
void
playSound
(
int
sound
);
void
flash
(
unsigned
char
red
,
unsigned
char
green
,
unsigned
char
blue
,
int
duration
);
void
setStage
(
LevelStage
stage
);
LevelStage
getStage
();
void
receive
(
unsigned
char
*
buffer
);
...
...
src/level/levelframe.cpp
View file @
ac000e21
...
...
@@ -38,6 +38,7 @@
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "player/player.h"
#include "util.h"
int
Level
::
step
()
{
...
...
src/level/levelload.cpp
View file @
ac000e21
...
...
@@ -43,6 +43,8 @@
#include "io/sound.h"
#include "menu/menu.h"
#include "player/player.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
@@ -712,12 +714,10 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
file
->
seek
(
x
+
288
,
true
);
// Music file
string
=
file
->
loadString
();
playMusic
(
string
);
musicFile
=
file
->
loadString
();
// 26 bytes of undiscovered usefulness, less the music file name
file
->
seek
(
x
+
314
,
true
);
delete
[]
string
;
// End of episode cutscene
sceneFile
=
file
->
loadString
();
...
...
src/loop.h
0 → 100644
View file @
ac000e21
/*
*
* loop.h
*
* 30th April 2010: Created loop.h from parts of OpenJazz.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 _LOOP_H
#define _LOOP_H
#include "io/gfx/paletteeffects.h"
// Enum
enum
LoopType
{
NORMAL_LOOP
,
TYPING_LOOP
,
SET_KEY_LOOP
,
SET_JOYSTICK_LOOP
};
// Function in main.cpp
EXTERN
int
loop
(
LoopType
type
,
PaletteEffect
*
paletteEffects
=
NULL
);
#endif
src/main.cpp
View file @
ac000e21
...
...
@@ -44,6 +44,8 @@
#include "menu/menu.h"
#include "player/player.h"
#include "scene/scene.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
@@ -304,9 +306,6 @@ int loadMain (int argc, char *argv[]) {
if
(
SDL_NumJoysticks
()
>
0
)
SDL_JoystickOpen
(
0
);
paletteEffects
=
NULL
;
// Set up audio
openAudio
();
...
...
@@ -581,7 +580,7 @@ void freeMain () {
}
int
loop
(
LoopType
type
)
{
int
loop
(
LoopType
type
,
PaletteEffect
*
paletteEffects
)
{
SDL_Event
event
;
int
prevTicks
,
ret
;
...
...
@@ -592,7 +591,7 @@ int loop (LoopType type) {
globalTicks
=
SDL_GetTicks
();
// Show what has been drawn
video
.
flip
(
globalTicks
-
prevTicks
);
video
.
flip
(
globalTicks
-
prevTicks
,
paletteEffects
);
// Process system events
...
...
src/menu/gamemenu.cpp
View file @
ac000e21
...
...
@@ -34,6 +34,8 @@
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "io/sound.h"
#include "loop.h"
#include "util.h"
int
Menu
::
newGameDifficulty
(
GameModeType
mode
,
int
levelNum
,
int
worldNum
)
{
...
...
src/menu/mainmenu.cpp
View file @
ac000e21
...
...
@@ -36,6 +36,7 @@
#include "level/level.h"
#include "player/player.h"
#include "scene/scene.h"
#include "loop.h"
int
Menu
::
main
()
{
...
...
src/menu/menuutil.cpp
View file @
ac000e21
...
...
@@ -31,6 +31,8 @@
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "io/sound.h"
#include "loop.h"
#include "util.h"
#include <string.h>
...
...
src/menu/setupmenu.cpp
View file @
ac000e21
...
...
@@ -33,6 +33,7 @@
#include "io/gfx/video.h"
#include "io/sound.h"
#include "player/player.h"
#include "loop.h"
int
Menu
::
setupKeyboard
()
{
...
...
src/planet.cpp
→
src/planet
/planet
.cpp
View file @
ac000e21
...
...
@@ -31,11 +31,20 @@
#include "io/controls.h"
#include "io/file.h"
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "io/sound.h"
#include "loop.h"
#include "util.h"
#include <string.h>
Planet
::
Planet
(
char
*
fileName
)
{
Planet
::
Planet
(
char
*
fileName
,
int
previous
)
{
File
*
file
;
unsigned
char
*
pixels
;
int
count
;
try
{
...
...
@@ -47,7 +56,36 @@ Planet::Planet (char * fileName) {
}
// TODO: Load planet file
id
=
file
->
loadShort
();
if
(
id
==
previous
)
{
// Not approaching a planet if already there
delete
file
;
throw
E_NONE
;
}
// Load planet name
name
=
file
->
loadString
();
// Lower-case the name
for
(
count
=
0
;
name
[
count
];
count
++
)
{
if
((
name
[
count
]
>=
65
)
&&
(
name
[
count
]
<=
90
))
name
[
count
]
+=
32
;
}
// Load the palette
file
->
loadPalette
(
palette
,
false
);
// Load the planet image
pixels
=
file
->
loadBlock
(
64
*
55
);
sprite
.
setPixels
(
pixels
,
64
,
55
,
0
);
delete
[]
pixels
;
delete
file
;
...
...
@@ -58,22 +96,50 @@ Planet::Planet (char * fileName) {
Planet
::~
Planet
()
{
// Nothing to do
delete
[]
name
;
return
;
}
int
Planet
::
getId
()
{
return
id
;
}
int
Planet
::
play
()
{
unsigned
int
tickOffset
;
tickOffset
=
globalTicks
;
stopMusic
();
video
.
setPalette
(
palette
);
while
(
true
)
{
if
(
loop
(
NORMAL_LOOP
)
==
E_QUIT
)
return
E_QUIT
;
if
(
controls
.
release
(
C_ESCAPE
))
return
E_NONE
;
// TODO: Display planet
SDL_Delay
(
T_FRAME
);
clearScreen
(
0
);
if
(
globalTicks
-
tickOffset
<
F2
)
sprite
.
drawScaled
(
canvasW
>>
1
,
canvasH
>>
1
,
globalTicks
-
tickOffset
);
else
if
(
globalTicks
-
tickOffset
<
F4
)
sprite
.
drawScaled
(
canvasW
>>
1
,
canvasH
>>
1
,
F2
);
else
if
(
globalTicks
-
tickOffset
<
F4
+
FQ
)
sprite
.
drawScaled
(
canvasW
>>
1
,
canvasH
>>
1
,
(
globalTicks
-
tickOffset
-
F4
)
*
32
+
F2
);
else
return
E_NONE
;
fontmn1
->
showString
(
"now approaching"
,
(
canvasW
-
288
)
>>
1
,
0
);
fontmn1
->
showString
(
name
,
(
canvasW
-
fontmn1
->
getStringWidth
(
name
))
>>
1
,
canvasH
-
24
);
}
...
...
src/planet.h
→
src/planet
/planet
.h
View file @
ac000e21
...
...
@@ -24,14 +24,26 @@
#define _PLANET_H
#include "io/gfx/sprite.h"
#include <SDL/SDL.h>
// Class
class
Planet
{
private
:
SDL_Color
palette
[
256
];
Sprite
sprite
;
char
*
name
;
int
id
;
public
:
Planet
(
char
*
fileName
);
Planet
(
char
*
fileName
,
int
previous
);
~
Planet
();
int
getId
();
int
play
();
};
...
...
src/player/player.cpp
View file @
ac000e21
...
...
@@ -41,6 +41,7 @@
#include "io/sound.h"
#include "level/event/event.h"
#include "level/level.h"
#include "util.h"
#include <string.h>
...
...
@@ -407,7 +408,7 @@ bool Player::takeEvent (unsigned char gridX, unsigned char gridY, unsigned int t
gem
=
true
;
// Yellow flash
paletteEffects
=
new
FlashPaletteEffect
(
255
,
255
,
0
,
320
,
paletteEffects
);
level
->
flash
(
255
,
255
,
0
,
320
);
break
;
...
...
@@ -459,7 +460,7 @@ bool Player::touchEvent (unsigned char gridX, unsigned char gridY, unsigned int
warpTime
=
ticks
+
T_WARP
;
// White flash
paletteEffects
=
new
FlashPaletteEffect
(
255
,
255
,
255
,
T_WARP
,
paletteEffects
);
level
->
flash
(
255
,
255
,
255
,
T_WARP
);
}
...
...
@@ -594,7 +595,7 @@ void Player::kill (Player *source, unsigned int ticks) {
}
if
(
!
gameMode
)
paletteEffects
=
new
FadeOutPaletteEffect
(
T_END
,
paletteEffects
);
if
(
!
gameMode
)
level
->
flash
(
0
,
0
,
0
,
T_END
<<
1
);
return
;
...
...
src/player/playerframe.cpp
View file @
ac000e21
...
...
@@ -37,6 +37,7 @@
#include "level/bullet.h"
#include "level/event/event.h"
#include "level/level.h"
#include "util.h"
void
Player
::
control
(
unsigned
int
ticks
,
int
msps
)
{
...
...
@@ -731,7 +732,7 @@ void Player::view (unsigned int ticks, int mspf) {
// Apply lag proportional to player "speed"
speed
=
((
dx
>=
0
?
dx
:
-
dx
)
+
(
dy
>=
0
?
dy
:
-
dy
))
>>
14
;
if
(
mspf
<
speed
)
{
if
(
speed
&&
(
mspf
<
speed
)
)
{
viewX
=
((
oldViewX
*
(
speed
-
mspf
))
+
(
viewX
*
mspf
))
/
speed
;
viewY
=
((
oldViewY
*
(
speed
-
mspf
))
+
(
viewY
*
mspf
))
/
speed
;
...
...
src/scene/scene.cpp
View file @
ac000e21
...
...
@@ -35,6 +35,7 @@
#include "io/gfx/paletteeffects.h"
#include "io/gfx/video.h"
#include "io/sound.h"
#include "loop.h"
#include <string.h>
...
...
@@ -256,6 +257,7 @@ int Scene::play () {
SceneAnimation
*
animation
=
NULL
;
SceneFrame
*
currentFrame
=
NULL
;
SceneFrame
*
lastFrame
=
NULL
;
PaletteEffect
*
paletteEffect
=
NULL
;
int
frameDelay
=
0
;
int
prevFrame
=
0
;
int
continueToNextPage
=
0
;
...
...
@@ -269,9 +271,21 @@ int Scene::play () {
while
(
true
)
{
if
(
loop
(
NORMAL_LOOP
)
==
E_QUIT
)
return
E_QUIT
;
if
(
loop
(
NORMAL_LOOP
,
paletteEffect
)
==
E_QUIT
)
{
if
(
controls
.
release
(
C_ESCAPE
)
||
(
controls
.
release
(
C_NO
)
&&
pages
[
sceneIndex
].
askForYesNo
))
return
E_NONE
;
if
(
paletteEffect
)
delete
paletteEffect
;
return
E_QUIT
;
}
if
(
controls
.
release
(
C_ESCAPE
)
||
(
controls
.
release
(
C_NO
)
&&
pages
[
sceneIndex
].
askForYesNo
))
{
if
(
paletteEffect
)
delete
paletteEffect
;
return
E_NONE
;
}
SDL_Delay
(
T_FRAME
);
...
...
@@ -298,7 +312,13 @@ int Scene::play () {
if
(
upOrLeft
)
sceneIndex
--
;
else
sceneIndex
++
;
if
(
sceneIndex
==
scriptItems
)
return
E_NONE
;
if
(
sceneIndex
==
scriptItems
)
{
if
(
paletteEffect
)
delete
paletteEffect
;
return
E_NONE
;
}
lastTicks
=
globalTicks
;
// Get bg for this page
...
...
@@ -310,7 +330,8 @@ int Scene::play () {
if
(
newpage
)
{
//paletteEffects = new FadeOutPaletteEffect(250, paletteEffects);
//if (paletteEffect) delete paletteEffect;
//paletteEffect = new FadeOutPaletteEffect(250, NULL);
textRect
.
x
=
0
;
textRect
.
y
=
0
;
...
...
@@ -325,7 +346,8 @@ int Scene::play () {
video
.
setPalette
(
palette
->
palette
);
// Fade in from black
paletteEffects
=
new
FadeInPaletteEffect
(
250
,
paletteEffects
);
if
(
paletteEffect
)
delete
paletteEffect
;
paletteEffect
=
new
FadeInPaletteEffect
(
250
,
NULL
);
}
...
...
src/scene/sceneload.cpp
View file @
ac000e21
...
...
@@ -239,20 +239,11 @@ void Scene::loadAni (File *f, int dataIndex) {
int
nextPos
=
f
->
tell
();
LOG
(
"PL Read position"
,
pos
);
unsigned
short
int
len
=
f
->
loadShort
();
unsigned
char
*
buffer
=
f
->
loadBlock
(
len
);
palettes
=
new
ScenePalette
(
palettes
);
f
or
(
int
count
=
0
;
count
<
256
;
count
++
)
{
f
->
loadPalette
(
palettes
->
palette
,
false
);
// Palette entries are 6-bit
// Shift them upwards to 8-bit, and fill in the lower 2 bits
palettes
->
palette
[
count
].
r
=
(
buffer
[
count
*
3
]
<<
2
)
+
(
buffer
[
count
*
3
]
>>
4
);
palettes
->
palette
[
count
].
g
=
(
buffer
[(
count
*
3
)
+
1
]
<<
2
)
+
(
buffer
[(
count
*
3
)
+
1
]
>>
4
);
palettes
->
palette
[
count
].
b
=
(
buffer
[(
count
*
3
)
+
2
]
<<
2
)
+
(
buffer
[(
count
*
3
)
+
2
]
>>
4
);
}
delete
[]
buffer
;
palettes
->
id
=
dataIndex
;
unsigned
short
int
value
=
0
;
...
...
src/util.cpp
View file @
ac000e21
...
...
@@ -29,6 +29,8 @@
*/
#include "util.h"
#include "io/file.h"
#include <string.h>
...
...
src/util.h
0 → 100644
View file @
ac000e21
/*
*
* util.h
*
* 30th April 2010: Created util.h from parts of OpenJazz.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 _UTIL_H
#define _UTIL_H
#include "OpenJazz.h"
// Variable
// Trigonometric function look-up table
EXTERN
fixed
sinLut
[
1024
];
// Functions
EXTERN
bool
fileExists
(
const
char
*
fileName
);
EXTERN
char
*
createString
(
const
char
*
string
);
EXTERN
char
*
createString
(
const
char
*
first
,
const
char
*
second
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
int
extension
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
const
char
*
extension
);
EXTERN
char
*
createFileName
(
const
char
*
type
,
int
level
,
int
extension
);
EXTERN
char
*
createEditableString
(
const
char
*
string
);
EXTERN
void
log
(
const
char
*
message
);
EXTERN
void
log
(
const
char
*
message
,
const
char
*
detail
);
EXTERN
void
log
(
const
char
*
message
,
int
number
);
EXTERN
void
logError
(
const
char
*
message
,
const
char
*
detail
);
EXTERN
fixed
fSin
(
fixed
angle
);
EXTERN
fixed
fCos
(
fixed
angle
);
#endif
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