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
28218a7d
Commit
28218a7d
authored
Jul 11, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Slight simplification to game mode handling.
parent
b03fa295
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
180 additions
and
155 deletions
+180
-155
baselevel.cpp
src/baselevel.cpp
+6
-6
baselevel.h
src/baselevel.h
+2
-1
bonus.cpp
src/bonus/bonus.cpp
+4
-1
bonus.h
src/bonus/bonus.h
+1
-1
clientgame.cpp
src/game/clientgame.cpp
+11
-11
game.cpp
src/game/game.cpp
+67
-23
game.h
src/game/game.h
+7
-3
gamemode.cpp
src/game/gamemode.cpp
+21
-43
gamemode.h
src/game/gamemode.h
+10
-13
servergame.cpp
src/game/servergame.cpp
+5
-5
jj2level.cpp
src/jj2level/jj2level.cpp
+6
-4
jj2level.h
src/jj2level/jj2level.h
+1
-1
jj2levelframe.cpp
src/jj2level/jj2levelframe.cpp
+2
-2
jj2levelload.cpp
src/jj2level/jj2levelload.cpp
+1
-1
demolevel.cpp
src/level/demolevel.cpp
+2
-2
eventframe.cpp
src/level/event/eventframe.cpp
+4
-2
level.cpp
src/level/level.cpp
+10
-8
level.h
src/level/level.h
+1
-1
levelframe.cpp
src/level/levelframe.cpp
+8
-4
levelload.cpp
src/level/levelload.cpp
+1
-1
jj2levelplayer.cpp
src/player/jj2levelplayer.cpp
+2
-2
jj2levelplayerframe.cpp
src/player/jj2levelplayerframe.cpp
+2
-8
levelplayer.cpp
src/player/levelplayer.cpp
+5
-11
levelplayerframe.cpp
src/player/levelplayerframe.cpp
+1
-1
No files found.
src/baselevel.cpp
View file @
28218a7d
...
@@ -210,7 +210,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
...
@@ -210,7 +210,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
int
ret
;
int
ret
;
// Networking
// Networking
if
(
gameMode
)
{
if
(
multiplayer
)
{
ret
=
game
->
step
(
ticks
);
ret
=
game
->
step
(
ticks
);
...
@@ -248,7 +248,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
...
@@ -248,7 +248,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
if
(
controls
.
release
(
C_STATS
))
{
if
(
controls
.
release
(
C_STATS
))
{
if
(
!
gameMode
)
stats
^=
S_SCREEN
;
if
(
!
multiplayer
)
stats
^=
S_SCREEN
;
else
stats
=
(
stats
+
1
)
&
3
;
else
stats
=
(
stats
+
1
)
&
3
;
}
}
...
@@ -281,7 +281,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
...
@@ -281,7 +281,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
case
3
:
// Setup
case
3
:
// Setup
if
(
!
gameMode
)
{
if
(
!
multiplayer
)
{
if
(
setupMenu
.
setup
()
==
E_QUIT
)
return
E_QUIT
;
if
(
setupMenu
.
setup
()
==
E_QUIT
)
return
E_QUIT
;
...
@@ -302,7 +302,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
...
@@ -302,7 +302,7 @@ int BaseLevel::loop (bool& menu, int& option, bool& message) {
}
}
if
(
!
gameMode
)
paused
=
message
||
menu
;
if
(
!
multiplayer
)
paused
=
message
||
menu
;
timeCalcs
();
timeCalcs
();
...
@@ -319,7 +319,7 @@ void BaseLevel::addTimer () {
...
@@ -319,7 +319,7 @@ void BaseLevel::addTimer () {
endTime
+=
2
*
60
*
1000
;
// 2 minutes. Is this right?
endTime
+=
2
*
60
*
1000
;
// 2 minutes. Is this right?
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
...
@@ -344,7 +344,7 @@ void BaseLevel::setStage (LevelStage newStage) {
...
@@ -344,7 +344,7 @@ void BaseLevel::setStage (LevelStage newStage) {
stage
=
newStage
;
stage
=
newStage
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_STAGE
;
buffer
[
0
]
=
MTL_L_STAGE
;
buffer
[
1
]
=
MT_L_STAGE
;
buffer
[
1
]
=
MT_L_STAGE
;
...
...
src/baselevel.h
View file @
28218a7d
...
@@ -76,6 +76,7 @@ class BaseLevel {
...
@@ -76,6 +76,7 @@ class BaseLevel {
unsigned
int
endTime
;
unsigned
int
endTime
;
float
smoothfps
;
float
smoothfps
;
int
items
;
int
items
;
bool
multiplayer
;
bool
paused
;
bool
paused
;
LevelStage
stage
;
LevelStage
stage
;
int
stats
;
int
stats
;
...
...
src/bonus/bonus.cpp
View file @
28218a7d
...
@@ -183,7 +183,7 @@ int Bonus::loadTiles (char *fileName) {
...
@@ -183,7 +183,7 @@ int Bonus::loadTiles (char *fileName) {
}
}
Bonus
::
Bonus
(
char
*
fileName
,
unsigned
char
diff
)
{
Bonus
::
Bonus
(
char
*
fileName
,
unsigned
char
diff
,
bool
multi
)
{
Anim
*
pAnims
[
BPANIMS
];
Anim
*
pAnims
[
BPANIMS
];
File
*
file
;
File
*
file
;
...
@@ -369,6 +369,9 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
...
@@ -369,6 +369,9 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
panelBigFont
->
mapPalette
(
0
,
32
,
15
,
-
16
);
panelBigFont
->
mapPalette
(
0
,
32
,
15
,
-
16
);
multiplayer
=
multi
;
return
;
return
;
}
}
...
...
src/bonus/bonus.h
View file @
28218a7d
...
@@ -73,7 +73,7 @@ class Bonus : public BaseLevel {
...
@@ -73,7 +73,7 @@ class Bonus : public BaseLevel {
void
draw
();
void
draw
();
public
:
public
:
Bonus
(
char
*
fileName
,
unsigned
char
diff
);
Bonus
(
char
*
fileName
,
unsigned
char
diff
,
bool
multi
);
~
Bonus
();
~
Bonus
();
bool
checkMask
(
fixed
x
,
fixed
y
);
bool
checkMask
(
fixed
x
,
fixed
y
);
...
...
src/game/clientgame.cpp
View file @
28218a7d
...
@@ -43,7 +43,7 @@ ClientGame::ClientGame (char* address) {
...
@@ -43,7 +43,7 @@ ClientGame::ClientGame (char* address) {
unsigned
char
buffer
[
BUFFER_LENGTH
];
unsigned
char
buffer
[
BUFFER_LENGTH
];
unsigned
int
timeout
;
unsigned
int
timeout
;
int
count
,
ret
;
int
count
,
ret
;
GameModeType
mode
;
GameModeType
mode
Type
;
sock
=
net
->
join
(
address
);
sock
=
net
->
join
(
address
);
...
@@ -111,13 +111,13 @@ ClientGame::ClientGame (char* address) {
...
@@ -111,13 +111,13 @@ ClientGame::ClientGame (char* address) {
printf
(
"Connected to server (version %d).
\n
"
,
buffer
[
2
]);
printf
(
"Connected to server (version %d).
\n
"
,
buffer
[
2
]);
// Copy game parameters
// Copy game parameters
mode
=
GameModeType
(
buffer
[
3
]);
mode
Type
=
GameModeType
(
buffer
[
3
]);
difficulty
=
buffer
[
4
];
difficulty
=
buffer
[
4
];
maxPlayers
=
buffer
[
5
];
maxPlayers
=
buffer
[
5
];
nPlayers
=
buffer
[
6
];
nPlayers
=
buffer
[
6
];
clientID
=
buffer
[
7
];
clientID
=
buffer
[
7
];
printf
(
"Game mode %d, difficulty %d, %d of %d players.
\n
"
,
mode
,
difficulty
,
nPlayers
,
maxPlayers
);
printf
(
"Game mode %d, difficulty %d, %d of %d players.
\n
"
,
mode
Type
,
difficulty
,
nPlayers
,
maxPlayers
);
if
(
nPlayers
>
maxPlayers
)
{
if
(
nPlayers
>
maxPlayers
)
{
...
@@ -128,9 +128,9 @@ ClientGame::ClientGame (char* address) {
...
@@ -128,9 +128,9 @@ ClientGame::ClientGame (char* address) {
}
}
gameMode
=
createGameMode
(
mod
e
);
mode
=
createMode
(
modeTyp
e
);
if
(
gameMode
==
NULL
)
{
if
(
!
mode
)
{
net
->
close
(
sock
);
net
->
close
(
sock
);
...
@@ -157,7 +157,7 @@ ClientGame::ClientGame (char* address) {
...
@@ -157,7 +157,7 @@ ClientGame::ClientGame (char* address) {
if
(
file
)
delete
file
;
if
(
file
)
delete
file
;
delete
gameM
ode
;
delete
m
ode
;
throw
ret
;
throw
ret
;
...
@@ -187,7 +187,7 @@ ClientGame::ClientGame (char* address) {
...
@@ -187,7 +187,7 @@ ClientGame::ClientGame (char* address) {
if
(
file
)
delete
file
;
if
(
file
)
delete
file
;
delete
gameM
ode
;
delete
m
ode
;
throw
E_QUIT
;
throw
E_QUIT
;
...
@@ -199,7 +199,7 @@ ClientGame::ClientGame (char* address) {
...
@@ -199,7 +199,7 @@ ClientGame::ClientGame (char* address) {
if
(
file
)
delete
file
;
if
(
file
)
delete
file
;
delete
gameM
ode
;
delete
m
ode
;
throw
E_UNUSED
;
throw
E_UNUSED
;
...
@@ -216,7 +216,7 @@ ClientGame::ClientGame (char* address) {
...
@@ -216,7 +216,7 @@ ClientGame::ClientGame (char* address) {
if
(
file
)
delete
file
;
if
(
file
)
delete
file
;
delete
gameM
ode
;
delete
m
ode
;
throw
ret
;
throw
ret
;
...
@@ -235,7 +235,7 @@ ClientGame::~ClientGame () {
...
@@ -235,7 +235,7 @@ ClientGame::~ClientGame () {
if
(
file
)
delete
file
;
if
(
file
)
delete
file
;
delete
gameM
ode
;
delete
m
ode
;
return
;
return
;
...
@@ -524,7 +524,7 @@ void ClientGame::setCheckpoint (unsigned char gridX, unsigned char gridY) {
...
@@ -524,7 +524,7 @@ void ClientGame::setCheckpoint (unsigned char gridX, unsigned char gridY) {
unsigned
char
buffer
[
MTL_G_CHECK
];
unsigned
char
buffer
[
MTL_G_CHECK
];
if
(
gameM
ode
)
{
if
(
m
ode
)
{
buffer
[
0
]
=
MTL_G_CHECK
;
buffer
[
0
]
=
MTL_G_CHECK
;
buffer
[
1
]
=
MT_G_CHECK
;
buffer
[
1
]
=
MT_G_CHECK
;
...
...
src/game/game.cpp
View file @
28218a7d
...
@@ -58,7 +58,7 @@ Game::Game (char *firstLevel, int gameDifficulty) {
...
@@ -58,7 +58,7 @@ Game::Game (char *firstLevel, int gameDifficulty) {
difficulty
=
gameDifficulty
;
difficulty
=
gameDifficulty
;
gameMode
=
NULL
;
mode
=
new
SingleGameMode
()
;
// Create the player
// Create the player
nPlayers
=
1
;
nPlayers
=
1
;
...
@@ -82,6 +82,44 @@ Game::~Game () {
...
@@ -82,6 +82,44 @@ Game::~Game () {
}
}
GameMode
*
Game
::
createMode
(
GameModeType
modeType
)
{
switch
(
modeType
)
{
case
M_SINGLE
:
return
new
SingleGameMode
();
case
M_COOP
:
return
new
CoopGameMode
();
case
M_BATTLE
:
return
new
BattleGameMode
();
case
M_TEAMBATTLE
:
return
new
TeamBattleGameMode
();
case
M_RACE
:
return
new
RaceGameMode
();
}
return
NULL
;
}
GameMode
*
Game
::
getMode
()
{
return
mode
;
}
int
Game
::
setLevel
(
char
*
fileName
)
{
int
Game
::
setLevel
(
char
*
fileName
)
{
if
(
levelFile
)
delete
[]
levelFile
;
if
(
levelFile
)
delete
[]
levelFile
;
...
@@ -99,10 +137,12 @@ int Game::play () {
...
@@ -99,10 +137,12 @@ int Game::play () {
Planet
*
planet
;
Planet
*
planet
;
Bonus
*
bonus
;
Bonus
*
bonus
;
char
*
fileName
;
char
*
fileName
;
bool
multiplayer
;
bool
checkpoint
;
bool
checkpoint
;
int
ret
;
int
ret
;
int
planetId
;
int
planetId
;
multiplayer
=
(
mode
->
getMode
()
!=
M_SINGLE
);
checkpoint
=
false
;
checkpoint
=
false
;
planetId
=
-
1
;
planetId
=
-
1
;
...
@@ -120,7 +160,7 @@ int Game::play () {
...
@@ -120,7 +160,7 @@ int Game::play () {
try
{
try
{
baseLevel
=
bonus
=
new
Bonus
(
levelFile
,
difficulty
);
baseLevel
=
bonus
=
new
Bonus
(
levelFile
,
difficulty
,
multiplayer
);
}
catch
(
int
e
)
{
}
catch
(
int
e
)
{
...
@@ -155,7 +195,7 @@ int Game::play () {
...
@@ -155,7 +195,7 @@ int Game::play () {
try
{
try
{
baseLevel
=
jj2Level
=
new
JJ2Level
(
levelFile
,
difficulty
,
checkpoint
);
baseLevel
=
jj2Level
=
new
JJ2Level
(
levelFile
,
difficulty
,
checkpoint
,
multiplayer
);
}
catch
(
int
e
)
{
}
catch
(
int
e
)
{
...
@@ -200,7 +240,7 @@ int Game::play () {
...
@@ -200,7 +240,7 @@ int Game::play () {
try
{
try
{
baseLevel
=
level
=
new
Level
(
levelFile
,
difficulty
,
checkpoint
);
baseLevel
=
level
=
new
Level
(
levelFile
,
difficulty
,
checkpoint
,
multiplayer
);
}
catch
(
int
e
)
{
}
catch
(
int
e
)
{
...
@@ -208,6 +248,8 @@ int Game::play () {
...
@@ -208,6 +248,8 @@ int Game::play () {
}
}
if
(
!
multiplayer
)
{
planet
=
NULL
;
planet
=
NULL
;
fileName
=
createFileName
(
F_PLANET
,
level
->
getWorld
());
fileName
=
createFileName
(
F_PLANET
,
level
->
getWorld
());
...
@@ -240,6 +282,8 @@ int Game::play () {
...
@@ -240,6 +282,8 @@ int Game::play () {
}
}
}
ret
=
level
->
play
();
ret
=
level
->
play
();
if
(
ret
<=
0
)
{
if
(
ret
<=
0
)
{
...
...
src/game/game.h
View file @
28218a7d
...
@@ -86,17 +86,21 @@ class File;
...
@@ -86,17 +86,21 @@ class File;
class
Game
{
class
Game
{
protected
:
protected
:
char
*
levelFile
;
GameMode
*
mode
;
char
*
levelFile
;
int
difficulty
;
int
difficulty
;
unsigned
int
sendTime
,
checkTime
;
unsigned
int
sendTime
,
checkTime
;
unsigned
char
checkX
,
checkY
;
unsigned
char
checkX
,
checkY
;
Game
();
Game
();
GameMode
*
createMode
(
GameModeType
modeType
);
public
:
public
:
Game
(
char
*
firstLevel
,
int
gameDifficulty
);
Game
(
char
*
firstLevel
,
int
gameDifficulty
);
virtual
~
Game
();
virtual
~
Game
();
GameMode
*
getMode
();
virtual
int
setLevel
(
char
*
fileName
);
virtual
int
setLevel
(
char
*
fileName
);
int
play
();
int
play
();
void
view
(
int
change
);
void
view
(
int
change
);
...
...
src/game/gamemode.cpp
View file @
28218a7d
...
@@ -62,6 +62,27 @@ void GameMode::outOfTime () {
...
@@ -62,6 +62,27 @@ void GameMode::outOfTime () {
}
}
GameModeType
SingleGameMode
::
getMode
()
{
return
M_SINGLE
;
}
unsigned
char
SingleGameMode
::
chooseTeam
()
{
return
0
;
}
void
SingleGameMode
::
drawScore
(
Font
*
font
)
{
return
;
}
unsigned
char
CooperativeGameMode
::
chooseTeam
()
{
unsigned
char
CooperativeGameMode
::
chooseTeam
()
{
// All players are on the same team
// All players are on the same team
...
@@ -153,17 +174,6 @@ GameModeType CoopGameMode::getMode () {
...
@@ -153,17 +174,6 @@ GameModeType CoopGameMode::getMode () {
}
}
bool
CoopGameMode
::
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
)
{
game
->
setCheckpoint
(
gridX
,
gridY
);
baseLevel
->
setStage
(
LS_END
);
return
true
;
}
GameModeType
BattleGameMode
::
getMode
()
{
GameModeType
BattleGameMode
::
getMode
()
{
return
M_BATTLE
;
return
M_BATTLE
;
...
@@ -202,35 +212,3 @@ bool RaceGameMode::endOfLevel (Player *player, unsigned char gridX, unsigned cha
...
@@ -202,35 +212,3 @@ bool RaceGameMode::endOfLevel (Player *player, unsigned char gridX, unsigned cha
}
}
GameMode
*
createGameMode
(
GameModeType
mode
)
{
switch
(
mode
)
{
case
M_SINGLE
:
return
NULL
;
case
M_COOP
:
return
new
CoopGameMode
();
case
M_BATTLE
:
return
new
BattleGameMode
();
case
M_TEAMBATTLE
:
return
new
TeamBattleGameMode
();
case
M_RACE
:
return
new
RaceGameMode
();
}
return
NULL
;
}
src/game/gamemode.h
View file @
28218a7d
...
@@ -59,6 +59,15 @@ class GameMode {
...
@@ -59,6 +59,15 @@ class GameMode {
};
};
class
SingleGameMode
:
public
GameMode
{
public
:
GameModeType
getMode
();
unsigned
char
chooseTeam
();
void
drawScore
(
Font
*
font
);
};
class
CooperativeGameMode
:
public
GameMode
{
class
CooperativeGameMode
:
public
GameMode
{
public
:
public
:
...
@@ -87,7 +96,6 @@ class CoopGameMode : public CooperativeGameMode {
...
@@ -87,7 +96,6 @@ class CoopGameMode : public CooperativeGameMode {
public
:
public
:
GameModeType
getMode
();
GameModeType
getMode
();
bool
endOfLevel
(
Player
*
player
,
unsigned
char
gridX
,
unsigned
char
gridY
);
};
};
...
@@ -123,16 +131,5 @@ class RaceGameMode : public FreeForAllGameMode {
...
@@ -123,16 +131,5 @@ class RaceGameMode : public FreeForAllGameMode {
};
};
// Variable
EXTERN
GameMode
*
gameMode
;
// NULL for single-player games
// Function
GameMode
*
createGameMode
(
GameModeType
mode
);
#endif
#endif
src/game/servergame.cpp
View file @
28218a7d
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
#include <string.h>
#include <string.h>
ServerGame
::
ServerGame
(
GameModeType
mode
,
char
*
firstLevel
,
int
gameDifficulty
)
{
ServerGame
::
ServerGame
(
GameModeType
mode
Type
,
char
*
firstLevel
,
int
gameDifficulty
)
{
int
count
;
int
count
;
...
@@ -77,7 +77,7 @@ ServerGame::ServerGame (GameModeType mode, char* firstLevel, int gameDifficulty)
...
@@ -77,7 +77,7 @@ ServerGame::ServerGame (GameModeType mode, char* firstLevel, int gameDifficulty)
difficulty
=
gameDifficulty
;
difficulty
=
gameDifficulty
;
gameMode
=
createGameMode
(
mod
e
);
mode
=
createMode
(
modeTyp
e
);
return
;
return
;
...
@@ -98,7 +98,7 @@ ServerGame::~ServerGame () {
...
@@ -98,7 +98,7 @@ ServerGame::~ServerGame () {
if
(
levelData
)
delete
[]
levelData
;
if
(
levelData
)
delete
[]
levelData
;
delete
gameM
ode
;
delete
m
ode
;
return
;
return
;
...
@@ -253,7 +253,7 @@ int ServerGame::step (unsigned int ticks) {
...
@@ -253,7 +253,7 @@ int ServerGame::step (unsigned int ticks) {
// Set up the new player
// Set up the new player
recvBuffers
[
count
][
4
]
=
gameM
ode
->
chooseTeam
();
recvBuffers
[
count
][
4
]
=
m
ode
->
chooseTeam
();
players
[
nPlayers
].
init
((
char
*
)(
recvBuffers
[
count
])
+
9
,
players
[
nPlayers
].
init
((
char
*
)(
recvBuffers
[
count
])
+
9
,
recvBuffers
[
count
]
+
5
,
recvBuffers
[
count
][
4
]);
recvBuffers
[
count
]
+
5
,
recvBuffers
[
count
][
4
]);
...
@@ -339,7 +339,7 @@ int ServerGame::step (unsigned int ticks) {
...
@@ -339,7 +339,7 @@ int ServerGame::step (unsigned int ticks) {
sendBuffer
[
0
]
=
MTL_G_PROPS
;
sendBuffer
[
0
]
=
MTL_G_PROPS
;
sendBuffer
[
1
]
=
MT_G_PROPS
;
sendBuffer
[
1
]
=
MT_G_PROPS
;
sendBuffer
[
2
]
=
1
;
// Server version
sendBuffer
[
2
]
=
1
;
// Server version
sendBuffer
[
3
]
=
gameM
ode
->
getMode
();
sendBuffer
[
3
]
=
m
ode
->
getMode
();
sendBuffer
[
4
]
=
difficulty
;
sendBuffer
[
4
]
=
difficulty
;
sendBuffer
[
5
]
=
MAX_PLAYERS
;
sendBuffer
[
5
]
=
MAX_PLAYERS
;
sendBuffer
[
6
]
=
nPlayers
;
// Number of players
sendBuffer
[
6
]
=
nPlayers
;
// Number of players
...
...
src/jj2level/jj2level.cpp
View file @
28218a7d
...
@@ -46,7 +46,7 @@
...
@@ -46,7 +46,7 @@
#include <string.h>
#include <string.h>
JJ2Level
::
JJ2Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
)
{
JJ2Level
::
JJ2Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
,
bool
multi
)
{
int
ret
;
int
ret
;
...
@@ -56,6 +56,8 @@ JJ2Level::JJ2Level (char* fileName, unsigned char diff, bool checkpoint) {
...
@@ -56,6 +56,8 @@ JJ2Level::JJ2Level (char* fileName, unsigned char diff, bool checkpoint) {
if
(
ret
<
0
)
throw
ret
;
if
(
ret
<
0
)
throw
ret
;
multiplayer
=
multi
;
return
;
return
;
}
}
...
@@ -150,7 +152,7 @@ void JJ2Level::setNext (char* fileName) {
...
@@ -150,7 +152,7 @@ void JJ2Level::setNext (char* fileName) {
delete
[]
nextLevel
;
delete
[]
nextLevel
;
nextLevel
=
createString
(
fileName
);
nextLevel
=
createString
(
fileName
);
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
...
@@ -173,7 +175,7 @@ void JJ2Level::setFrame (unsigned char gridX, unsigned char gridY, unsigned char
...
@@ -173,7 +175,7 @@ void JJ2Level::setFrame (unsigned char gridX, unsigned char gridY, unsigned char
layer
->
setFrame
(
gridX
,
gridY
,
frame
);
layer
->
setFrame
(
gridX
,
gridY
,
frame
);
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
...
@@ -220,7 +222,7 @@ void JJ2Level::setWaterLevel (unsigned char gridY, bool instant) {
...
@@ -220,7 +222,7 @@ void JJ2Level::setWaterLevel (unsigned char gridY, bool instant) {
if
(
instant
)
waterLevel
=
waterLevelTarget
-
F8
;
if
(
instant
)
waterLevel
=
waterLevelTarget
-
F8
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
...
...
src/jj2level/jj2level.h
View file @
28218a7d
...
@@ -129,7 +129,7 @@ class JJ2Level : public BaseLevel {
...
@@ -129,7 +129,7 @@ class JJ2Level : public BaseLevel {
void
draw
();
void
draw
();
public
:
public
:
JJ2Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
);
JJ2Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
,
bool
multi
);
~
JJ2Level
();
~
JJ2Level
();
bool
checkMaskDown
(
fixed
x
,
fixed
y
,
bool
drop
);
bool
checkMaskDown
(
fixed
x
,
fixed
y
,
bool
drop
);
...
...
src/jj2level/jj2levelframe.cpp
View file @
28218a7d
...
@@ -77,7 +77,7 @@ int JJ2Level::step () {
...
@@ -77,7 +77,7 @@ int JJ2Level::step () {
if
(
players
[
x
].
getJJ2LevelPlayer
()
->
reacted
(
ticks
)
==
JJ2PR_KILLED
)
{
if
(
players
[
x
].
getJJ2LevelPlayer
()
->
reacted
(
ticks
)
==
JJ2PR_KILLED
)
{
if
(
!
gameMode
)
return
LOST
;
if
(
!
multiplayer
)
return
LOST
;
game
->
resetPlayer
(
players
+
x
);
game
->
resetPlayer
(
players
+
x
);
...
@@ -143,7 +143,7 @@ void JJ2Level::draw () {
...
@@ -143,7 +143,7 @@ void JJ2Level::draw () {
// Show "panel" data
// Show "panel" data
// Show score
// Show score
if
(
gameMode
)
gameMode
->
drawScore
(
font
);
if
(
multiplayer
)
game
->
getMode
()
->
drawScore
(
font
);
else
panelSmallFont
->
showNumber
(
localPlayer
->
getScore
(),
64
,
8
);
else
panelSmallFont
->
showNumber
(
localPlayer
->
getScore
(),
64
,
8
);
...
...
src/jj2level/jj2levelload.cpp
View file @
28218a7d
...
@@ -753,7 +753,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
...
@@ -753,7 +753,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
// Generate player's animation set references
// Generate player's animation set references
if
(
gameMode
)
{
if
(
multiplayer
)
{
string
=
new
char
[
MTL_P_ANIMS
+
1
];
string
=
new
char
[
MTL_P_ANIMS
+
1
];
...
...
src/level/demolevel.cpp
View file @
28218a7d
...
@@ -45,7 +45,7 @@ DemoLevel::DemoLevel (const char* fileName) {
...
@@ -45,7 +45,7 @@ DemoLevel::DemoLevel (const char* fileName) {
char
*
levelFile
;
char
*
levelFile
;
int
lNum
,
wNum
,
diff
,
ret
;
int
lNum
,
wNum
,
diff
,
ret
;
gameMode
=
NULL
;
multiplayer
=
false
;
try
{
try
{
...
...
src/level/event/eventframe.cpp
View file @
28218a7d
...
@@ -1057,10 +1057,12 @@ void Event::drawEnergy (unsigned int ticks) {
...
@@ -1057,10 +1057,12 @@ void Event::drawEnergy (unsigned int ticks) {
// Get the event properties
// Get the event properties
set
=
level
->
getEvent
(
gridX
,
gridY
);
set
=
level
->
getEvent
(
gridX
,
gridY
);
if
(
set
[
E_MODIFIER
]
!=
8
)
{
if
(
!
set
||
set
[
E_MODIFIER
]
!=
8
)
{
if
(
next
)
next
->
drawEnergy
(
ticks
);
if
(
next
)
next
->
drawEnergy
(
ticks
);
return
;
}
else
if
(
set
[
E_HITSTOKILL
])
{
}
else
if
(
set
[
E_HITSTOKILL
])
{
// Draw boss energy bar
// Draw boss energy bar
...
...
src/level/level.cpp
View file @
28218a7d
...
@@ -67,7 +67,7 @@ Level::Level () {
...
@@ -67,7 +67,7 @@ Level::Level () {
}
}
Level
::
Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
)
{
Level
::
Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
,
bool
multi
)
{
int
ret
;
int
ret
;
...
@@ -77,6 +77,8 @@ Level::Level (char* fileName, unsigned char diff, bool checkpoint) {
...
@@ -77,6 +77,8 @@ Level::Level (char* fileName, unsigned char diff, bool checkpoint) {
if
(
ret
<
0
)
throw
ret
;
if
(
ret
<
0
)
throw
ret
;
multiplayer
=
multi
;
return
;
return
;
}
}
...
@@ -193,7 +195,7 @@ void Level::setNext (int nextLevel, int nextWorld) {
...
@@ -193,7 +195,7 @@ void Level::setNext (int nextLevel, int nextWorld) {
nextLevelNum
=
nextLevel
;
nextLevelNum
=
nextLevel
;
nextWorldNum
=
nextWorld
;
nextWorldNum
=
nextWorld
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
...
@@ -216,7 +218,7 @@ void Level::setTile (unsigned char gridX, unsigned char gridY, unsigned char til
...
@@ -216,7 +218,7 @@ void Level::setTile (unsigned char gridX, unsigned char gridY, unsigned char til
grid
[
gridY
][
gridX
].
tile
=
tile
;
grid
[
gridY
][
gridX
].
tile
=
tile
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
...
@@ -276,7 +278,7 @@ void Level::clearEvent (unsigned char gridX, unsigned char gridY) {
...
@@ -276,7 +278,7 @@ void Level::clearEvent (unsigned char gridX, unsigned char gridY) {
grid
[
gridY
][
gridX
].
event
=
0
;
grid
[
gridY
][
gridX
].
event
=
0
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
...
@@ -325,7 +327,7 @@ int Level::hitEvent (unsigned char gridX, unsigned char gridY, LevelPlayer* sour
...
@@ -325,7 +327,7 @@ int Level::hitEvent (unsigned char gridX, unsigned char gridY, LevelPlayer* sour
}
}
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
0
]
=
MTL_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
buffer
[
1
]
=
MT_L_GRID
;
...
@@ -387,7 +389,7 @@ void Level::setWaterLevel (unsigned char gridY) {
...
@@ -387,7 +389,7 @@ void Level::setWaterLevel (unsigned char gridY) {
waterLevelTarget
=
TTOF
(
gridY
);
waterLevelTarget
=
TTOF
(
gridY
);
if
(
gameMode
)
{
if
(
multiplayer
)
{
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
0
]
=
MTL_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
buffer
[
1
]
=
MT_L_PROP
;
...
@@ -444,7 +446,7 @@ int Level::playBonus () {
...
@@ -444,7 +446,7 @@ int Level::playBonus () {
try
{
try
{
baseLevel
=
bonus
=
new
Bonus
(
bonusFile
,
difficulty
);
baseLevel
=
bonus
=
new
Bonus
(
bonusFile
,
difficulty
,
multiplayer
);
}
catch
(
int
e
)
{
}
catch
(
int
e
)
{
...
@@ -556,7 +558,7 @@ int Level::play () {
...
@@ -556,7 +558,7 @@ int Level::play () {
// Check if level has been won
// Check if level has been won
if
(
game
&&
returnTime
&&
(
ticks
>
returnTime
))
{
if
(
game
&&
returnTime
&&
(
ticks
>
returnTime
))
{
if
(
!
gameMode
)
{
if
(
!
multiplayer
)
{
// If the gem has been collected, play the bonus level
// If the gem has been collected, play the bonus level
if
(
playBonus
()
==
E_QUIT
)
return
E_QUIT
;
if
(
playBonus
()
==
E_QUIT
)
return
E_QUIT
;
...
...
src/level/level.h
View file @
28218a7d
...
@@ -138,7 +138,7 @@ class Level : public BaseLevel {
...
@@ -138,7 +138,7 @@ class Level : public BaseLevel {
EventPath
path
[
PATHS
];
EventPath
path
[
PATHS
];
Level
();
Level
();
Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
);
Level
(
char
*
fileName
,
unsigned
char
diff
,
bool
checkpoint
,
bool
multi
);
virtual
~
Level
();
virtual
~
Level
();
bool
checkMaskUp
(
fixed
x
,
fixed
y
);
bool
checkMaskUp
(
fixed
x
,
fixed
y
);
...
...
src/level/levelframe.cpp
View file @
28218a7d
...
@@ -138,12 +138,16 @@ int Level::step () {
...
@@ -138,12 +138,16 @@ int Level::step () {
// Check if time has run out
// Check if time has run out
if
(
ticks
>
endTime
)
{
if
(
ticks
>
endTime
)
{
if
(
!
gameMode
)
{
if
(
multiplayer
)
{
game
->
getMode
()
->
outOfTime
();
}
else
{
if
((
difficulty
>=
2
)
&&
(
stage
==
LS_NORMAL
))
if
((
difficulty
>=
2
)
&&
(
stage
==
LS_NORMAL
))
localPlayer
->
getLevelPlayer
()
->
kill
(
NULL
,
endTime
);
localPlayer
->
getLevelPlayer
()
->
kill
(
NULL
,
endTime
);
}
else
gameMode
->
outOfTime
();
}
}
}
...
@@ -161,7 +165,7 @@ int Level::step () {
...
@@ -161,7 +165,7 @@ int Level::step () {
if
(
players
[
x
].
getLevelPlayer
()
->
reacted
(
ticks
)
==
PR_KILLED
)
{
if
(
players
[
x
].
getLevelPlayer
()
->
reacted
(
ticks
)
==
PR_KILLED
)
{
if
(
!
gameMode
)
return
LOST
;
if
(
!
multiplayer
)
return
LOST
;
game
->
resetPlayer
(
players
+
x
);
game
->
resetPlayer
(
players
+
x
);
...
@@ -335,7 +339,7 @@ void Level::draw () {
...
@@ -335,7 +339,7 @@ void Level::draw () {
// If this is a competitive game, draw the score
// If this is a competitive game, draw the score
if
(
gameMode
)
gameMode
->
drawScore
(
font
);
if
(
multiplayer
)
game
->
getMode
()
->
drawScore
(
font
);
// Show panel
// Show panel
...
...
src/level/levelload.cpp
View file @
28218a7d
...
@@ -886,7 +886,7 @@ int Level::load (char* fileName, unsigned char diff, bool checkpoint) {
...
@@ -886,7 +886,7 @@ int Level::load (char* fileName, unsigned char diff, bool checkpoint) {
delete
[]
buffer
;
delete
[]
buffer
;
if
(
gameMode
)
{
if
(
multiplayer
)
{
string
[
0
]
=
MTL_P_ANIMS
+
PANIMS
;
string
[
0
]
=
MTL_P_ANIMS
+
PANIMS
;
string
[
1
]
=
MT_P_ANIMS
;
string
[
1
]
=
MT_P_ANIMS
;
...
...
src/player/jj2levelplayer.cpp
View file @
28218a7d
...
@@ -217,7 +217,7 @@ bool JJ2LevelPlayer::hit (Player *source, unsigned int ticks) {
...
@@ -217,7 +217,7 @@ bool JJ2LevelPlayer::hit (Player *source, unsigned int ticks) {
if
(
source
&&
(
source
->
getTeam
()
==
player
->
team
))
return
false
;
if
(
source
&&
(
source
->
getTeam
()
==
player
->
team
))
return
false
;
if
(
!
gameMode
||
gameMode
->
hit
(
source
,
player
))
{
if
(
game
->
getMode
()
->
hit
(
source
,
player
))
{
energy
--
;
energy
--
;
...
@@ -259,7 +259,7 @@ void JJ2LevelPlayer::kill (Player *source, unsigned int ticks) {
...
@@ -259,7 +259,7 @@ void JJ2LevelPlayer::kill (Player *source, unsigned int ticks) {
if
(
reaction
!=
JJ2PR_NONE
)
return
;
if
(
reaction
!=
JJ2PR_NONE
)
return
;
if
(
!
gameMode
||
gameMode
->
kill
(
source
,
player
))
{
if
(
game
->
getMode
()
->
kill
(
source
,
player
))
{
energy
=
0
;
energy
=
0
;
player
->
lives
--
;
player
->
lives
--
;
...
...
src/player/jj2levelplayerframe.cpp
View file @
28218a7d
...
@@ -121,13 +121,7 @@ void JJ2LevelPlayer::modify (JJ2Modifier* nextMod, unsigned int ticks) {
...
@@ -121,13 +121,7 @@ void JJ2LevelPlayer::modify (JJ2Modifier* nextMod, unsigned int ticks) {
if
(
!
energy
)
return
;
if
(
!
energy
)
return
;
if
(
!
gameMode
)
{
if
(
!
game
->
getMode
()
->
endOfLevel
(
player
,
FTOT
(
x
+
PXO_MID
),
FTOT
(
y
+
PYO_MID
)))
return
;
if
(
game
)
game
->
setCheckpoint
(
FTOT
(
x
+
PXO_MID
),
FTOT
(
y
+
PYO_MID
));
jj2Level
->
setStage
(
LS_END
);
}
else
if
(
!
(
gameMode
->
endOfLevel
(
player
,
FTOT
(
x
+
PXO_MID
),
FTOT
(
y
+
PYO_MID
))))
return
;
break
;
break
;
...
@@ -897,7 +891,7 @@ void JJ2LevelPlayer::draw (unsigned int ticks, int change) {
...
@@ -897,7 +891,7 @@ void JJ2LevelPlayer::draw (unsigned int ticks, int change) {
// Show the player's name
// Show the player's name
if
(
gameMode
)
if
(
nPlayers
>
1
)
panelBigFont
->
showString
(
player
->
name
,
panelBigFont
->
showString
(
player
->
name
,
FTOI
(
drawX
+
PXO_MID
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawX
+
PXO_MID
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawY
-
F32
-
F16
));
FTOI
(
drawY
-
F32
-
F16
));
...
...
src/player/levelplayer.cpp
View file @
28218a7d
...
@@ -224,7 +224,7 @@ bool LevelPlayer::hit (Player *source, unsigned int ticks) {
...
@@ -224,7 +224,7 @@ bool LevelPlayer::hit (Player *source, unsigned int ticks) {
if
(
shield
==
3
)
shield
=
0
;
if
(
shield
==
3
)
shield
=
0
;
else
if
(
shield
)
shield
--
;
else
if
(
shield
)
shield
--
;
else
if
(
!
gameMode
||
gameMode
->
hit
(
source
,
player
))
{
else
if
(
game
->
getMode
()
->
hit
(
source
,
player
))
{
energy
--
;
energy
--
;
...
@@ -266,7 +266,7 @@ void LevelPlayer::kill (Player *source, unsigned int ticks) {
...
@@ -266,7 +266,7 @@ void LevelPlayer::kill (Player *source, unsigned int ticks) {
if
(
reaction
!=
PR_NONE
)
return
;
if
(
reaction
!=
PR_NONE
)
return
;
if
(
!
gameMode
||
gameMode
->
kill
(
source
,
player
))
{
if
(
game
->
getMode
()
->
kill
(
source
,
player
))
{
energy
=
0
;
energy
=
0
;
player
->
lives
--
;
player
->
lives
--
;
...
@@ -274,9 +274,9 @@ void LevelPlayer::kill (Player *source, unsigned int ticks) {
...
@@ -274,9 +274,9 @@ void LevelPlayer::kill (Player *source, unsigned int ticks) {
reaction
=
PR_KILLED
;
reaction
=
PR_KILLED
;
reactionTime
=
ticks
+
PRT_KILLED
;
reactionTime
=
ticks
+
PRT_KILLED
;
}
if
(
game
->
getMode
()
->
getMode
()
==
M_SINGLE
)
level
->
flash
(
0
,
0
,
0
,
T_END
<<
1
);
if
(
!
gameMode
)
level
->
flash
(
0
,
0
,
0
,
T_END
<<
1
);
}
return
;
return
;
...
@@ -372,13 +372,7 @@ bool LevelPlayer::takeEvent (unsigned char gridX, unsigned char gridY, unsigned
...
@@ -372,13 +372,7 @@ bool LevelPlayer::takeEvent (unsigned char gridX, unsigned char gridY, unsigned
if
(
!
energy
)
return
false
;
if
(
!
energy
)
return
false
;
if
(
!
gameMode
)
{
if
(
!
game
->
getMode
()
->
endOfLevel
(
player
,
gridX
,
gridY
))
return
false
;
if
(
game
)
game
->
setCheckpoint
(
gridX
,
gridY
);
level
->
setStage
(
LS_END
);
}
else
if
(
!
(
gameMode
->
endOfLevel
(
player
,
gridX
,
gridY
)))
return
false
;
break
;
break
;
...
...
src/player/levelplayerframe.cpp
View file @
28218a7d
...
@@ -791,7 +791,7 @@ void LevelPlayer::draw (unsigned int ticks, int change) {
...
@@ -791,7 +791,7 @@ void LevelPlayer::draw (unsigned int ticks, int change) {
// Show the player's name
// Show the player's name
if
(
gameMode
)
if
(
nPlayers
>
1
)
panelBigFont
->
showString
(
player
->
name
,
panelBigFont
->
showString
(
player
->
name
,
FTOI
(
drawX
+
PXO_MID
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawX
+
PXO_MID
)
-
(
panelBigFont
->
getStringWidth
(
player
->
name
)
>>
1
),
FTOI
(
drawY
-
F32
-
F16
));
FTOI
(
drawY
-
F32
-
F16
));
...
...
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