pink_doom.doom package

Submodules

pink_doom.doom.data module

Map level types.

The following data structures define the persistent format used in the lumps of the WAD files.

class pink_doom.doom.data.LinedefAttribute(value)[source]

Bases: enum.Enum

LineDef attributes.

BLOCKING = 1

Solid, is an obstacle.

BLOCK_MONSTERS = 2

Blocks monsters only.

DONT_DRAW = 128

Don’t draw on the automap at all.

DONT_PEG_BOTTOM = 16

lower texture unpegged

DONT_PEG_TOP = 8

upper texture unpegged

MAPPED = 256

Set if already seen, thus drawn in automap.

SECRET = 32

In AutoMap: don’t map as two sided: IT’S A SECRET!

SOUND_BLOCK = 64

Sound rendering: don’t let sound cross two of these.

TWO_SIDED = 4

Backside will not be present at all if not two sided.

class pink_doom.doom.data.MapLinedef(v1: int, v2: int, flags: int, special: int, tag: int, sidenum: tuple[int, int])[source]

Bases: object

A LineDef.

As used for editing, and as input to the BSP builder.

flags: int
sidenum: tuple[int, int]

sidenum[1] will be -1 if one sided

special: int
tag: int
v1: int
v2: int
class pink_doom.doom.data.MapLump(value)[source]

Bases: enum.Enum

Lump order in a map WAD.

Each map needs a couple of lumps to provide a complete scene geometry description.

BLOCKMAP = 11

LUT, motion clipping, walls/grid element

LABEL = 1

A separator, name, ExMx or MAPxx

LINEDEFS = 3

LineDefs, from editing

NODES = 8

BSP nodes

REJECT = 10

LUT, sector-sector visibility

SECTORS = 9

Sectors, from editing

SEGS = 6

LineSegs, from LineDefs split by BSP

SIDEDEFS = 4

SideDefs, from editing

SSECTORS = 7

SubSectors, list of LineSegs

THINGS = 2

Monsters, items..

VERTEXES = 5

Vertices, edited and BSP splits generated

class pink_doom.doom.data.MapNode(x: int, y: int, dx: int, dy: int, bbox: tuple[tuple[int, int], tuple[int, int], tuple[int, int], tuple[int, int]], children: tuple[int, int])[source]

Bases: object

Partition line from (x,y) to (x+dx, y+dy).

bbox: tuple[tuple[int, int], tuple[int, int], tuple[int, int], tuple[int, int]]

Bounding box for each child, clip against view frustum.

children: tuple[int, int]

If NodeFlag.SUBSECTOR it’s a subsector, else it’s a node of another subtree.

dx: int
dy: int
x: int
y: int
class pink_doom.doom.data.MapSector(floor_height: int, ceiling_height: int, floor_pic: str, ceiling_pic: str, light_level: int, special: int, tag: int)[source]

Bases: object

Sector definition, from editing.

ceiling_height: int
ceiling_pic: str
floor_height: int
floor_pic: str
light_level: int
special: int
tag: int
class pink_doom.doom.data.MapSeg(v1: int, v2: int, angle: int, linedef: int, side: int, offset: int)[source]

Bases: object

LineSeg.

Generated by splitting LineDefs using partition lines selected by BSP builder.

angle: int
linedef: int
offset: int
side: int
v1: int
v2: int
class pink_doom.doom.data.MapSidedef(texture_offset: int, row_offset: int, top_texture: str, bottom_texture: str, mid_texture: str, sector: int)[source]

Bases: object

A SideDef.

Defines the visual appearance of a wall, by setting textures and offsets.

bottom_texture: str
mid_texture: str
row_offset: int
sector: int

Front sector, towards viewer.

texture_offset: int
top_texture: str
class pink_doom.doom.data.MapSubsector(num_segs: int, first_seg: int)[source]

Bases: object

SubSector, as generated by BSP.

first_seg: int

Index of first one, segs are stored sequentially.

num_segs: int
class pink_doom.doom.data.MapThing(x: int, y: int, angle: int, kind: int, options: int)[source]

Bases: object

Thing definition, position, orientation and type.

Plus skill/visibility flags and attributes.

angle: int
kind: int
options: int
x: int
y: int
class pink_doom.doom.data.MapVertex(x: int, y: int)[source]

Bases: object

A single Vertex.

x: int
y: int
class pink_doom.doom.data.NodeFlag(value)[source]

Bases: enum.Enum

Flags related to BSP nodes.

SUBSECTOR = 32768

Indicate a leaf.

Module contents

Doom module.

Corresponds to doom*.c.