def createsect(pts, xo, yo, zo): nsect = namestruct.struct(buildmap.sectorstruct) nsect.xo = xo nsect.yo = yo nsect.zo = zo nsect.wallptr = -1 nsect.wallnum = -1 nsect.ceilingz = -49152 nsect.floorz = 0 nsect.ceilingstat = nsect.floorstat = 0 nsect.ceilingheinum = nsect.floorheinum = 0 nsect.ceilingpal = nsect.floorpal = 0 nsect.floorshade = nsect.ceilingshade = -1 nsect.ceilingxpanning = nsect.ceilingypanning = 0 nsect.floorxpanning = nsect.floorypanning = 0 nsect.floorpicnum = 22 nsect.ceilingpicnum = 20 nsect.visibility = 0 nsect.filler = 0 nsect.lotag = nsect.extra = 0 nsect.hitag = 1 nsect.walls = [createwall(pt) for pt in pts] for w1,w2 in zip(nsect.walls[:-1],nsect.walls[1:]): w1.p2 = w2 nsect.walls[-1].p2 = nsect.walls[0] nsect.sprites = [] return nsect
def createwall(pt): nw = namestruct.struct(buildmap.wallstruct) nw.x, nw.y = pt nw.point2 = -1 nw.nextwall = -1 nw.nextsector = -1 nw.cstat = 0 nw.shade = -1 nw.pal = 0 nw.picnum = 23 nw.overpicnum = 0 nw.xrepeat = nw.yrepeat = 8 nw.xpanning = nw.ypanning = 0 nw.lotag = nw.hitag = nw.extra = 0 return nw
def createspr(x,y,z,pn,ht,lt): nspr = namestruct.struct(buildmap.spritestruct) nspr.x = x nspr.y = y nspr.z = z nspr.cstat = 0 nspr.picnum = pn nspr.shade = nspr.pal = nspr.clipdist = nspr.filler = 0 nspr.xrepeat = nspr.yrepeat = 32 nspr.xoffset = nspr.yoffset = 0 nspr.statnum = nspr.ang = nspr.owner = 0 nspr.xvel = nspr.yvel = nspr.zvel = 0 nspr.hitag = ht nspr.lotag = lt nspr.extra = 0 return nspr
map=buildmap.map(sys.argv[1]) img = Image.open(sys.argv[2]) itr=iter(img.getdata()) nspr = [] for s in map.sprites: if s.picnum != 1: nspr.append(s) map.sprites=nspr for y in xrange(img.size[1]): for x in xrange(img.size[0]): r,g,b = itr.next()[:3] if r == 255 and g == 255 and b == 255: nspr = namestruct.struct(buildmap.spritestruct) nspr.x = (x+12) * 640 - 131072 nspr.y = (y+12) * 640 - 131072 nspr.z = 0 nspr.cstat = 0 nspr.picnum = 1 nspr.shade = nspr.pal = nspr.clipdist = nspr.filler = 0 nspr.xrepeat = nspr.yrepeat = 8 nspr.xoffset = nspr.yoffset = 0 nspr.sectnum = nspr.statnum = nspr.ang = nspr.owner = 0 nspr.xvel = nspr.yvel = nspr.zvel = nspr.hitag = nspr.lotag = nspr.extra = 0 map.sprites.append(nspr) map.writeto(sys.argv[3])
#rail.append(list(rotpts(0, 0, n * mul, rpts))) sects = [ [circ1] #[ big, reversed(circ1) ], #[circ3], #inner #rail, #rail #[circ1, reversed(circ2)] #outer ] cw = 0 cs = 0 for s in sects: sec = namestruct.struct(buildmap.sectorstruct); sec.wallptr = cw sec.ceilingz = 114688 sec.floorz = 155648 sec.ceilingstat = 0 sec.floorstat = 0 sec.ceilingpicnum = 20 sec.floorpicnum = 28 sec.ceilingshade = -1 sec.floorshade = -1 sec.ceilingpal = 0 sec.ceilingxpanning = 0 sec.ceilingypanning = 0 sec.floorxpanning = 0 sec.floorypanning = 0