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
9a3017d7
Commit
9a3017d7
authored
Jun 25, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Further separation of the Player classes.
parent
e8d61c9a
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
231 additions
and
247 deletions
+231
-247
bonus.cpp
src/bonus/bonus.cpp
+12
-17
clientgame.cpp
src/game/clientgame.cpp
+1
-1
game.cpp
src/game/game.cpp
+14
-9
game.h
src/game/game.h
+3
-2
gamemode.cpp
src/game/gamemode.cpp
+10
-13
gamemode.h
src/game/gamemode.h
+7
-7
servergame.cpp
src/game/servergame.cpp
+12
-10
bullet.cpp
src/level/bullet.cpp
+9
-9
bullet.h
src/level/bullet.h
+7
-6
event.cpp
src/level/event/event.cpp
+1
-1
event.h
src/level/event/event.h
+2
-2
level.cpp
src/level/level.cpp
+3
-4
level.h
src/level/level.h
+2
-2
levelframe.cpp
src/level/levelframe.cpp
+1
-1
levelload.cpp
src/level/levelload.cpp
+23
-26
bird.cpp
src/player/bird.cpp
+10
-24
bird.h
src/player/bird.h
+8
-8
bonusplayer.cpp
src/player/bonusplayer.cpp
+8
-29
bonusplayer.h
src/player/bonusplayer.h
+1
-5
levelplayer.cpp
src/player/levelplayer.cpp
+44
-23
levelplayer.h
src/player/levelplayer.h
+7
-5
levelplayerframe.cpp
src/player/levelplayerframe.cpp
+8
-8
player.cpp
src/player/player.cpp
+34
-30
player.h
src/player/player.h
+4
-5
No files found.
src/bonus/bonus.cpp
View file @
9a3017d7
...
...
@@ -37,7 +37,6 @@
#include "io/gfx/video.h"
#include "io/sound.h"
#include "menu/menu.h"
#include "player/player.h"
#include "player/bonusplayer.h"
#include "loop.h"
#include "util.h"
...
...
@@ -271,17 +270,6 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
delete
[]
buffer
;
// Generate player's animation set references
string
=
new
char
[
PANIMS
];
for
(
count
=
0
;
count
<
PANIMS
;
count
++
)
string
[
count
]
=
count
&
31
;
for
(
count
=
0
;
count
<
nPlayers
;
count
++
)
players
[
count
].
getBonusPlayer
()
->
setAnims
(
string
);
delete
[]
string
;
// Load tiles
file
->
seek
(
2694
,
true
);
...
...
@@ -336,22 +324,29 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
x
=
file
->
loadShort
();
y
=
file
->
loadShort
();
if
(
game
)
game
->
setCheckpoint
(
x
,
y
);
// Generate player's animation set references
string
=
new
char
[
PANIMS
];
for
(
count
=
0
;
count
<
PANIMS
;
count
++
)
string
[
count
]
=
count
&
31
;
// Set the players' initial values
if
(
game
)
{
for
(
x
=
0
;
x
<
nPlayers
;
x
++
)
game
->
resetPlayer
(
players
+
x
,
true
);
game
->
setCheckpoint
(
x
,
y
);
for
(
count
=
0
;
count
<
nPlayers
;
count
++
)
game
->
resetPlayer
(
players
+
count
,
true
,
string
);
}
else
{
localPlayer
->
reset
();
localPlayer
->
getBonusPlayer
()
->
setPosition
(
TTOF
(
x
),
TTOF
(
y
));
localPlayer
->
reset
(
true
,
string
,
x
,
y
);
}
delete
[]
string
;
delete
file
;
...
...
src/game/clientgame.cpp
View file @
9a3017d7
...
...
@@ -398,7 +398,7 @@ int ClientGame::step (unsigned int ticks) {
players
[
count
].
init
((
char
*
)
recvBuffer
+
9
,
recvBuffer
+
5
,
recvBuffer
[
4
]);
resetPlayer
(
players
+
count
,
false
);
resetPlayer
(
players
+
count
,
false
,
NULL
);
printf
(
"Player %d joined team %d.
\n
"
,
count
,
recvBuffer
[
4
]);
...
...
src/game/game.cpp
View file @
9a3017d7
...
...
@@ -284,15 +284,20 @@ void Game::setCheckpoint (unsigned char gridX, unsigned char gridY) {
}
void
Game
::
resetPlayer
(
Player
*
player
,
bool
bonus
)
{
void
Game
::
resetPlayer
(
LevelPlayer
*
player
)
{
player
->
reset
();
if
(
bonus
)
player
->
getBonusPlayer
()
->
setPosition
(
TTOF
(
checkX
),
TTOF
(
checkY
));
else
player
->
getLevelPlayer
()
->
setPosition
(
TTOF
(
checkX
),
TTOF
(
checkY
));
player
->
reset
(
checkX
,
checkY
);
return
;
}
void
Game
::
resetPlayer
(
Player
*
player
,
bool
bonus
,
char
*
anims
)
{
player
->
reset
(
bonus
,
anims
,
checkX
,
checkY
);
return
;
}
src/game/game.h
View file @
9a3017d7
...
...
@@ -103,7 +103,8 @@ class Game {
virtual
int
step
(
unsigned
int
ticks
);
virtual
void
score
(
unsigned
char
team
);
virtual
void
setCheckpoint
(
unsigned
char
gridX
,
unsigned
char
gridY
);
void
resetPlayer
(
Player
*
player
,
bool
bonus
);
void
resetPlayer
(
LevelPlayer
*
player
);
void
resetPlayer
(
Player
*
player
,
bool
bonus
,
char
*
anims
);
};
...
...
src/game/gamemode.cpp
View file @
9a3017d7
...
...
@@ -25,27 +25,26 @@
#include "io/gfx/font.h"
#include "level/level.h"
#include "player/player.h"
#include "player/
level
player.h"
bool
GameMode
::
hit
(
Player
*
source
,
Player
*
victim
)
{
bool
GameMode
::
hit
(
LevelPlayer
*
source
,
Level
Player
*
victim
)
{
return
true
;
}
bool
GameMode
::
kill
(
Player
*
source
,
Player
*
victim
)
{
bool
GameMode
::
kill
(
LevelPlayer
*
source
,
Level
Player
*
victim
)
{
if
(
source
&&
(
victim
==
localPlayer
))
game
->
score
(
source
->
getTeam
());
if
(
source
&&
(
victim
->
player
==
localPlayer
))
game
->
score
(
source
->
player
->
getTeam
());
return
true
;
}
bool
GameMode
::
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
bool
GameMode
::
endOfLevel
(
LevelPlayer
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
game
->
setCheckpoint
(
gridX
,
gridY
);
...
...
@@ -154,8 +153,7 @@ GameModeType CoopGameMode::getMode () {
}
bool
CoopGameMode
::
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
bool
CoopGameMode
::
endOfLevel
(
LevelPlayer
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
game
->
setCheckpoint
(
gridX
,
gridY
);
...
...
@@ -187,19 +185,18 @@ GameModeType RaceGameMode::getMode () {
}
bool
RaceGameMode
::
hit
(
Player
*
source
,
Player
*
victim
)
{
bool
RaceGameMode
::
hit
(
LevelPlayer
*
source
,
Level
Player
*
victim
)
{
return
false
;
}
bool
RaceGameMode
::
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
bool
RaceGameMode
::
endOfLevel
(
LevelPlayer
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
if
(
player
==
localPlayer
)
game
->
score
(
p
layer
->
getTeam
());
if
(
player
->
player
==
localPlayer
)
game
->
score
(
localP
layer
->
getTeam
());
game
->
resetPlayer
(
player
,
false
);
game
->
resetPlayer
(
player
);
return
false
;
...
...
src/game/gamemode.h
View file @
9a3017d7
...
...
@@ -44,7 +44,7 @@ enum GameModeType {
// Classes
class
Font
;
class
Player
;
class
Level
Player
;
class
GameMode
{
...
...
@@ -52,9 +52,9 @@ class GameMode {
virtual
GameModeType
getMode
()
=
0
;
virtual
unsigned
char
chooseTeam
()
=
0
;
virtual
void
drawScore
(
Font
*
font
)
=
0
;
virtual
bool
hit
(
Player
*
source
,
Player
*
victim
);
virtual
bool
kill
(
Player
*
source
,
Player
*
victim
);
virtual
bool
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
virtual
bool
hit
(
LevelPlayer
*
source
,
Level
Player
*
victim
);
virtual
bool
kill
(
LevelPlayer
*
source
,
Level
Player
*
victim
);
virtual
bool
endOfLevel
(
Level
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
virtual
void
outOfTime
();
};
...
...
@@ -87,7 +87,7 @@ class CoopGameMode : public CooperativeGameMode {
public
:
GameModeType
getMode
();
bool
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
bool
endOfLevel
(
Level
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
};
...
...
@@ -118,8 +118,8 @@ class RaceGameMode : public FreeForAllGameMode {
public
:
GameModeType
getMode
();
bool
hit
(
Player
*
source
,
Player
*
victim
);
bool
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
bool
hit
(
LevelPlayer
*
source
,
Level
Player
*
victim
);
bool
endOfLevel
(
Level
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
};
...
...
src/game/servergame.cpp
View file @
9a3017d7
...
...
@@ -255,10 +255,9 @@ int ServerGame::step (unsigned int ticks) {
recvBuffers
[
count
][
4
]
=
gameMode
->
chooseTeam
();
players
[
nPlayers
].
init
((
char
*
)(
recvBuffers
[
count
])
+
9
,
recvBuffers
[
count
]
+
5
,
recvBuffers
[
count
][
4
]);
players
[
nPlayers
].
reset
();
players
[
nPlayers
].
init
((
char
*
)(
recvBuffers
[
count
])
+
9
,
recvBuffers
[
count
]
+
5
,
recvBuffers
[
count
][
4
]);
resetPlayer
(
players
+
nPlayers
,
false
,
NULL
);
printf
(
"Player %d joined team %d.
\n
"
,
nPlayers
,
recvBuffers
[
count
][
4
]);
...
...
@@ -298,11 +297,14 @@ int ServerGame::step (unsigned int ticks) {
case
MC_PLAYER
:
if
(
clientPlayer
[
count
]
!=
-
1
)
{
// Assign player byte based on sender
recvBuffers
[
count
][
2
]
=
clientPlayer
[
count
];
players
[
clientPlayer
[
count
]].
receive
(
recvBuffers
[
count
]);
players
[
clientPlayer
[
count
]].
receive
(
recvBuffers
[
count
]);
}
break
;
...
...
src/level/bullet.cpp
View file @
9a3017d7
...
...
@@ -32,14 +32,14 @@
#include "player/levelplayer.h"
Bullet
::
Bullet
(
Player
*
sourcePlayer
,
bool
lower
,
unsigned
int
ticks
)
{
Bullet
::
Bullet
(
Level
Player
*
sourcePlayer
,
bool
lower
,
unsigned
int
ticks
)
{
Anim
*
anim
;
// Properties based on the player
source
=
sourcePlayer
;
type
=
source
->
getAmmo
(
false
)
+
1
;
type
=
source
->
player
->
getAmmo
(
false
)
+
1
;
if
(
!
lower
&&
(
level
->
getBullet
(
type
)[
B_XSPEED
|
2
]
!=
0
))
{
...
...
@@ -52,7 +52,7 @@ Bullet::Bullet (Player* sourcePlayer, bool lower, unsigned int ticks) {
}
direction
=
source
->
get
LevelPlayer
()
->
get
Facing
()
?
1
:
0
;
direction
=
source
->
getFacing
()
?
1
:
0
;
direction
|=
lower
?
2
:
0
;
if
(
type
==
4
)
{
...
...
@@ -79,9 +79,9 @@ Bullet::Bullet (Player* sourcePlayer, bool lower, unsigned int ticks) {
}
anim
=
level
->
getAnim
(
source
->
get
LevelPlayer
()
->
get
Anim
());
x
=
source
->
get
LevelPlayer
()
->
get
X
()
+
anim
->
getShootX
()
+
PXO_MID
-
F4
;
y
=
source
->
get
LevelPlayer
()
->
get
Y
()
+
anim
->
getShootY
()
-
F4
;
anim
=
level
->
getAnim
(
source
->
getAnim
());
x
=
source
->
getX
()
+
anim
->
getShootX
()
+
PXO_MID
-
F4
;
y
=
source
->
getY
()
+
anim
->
getShootY
()
-
F4
;
return
;
...
...
@@ -132,10 +132,10 @@ Bullet::Bullet (Bird* sourceBird, bool lower, unsigned int ticks) {
}
type
=
30
;
direction
=
source
->
get
LevelPlayer
()
->
get
Facing
()
?
1
:
0
;
direction
=
source
->
getFacing
()
?
1
:
0
;
direction
|=
lower
?
2
:
0
;
sprite
=
level
->
getSprite
(((
unsigned
char
*
)
level
->
getBullet
(
type
))[
B_SPRITE
+
direction
]);
x
=
sourceBird
->
getX
()
+
(
source
->
get
LevelPlayer
()
->
get
Facing
()
?
PXO_R
:
PXO_L
);
x
=
sourceBird
->
getX
()
+
(
source
->
getFacing
()
?
PXO_R
:
PXO_L
);
y
=
sourceBird
->
getY
();
dx
=
level
->
getBullet
(
type
)[
B_XSPEED
+
direction
]
*
500
*
F1
;
dy
=
level
->
getBullet
(
type
)[
B_YSPEED
+
direction
]
*
250
*
F1
;
...
...
@@ -170,7 +170,7 @@ Bullet* Bullet::remove () {
}
Player
*
Bullet
::
getSource
()
{
Level
Player
*
Bullet
::
getSource
()
{
return
source
;
...
...
src/level/bullet.h
View file @
9a3017d7
...
...
@@ -25,6 +25,7 @@
#include "movable.h"
#include "OpenJazz.h"
...
...
@@ -50,14 +51,14 @@
class
Bird
;
class
Event
;
class
Player
;
class
Level
Player
;
class
Sprite
;
class
Bullet
:
public
Movable
{
private
:
Bullet
*
next
;
Player
*
source
;
// If NULL, was fired by an event
LevelPlayer
*
source
;
// If NULL, was fired by an event
Sprite
*
sprite
;
int
type
;
// -1 is TNT, otherwise indexes the bullet set
int
direction
;
// 0: Left, 1: Right, 2: L (lower), 3: R (lower)
...
...
@@ -66,12 +67,12 @@ class Bullet : public Movable {
Bullet
*
remove
();
public
:
Bullet
(
Player
*
sourcePlayer
,
bool
lower
,
unsigned
int
ticks
);
Bullet
(
Level
Player
*
sourcePlayer
,
bool
lower
,
unsigned
int
ticks
);
Bullet
(
Event
*
sourceEvent
,
bool
facing
,
unsigned
int
ticks
);
Bullet
(
Bird
*
sourceBird
,
bool
lower
,
unsigned
int
ticks
);
~
Bullet
();
Player
*
getSource
();
Level
Player
*
getSource
();
Bullet
*
step
(
unsigned
int
ticks
,
int
msps
);
void
draw
(
int
change
);
...
...
src/level/event/event.cpp
View file @
9a3017d7
...
...
@@ -157,7 +157,7 @@ void Event::destroy (unsigned int ticks) {
}
bool
Event
::
hit
(
Player
*
source
,
unsigned
int
ticks
)
{
bool
Event
::
hit
(
Level
Player
*
source
,
unsigned
int
ticks
)
{
int
hitsRemaining
;
...
...
src/level/event/event.h
View file @
9a3017d7
...
...
@@ -77,7 +77,7 @@
// Classes
class
Player
;
class
Level
Player
;
class
Event
:
public
Movable
{
...
...
@@ -109,7 +109,7 @@ class Event : public Movable {
virtual
~
Event
();
Event
*
getNext
();
bool
hit
(
Player
*
source
,
unsigned
int
ticks
);
bool
hit
(
Level
Player
*
source
,
unsigned
int
ticks
);
bool
isEnemy
();
bool
isFrom
(
unsigned
char
gX
,
unsigned
char
gY
);
virtual
bool
overlap
(
fixed
left
,
fixed
top
,
fixed
width
,
fixed
height
);
...
...
src/level/level.cpp
View file @
9a3017d7
...
...
@@ -265,7 +265,7 @@ void Level::clearEvent (unsigned char gridX, unsigned char gridY) {
}
int
Level
::
hitEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
,
Player
*
source
)
{
int
Level
::
hitEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
,
Level
Player
*
source
)
{
GridElement
*
ge
;
unsigned
char
buffer
[
MTL_L_GRID
];
...
...
@@ -286,7 +286,7 @@ int Level::hitEvent (unsigned char gridX, unsigned char gridY, Player* source) {
// Notify the player that shot the bullet
// If this returns false, ignore the hit
if
(
!
source
->
getLevelPlayer
()
->
takeEvent
(
gridX
,
gridY
,
ticks
))
{
if
(
!
source
->
takeEvent
(
gridX
,
gridY
,
ticks
))
{
ge
->
hits
--
;
...
...
@@ -315,8 +315,7 @@ int Level::hitEvent (unsigned char gridX, unsigned char gridY, Player* source) {
}
void
Level
::
setEventTime
(
unsigned
char
gridX
,
unsigned
char
gridY
,
unsigned
int
time
)
{
void
Level
::
setEventTime
(
unsigned
char
gridX
,
unsigned
char
gridY
,
unsigned
int
time
)
{
grid
[
gridY
][
gridX
].
time
=
time
;
...
...
src/level/level.h
View file @
9a3017d7
...
...
@@ -87,7 +87,7 @@ typedef struct {
class
Bullet
;
class
Event
;
class
Font
;
class
Player
;
class
Level
Player
;
class
Scene
;
class
Level
:
public
BaseLevel
{
...
...
@@ -142,7 +142,7 @@ class Level : public BaseLevel {
unsigned
char
getEventHits
(
unsigned
char
gridX
,
unsigned
char
gridY
);
unsigned
int
getEventTime
(
unsigned
char
gridX
,
unsigned
char
gridY
);
void
clearEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
);
int
hitEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
,
Player
*
source
);
int
hitEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
,
Level
Player
*
source
);
void
setEventTime
(
unsigned
char
gridX
,
unsigned
char
gridY
,
unsigned
int
time
);
signed
char
*
getBullet
(
unsigned
char
bullet
);
Sprite
*
getSprite
(
unsigned
char
sprite
);
...
...
src/level/levelframe.cpp
View file @
9a3017d7
...
...
@@ -157,7 +157,7 @@ int Level::step () {
if
(
!
gameMode
)
return
LOST
;
game
->
resetPlayer
(
players
+
x
,
false
);
game
->
resetPlayer
(
players
[
x
].
getLevelPlayer
()
);
}
...
...
src/level/levelload.cpp
View file @
9a3017d7
...
...
@@ -328,6 +328,7 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
char
*
string
;
int
tiles
;
int
count
,
x
,
y
,
type
;
unsigned
char
startX
,
startY
;
try
{
...
...
@@ -743,25 +744,9 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
file
->
seek
(
x
+
366
,
true
);
// The players' coordinates
x
=
file
->
loadShort
();
y
=
file
->
loadShort
()
+
1
;
if
(
!
checkpoint
&&
game
)
game
->
setCheckpoint
(
x
,
y
);
// Set the players' initial values
if
(
game
)
{
for
(
count
=
0
;
count
<
nPlayers
;
count
++
)
game
->
resetPlayer
(
players
+
count
,
false
);
}
else
{
localPlayer
->
reset
();
localPlayer
->
getLevelPlayer
()
->
setPosition
(
TTOF
(
x
),
TTOF
(
y
));
}
// The players' initial coordinates
startX
=
file
->
loadShort
();
startY
=
file
->
loadShort
()
+
1
;
// Next level
...
...
@@ -791,7 +776,7 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
for
(
x
=
0
;
x
<
PANIMS
;
x
++
)
string
[
x
+
3
]
=
buffer
[
x
<<
1
];
for
(
x
=
0
;
x
<
nPlayers
;
x
++
)
players
[
x
].
getLevelPlayer
()
->
setAnims
(
string
+
3
);
delete
[]
buffer
;
if
(
gameMode
)
{
...
...
@@ -802,8 +787,20 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
}
// Set the players' initial values
if
(
game
)
{
if
(
!
checkpoint
)
game
->
setCheckpoint
(
startX
,
startY
);
for
(
count
=
0
;
count
<
nPlayers
;
count
++
)
game
->
resetPlayer
(
players
+
count
,
false
,
string
+
3
);
}
else
{
localPlayer
->
reset
(
false
,
string
+
3
,
startX
,
startY
);
}
delete
[]
string
;
delete
[]
buffer
;
// Load Skip to bullet set
...
...
src/player/bird.cpp
View file @
9a3017d7
...
...
@@ -29,7 +29,7 @@
#include "level/level.h"
Bird
::
Bird
(
Player
*
rescuer
,
unsigned
char
gX
,
unsigned
char
gY
)
{
Bird
::
Bird
(
Level
Player
*
rescuer
,
unsigned
char
gX
,
unsigned
char
gY
)
{
player
=
rescuer
;
x
=
TTOF
(
gX
);
...
...
@@ -51,18 +51,7 @@ Bird::~Bird () {
}
void
Bird
::
reset
()
{
x
=
player
->
getLevelPlayer
()
->
getX
();
y
=
player
->
getLevelPlayer
()
->
getY
()
-
F64
;
fireTime
=
0
;
return
;
}
Player
*
Bird
::
getPlayer
()
{
LevelPlayer
*
Bird
::
getPlayer
()
{
return
player
;
...
...
@@ -80,7 +69,6 @@ void Bird::hit () {
bool
Bird
::
step
(
unsigned
int
ticks
,
int
msps
)
{
LevelPlayer
*
levelPlayer
;
Event
*
event
;
bool
target
;
...
...
@@ -97,16 +85,14 @@ bool Bird::step (unsigned int ticks, int msps) {
// Trajectory for flying towards the player
levelPlayer
=
player
->
getLevelPlayer
();
if
((
x
<
levelPlayer
->
getX
()
-
F160
)
||
(
x
>
levelPlayer
->
getX
()
+
F160
))
{
if
((
x
<
player
->
getX
()
-
F160
)
||
(
x
>
player
->
getX
()
+
F160
))
{
// Far away from the player
// Approach the player at a speed proportional to the distance
dx
=
levelP
layer
->
getX
()
-
x
;
dx
=
p
layer
->
getX
()
-
x
;
}
else
if
(
x
<
levelP
layer
->
getX
())
{
}
else
if
(
x
<
p
layer
->
getX
())
{
// To the left of the player, so move right
...
...
@@ -129,14 +115,14 @@ bool Bird::step (unsigned int ticks, int msps) {
}
else
{
if
((
y
<
levelPlayer
->
getY
()
-
F100
)
||
(
y
>
levelP
layer
->
getY
()
+
F100
))
{
if
((
y
<
player
->
getY
()
-
F100
)
||
(
y
>
p
layer
->
getY
()
+
F100
))
{
// Far away from the player
// Approach the player at a speed proportional to the distance
dy
=
(
levelP
layer
->
getY
()
-
F64
)
-
y
;
dy
=
(
p
layer
->
getY
()
-
F64
)
-
y
;
}
else
if
(
y
<
levelP
layer
->
getY
()
-
F64
)
{
}
else
if
(
y
<
p
layer
->
getY
()
-
F64
)
{
// Above the player, so move downwards
...
...
@@ -161,7 +147,7 @@ bool Bird::step (unsigned int ticks, int msps) {
target
=
false
;
event
=
level
->
events
;
if
(
levelP
layer
->
getFacing
())
{
if
(
p
layer
->
getFacing
())
{
while
(
event
&&
!
target
)
{
...
...
@@ -209,7 +195,7 @@ void Bird::draw (unsigned int ticks, int change) {
Anim
*
anim
;
anim
=
level
->
getAnim
((
player
->
get
LevelPlayer
()
->
get
Facing
()
||
fleeing
)
?
BIRD_RIGHTANIM
:
BIRD_LEFTANIM
);
anim
=
level
->
getAnim
((
player
->
getFacing
()
||
fleeing
)
?
BIRD_RIGHTANIM
:
BIRD_LEFTANIM
);
anim
->
setFrame
(
ticks
/
80
,
true
);
anim
->
draw
(
getDrawX
(
change
),
getDrawY
(
change
));
...
...
src/player/bird.h
View file @
9a3017d7
...
...
@@ -40,22 +40,22 @@
// Classes
class
Player
;
class
Level
Player
;
class
Bird
:
public
Movable
{
private
:
Player
*
player
;
LevelPlayer
*
player
;
bool
fleeing
;
unsigned
int
fireTime
;
public
:
Bird
(
Player
*
player
,
unsigned
char
gX
,
unsigned
char
gY
);
Bird
(
Level
Player
*
player
,
unsigned
char
gX
,
unsigned
char
gY
);
~
Bird
();
void
reset
();
Player
*
getPlayer
();
LevelPlayer
*
getPlayer
();
void
hit
();
bool
step
(
unsigned
int
ticks
,
int
msps
);
void
draw
(
unsigned
int
ticks
,
int
change
);
...
...
src/player/bonusplayer.cpp
View file @
9a3017d7
...
...
@@ -37,27 +37,25 @@
#include <string.h>
BonusPlayer
::
BonusPlayer
(
Player
*
parent
)
{
BonusPlayer
::
BonusPlayer
(
Player
*
parent
,
char
*
newAnims
,
unsigned
char
startX
,
unsigned
char
startY
)
{
player
=
parent
;
return
;
}
memcpy
(
anims
,
newAnims
,
PANIMS
);
x
=
TTOF
(
startX
)
+
F16
;
y
=
TTOF
(
startY
)
+
F16
;
BonusPlayer
::~
BonusPlayer
()
{
direction
=
FQ
;
dr
=
0
;
gems
=
0
;
return
;
}
void
BonusPlayer
::
reset
()
{
direction
=
FQ
;
dr
=
0
;
gems
=
0
;
BonusPlayer
::~
BonusPlayer
()
{
return
;
...
...
@@ -101,25 +99,6 @@ fixed BonusPlayer::getY () {
}
void
BonusPlayer
::
setAnims
(
char
*
newAnims
)
{
memcpy
(
anims
,
newAnims
,
PANIMS
);
return
;
}
void
BonusPlayer
::
setPosition
(
fixed
newX
,
fixed
newY
)
{
x
=
newX
+
F16
;
y
=
newY
+
F16
;
return
;
}
void
BonusPlayer
::
step
(
unsigned
int
ticks
,
int
msps
,
Bonus
*
bonus
)
{
fixed
cdx
,
cdy
;
...
...
src/player/bonusplayer.h
View file @
9a3017d7
...
...
@@ -68,18 +68,14 @@ class BonusPlayer {
public
:
Player
*
player
;
BonusPlayer
(
Player
*
parent
);
BonusPlayer
(
Player
*
parent
,
char
*
newAnims
,
unsigned
char
startX
,
unsigned
char
startY
);
~
BonusPlayer
();
void
reset
();
void
addGem
();
fixed
getDirection
();
int
getGems
();
fixed
getX
();
fixed
getY
();
void
setAnims
(
char
*
newAnims
);
void
setPosition
(
fixed
newX
,
fixed
newY
);
void
step
(
unsigned
int
ticks
,
int
msps
,
Bonus
*
bonus
);
void
draw
(
unsigned
int
ticks
,
Anim
*
animSet
);
...
...
src/player/levelplayer.cpp
View file @
9a3017d7
...
...
@@ -38,10 +38,22 @@
#include <string.h>
LevelPlayer
::
LevelPlayer
(
Player
*
parent
)
{
LevelPlayer
::
LevelPlayer
(
Player
*
parent
,
char
*
newAnims
,
unsigned
char
startX
,
unsigned
char
startY
,
bool
hasBird
)
{
player
=
parent
;
if
(
newAnims
)
memcpy
(
anims
,
newAnims
,
PANIMS
);
else
memset
(
anims
,
0
,
PANIMS
);
if
(
hasBird
)
bird
=
new
Bird
(
this
,
startX
,
startY
-
2
);
else
bird
=
NULL
;
shield
=
0
;
enemies
=
items
=
0
;
gem
=
false
;
reset
(
startX
,
startY
);
return
;
}
...
...
@@ -49,16 +61,17 @@ LevelPlayer::LevelPlayer (Player* parent) {
LevelPlayer
::~
LevelPlayer
()
{
if
(
bird
)
delete
bird
;
return
;
}
void
LevelPlayer
::
reset
()
{
void
LevelPlayer
::
reset
(
unsigned
char
startX
,
unsigned
char
startY
)
{
event
=
0
;
energy
=
4
;
shield
=
0
;
floating
=
false
;
facing
=
true
;
reaction
=
PR_NONE
;
...
...
@@ -69,8 +82,8 @@ void LevelPlayer::reset () {
warpTime
=
0
;
dx
=
0
;
dy
=
0
;
enemies
=
items
=
0
;
gem
=
false
;
x
=
TTOF
(
startX
)
;
y
=
TTOF
(
startY
)
;
return
;
...
...
@@ -132,6 +145,13 @@ int LevelPlayer::getItems () {
}
bool
LevelPlayer
::
hasBird
()
{
return
bird
;
}
bool
LevelPlayer
::
hasGem
()
{
return
gem
;
...
...
@@ -139,22 +159,22 @@ bool LevelPlayer::hasGem () {
}
bool
LevelPlayer
::
hit
(
Player
*
source
,
unsigned
int
ticks
)
{
bool
LevelPlayer
::
hit
(
Level
Player
*
source
,
unsigned
int
ticks
)
{
// Invulnerable if reacting to e.g. having been hit
if
(
reaction
!=
PR_NONE
)
return
false
;
// Hits from the same team have no effect
if
(
source
&&
(
source
->
getTeam
()
==
player
->
team
))
return
false
;
if
(
source
&&
(
source
->
player
->
getTeam
()
==
player
->
team
))
return
false
;
if
(
shield
==
3
)
shield
=
0
;
else
if
(
shield
)
shield
--
;
else
if
(
!
gameMode
||
gameMode
->
hit
(
source
,
player
))
{
else
if
(
!
gameMode
||
gameMode
->
hit
(
source
,
this
))
{
energy
--
;
if
(
player
->
bird
)
player
->
bird
->
hit
();
if
(
bird
)
bird
->
hit
();
playSound
(
S_OW
);
...
...
@@ -188,11 +208,11 @@ bool LevelPlayer::hit (Player *source, unsigned int ticks) {
}
void
LevelPlayer
::
kill
(
Player
*
source
,
unsigned
int
ticks
)
{
void
LevelPlayer
::
kill
(
Level
Player
*
source
,
unsigned
int
ticks
)
{
if
(
reaction
!=
PR_NONE
)
return
;
if
(
!
gameMode
||
gameMode
->
kill
(
source
,
player
))
{
if
(
!
gameMode
||
gameMode
->
kill
(
source
,
this
))
{
energy
=
0
;
player
->
lives
--
;
...
...
@@ -235,15 +255,6 @@ PlayerReaction LevelPlayer::reacted (unsigned int ticks) {
}
void
LevelPlayer
::
setAnims
(
char
*
newAnims
)
{
memcpy
(
anims
,
newAnims
,
PANIMS
);
return
;
}
void
LevelPlayer
::
setEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
)
{
signed
char
*
set
;
...
...
@@ -313,7 +324,7 @@ bool LevelPlayer::takeEvent (unsigned char gridX, unsigned char gridY, unsigned
level
->
setStage
(
LS_END
);
}
else
if
(
!
(
gameMode
->
endOfLevel
(
player
,
gridX
,
gridY
)))
return
false
;
}
else
if
(
!
(
gameMode
->
endOfLevel
(
this
,
gridX
,
gridY
)))
return
false
;
break
;
...
...
@@ -437,7 +448,7 @@ bool LevelPlayer::takeEvent (unsigned char gridX, unsigned char gridY, unsigned
case
34
:
// Bird
if
(
!
player
->
bird
)
player
->
bird
=
new
Bird
(
player
,
gridX
,
gridY
);
if
(
!
bird
)
bird
=
new
Bird
(
this
,
gridX
,
gridY
);
break
;
...
...
@@ -585,6 +596,7 @@ void LevelPlayer::send (unsigned char *buffer) {
// Copy data to be sent to clients/server
buffer
[
9
]
=
bird
?
1
:
0
;
buffer
[
23
]
=
energy
;
buffer
[
25
]
=
shield
;
buffer
[
26
]
=
floating
;
...
...
@@ -619,12 +631,21 @@ void LevelPlayer::receive (unsigned char *buffer) {
case
MT_P_ANIMS
:
setAnims
((
char
*
)
buffer
+
3
);
memcpy
(
anims
,
(
char
*
)
buffer
+
3
,
PANIMS
);
break
;
case
MT_P_TEMP
:
if
((
buffer
[
9
]
&
1
)
&&
!
bird
)
bird
=
new
Bird
(
this
,
FTOT
(
x
),
FTOT
(
y
)
-
2
);
if
(
!
(
buffer
[
9
]
&
1
)
&&
bird
)
{
delete
bird
;
bird
=
NULL
;
}
energy
=
buffer
[
23
];
shield
=
buffer
[
25
];
floating
=
buffer
[
26
];
...
...
src/player/levelplayer.h
View file @
9a3017d7
...
...
@@ -128,10 +128,12 @@ enum PlayerReaction {
// Classes
class
Anim
;
class
Bird
;
class
LevelPlayer
:
public
Movable
{
private
:
Bird
*
bird
;
char
anims
[
PANIMS
];
int
energy
;
int
shield
;
/* 0 = none, 1 = 1 yellow, 2 = 2 yellow, 3 = 1 orange, 4 = 2 orange, 5 = 3 orange, 6 = 4 orange */
...
...
@@ -156,10 +158,10 @@ class LevelPlayer : public Movable {
public
:
Player
*
player
;
LevelPlayer
(
Player
*
parent
);
LevelPlayer
(
Player
*
parent
,
char
*
newAnims
,
unsigned
char
startX
,
unsigned
char
startY
,
bool
hasBird
);
~
LevelPlayer
();
void
reset
();
void
reset
(
unsigned
char
startX
,
unsigned
char
startY
);
void
addItem
();
void
clearEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
);
...
...
@@ -168,12 +170,12 @@ class LevelPlayer : public Movable {
int
getEnergy
();
bool
getFacing
();
int
getItems
();
bool
hasBird
();
bool
hasGem
();
bool
hit
(
Player
*
source
,
unsigned
int
ticks
);
void
kill
(
Player
*
source
,
unsigned
int
ticks
);
bool
hit
(
Level
Player
*
source
,
unsigned
int
ticks
);
void
kill
(
Level
Player
*
source
,
unsigned
int
ticks
);
bool
overlap
(
fixed
left
,
fixed
top
,
fixed
width
,
fixed
height
);
PlayerReaction
reacted
(
unsigned
int
ticks
);
void
setAnims
(
char
*
newAnims
);
void
setEvent
(
unsigned
char
gridX
,
unsigned
char
gridY
);
void
setPosition
(
fixed
newX
,
fixed
newY
);
void
setSpeed
(
fixed
newDx
,
fixed
newDy
);
...
...
src/player/levelplayerframe.cpp
View file @
9a3017d7
...
...
@@ -310,7 +310,7 @@ void LevelPlayer::control (unsigned int ticks, int msps) {
if
(
platform
)
animType
=
facing
?
PA_RSHOOT
:
PA_LSHOOT
;
// Create new bullet
level
->
bullets
=
new
Bullet
(
player
,
false
,
ticks
);
level
->
bullets
=
new
Bullet
(
this
,
false
,
ticks
);
// Set when the next bullet can be fired
if
(
player
->
fireSpeed
)
fireTime
=
ticks
+
(
1000
/
player
->
fireSpeed
);
...
...
@@ -344,12 +344,12 @@ void LevelPlayer::control (unsigned int ticks, int msps) {
// Deal with the bird
if
(
player
->
bird
)
{
if
(
bird
)
{
if
(
player
->
bird
->
step
(
ticks
,
msps
))
{
if
(
bird
->
step
(
ticks
,
msps
))
{
delete
player
->
bird
;
player
->
bird
=
NULL
;
delete
bird
;
bird
=
NULL
;
}
...
...
@@ -790,14 +790,14 @@ void LevelPlayer::draw (unsigned int ticks, int change) {
// Show the bird
if
(
player
->
bird
)
player
->
bird
->
draw
(
ticks
,
change
);
if
(
bird
)
bird
->
draw
(
ticks
,
change
);
// Show the player's name
if
(
gameMode
)
panelBigFont
->
showString
(
player
->
name
,
FTOI
(
drawX
+
PXO_MID
-
viewX
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawY
-
F32
-
F16
-
viewY
));
FTOI
(
drawX
+
PXO_MID
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawY
-
F32
-
F16
));
return
;
...
...
src/player/player.cpp
View file @
9a3017d7
...
...
@@ -46,10 +46,8 @@
Player
::
Player
()
{
levelPlayer
=
new
LevelPlayer
(
this
);
bonusPlayer
=
new
BonusPlayer
(
this
);
bird
=
NULL
;
levelPlayer
=
NULL
;
bonusPlayer
=
NULL
;
name
=
NULL
;
...
...
@@ -62,9 +60,6 @@ Player::~Player () {
deinit
();
delete
levelPlayer
;
delete
bonusPlayer
;
return
;
}
...
...
@@ -92,6 +87,7 @@ void Player::init (char *playerName, unsigned char *playerCols, unsigned char ne
ammo
[
2
]
=
0
;
ammo
[
3
]
=
0
;
fireSpeed
=
0
;
bird
=
false
;
team
=
newTeam
;
teamScore
=
0
;
...
...
@@ -168,8 +164,10 @@ void Player::init (char *playerName, unsigned char *playerCols, unsigned char ne
void
Player
::
deinit
()
{
if
(
bird
)
delete
bird
;
bird
=
NULL
;
if
(
levelPlayer
)
delete
levelPlayer
;
if
(
bonusPlayer
)
delete
bonusPlayer
;
levelPlayer
=
NULL
;
bonusPlayer
=
NULL
;
if
(
name
)
delete
[]
name
;
name
=
NULL
;
...
...
@@ -179,14 +177,30 @@ void Player::deinit () {
}
void
Player
::
reset
()
{
void
Player
::
reset
(
bool
bonus
,
char
*
newAnims
,
unsigned
char
x
,
unsigned
char
y
)
{
int
count
;
levelPlayer
->
reset
();
bonusPlayer
->
reset
();
if
(
levelPlayer
)
{
bird
=
levelPlayer
->
hasBird
();
delete
levelPlayer
;
}
if
(
bonusPlayer
)
delete
bonusPlayer
;
if
(
bonus
)
{
levelPlayer
=
NULL
;
bonusPlayer
=
new
BonusPlayer
(
this
,
newAnims
,
x
,
y
);
if
(
bird
)
bird
->
reset
();
}
else
{
levelPlayer
=
new
LevelPlayer
(
this
,
newAnims
,
x
,
y
,
bird
);
bonusPlayer
=
NULL
;
}
for
(
count
=
0
;
count
<
PCONTROLS
;
count
++
)
pcontrols
[
count
]
=
false
;
...
...
@@ -304,7 +318,7 @@ void Player::send (unsigned char *buffer) {
buffer
[
6
]
=
pcontrols
[
C_RIGHT
];
buffer
[
7
]
=
pcontrols
[
C_JUMP
];
buffer
[
8
]
=
pcontrols
[
C_FIRE
];
buffer
[
9
]
=
bird
?
1
:
0
;
if
(
!
levelPlayer
)
buffer
[
9
]
=
bird
?
1
:
0
;
buffer
[
10
]
=
ammo
[
0
]
>>
8
;
buffer
[
11
]
=
ammo
[
0
]
&
255
;
buffer
[
12
]
=
ammo
[
1
]
>>
8
;
...
...
@@ -322,7 +336,7 @@ void Player::send (unsigned char *buffer) {
buffer
[
28
]
=
fireSpeed
;
buffer
[
45
]
=
pcontrols
[
C_SWIM
];
levelPlayer
->
send
(
buffer
);
if
(
levelPlayer
)
levelPlayer
->
send
(
buffer
);
return
;
...
...
@@ -343,17 +357,7 @@ void Player::receive (unsigned char *buffer) {
pcontrols
[
C_SWIM
]
=
buffer
[
45
];
pcontrols
[
C_FIRE
]
=
buffer
[
8
];
pcontrols
[
C_CHANGE
]
=
false
;
if
((
buffer
[
9
]
&
1
)
&&
!
bird
)
bird
=
new
Bird
(
this
,
FTOT
(
levelPlayer
->
getX
()),
FTOT
(
levelPlayer
->
getY
()));
if
(
!
(
buffer
[
9
]
&
1
)
&&
bird
)
{
delete
bird
;
bird
=
NULL
;
}
if
(
!
levelPlayer
)
bird
=
buffer
[
9
]
&
1
;
ammo
[
0
]
=
(
buffer
[
10
]
<<
8
)
+
buffer
[
11
];
ammo
[
1
]
=
(
buffer
[
12
]
<<
8
)
+
buffer
[
13
];
ammo
[
2
]
=
(
buffer
[
14
]
<<
8
)
+
buffer
[
15
];
...
...
@@ -365,7 +369,7 @@ void Player::receive (unsigned char *buffer) {
}
levelPlayer
->
receive
(
buffer
);
if
(
levelPlayer
)
levelPlayer
->
receive
(
buffer
);
return
;
...
...
src/player/player.h
View file @
9a3017d7
...
...
@@ -66,7 +66,6 @@
// Classes
class
Bird
;
class
BonusPlayer
;
class
LevelPlayer
;
...
...
@@ -75,7 +74,6 @@ class Player {
private
:
LevelPlayer
*
levelPlayer
;
BonusPlayer
*
bonusPlayer
;
Bird
*
bird
;
char
*
name
;
bool
pcontrols
[
PCONTROLS
];
SDL_Color
palette
[
256
];
...
...
@@ -85,6 +83,7 @@ class Player {
int
score
;
int
lives
;
int
fireSpeed
;
bool
bird
;
unsigned
char
team
;
void
addAmmo
(
int
type
,
int
amount
);
...
...
@@ -97,7 +96,7 @@ class Player {
void
init
(
char
*
playerName
,
unsigned
char
*
cols
,
unsigned
char
newTeam
);
void
deinit
();
void
reset
();
void
reset
(
bool
bonus
,
char
*
newAnims
,
unsigned
char
x
,
unsigned
char
y
);
void
addLife
();
void
addScore
(
int
addedScore
);
...
...
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