textgen: Set level names from DEHACKED lump.

Use the DEHACKED lump as a source of truth for level names, and set
the textgen configuration accordingly. Make the current level names
in the DEHACKED lump upper case so that the current ExMy/MAPxy names
look correct.
This commit is contained in:
Simon Howard 2013-12-14 16:34:01 -05:00
parent 2ed9548ca3
commit 1891b5e40b
2 changed files with 185 additions and 166 deletions

View file

@ -76,40 +76,9 @@ white_graphics = {
'wicolon': ':', 'wicolon': ':',
'wiminus': '-', 'wiminus': '-',
# TODO: Generate WILV graphics based on level names from DEHACKED lump. # Note: level names are also included in this dictionary, with
# the data added programatically from the DEHACKED lump, see
'cwilv00': 'MAP01', 'cwilv01': 'MAP02', 'cwilv02': 'MAP03', # code below.
'cwilv03': 'MAP04', 'cwilv04': 'MAP05', 'cwilv05': 'MAP06',
'cwilv06': 'MAP07', 'cwilv07': 'MAP08', 'cwilv08': 'MAP09',
'cwilv09': 'MAP10',
'cwilv10': 'MAP11', 'cwilv11': 'MAP12', 'cwilv12': 'MAP13',
'cwilv13': 'MAP14', 'cwilv14': 'MAP15', 'cwilv15': 'MAP16',
'cwilv16': 'MAP17', 'cwilv17': 'MAP18', 'cwilv18': 'MAP19',
'cwilv19': 'MAP20',
'cwilv20': 'MAP21', 'cwilv21': 'MAP22', 'cwilv22': 'MAP23',
'cwilv23': 'MAP24', 'cwilv24': 'MAP25', 'cwilv25': 'MAP26',
'cwilv26': 'MAP27', 'cwilv27': 'MAP28', 'cwilv28': 'MAP29',
'cwilv29': 'MAP30',
'cwilv30': 'MAP31', 'cwilv31': 'MAP32',
'wilv00': 'E1M1', 'wilv01': 'E1M2', 'wilv02': 'E1M3', 'wilv03': 'E1M4',
'wilv04': 'E1M5', 'wilv05': 'E1M6', 'wilv06': 'E1M7', 'wilv07': 'E1M8',
'wilv08': 'E1M9',
'wilv10': 'E2M1', 'wilv11': 'E2M2', 'wilv12': 'E2M3', 'wilv13': 'E2M4',
'wilv14': 'E2M5', 'wilv15': 'E2M6', 'wilv16': 'E2M7', 'wilv17': 'E2M8',
'wilv18': 'E2M9',
'wilv20': 'E3M1', 'wilv21': 'E3M2', 'wilv22': 'E3M3', 'wilv23': 'E3M4',
'wilv24': 'E3M5', 'wilv25': 'E3M6', 'wilv26': 'E3M7', 'wilv27': 'E3M8',
'wilv28': 'E3M9',
'wilv30': 'E4M1', 'wilv31': 'E4M2', 'wilv32': 'E4M3', 'wilv33': 'E4M4',
'wilv34': 'E4M5', 'wilv35': 'E4M6', 'wilv36': 'E4M7', 'wilv37': 'E4M8',
'wilv38': 'E4M9',
} }
blue_graphics = { blue_graphics = {
@ -223,3 +192,53 @@ red_graphics = {
'm_wadopt': 'wad options', 'm_wadopt': 'wad options',
} }
def read_bex_lump(filename):
"""Read the BEX (Dehacked) lump from the given filename.
Returns:
Dictionary mapping from name to value.
"""
result = {}
with open(filename) as f:
for line in f:
# Ignore comments:
line = line.strip()
if len(line) == 0 or line[0] in '#;':
continue
# Just split on '=' and interpret that as an
# assignment. This is primitive and doesn't read
# like a full BEX parser should, but it's good
# enough for our purposes here.
assign = line.split('=', 2)
if len(assign) != 2:
continue
result[assign[0].strip()] = assign[1].strip()
return result
def update_from_bex(config, bexdata):
"""Update the given config dictionary with data from a BEX lump.
Args:
config: Dictionary of lumps, mapping from lump name to
text string to contain in it.
bexdata: Dictionary of data read from BEX lump.
"""
def update_lump(lumpname, bexname):
if bexname not in bexdata:
raise Exception('Level name %s not defined in '
'DEHACKED lump!' % bexname)
config[lumpname] = bexdata[bexname]
for e in range(4):
for m in range(9):
# HUSTR_E1M1 from BEX => wilv00
update_lump('wilv%i%i' % (e, m),
'HUSTR_E%iM%i' % (e + 1, m + 1))
for m in range(32):
# HUSTR_1 => cwilv00
update_lump('cwilv%02i' % m,
'HUSTR_%i' % (m + 1))
update_from_bex(white_graphics, read_bex_lump('../../lumps/dehacked.lmp'))

View file

@ -51,42 +51,42 @@ PD_YELLOWS = this door requires the yellow skeleton key.
PD_ANY = this door requires any key. PD_ANY = this door requires any key.
PD_ALL3 = this door requires all three keys. PD_ALL3 = this door requires all three keys.
PD_ALL6 = this door requires all six keys and passcards! PD_ALL6 = this door requires all six keys and passcards!
HUSTR_E1M1 = e1m1 HUSTR_E1M1 = E1M1
HUSTR_E1M2 = e1m2 HUSTR_E1M2 = E1M2
HUSTR_E1M3 = e1m3 HUSTR_E1M3 = E1M3
HUSTR_E1M4 = e1m4 HUSTR_E1M4 = E1M4
HUSTR_E1M5 = e1m5 HUSTR_E1M5 = E1M5
HUSTR_E1M6 = e1m6 HUSTR_E1M6 = E1M6
HUSTR_E1M7 = e1m7 HUSTR_E1M7 = E1M7
HUSTR_E1M8 = e1m8 HUSTR_E1M8 = E1M8
HUSTR_E1M9 = e1m9 HUSTR_E1M9 = E1M9
HUSTR_E2M1 = e2m1 HUSTR_E2M1 = E2M1
HUSTR_E2M2 = e2m2 HUSTR_E2M2 = E2M2
HUSTR_E2M3 = e2m3 HUSTR_E2M3 = E2M3
HUSTR_E2M4 = e2m4 HUSTR_E2M4 = E2M4
HUSTR_E2M5 = e2m5 HUSTR_E2M5 = E2M5
HUSTR_E2M6 = e2m6 HUSTR_E2M6 = E2M6
HUSTR_E2M7 = e2m7 HUSTR_E2M7 = E2M7
HUSTR_E2M8 = e2m8 HUSTR_E2M8 = E2M8
HUSTR_E2M9 = e2m9 HUSTR_E2M9 = E2M9
HUSTR_E3M1 = e3m1 HUSTR_E3M1 = E3M1
HUSTR_E3M2 = e3m2 HUSTR_E3M2 = E3M2
HUSTR_E3M3 = e3m3 HUSTR_E3M3 = E3M3
HUSTR_E3M4 = e3m4 HUSTR_E3M4 = E3M4
HUSTR_E3M5 = e3m5 HUSTR_E3M5 = E3M5
HUSTR_E3M6 = e3m6 HUSTR_E3M6 = E3M6
HUSTR_E3M7 = e3m7 HUSTR_E3M7 = E3M7
HUSTR_E3M8 = e3m8 HUSTR_E3M8 = E3M8
HUSTR_E3M9 = e3m9 HUSTR_E3M9 = E3M9
HUSTR_E4M1 = e4m1 HUSTR_E4M1 = E4M1
HUSTR_E4M2 = e4m2 HUSTR_E4M2 = E4M2
HUSTR_E4M3 = e4m3 HUSTR_E4M3 = E4M3
HUSTR_E4M4 = e4m4 HUSTR_E4M4 = E4M4
HUSTR_E4M5 = e4m5 HUSTR_E4M5 = E4M5
HUSTR_E4M6 = e4m6 HUSTR_E4M6 = E4M6
HUSTR_E4M7 = e4m7 HUSTR_E4M7 = E4M7
HUSTR_E4M8 = e4m8 HUSTR_E4M8 = E4M8
HUSTR_E4M9 = e4m9 HUSTR_E4M9 = E4M9
CC_ZOMBIE = zombie CC_ZOMBIE = zombie
CC_SHOTGUN = shotgun zombie CC_SHOTGUN = shotgun zombie
CC_HEAVY = mini-gun zombie CC_HEAVY = mini-gun zombie
@ -104,102 +104,102 @@ CC_ARCH = flamebringer
CC_SPIDER = large technospider CC_SPIDER = large technospider
CC_CYBER = mechabomination CC_CYBER = mechabomination
CC_HERO = savior of us all CC_HERO = savior of us all
HUSTR_1 = map01 HUSTR_1 = MAP01
HUSTR_2 = map02 HUSTR_2 = MAP02
HUSTR_3 = map03 HUSTR_3 = MAP03
HUSTR_4 = map04 HUSTR_4 = MAP04
HUSTR_5 = map05 HUSTR_5 = MAP05
HUSTR_6 = map06 HUSTR_6 = MAP06
HUSTR_7 = map07 HUSTR_7 = MAP07
HUSTR_8 = map08 HUSTR_8 = MAP08
HUSTR_9 = map09 HUSTR_9 = MAP09
HUSTR_10 = map10 HUSTR_10 = MAP10
HUSTR_11 = map11 HUSTR_11 = MAP11
HUSTR_12 = map12 HUSTR_12 = MAP12
HUSTR_13 = map13 HUSTR_13 = MAP13
HUSTR_14 = map14 HUSTR_14 = MAP14
HUSTR_15 = map15 HUSTR_15 = MAP15
HUSTR_16 = map16 HUSTR_16 = MAP16
HUSTR_17 = map17 HUSTR_17 = MAP17
HUSTR_18 = map18 HUSTR_18 = MAP18
HUSTR_19 = map19 HUSTR_19 = MAP19
HUSTR_20 = map20 HUSTR_20 = MAP20
HUSTR_21 = map21 HUSTR_21 = MAP21
HUSTR_22 = map22 HUSTR_22 = MAP22
HUSTR_23 = map23 HUSTR_23 = MAP23
HUSTR_24 = map24 HUSTR_24 = MAP24
HUSTR_25 = map25 HUSTR_25 = MAP25
HUSTR_26 = map26 HUSTR_26 = MAP26
HUSTR_27 = map27 HUSTR_27 = MAP27
HUSTR_28 = map28 HUSTR_28 = MAP28
HUSTR_29 = map29 HUSTR_29 = MAP29
HUSTR_30 = map30 HUSTR_30 = MAP30
HUSTR_31 = map31 HUSTR_31 = MAP31
HUSTR_32 = map32 HUSTR_32 = MAP32
PHUSTR_1 = map01 PHUSTR_1 = MAP01
PHUSTR_2 = map02 PHUSTR_2 = MAP02
PHUSTR_3 = map03 PHUSTR_3 = MAP03
PHUSTR_4 = map04 PHUSTR_4 = MAP04
PHUSTR_5 = map05 PHUSTR_5 = MAP05
PHUSTR_6 = map06 PHUSTR_6 = MAP06
PHUSTR_7 = map07 PHUSTR_7 = MAP07
PHUSTR_8 = map08 PHUSTR_8 = MAP08
PHUSTR_9 = map09 PHUSTR_9 = MAP09
PHUSTR_10 = map10 PHUSTR_10 = MAP10
PHUSTR_11 = map11 PHUSTR_11 = MAP11
PHUSTR_12 = map12 PHUSTR_12 = MAP12
PHUSTR_13 = map13 PHUSTR_13 = MAP13
PHUSTR_14 = map14 PHUSTR_14 = MAP14
PHUSTR_15 = map15 PHUSTR_15 = MAP15
PHUSTR_16 = map16 PHUSTR_16 = MAP16
PHUSTR_17 = map17 PHUSTR_17 = MAP17
PHUSTR_18 = map18 PHUSTR_18 = MAP18
PHUSTR_19 = map19 PHUSTR_19 = MAP19
PHUSTR_20 = map20 PHUSTR_20 = MAP20
PHUSTR_21 = map21 PHUSTR_21 = MAP21
PHUSTR_22 = map22 PHUSTR_22 = MAP22
PHUSTR_23 = map23 PHUSTR_23 = MAP23
PHUSTR_24 = map24 PHUSTR_24 = MAP24
PHUSTR_25 = map25 PHUSTR_25 = MAP25
PHUSTR_26 = map26 PHUSTR_26 = MAP26
PHUSTR_27 = map27 PHUSTR_27 = MAP27
PHUSTR_28 = map28 PHUSTR_28 = MAP28
PHUSTR_29 = map29 PHUSTR_29 = MAP29
PHUSTR_30 = map30 PHUSTR_30 = MAP30
PHUSTR_31 = map31 PHUSTR_31 = MAP31
PHUSTR_32 = map32 PHUSTR_32 = MAP32
THUSTR_1 = map01 THUSTR_1 = MAP01
THUSTR_2 = map02 THUSTR_2 = MAP02
THUSTR_3 = map03 THUSTR_3 = MAP03
THUSTR_4 = map04 THUSTR_4 = MAP04
THUSTR_5 = map05 THUSTR_5 = MAP05
THUSTR_6 = map06 THUSTR_6 = MAP06
THUSTR_7 = map07 THUSTR_7 = MAP07
THUSTR_8 = map08 THUSTR_8 = MAP08
THUSTR_9 = map09 THUSTR_9 = MAP09
THUSTR_10 = map10 THUSTR_10 = MAP10
THUSTR_11 = map11 THUSTR_11 = MAP11
THUSTR_12 = map12 THUSTR_12 = MAP12
THUSTR_13 = map13 THUSTR_13 = MAP13
THUSTR_14 = map14 THUSTR_14 = MAP14
THUSTR_15 = map15 THUSTR_15 = MAP15
THUSTR_16 = map16 THUSTR_16 = MAP16
THUSTR_17 = map17 THUSTR_17 = MAP17
THUSTR_18 = map18 THUSTR_18 = MAP18
THUSTR_19 = map19 THUSTR_19 = MAP19
THUSTR_20 = map20 THUSTR_20 = MAP20
THUSTR_21 = map21 THUSTR_21 = MAP21
THUSTR_22 = map22 THUSTR_22 = MAP22
THUSTR_23 = map23 THUSTR_23 = MAP23
THUSTR_24 = map24 THUSTR_24 = MAP24
THUSTR_25 = map25 THUSTR_25 = MAP25
THUSTR_26 = map26 THUSTR_26 = MAP26
THUSTR_27 = map27 THUSTR_27 = MAP27
THUSTR_28 = map28 THUSTR_28 = MAP28
THUSTR_29 = map29 THUSTR_29 = MAP29
THUSTR_30 = map30 THUSTR_30 = MAP30
THUSTR_31 = map31 THUSTR_31 = MAP31
THUSTR_32 = map32 THUSTR_32 = MAP32
HUSTR_PLRGREEN = g: HUSTR_PLRGREEN = g:
HUSTR_PLRINDIGO = i: HUSTR_PLRINDIGO = i:
HUSTR_PLRBROWN = b: HUSTR_PLRBROWN = b: