Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
SRB2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Shin_Kinr
SRB2
Commits
2f6ec137
Commit
2f6ec137
authored
1 year ago
by
LJ Sonic
Browse files
Options
Downloads
Patches
Plain Diff
Refactor
parent
32a8652c
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/deh_soc.c
+122
-120
122 additions, 120 deletions
src/deh_soc.c
with
122 additions
and
120 deletions
src/deh_soc.c
+
122
−
120
View file @
2f6ec137
...
@@ -1362,6 +1362,8 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1362,6 +1362,8 @@ void readlevelheader(MYFILE *f, INT32 num)
// Reset all previous map header information
// Reset all previous map header information
P_AllocMapHeader
((
INT16
)(
num
-
1
));
P_AllocMapHeader
((
INT16
)(
num
-
1
));
mapheader_t
*
header
=
mapheaderinfo
[
num
-
1
];
do
do
{
{
if
(
myfgets
(
s
,
MAXLINELEN
,
f
))
if
(
myfgets
(
s
,
MAXLINELEN
,
f
))
...
@@ -1398,16 +1400,16 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1398,16 +1400,16 @@ void readlevelheader(MYFILE *f, INT32 num)
if
(
fastcmp
(
word
,
"LEVELNAME"
))
if
(
fastcmp
(
word
,
"LEVELNAME"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
lvlttl
,
word2
,
deh_strlcpy
(
header
->
lvlttl
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
lvlttl
),
va
(
"Level header %d: levelname"
,
num
));
sizeof
(
header
->
lvlttl
),
va
(
"Level header %d: levelname"
,
num
));
strlcpy
(
map
header
info
[
num
-
1
]
->
selectheading
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
selectheading
));
// not deh_ so only complains once
strlcpy
(
header
->
selectheading
,
word2
,
sizeof
(
header
->
selectheading
));
// not deh_ so only complains once
continue
;
continue
;
}
}
// CHEAP HACK: move this over here for lowercase subtitles
// CHEAP HACK: move this over here for lowercase subtitles
if
(
fastcmp
(
word
,
"SUBTITLE"
))
if
(
fastcmp
(
word
,
"SUBTITLE"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
subttl
,
word2
,
deh_strlcpy
(
header
->
subttl
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
subttl
),
va
(
"Level header %d: subtitle"
,
num
));
sizeof
(
header
->
subttl
),
va
(
"Level header %d: subtitle"
,
num
));
continue
;
continue
;
}
}
...
@@ -1429,19 +1431,19 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1429,19 +1431,19 @@ void readlevelheader(MYFILE *f, INT32 num)
}
}
// Sanity limit of 128 params
// Sanity limit of 128 params
if
(
map
header
info
[
num
-
1
]
->
numCustomOptions
==
128
)
if
(
header
->
numCustomOptions
==
128
)
{
{
deh_warning
(
"Level header %d: too many custom parameters"
,
num
);
deh_warning
(
"Level header %d: too many custom parameters"
,
num
);
continue
;
continue
;
}
}
j
=
map
header
info
[
num
-
1
]
->
numCustomOptions
++
;
j
=
header
->
numCustomOptions
++
;
map
header
info
[
num
-
1
]
->
customopts
=
header
->
customopts
=
Z_Realloc
(
map
header
info
[
num
-
1
]
->
customopts
,
Z_Realloc
(
header
->
customopts
,
sizeof
(
customoption_t
)
*
map
header
info
[
num
-
1
]
->
numCustomOptions
,
PU_STATIC
,
NULL
);
sizeof
(
customoption_t
)
*
header
->
numCustomOptions
,
PU_STATIC
,
NULL
);
// Newly allocated
// Newly allocated
modoption
=
&
map
header
info
[
num
-
1
]
->
customopts
[
j
];
modoption
=
&
header
->
customopts
[
j
];
strncpy
(
modoption
->
option
,
word
,
31
);
strncpy
(
modoption
->
option
,
word
,
31
);
modoption
->
option
[
31
]
=
'\0'
;
modoption
->
option
[
31
]
=
'\0'
;
...
@@ -1464,26 +1466,26 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1464,26 +1466,26 @@ void readlevelheader(MYFILE *f, INT32 num)
{
{
mobjtype_t
tmpflickies
[
MAXFLICKIES
];
mobjtype_t
tmpflickies
[
MAXFLICKIES
];
for
(
map
header
info
[
num
-
1
]
->
numFlickies
=
0
;
for
(
header
->
numFlickies
=
0
;
((
map
header
info
[
num
-
1
]
->
numFlickies
<
MAXFLICKIES
)
&&
FLICKYTYPES
[
map
header
info
[
num
-
1
]
->
numFlickies
].
type
);
((
header
->
numFlickies
<
MAXFLICKIES
)
&&
FLICKYTYPES
[
header
->
numFlickies
].
type
);
map
header
info
[
num
-
1
]
->
numFlickies
++
)
header
->
numFlickies
++
)
tmpflickies
[
map
header
info
[
num
-
1
]
->
numFlickies
]
=
FLICKYTYPES
[
map
header
info
[
num
-
1
]
->
numFlickies
].
type
;
tmpflickies
[
header
->
numFlickies
]
=
FLICKYTYPES
[
header
->
numFlickies
].
type
;
if
(
map
header
info
[
num
-
1
]
->
numFlickies
)
// just in case...
if
(
header
->
numFlickies
)
// just in case...
{
{
size_t
newsize
=
sizeof
(
mobjtype_t
)
*
map
header
info
[
num
-
1
]
->
numFlickies
;
size_t
newsize
=
sizeof
(
mobjtype_t
)
*
header
->
numFlickies
;
map
header
info
[
num
-
1
]
->
flickies
=
Z_Realloc
(
map
header
info
[
num
-
1
]
->
flickies
,
newsize
,
PU_STATIC
,
NULL
);
header
->
flickies
=
Z_Realloc
(
header
->
flickies
,
newsize
,
PU_STATIC
,
NULL
);
M_Memcpy
(
map
header
info
[
num
-
1
]
->
flickies
,
tmpflickies
,
newsize
);
M_Memcpy
(
header
->
flickies
,
tmpflickies
,
newsize
);
}
}
}
}
else
else
{
{
mobjtype_t
tmpflickies
[
MAXFLICKIES
];
mobjtype_t
tmpflickies
[
MAXFLICKIES
];
map
header
info
[
num
-
1
]
->
numFlickies
=
0
;
header
->
numFlickies
=
0
;
tmp
=
strtok
(
word2
,
","
);
tmp
=
strtok
(
word2
,
","
);
// get up to the first MAXFLICKIES flickies
// get up to the first MAXFLICKIES flickies
do
{
do
{
if
(
map
header
info
[
num
-
1
]
->
numFlickies
==
MAXFLICKIES
)
// never going to get above that number
if
(
header
->
numFlickies
==
MAXFLICKIES
)
// never going to get above that number
{
{
deh_warning
(
"Level header %d: too many flickies
\n
"
,
num
);
deh_warning
(
"Level header %d: too many flickies
\n
"
,
num
);
break
;
break
;
...
@@ -1497,7 +1499,7 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1497,7 +1499,7 @@ void readlevelheader(MYFILE *f, INT32 num)
//deh_warning("Level header %d: unknown flicky mobj type %s\n", num, tmp); -- no need for this line as get_mobjtype complains too
//deh_warning("Level header %d: unknown flicky mobj type %s\n", num, tmp); -- no need for this line as get_mobjtype complains too
continue
;
continue
;
}
}
tmpflickies
[
map
header
info
[
num
-
1
]
->
numFlickies
]
=
i
;
tmpflickies
[
header
->
numFlickies
]
=
i
;
}
}
else
// ...or a quick, limited selection of default flickies!
else
// ...or a quick, limited selection of default flickies!
{
{
...
@@ -1510,17 +1512,17 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1510,17 +1512,17 @@ void readlevelheader(MYFILE *f, INT32 num)
deh_warning
(
"Level header %d: unknown flicky selection %s
\n
"
,
num
,
tmp
);
deh_warning
(
"Level header %d: unknown flicky selection %s
\n
"
,
num
,
tmp
);
continue
;
continue
;
}
}
tmpflickies
[
map
header
info
[
num
-
1
]
->
numFlickies
]
=
FLICKYTYPES
[
i
].
type
;
tmpflickies
[
header
->
numFlickies
]
=
GetMobjTypeByName
(
FLICKYTYPES
[
i
].
type
)
;
}
}
map
header
info
[
num
-
1
]
->
numFlickies
++
;
header
->
numFlickies
++
;
}
while
((
tmp
=
strtok
(
NULL
,
","
))
!=
NULL
);
}
while
((
tmp
=
strtok
(
NULL
,
","
))
!=
NULL
);
if
(
map
header
info
[
num
-
1
]
->
numFlickies
)
if
(
header
->
numFlickies
)
{
{
size_t
newsize
=
sizeof
(
mobjtype_t
)
*
map
header
info
[
num
-
1
]
->
numFlickies
;
size_t
newsize
=
sizeof
(
mobjtype_t
)
*
header
->
numFlickies
;
map
header
info
[
num
-
1
]
->
flickies
=
Z_Realloc
(
map
header
info
[
num
-
1
]
->
flickies
,
newsize
,
PU_STATIC
,
NULL
);
header
->
flickies
=
Z_Realloc
(
header
->
flickies
,
newsize
,
PU_STATIC
,
NULL
);
// now we add them to the list!
// now we add them to the list!
M_Memcpy
(
map
header
info
[
num
-
1
]
->
flickies
,
tmpflickies
,
newsize
);
M_Memcpy
(
header
->
flickies
,
tmpflickies
,
newsize
);
}
}
else
else
deh_warning
(
"Level header %d: no valid flicky types found
\n
"
,
num
);
deh_warning
(
"Level header %d: no valid flicky types found
\n
"
,
num
);
...
@@ -1550,23 +1552,23 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1550,23 +1552,23 @@ void readlevelheader(MYFILE *f, INT32 num)
// Strings that can be truncated
// Strings that can be truncated
else
if
(
fastcmp
(
word
,
"SELECTHEADING"
))
else
if
(
fastcmp
(
word
,
"SELECTHEADING"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
selectheading
,
word2
,
deh_strlcpy
(
header
->
selectheading
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
selectheading
),
va
(
"Level header %d: selectheading"
,
num
));
sizeof
(
header
->
selectheading
),
va
(
"Level header %d: selectheading"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"SCRIPTNAME"
))
else
if
(
fastcmp
(
word
,
"SCRIPTNAME"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
scriptname
,
word2
,
deh_strlcpy
(
header
->
scriptname
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
scriptname
),
va
(
"Level header %d: scriptname"
,
num
));
sizeof
(
header
->
scriptname
),
va
(
"Level header %d: scriptname"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"RUNSOC"
))
else
if
(
fastcmp
(
word
,
"RUNSOC"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
runsoc
,
word2
,
deh_strlcpy
(
header
->
runsoc
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
runsoc
),
va
(
"Level header %d: runsoc"
,
num
));
sizeof
(
header
->
runsoc
),
va
(
"Level header %d: runsoc"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"ACT"
))
else
if
(
fastcmp
(
word
,
"ACT"
))
{
{
if
(
i
>=
0
&&
i
<=
99
)
// 0 for no act number
if
(
i
>=
0
&&
i
<=
99
)
// 0 for no act number
map
header
info
[
num
-
1
]
->
actnum
=
(
UINT8
)
i
;
header
->
actnum
=
(
UINT8
)
i
;
else
else
deh_warning
(
"Level header %d: invalid act number %d"
,
num
,
i
);
deh_warning
(
"Level header %d: invalid act number %d"
,
num
,
i
);
}
}
...
@@ -1584,7 +1586,7 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1584,7 +1586,7 @@ void readlevelheader(MYFILE *f, INT32 num)
if
(
word2
[
0
]
>=
'A'
&&
word2
[
0
]
<=
'Z'
&&
word2
[
2
]
==
'\0'
)
if
(
word2
[
0
]
>=
'A'
&&
word2
[
0
]
<=
'Z'
&&
word2
[
2
]
==
'\0'
)
i
=
M_MapNumber
(
word2
[
0
],
word2
[
1
]);
i
=
M_MapNumber
(
word2
[
0
],
word2
[
1
]);
map
header
info
[
num
-
1
]
->
nextlevel
=
(
INT16
)
i
;
header
->
nextlevel
=
(
INT16
)
i
;
}
}
else
if
(
fastcmp
(
word
,
"MARATHONNEXT"
))
else
if
(
fastcmp
(
word
,
"MARATHONNEXT"
))
{
{
...
@@ -1600,12 +1602,12 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1600,12 +1602,12 @@ void readlevelheader(MYFILE *f, INT32 num)
if
(
word2
[
0
]
>=
'A'
&&
word2
[
0
]
<=
'Z'
&&
word2
[
2
]
==
'\0'
)
if
(
word2
[
0
]
>=
'A'
&&
word2
[
0
]
<=
'Z'
&&
word2
[
2
]
==
'\0'
)
i
=
M_MapNumber
(
word2
[
0
],
word2
[
1
]);
i
=
M_MapNumber
(
word2
[
0
],
word2
[
1
]);
map
header
info
[
num
-
1
]
->
marathonnext
=
(
INT16
)
i
;
header
->
marathonnext
=
(
INT16
)
i
;
}
}
else
if
(
fastcmp
(
word
,
"TYPEOFLEVEL"
))
else
if
(
fastcmp
(
word
,
"TYPEOFLEVEL"
))
{
{
if
(
i
)
// it's just a number
if
(
i
)
// it's just a number
map
header
info
[
num
-
1
]
->
typeoflevel
=
(
UINT32
)
i
;
header
->
typeoflevel
=
(
UINT32
)
i
;
else
else
{
{
UINT32
tol
=
0
;
UINT32
tol
=
0
;
...
@@ -1618,45 +1620,45 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1618,45 +1620,45 @@ void readlevelheader(MYFILE *f, INT32 num)
deh_warning
(
"Level header %d: unknown typeoflevel flag %s
\n
"
,
num
,
tmp
);
deh_warning
(
"Level header %d: unknown typeoflevel flag %s
\n
"
,
num
,
tmp
);
tol
|=
TYPEOFLEVEL
[
i
].
flag
;
tol
|=
TYPEOFLEVEL
[
i
].
flag
;
}
while
((
tmp
=
strtok
(
NULL
,
","
))
!=
NULL
);
}
while
((
tmp
=
strtok
(
NULL
,
","
))
!=
NULL
);
map
header
info
[
num
-
1
]
->
typeoflevel
=
tol
;
header
->
typeoflevel
=
tol
;
}
}
}
}
else
if
(
fastcmp
(
word
,
"KEYWORDS"
))
else
if
(
fastcmp
(
word
,
"KEYWORDS"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
keywords
,
word2
,
deh_strlcpy
(
header
->
keywords
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
keywords
),
va
(
"Level header %d: keywords"
,
num
));
sizeof
(
header
->
keywords
),
va
(
"Level header %d: keywords"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"MUSIC"
))
else
if
(
fastcmp
(
word
,
"MUSIC"
))
{
{
if
(
fastcmp
(
word2
,
"NONE"
))
if
(
fastcmp
(
word2
,
"NONE"
))
map
header
info
[
num
-
1
]
->
musname
[
0
]
=
0
;
// becomes empty string
header
->
musname
[
0
]
=
0
;
// becomes empty string
else
else
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
musname
,
word2
,
deh_strlcpy
(
header
->
musname
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
musname
),
va
(
"Level header %d: music"
,
num
));
sizeof
(
header
->
musname
),
va
(
"Level header %d: music"
,
num
));
}
}
}
}
// TODO: 2.3: Delete
// TODO: 2.3: Delete
else
if
(
fastcmp
(
word
,
"MUSICSLOT"
))
else
if
(
fastcmp
(
word
,
"MUSICSLOT"
))
deh_warning
(
"Level header %d: MusicSlot parameter is deprecated and will be removed.
\n
Use
\"
Music
\"
instead."
,
num
);
deh_warning
(
"Level header %d: MusicSlot parameter is deprecated and will be removed.
\n
Use
\"
Music
\"
instead."
,
num
);
else
if
(
fastcmp
(
word
,
"MUSICTRACK"
))
else
if
(
fastcmp
(
word
,
"MUSICTRACK"
))
map
header
info
[
num
-
1
]
->
mustrack
=
((
UINT16
)
i
-
1
);
header
->
mustrack
=
((
UINT16
)
i
-
1
);
else
if
(
fastcmp
(
word
,
"MUSICPOS"
))
else
if
(
fastcmp
(
word
,
"MUSICPOS"
))
map
header
info
[
num
-
1
]
->
muspos
=
(
UINT32
)
get_number
(
word2
);
header
->
muspos
=
(
UINT32
)
get_number
(
word2
);
else
if
(
fastcmp
(
word
,
"MUSICINTERFADEOUT"
))
else
if
(
fastcmp
(
word
,
"MUSICINTERFADEOUT"
))
map
header
info
[
num
-
1
]
->
musinterfadeout
=
(
UINT32
)
get_number
(
word2
);
header
->
musinterfadeout
=
(
UINT32
)
get_number
(
word2
);
else
if
(
fastcmp
(
word
,
"MUSICINTER"
))
else
if
(
fastcmp
(
word
,
"MUSICINTER"
))
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
musintername
,
word2
,
deh_strlcpy
(
header
->
musintername
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
musintername
),
va
(
"Level header %d: intermission music"
,
num
));
sizeof
(
header
->
musintername
),
va
(
"Level header %d: intermission music"
,
num
));
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSS"
))
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSS"
))
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
muspostbossname
,
word2
,
deh_strlcpy
(
header
->
muspostbossname
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
muspostbossname
),
va
(
"Level header %d: post-boss music"
,
num
));
sizeof
(
header
->
muspostbossname
),
va
(
"Level header %d: post-boss music"
,
num
));
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSTRACK"
))
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSTRACK"
))
map
header
info
[
num
-
1
]
->
muspostbosstrack
=
((
UINT16
)
i
-
1
);
header
->
muspostbosstrack
=
((
UINT16
)
i
-
1
);
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSPOS"
))
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSPOS"
))
map
header
info
[
num
-
1
]
->
muspostbosspos
=
(
UINT32
)
get_number
(
word2
);
header
->
muspostbosspos
=
(
UINT32
)
get_number
(
word2
);
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSFADEIN"
))
else
if
(
fastcmp
(
word
,
"MUSICPOSTBOSSFADEIN"
))
map
header
info
[
num
-
1
]
->
muspostbossfadein
=
(
UINT32
)
get_number
(
word2
);
header
->
muspostbossfadein
=
(
UINT32
)
get_number
(
word2
);
else
if
(
fastcmp
(
word
,
"FORCERESETMUSIC"
))
else
if
(
fastcmp
(
word
,
"FORCERESETMUSIC"
))
{
{
// This is a weird one because "FALSE"/"NO" could either apply to "leave to default preference" (cv_resetmusic)
// This is a weird one because "FALSE"/"NO" could either apply to "leave to default preference" (cv_resetmusic)
...
@@ -1667,48 +1669,48 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1667,48 +1669,48 @@ void readlevelheader(MYFILE *f, INT32 num)
if
(
i
>=
-
1
&&
i
<=
1
)
// -1 to force off, 1 to force on, 0 to honor default.
if
(
i
>=
-
1
&&
i
<=
1
)
// -1 to force off, 1 to force on, 0 to honor default.
// This behavior can be disabled with cv_resetmusicbyheader
// This behavior can be disabled with cv_resetmusicbyheader
map
header
info
[
num
-
1
]
->
musforcereset
=
(
SINT8
)
i
;
header
->
musforcereset
=
(
SINT8
)
i
;
else
else
deh_warning
(
"Level header %d: invalid forceresetmusic option %d"
,
num
,
i
);
deh_warning
(
"Level header %d: invalid forceresetmusic option %d"
,
num
,
i
);
}
}
else
if
(
fastcmp
(
word
,
"FORCECHARACTER"
))
else
if
(
fastcmp
(
word
,
"FORCECHARACTER"
))
{
{
strlcpy
(
map
header
info
[
num
-
1
]
->
forcecharacter
,
word2
,
SKINNAMESIZE
+
1
);
strlcpy
(
header
->
forcecharacter
,
word2
,
SKINNAMESIZE
+
1
);
strlwr
(
map
header
info
[
num
-
1
]
->
forcecharacter
);
// skin names are lowercase
strlwr
(
header
->
forcecharacter
);
// skin names are lowercase
}
}
else
if
(
fastcmp
(
word
,
"WEATHER"
))
else
if
(
fastcmp
(
word
,
"WEATHER"
))
map
header
info
[
num
-
1
]
->
weather
=
(
UINT8
)
get_number
(
word2
);
header
->
weather
=
(
UINT8
)
get_number
(
word2
);
else
if
(
fastcmp
(
word
,
"SKYNUM"
))
else
if
(
fastcmp
(
word
,
"SKYNUM"
))
map
header
info
[
num
-
1
]
->
skynum
=
(
INT16
)
i
;
header
->
skynum
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"INTERSCREEN"
))
else
if
(
fastcmp
(
word
,
"INTERSCREEN"
))
strncpy
(
map
header
info
[
num
-
1
]
->
interscreen
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
interscreen
)
-
1
);
strncpy
(
header
->
interscreen
,
word2
,
sizeof
(
header
->
interscreen
)
-
1
);
else
if
(
fastcmp
(
word
,
"PRECUTSCENENUM"
))
else
if
(
fastcmp
(
word
,
"PRECUTSCENENUM"
))
map
header
info
[
num
-
1
]
->
precutscenenum
=
(
UINT8
)
i
;
header
->
precutscenenum
=
(
UINT8
)
i
;
else
if
(
fastcmp
(
word
,
"CUTSCENENUM"
))
else
if
(
fastcmp
(
word
,
"CUTSCENENUM"
))
map
header
info
[
num
-
1
]
->
cutscenenum
=
(
UINT8
)
i
;
header
->
cutscenenum
=
(
UINT8
)
i
;
else
if
(
fastcmp
(
word
,
"COUNTDOWN"
))
else
if
(
fastcmp
(
word
,
"COUNTDOWN"
))
map
header
info
[
num
-
1
]
->
countdown
=
(
INT16
)
i
;
header
->
countdown
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"PALETTE"
))
else
if
(
fastcmp
(
word
,
"PALETTE"
))
map
header
info
[
num
-
1
]
->
palette
=
(
UINT16
)
i
;
header
->
palette
=
(
UINT16
)
i
;
else
if
(
fastcmp
(
word
,
"NUMLAPS"
))
else
if
(
fastcmp
(
word
,
"NUMLAPS"
))
map
header
info
[
num
-
1
]
->
numlaps
=
(
UINT8
)
i
;
header
->
numlaps
=
(
UINT8
)
i
;
else
if
(
fastcmp
(
word
,
"UNLOCKABLE"
))
else
if
(
fastcmp
(
word
,
"UNLOCKABLE"
))
{
{
if
(
i
>=
0
&&
i
<=
MAXUNLOCKABLES
)
// 0 for no unlock required, anything else requires something
if
(
i
>=
0
&&
i
<=
MAXUNLOCKABLES
)
// 0 for no unlock required, anything else requires something
map
header
info
[
num
-
1
]
->
unlockrequired
=
(
SINT8
)
i
-
1
;
header
->
unlockrequired
=
(
SINT8
)
i
-
1
;
else
else
deh_warning
(
"Level header %d: invalid unlockable number %d"
,
num
,
i
);
deh_warning
(
"Level header %d: invalid unlockable number %d"
,
num
,
i
);
}
}
else
if
(
fastcmp
(
word
,
"LEVELSELECT"
))
else
if
(
fastcmp
(
word
,
"LEVELSELECT"
))
map
header
info
[
num
-
1
]
->
levelselect
=
(
UINT8
)
i
;
header
->
levelselect
=
(
UINT8
)
i
;
else
if
(
fastcmp
(
word
,
"SKYBOXSCALE"
))
else
if
(
fastcmp
(
word
,
"SKYBOXSCALE"
))
map
header
info
[
num
-
1
]
->
skybox_scalex
=
map
header
info
[
num
-
1
]
->
skybox_scaley
=
map
header
info
[
num
-
1
]
->
skybox_scalez
=
(
INT16
)
i
;
header
->
skybox_scalex
=
header
->
skybox_scaley
=
header
->
skybox_scalez
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEX"
))
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEX"
))
map
header
info
[
num
-
1
]
->
skybox_scalex
=
(
INT16
)
i
;
header
->
skybox_scalex
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEY"
))
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEY"
))
map
header
info
[
num
-
1
]
->
skybox_scaley
=
(
INT16
)
i
;
header
->
skybox_scaley
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEZ"
))
else
if
(
fastcmp
(
word
,
"SKYBOXSCALEZ"
))
map
header
info
[
num
-
1
]
->
skybox_scalez
=
(
INT16
)
i
;
header
->
skybox_scalez
=
(
INT16
)
i
;
else
if
(
fastcmp
(
word
,
"BONUSTYPE"
))
else
if
(
fastcmp
(
word
,
"BONUSTYPE"
))
{
{
...
@@ -1720,7 +1722,7 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1720,7 +1722,7 @@ void readlevelheader(MYFILE *f, INT32 num)
else
if
(
fastcmp
(
word2
,
"NIGHTSLINK"
))
i
=
4
;
else
if
(
fastcmp
(
word2
,
"NIGHTSLINK"
))
i
=
4
;
if
(
i
>=
-
1
&&
i
<=
4
)
// -1 for no bonus. Max is 4.
if
(
i
>=
-
1
&&
i
<=
4
)
// -1 for no bonus. Max is 4.
map
header
info
[
num
-
1
]
->
bonustype
=
(
SINT8
)
i
;
header
->
bonustype
=
(
SINT8
)
i
;
else
else
deh_warning
(
"Level header %d: invalid bonus type number %d"
,
num
,
i
);
deh_warning
(
"Level header %d: invalid bonus type number %d"
,
num
,
i
);
}
}
...
@@ -1728,104 +1730,104 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1728,104 +1730,104 @@ void readlevelheader(MYFILE *f, INT32 num)
// Title card
// Title card
else
if
(
fastcmp
(
word
,
"TITLECARDZIGZAG"
))
else
if
(
fastcmp
(
word
,
"TITLECARDZIGZAG"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
ltzzpatch
,
word2
,
deh_strlcpy
(
header
->
ltzzpatch
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
ltzzpatch
),
va
(
"Level header %d: title card zigzag patch name"
,
num
));
sizeof
(
header
->
ltzzpatch
),
va
(
"Level header %d: title card zigzag patch name"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"TITLECARDZIGZAGTEXT"
))
else
if
(
fastcmp
(
word
,
"TITLECARDZIGZAGTEXT"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
ltzztext
,
word2
,
deh_strlcpy
(
header
->
ltzztext
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
ltzztext
),
va
(
"Level header %d: title card zigzag text patch name"
,
num
));
sizeof
(
header
->
ltzztext
),
va
(
"Level header %d: title card zigzag text patch name"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"TITLECARDACTDIAMOND"
))
else
if
(
fastcmp
(
word
,
"TITLECARDACTDIAMOND"
))
{
{
deh_strlcpy
(
map
header
info
[
num
-
1
]
->
ltactdiamond
,
word2
,
deh_strlcpy
(
header
->
ltactdiamond
,
word2
,
sizeof
(
map
header
info
[
num
-
1
]
->
ltactdiamond
),
va
(
"Level header %d: title card act diamond patch name"
,
num
));
sizeof
(
header
->
ltactdiamond
),
va
(
"Level header %d: title card act diamond patch name"
,
num
));
}
}
else
if
(
fastcmp
(
word
,
"MAXBONUSLIVES"
))
else
if
(
fastcmp
(
word
,
"MAXBONUSLIVES"
))
map
header
info
[
num
-
1
]
->
maxbonuslives
=
(
SINT8
)
i
;
header
->
maxbonuslives
=
(
SINT8
)
i
;
else
if
(
fastcmp
(
word
,
"LEVELFLAGS"
))
else
if
(
fastcmp
(
word
,
"LEVELFLAGS"
))
map
header
info
[
num
-
1
]
->
levelflags
=
(
UINT16
)
i
;
header
->
levelflags
=
(
UINT16
)
i
;
else
if
(
fastcmp
(
word
,
"MENUFLAGS"
))
else
if
(
fastcmp
(
word
,
"MENUFLAGS"
))
map
header
info
[
num
-
1
]
->
menuflags
=
(
UINT8
)
i
;
header
->
menuflags
=
(
UINT8
)
i
;
// Individual triggers for level flags, for ease of use (and 2.0 compatibility)
// Individual triggers for level flags, for ease of use (and 2.0 compatibility)
else
if
(
fastcmp
(
word
,
"SCRIPTISFILE"
))
else
if
(
fastcmp
(
word
,
"SCRIPTISFILE"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_SCRIPTISFILE
;
header
->
levelflags
|=
LF_SCRIPTISFILE
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_SCRIPTISFILE
;
header
->
levelflags
&=
~
LF_SCRIPTISFILE
;
}
}
else
if
(
fastcmp
(
word
,
"SPEEDMUSIC"
))
else
if
(
fastcmp
(
word
,
"SPEEDMUSIC"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_SPEEDMUSIC
;
header
->
levelflags
|=
LF_SPEEDMUSIC
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_SPEEDMUSIC
;
header
->
levelflags
&=
~
LF_SPEEDMUSIC
;
}
}
else
if
(
fastcmp
(
word
,
"NOSSMUSIC"
))
else
if
(
fastcmp
(
word
,
"NOSSMUSIC"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_NOSSMUSIC
;
header
->
levelflags
|=
LF_NOSSMUSIC
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOSSMUSIC
;
header
->
levelflags
&=
~
LF_NOSSMUSIC
;
}
}
else
if
(
fastcmp
(
word
,
"NORELOAD"
))
else
if
(
fastcmp
(
word
,
"NORELOAD"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_NORELOAD
;
header
->
levelflags
|=
LF_NORELOAD
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NORELOAD
;
header
->
levelflags
&=
~
LF_NORELOAD
;
}
}
else
if
(
fastcmp
(
word
,
"NOZONE"
))
else
if
(
fastcmp
(
word
,
"NOZONE"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_NOZONE
;
header
->
levelflags
|=
LF_NOZONE
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOZONE
;
header
->
levelflags
&=
~
LF_NOZONE
;
}
}
else
if
(
fastcmp
(
word
,
"SAVEGAME"
))
else
if
(
fastcmp
(
word
,
"SAVEGAME"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_SAVEGAME
;
header
->
levelflags
|=
LF_SAVEGAME
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_SAVEGAME
;
header
->
levelflags
&=
~
LF_SAVEGAME
;
}
}
else
if
(
fastcmp
(
word
,
"MIXNIGHTSCOUNTDOWN"
))
else
if
(
fastcmp
(
word
,
"MIXNIGHTSCOUNTDOWN"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_MIXNIGHTSCOUNTDOWN
;
header
->
levelflags
|=
LF_MIXNIGHTSCOUNTDOWN
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_MIXNIGHTSCOUNTDOWN
;
header
->
levelflags
&=
~
LF_MIXNIGHTSCOUNTDOWN
;
}
}
else
if
(
fastcmp
(
word
,
"WARNINGTITLE"
))
else
if
(
fastcmp
(
word
,
"WARNINGTITLE"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_WARNINGTITLE
;
header
->
levelflags
|=
LF_WARNINGTITLE
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_WARNINGTITLE
;
header
->
levelflags
&=
~
LF_WARNINGTITLE
;
}
}
else
if
(
fastcmp
(
word
,
"NOTITLECARD"
))
else
if
(
fastcmp
(
word
,
"NOTITLECARD"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_NOTITLECARD
;
header
->
levelflags
|=
LF_NOTITLECARD
;
else
else
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOTITLECARD
;
header
->
levelflags
&=
~
LF_NOTITLECARD
;
}
}
else
if
(
fastcmp
(
word
,
"SHOWTITLECARDFOR"
))
else
if
(
fastcmp
(
word
,
"SHOWTITLECARDFOR"
))
{
{
map
header
info
[
num
-
1
]
->
levelflags
|=
LF_NOTITLECARD
;
header
->
levelflags
|=
LF_NOTITLECARD
;
tmp
=
strtok
(
word2
,
","
);
tmp
=
strtok
(
word2
,
","
);
do
{
do
{
if
(
fastcmp
(
tmp
,
"FIRST"
))
if
(
fastcmp
(
tmp
,
"FIRST"
))
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOTITLECARDFIRST
;
header
->
levelflags
&=
~
LF_NOTITLECARDFIRST
;
else
if
(
fastcmp
(
tmp
,
"RESPAWN"
))
else
if
(
fastcmp
(
tmp
,
"RESPAWN"
))
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOTITLECARDRESPAWN
;
header
->
levelflags
&=
~
LF_NOTITLECARDRESPAWN
;
else
if
(
fastcmp
(
tmp
,
"RECORDATTACK"
))
else
if
(
fastcmp
(
tmp
,
"RECORDATTACK"
))
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOTITLECARDRECORDATTACK
;
header
->
levelflags
&=
~
LF_NOTITLECARDRECORDATTACK
;
else
if
(
fastcmp
(
tmp
,
"ALL"
))
else
if
(
fastcmp
(
tmp
,
"ALL"
))
map
header
info
[
num
-
1
]
->
levelflags
&=
~
LF_NOTITLECARD
;
header
->
levelflags
&=
~
LF_NOTITLECARD
;
else
if
(
!
fastcmp
(
tmp
,
"NONE"
))
else
if
(
!
fastcmp
(
tmp
,
"NONE"
))
deh_warning
(
"Level header %d: unknown titlecard show option %s
\n
"
,
num
,
tmp
);
deh_warning
(
"Level header %d: unknown titlecard show option %s
\n
"
,
num
,
tmp
);
...
@@ -1836,53 +1838,53 @@ void readlevelheader(MYFILE *f, INT32 num)
...
@@ -1836,53 +1838,53 @@ void readlevelheader(MYFILE *f, INT32 num)
else
if
(
fastcmp
(
word
,
"HIDDEN"
))
else
if
(
fastcmp
(
word
,
"HIDDEN"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_HIDEINMENU
;
header
->
menuflags
|=
LF2_HIDEINMENU
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
~
LF2_HIDEINMENU
;
header
->
menuflags
&=
~
LF2_HIDEINMENU
;
}
}
else
if
(
fastcmp
(
word
,
"HIDEINSTATS"
))
else
if
(
fastcmp
(
word
,
"HIDEINSTATS"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_HIDEINSTATS
;
header
->
menuflags
|=
LF2_HIDEINSTATS
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
~
LF2_HIDEINSTATS
;
header
->
menuflags
&=
~
LF2_HIDEINSTATS
;
}
}
else
if
(
fastcmp
(
word
,
"RECORDATTACK"
)
||
fastcmp
(
word
,
"TIMEATTACK"
))
else
if
(
fastcmp
(
word
,
"RECORDATTACK"
)
||
fastcmp
(
word
,
"TIMEATTACK"
))
{
// TIMEATTACK is an accepted alias
{
// TIMEATTACK is an accepted alias
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_RECORDATTACK
;
header
->
menuflags
|=
LF2_RECORDATTACK
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
~
LF2_RECORDATTACK
;
header
->
menuflags
&=
~
LF2_RECORDATTACK
;
}
}
else
if
(
fastcmp
(
word
,
"NIGHTSATTACK"
))
else
if
(
fastcmp
(
word
,
"NIGHTSATTACK"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_NIGHTSATTACK
;
header
->
menuflags
|=
LF2_NIGHTSATTACK
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
LF2_NIGHTSATTACK
;
header
->
menuflags
&=
LF2_NIGHTSATTACK
;
}
}
else
if
(
fastcmp
(
word
,
"NOVISITNEEDED"
))
else
if
(
fastcmp
(
word
,
"NOVISITNEEDED"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_NOVISITNEEDED
;
header
->
menuflags
|=
LF2_NOVISITNEEDED
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
~
LF2_NOVISITNEEDED
;
header
->
menuflags
&=
~
LF2_NOVISITNEEDED
;
}
}
else
if
(
fastcmp
(
word
,
"WIDEICON"
))
else
if
(
fastcmp
(
word
,
"WIDEICON"
))
{
{
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
if
(
i
||
word2
[
0
]
==
'T'
||
word2
[
0
]
==
'Y'
)
map
header
info
[
num
-
1
]
->
menuflags
|=
LF2_WIDEICON
;
header
->
menuflags
|=
LF2_WIDEICON
;
else
else
map
header
info
[
num
-
1
]
->
menuflags
&=
~
LF2_WIDEICON
;
header
->
menuflags
&=
~
LF2_WIDEICON
;
}
}
else
if
(
fastcmp
(
word
,
"STARTRINGS"
))
else
if
(
fastcmp
(
word
,
"STARTRINGS"
))
map
header
info
[
num
-
1
]
->
startrings
=
(
UINT16
)
i
;
header
->
startrings
=
(
UINT16
)
i
;
else
if
(
fastcmp
(
word
,
"SPECIALSTAGETIME"
))
else
if
(
fastcmp
(
word
,
"SPECIALSTAGETIME"
))
map
header
info
[
num
-
1
]
->
sstimer
=
i
;
header
->
sstimer
=
i
;
else
if
(
fastcmp
(
word
,
"SPECIALSTAGESPHERES"
))
else
if
(
fastcmp
(
word
,
"SPECIALSTAGESPHERES"
))
map
header
info
[
num
-
1
]
->
ssspheres
=
i
;
header
->
ssspheres
=
i
;
else
if
(
fastcmp
(
word
,
"GRAVITY"
))
else
if
(
fastcmp
(
word
,
"GRAVITY"
))
map
header
info
[
num
-
1
]
->
gravity
=
FLOAT_TO_FIXED
(
atof
(
word2
));
header
->
gravity
=
FLOAT_TO_FIXED
(
atof
(
word2
));
else
else
deh_warning
(
"Level header %d: unknown word '%s'"
,
num
,
word
);
deh_warning
(
"Level header %d: unknown word '%s'"
,
num
,
word
);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment