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
583c31c2
Commit
583c31c2
authored
Jul 03, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added layer tiling.
parent
c63b6035
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
62 additions
and
31 deletions
+62
-31
jj2layer.cpp
src/jj2level/jj2layer.cpp
+9
-3
jj2level.h
src/jj2level/jj2level.h
+2
-1
jj2levelload.cpp
src/jj2level/jj2levelload.cpp
+14
-14
util.cpp
src/util.cpp
+22
-0
util.h
src/util.h
+15
-13
No files found.
src/jj2level/jj2layer.cpp
View file @
583c31c2
...
...
@@ -46,7 +46,7 @@ JJ2Layer::JJ2Layer () {
}
JJ2Layer
::
JJ2Layer
(
int
newWidth
,
int
newHeight
)
{
JJ2Layer
::
JJ2Layer
(
int
newWidth
,
int
newHeight
,
int
flags
)
{
int
row
;
...
...
@@ -58,6 +58,11 @@ JJ2Layer::JJ2Layer (int newWidth, int newHeight) {
for
(
row
=
0
;
row
<
height
;
row
++
)
grid
[
row
]
=
*
grid
+
(
row
*
width
);
tileX
=
flags
&
1
;
tileY
=
flags
&
2
;
limit
=
flags
&
4
;
warp
=
flags
&
8
;
return
;
}
...
...
@@ -93,9 +98,10 @@ int JJ2Layer::getHeight () {
int
JJ2Layer
::
getTile
(
int
x
,
int
y
)
{
if
((
x
<
0
)
||
(
y
<
0
)
||
(
x
>=
width
)
||
(
y
>=
height
))
return
0
;
if
(((
x
<
0
)
||
(
x
>=
width
))
&&
!
tileX
)
return
0
;
if
(((
y
<
0
)
||
(
y
>=
height
))
&&
!
tileY
)
return
0
;
return
grid
[
y
][
x
].
tile
;
return
grid
[
tileY
?
y
%
height
:
y
][
tileX
?
x
%
width
:
x
].
tile
;
}
...
...
src/jj2level/jj2level.h
View file @
583c31c2
...
...
@@ -73,10 +73,11 @@ class JJ2Layer {
private
:
JJ2Tile
**
grid
;
int
width
,
height
;
bool
tileX
,
tileY
,
limit
,
warp
;
public
:
JJ2Layer
();
JJ2Layer
(
int
newWidth
,
int
newHeight
);
JJ2Layer
(
int
newWidth
,
int
newHeight
,
int
flags
);
~
JJ2Layer
();
bool
getFlipped
(
int
x
,
int
y
);
...
...
src/jj2level/jj2levelload.cpp
View file @
583c31c2
...
...
@@ -293,12 +293,12 @@ int JJ2Level::loadTiles (char* fileName) {
// Load tiles
tiles
=
aBuffer
[
1024
]
+
(
aBuffer
[
1025
]
<<
8
);
tiles
=
createShort
(
aBuffer
+
1024
);
tileBuffer
=
new
unsigned
char
[
tiles
<<
10
];
for
(
count
=
0
;
count
<
tiles
;
count
++
)
{
memcpy
(
tileBuffer
+
(
count
<<
10
),
bBuffer
+
((
int
*
)
aBuffer
)[
257
+
(
maxTiles
>>
1
)
+
count
]
,
1024
);
memcpy
(
tileBuffer
+
(
count
<<
10
),
bBuffer
+
createInt
(
aBuffer
+
1028
+
(
maxTiles
<<
1
)
+
(
count
<<
2
))
,
1024
);
}
...
...
@@ -334,7 +334,7 @@ int JJ2Level::loadTiles (char* fileName) {
for
(
y
=
0
;
y
<
32
;
y
++
)
{
for
(
x
=
0
;
x
<
32
;
x
++
)
mask
[(
count
<<
10
)
+
(
y
<<
5
)
+
x
]
=
(
dBuffer
[
((
int
*
)
aBuffer
)[
257
+
((
maxTiles
*
9
)
>>
1
)
+
count
]
+
(
y
<<
2
)
+
(
x
>>
3
)]
>>
(
x
&
7
))
&
1
;
mask
[(
count
<<
10
)
+
(
y
<<
5
)
+
x
]
=
(
dBuffer
[
createInt
(
aBuffer
+
1028
+
(
maxTiles
*
18
)
+
(
count
<<
2
))
+
(
y
<<
2
)
+
(
x
>>
3
)]
>>
(
x
&
7
))
&
1
;
}
...
...
@@ -348,7 +348,7 @@ int JJ2Level::loadTiles (char* fileName) {
for
(
y
=
0
;
y
<
32
;
y
++
)
{
for
(
x
=
0
;
x
<
32
;
x
++
)
flippedMask
[(
count
<<
10
)
+
(
y
<<
5
)
+
x
]
=
(
dBuffer
[
((
int
*
)
aBuffer
)[
257
+
((
maxTiles
*
11
)
>>
1
)
+
count
]
+
(
y
<<
2
)
+
(
x
>>
3
)]
>>
(
x
&
7
))
&
1
;
flippedMask
[(
count
<<
10
)
+
(
y
<<
5
)
+
x
]
=
(
dBuffer
[
createInt
(
aBuffer
+
1028
+
(
maxTiles
*
22
)
+
(
count
<<
2
))
+
(
y
<<
2
)
+
(
x
>>
3
)]
>>
(
x
&
7
))
&
1
;
}
...
...
@@ -407,7 +407,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
int
count
,
x
,
y
;
unsigned
char
tileQuad
[
8
];
short
int
*
quadRefs
;
int
width
,
pitch
,
height
;
int
flags
,
width
,
pitch
,
height
;
int
worldNum
;
unsigned
char
startX
,
startY
;
...
...
@@ -522,13 +522,14 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
for
(
count
=
0
;
count
<
LAYERS
;
count
++
)
{
width
=
((
int
*
)(
aBuffer
+
8443
+
8
))[
count
];
pitch
=
((
int
*
)(
aBuffer
+
8443
+
40
))[
count
];
height
=
((
int
*
)(
aBuffer
+
8443
+
72
))[
count
];
flags
=
aBuffer
[
8403
+
(
count
<<
2
)];
width
=
createInt
(
aBuffer
+
8403
+
48
+
(
count
<<
2
));
pitch
=
createInt
(
aBuffer
+
8403
+
80
+
(
count
<<
2
));
height
=
createInt
(
aBuffer
+
8403
+
112
+
(
count
<<
2
));
if
(
aBuffer
[
84
43
+
count
])
{
if
(
aBuffer
[
84
03
+
40
+
count
])
{
layers
[
count
]
=
new
JJ2Layer
(
width
,
height
);
layers
[
count
]
=
new
JJ2Layer
(
width
,
height
,
flags
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
...
...
@@ -536,7 +537,7 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
if
((
x
&
3
)
==
0
)
memcpy
(
tileQuad
,
cBuffer
+
(
quadRefs
[
x
>>
2
]
<<
3
),
8
);
layers
[
count
]
->
setTile
(
x
,
y
,
tileQuad
[(
x
&
3
)
<<
1
]
+
(
tileQuad
[((
x
&
3
)
<<
1
)
+
1
]
<<
8
),
TSF
?
-
tiles
:
tiles
);
layers
[
count
]
->
setTile
(
x
,
y
,
createShort
(
tileQuad
+
((
x
&
3
)
<<
1
)
),
TSF
?
-
tiles
:
tiles
);
}
...
...
@@ -559,10 +560,9 @@ int JJ2Level::load (char *fileName, unsigned char diff, bool checkpoint) {
height
=
layer
->
getHeight
();
// Load events
startX
=
0
;
startY
=
0
;
startX
=
1
;
startY
=
1
;
mods
=
new
JJ2Modifier
*
[
height
];
*
mods
=
new
JJ2Modifier
[
width
*
height
];
...
...
src/util.cpp
View file @
583c31c2
...
...
@@ -61,6 +61,28 @@ bool fileExists (const char * fileName) {
}
unsigned
short
int
createShort
(
unsigned
char
*
data
)
{
unsigned
short
int
val
;
val
=
data
[
0
]
+
(
data
[
1
]
<<
8
);
return
val
;
}
int
createInt
(
unsigned
char
*
data
)
{
unsigned
int
val
;
val
=
data
[
0
]
+
(
data
[
1
]
<<
8
)
+
(
data
[
2
]
<<
16
)
+
(
data
[
3
]
<<
24
);
return
*
((
int
*
)
&
val
);
}
char
*
createString
(
const
char
*
string
)
{
char
*
cloned
;
...
...
src/util.h
View file @
583c31c2
...
...
@@ -36,12 +36,14 @@ 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
unsigned
short
int
createShort
(
unsigned
char
*
data
);
EXTERN
int
createInt
(
unsigned
char
*
data
);
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
);
...
...
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