diff --git a/tools/cleanroom/TODO b/tools/cleanroom/TODO deleted file mode 100644 index ed1e11cd..00000000 --- a/tools/cleanroom/TODO +++ /dev/null @@ -1,13 +0,0 @@ -TODO - -for freedoom purpose: - patch re-ordering - mark patch as done - hide "done" patches - load in WIP file - update progress bar -perhaps nice: - drag arrange patches - patch gallery -for general use: - doom WAD IO diff --git a/tools/cleanroom/cleanroom.glade b/tools/cleanroom/cleanroom.glade deleted file mode 100644 index ffc5bc5b..00000000 --- a/tools/cleanroom/cleanroom.glade +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - _File - True - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-new - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-open - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-save - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-save-as - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-quit - True - True - - - - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - _Edit - True - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-cut - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-copy - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-paste - True - True - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-delete - True - True - - - - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - _Help - True - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-about - True - True - - - - - - - - - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - False - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-missing-image - - - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-missing-image - - - 2 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-missing-image - - - 1 - - - - - 3 - - - - - 2 - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - False - 3 - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - - 4 - - - - - - diff --git a/tools/cleanroom/cleanroom.py b/tools/cleanroom/cleanroom.py deleted file mode 100644 index 57810f83..00000000 --- a/tools/cleanroom/cleanroom.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/python - -# cleanroom.py: a clean-room IWAD texture1 lump constructor -from doom import Patch, Texture - -class Model: - """The Model represents the original texture list, - the WIP texture list, and various bits of state. - """ - def parse_texture_file(self,fname): - texture1 = file(fname, "r").read() - textures = {} - current = None - for line in texture1.split("\n"): - if len(line) == 0 or line[0] == ";" or line[0] == "#": - continue - elif line[0] == "*" and current: - junk,name,y,x= line.split() - current.patches.append(Patch(name,int(x),int(y))) - else: - line = line.split() - current = Texture(line[0],line[1],line[2]) - textures[line[0]] = current - return textures - - def new_wip_textures(self): - for texture in self.orig_textures.values(): - self.wip_textures[texture.name] = \ - Texture(texture.name, texture.width, texture.height) - - def __init__(self): - self.orig_textures = \ - self.parse_texture_file("../../textures/combined.txt") - self.wip_textures = {} - -model = Model() -print "\n\n\torig\n\n" -print "".join(map(str, model.orig_textures.values())) - -print "\n\n\tnew\n\n" -model.new_wip_textures() -print "".join(map(str, model.wip_textures.values())) diff --git a/tools/cleanroom/create_new.py b/tools/cleanroom/create_new.py deleted file mode 100644 index 5360d6c8..00000000 --- a/tools/cleanroom/create_new.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/python -from doom import Patch, Texture - -import sys,re - -if len(sys.argv) != 2: - sys.stderr.write("usage: sw1_sw2.py \n") - sys.exit() - -infile = sys.argv[1] - -# TODO: a generalized form of this para should probably be moved into the -# Texture class -texture1 = file(infile, "r").read() -textures = {} -current = None -for line in texture1.split("\n"): - if len(line) == 0 or line[0] == ";" or line[0] == "#": - continue - elif line[0] == "*" and current: - junk,name,y,x= line.split() - current.patches.append(Patch(name,int(x),int(y))) - else: - line = line.split() - current = Texture(line[0],line[1],line[2]) - textures[line[0]] = current - -oldtex = file("../../textures/combined.txt", "r").read() -patches = [] -texline = '' -for line in oldtex.split("\n"): - # start of a patch line - if len(line) > 0 and line[0] == "*": - patches.append(line) - else: - # end of a texture definition and we had just one patch - if 1 == len(patches): - print patches[0] - patches = [] - texline = '' - # end of a texture definition,look up the patches - elif texline != '': - bits = texline.split() - if bits[0] in textures: - texture = textures[bits[0]] - print '\n'.join(map(str,texture.patches)) - texline = '' - else: - sys.stderr.write("uh oh, no idea of patches for %s"%bits[0]) - - # start of a texture definition - if re.match(r'^[A-Z]', line): - texline = line - print line diff --git a/tools/cleanroom/doom.py b/tools/cleanroom/doom.py deleted file mode 100644 index 0e037d3d..00000000 --- a/tools/cleanroom/doom.py +++ /dev/null @@ -1,26 +0,0 @@ -"""A module for manipulating Doom data structures.""" - -class Patch: - def __init__(self, n,x,y): - self.name = n - self.yoff = x - self.xoff =y - - def __str__(self): - return "*\t%8s\t\t%d\t%d" % (self.name,self.xoff,self.yoff) - -class Texture: - def __init__(self,name,width,height): - self.name = name - self.width = width - self.height = height - self.patches = [] - self.pixbuf = None - - def __str__(self): - me = "%8s\t\t%d\t%d\n" % (self.name,int(self.width),int(self.height)) - kids = "\n".join(map(str, self.patches)) - if kids: - kids += "\n" - return (me + kids) - diff --git a/tools/cleanroom/images.py b/tools/cleanroom/images.py deleted file mode 100644 index ef141e18..00000000 --- a/tools/cleanroom/images.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python - -# example images.py - -import pygtk -pygtk.require('2.0') -import gtk - -class ImagesExample: - # when invoked (via signal delete_event), terminates the application. - def close_application(self, widget, event, data=None): - gtk.main_quit() - return False - - def __init__(self): - # create the main window, and attach delete_event signal to terminating - # the application - window = gtk.Window(gtk.WINDOW_TOPLEVEL) - window.connect("delete_event", self.close_application) - window.set_border_width(10) - window.show() - - # a horizontal box to hold the buttons - hbox = gtk.HBox() - hbox.show() - window.add(hbox) - - # create several images with data from files and load images into - # buttons - baseimage = gtk.Image() - baseimage.set_from_file("../../patches/wall40_1.gif") - pixbuf = baseimage.get_pixbuf() - if pixbuf: - scale = 1 - baseimage.set_from_pixbuf(pixbuf.scale_simple( - pixbuf.get_width() * scale, - pixbuf.get_height() * scale, - gtk.gdk.INTERP_NEAREST - )) - baseimage.show() - - basepatch = gtk.Image() - basepatch.set_from_file("../../patches/ps20a0.gif") - pb = basepatch.get_pixbuf() - basepatch.set_from_pixbuf(pb.scale_simple( - pb.get_width() * scale, - pb.get_height() * scale, - gtk.gdk.INTERP_NEAREST - )) - pb = basepatch.get_pixbuf() - pb = pb.add_alpha(True,chr(0),chr(255),chr(255)) - - for x,y in [(0,0), (24,24), (104,16), (24,104), (-16,0), (0,-16)]: - x *= scale - y *= scale - image = gtk.Image() - image.set_from_pixbuf(baseimage.get_pixbuf().copy()) - image.show() - - dest_x = max(0, x) - dest_y = max(0, y) - dest_height = min(pb.get_height(), image.get_pixbuf().get_height() - dest_y) - dest_width = min(pb.get_width(), image.get_pixbuf().get_width() - dest_x) - if x < 0: - dest_width += x - if y < 0: - dest_height += y - offset_x = x - offset_y = y - - pb.composite( - image.get_pixbuf(), - dest_x, dest_y, dest_width, dest_height, - offset_x, offset_y, 1, 1, # scale - gtk.gdk.INTERP_NEAREST, 255 - ) - - # a button to contain the image widget - button = gtk.Button() - button.add(image) - button.show() - hbox.pack_start(button) - -def main(): - gtk.main() - return 0 - -if __name__ == "__main__": - ImagesExample() - main() diff --git a/tools/cleanroom/jons_attempt.txt b/tools/cleanroom/jons_attempt.txt deleted file mode 100644 index acebf51b..00000000 --- a/tools/cleanroom/jons_attempt.txt +++ /dev/null @@ -1,1429 +0,0 @@ -AASHITTY 64 64 -AASTINKY 32 72 -* WALL00_3 0 0 -* WALL00_3 12 0 -* WALL00_3 24 0 - ASHWALL 64 128 -ASHWALL2 64 128 -ASHWALL3 64 128 -ASHWALL4 64 128 -ASHWALL6 64 128 -ASHWALL7 64 128 - BFALL 64 128 - BFALL1 64 128 - BFALL2 64 128 - BFALL3 64 128 - BFALL4 64 128 -BIGBRIK1 64 128 -BIGBRIK2 64 128 -BIGBRIK3 64 128 -BIGDOOR1 128 96 -* W13_1 0 0 -* W13_1 0 24 -* W13_1 64 0 -* W13_1 64 24 -* DOOR2_1 16 0 -BIGDOOR2 128 128 -BIGDOOR3 128 128 -BIGDOOR4 128 128 -BIGDOOR5 128 128 -* WALL40_1 0 0 -* WALL42_3 0 0 -* WALL42_3 51 0 -* WALL42_3 104 0 -BIGDOOR6 128 112 -* DOOR11_1 -48 0 -* DOOR11_1 32 0 -* DOOR11_1 5 0 -BIGDOOR7 128 128 -* W105_1 123 0 -* W105_1 -5 0 -BLAKWAL1 64 128 -BLAKWAL2 64 128 - BLODGR1 32 128 - BLODGR2 32 128 - BLODGR3 32 128 - BLODGR4 32 128 -BLODRIP1 32 128 -BLODRIP2 32 128 -BLODRIP3 32 128 -BLODRIP4 32 128 - BRICK1 64 128 - BRICK10 64 128 - BRICK11 64 128 - BRICK12 64 128 - BRICK2 64 128 - BRICK3 64 128 - BRICK4 64 128 - BRICK5 128 128 -* RW5_3 0 0 -* RW5_4 64 0 - BRICK6 64 128 - BRICK7 64 128 - BRICK8 64 128 - BRICK9 64 128 -BRICKLIT 64 128 - BRNBIGC 128 128 - BRNBIGL 32 128 - BRNBIGR 32 128 - BRNPOIS 128 128 -* WALL62_2 0 0 -* WALL62_2 64 0 -* PS20A0 0 60 -BRNPOIS2 64 128 -* WALL62_1 0 0 -* PS20A0 0 56 -BRNSMAL1 64 64 -BRNSMAL2 64 64 -BRNSMALC 64 64 -BRNSMALL 32 64 -BRNSMALR 32 64 - BRONZE1 64 128 - BRONZE2 64 128 - BRONZE3 64 128 - BRONZE4 64 128 - BROVINE 256 128 -* WALL02_2 0 56 -* WALL02_2 0 0 -* WALL02_2 192 56 -* WALL02_2 192 0 -* WALL02_1 64 56 -* WALL02_1 64 0 -* WALL02_1 128 56 -* WALL02_1 128 0 -* W107_1 0 0 -BROVINE2 256 128 -* WALL62_2 64 0 -* WALL62_2 128 0 -* WALL62_2 192 0 -* WALL62_2 0 0 -* W106_1 0 0 - BROWN1 128 128 -* WALL02_2 0 56 -* WALL02_1 64 56 -* WALL02_2 0 0 -* WALL02_1 64 0 -* WALL02_3 64 56 -* WALL02_3 64 0 -BROWN144 128 128 -* WALL00_5 0 0 -* WALL00_6 16 0 -* WALL00_7 32 0 -* WALL00_8 48 0 -* WALL00_6 64 0 -* WALL00_6 80 0 -* WALL00_7 96 0 -* WALL00_7 112 0 - BROWN96 128 128 -BROWNGRN 64 128 -BROWNHUG 64 128 -* WALL04_7 32 0 -* WALL04_2 0 0 -* WALL04_3 16 0 -* WALL04_2 48 0 -* WALL04_4 0 64 -* WALL04_5 16 64 -* WALL04_7 32 64 -* WALL04_3 48 64 -BROWNPIP 128 128 -* TP2_1 0 0 -* STEP07 0 64 -* STEP07 32 64 -* STEP07 64 64 -* STEP07 96 64 -* WALL05_2 0 72 -* WALL05_2 64 72 -* STEP07 0 120 -* STEP07 32 120 -* STEP07 64 120 -* STEP07 96 120 -* STEP07 0 0 -BROWNWEL 256 72 -* WALL03_4 0 0 -* WALL03_4 64 0 -* WALL03_4 192 0 -* WALL03_3 128 0 -BRWINDOW 64 128 - BSTONE1 64 128 - BSTONE2 64 128 - BSTONE3 64 128 - CEMENT1 128 128 - CEMENT2 128 128 - CEMENT3 128 128 - CEMENT4 128 128 - CEMENT5 128 128 - CEMENT6 128 128 - CEMENT7 64 128 - CEMENT8 64 128 - CEMENT9 64 128 - CEMPOIS 128 128 -* WALL52_1 0 0 -* PS20A0 0 28 - COMP2 256 128 -* COMP02_7 128 64 -* COMP02_6 0 64 -* COMP02_5 192 64 -* COMP02_4 128 0 -* COMP02_3 192 0 -* COMP02_2 64 0 -* COMP02_8 64 64 -* COMP02_1 0 0 -* STEP08 0 56 -* STEP08 32 56 -* STEP08 64 56 -* STEP08 96 56 -* STEP08 128 56 -* STEP08 160 56 -* STEP08 192 56 -* STEP08 224 56 -* STEP08 224 120 -* STEP08 192 120 -* STEP08 160 120 -* STEP08 128 120 -* STEP08 96 120 -* STEP08 64 120 -* STEP08 32 120 -* STEP08 0 120 -COMPBLUE 64 128 -* COMP03_1 0 0 -* COMP03_2 0 64 -COMPOHSO 128 128 -* WALL21_1 64 -2 -* WALL21_1 64 70 -* WALL21_3 0 -2 -* WALL21_5 0 70 -COMPSPAN 32 128 -* COMP03_4 0 0 -* COMP03_4 0 64 -COMPSTA1 128 128 -* AG128_2 0 70 -* AG128_2 64 70 -* TOMW2_1 0 0 -COMPSTA2 128 128 -* AG128_2 0 70 -* AG128_2 64 70 -* TOMW2_2 0 0 -COMPTALL 256 128 -* COMP03_5 192 0 -* COMP03_8 0 0 -* COMP03_8 160 0 -* COMP04_1 192 64 -* COMP04_2 128 64 -* COMP04_5 32 0 -* COMP04_6 0 64 -* COMP04_7 64 64 -* COMP04_8 96 0 -COMPTILE 128 128 -* COMP03_1 32 0 -* COMP03_6 96 0 -* COMP03_6 96 64 -* COMP03_7 0 0 -* COMP03_7 0 64 -* COMP03_1 32 64 -COMPUTE1 128 128 -* W33_8 64 56 -* W33_8 0 56 -* W33_8 0 120 -* W33_8 64 120 -* COMP01_5 28 0 -* COMP01_6 72 0 -* COMP1B_4 0 0 -* COMP01_5 28 64 -* COMP01_1 0 64 -* COMP1C_6 72 64 -COMPUTE2 256 56 -* COMP02_2 64 0 -* COMP02_3 128 0 -* COMP02_1 0 0 -* COMP02_7 192 0 -COMPUTE3 128 128 -* SW11_4 0 4 -* SW11_5 32 4 -* SW11_4 64 4 -* SW11_5 96 4 -* COMP02_1 0 0 -* COMP02_2 64 0 -* STEP08 0 56 -* STEP08 32 56 -* STEP08 64 56 -* STEP08 96 56 -COMPWERD 64 128 -* COMP04_6 0 0 -* COMP04_6 0 64 -CRACKLE2 64 128 -CRACKLE4 64 128 - CRATE1 64 128 -* BCRATEL1 0 0 -* BCRATEL1 0 64 -* BCRATER1 32 64 -* BCRATER1 32 0 - CRATE2 64 128 -* GCRATEL1 0 0 -* GCRATEL1 0 64 -* GCRATER1 32 0 -* GCRATER1 32 64 - CRATE3 64 128 -* GCRATEL1 0 0 -* GCRATER1 32 0 -* BCRATEL1 0 64 -* BCRATER1 32 64 -CRATELIT 64 128 -* BCRATEL1 0 64 -* BCRATER1 32 64 -* SGCRATE2 0 0 -* SGCRATE2 32 0 - CRATINY 64 16 -* VGCRATE1 0 0 -* VGCRATE1 16 0 -* VGCRATE1 32 0 -* VGCRATE1 48 0 -CRATWIDE 128 128 -* GCRATEL1 0 0 -* GCRATER1 96 0 -* GCRATEM1 32 0 -* GCRATEM1 40 0 -* GCRATEM1 48 0 -* GCRATEM1 56 0 -* GCRATEM1 60 0 -* GCRATEM1 64 0 -* GCRATEM1 72 0 -* GCRATEM1 80 0 -* GCRATEM1 88 0 -* BCRATEL1 0 64 -* BCRATER1 96 64 -* BCRATEM1 32 64 -* BCRATEM1 40 64 -* BCRATEM1 48 64 -* BCRATEM1 56 64 -* BCRATEM1 64 64 -* BCRATEM1 72 64 -* BCRATEM1 88 64 -* BCRATEM1 80 64 - DBRAIN1 64 32 - DBRAIN2 64 32 - DBRAIN3 64 32 - DBRAIN4 64 32 - DOOR1 64 72 - DOOR3 64 72 - DOORBLU 8 128 -* W46_37 0 0 -* W46_37 0 16 -* W46_37 0 32 -* W46_37 0 64 -* W46_37 0 48 -* W46_37 0 80 -* W46_37 0 96 -* W46_37 0 112 -DOORBLU2 16 128 -* W108_2 0 0 -* W108_2 0 24 -* W108_2 0 48 -* W108_2 0 72 -* W108_2 0 96 -* STEP07 0 120 - DOORHI 64 128 -* DOOR2_3 0 0 -* DOOR2_3 0 32 -* DOOR2_3 0 64 -* DOOR2_3 0 96 - DOORRED 8 128 -* W46_38 0 0 -* W46_38 0 16 -* W46_38 0 32 -* W46_38 0 48 -* W46_38 0 64 -* W46_38 0 80 -* W46_38 0 96 -* W46_38 0 112 -DOORRED2 16 128 -* W108_3 0 0 -* W108_3 0 24 -* W108_3 0 48 -* W108_3 0 72 -* W108_3 0 96 -* STEP07 0 120 -DOORSTOP 8 128 -DOORTRAK 8 128 - DOORYEL 8 128 -* W46_39 0 112 -* W46_39 0 96 -* W46_39 0 80 -* W46_39 0 64 -* W46_39 0 48 -* W46_39 0 32 -* W46_39 0 16 -* W46_39 0 0 -DOORYEL2 16 128 -* W108_4 0 0 -* W108_4 0 24 -* W108_4 0 48 -* W108_4 0 72 -* W108_4 0 96 -* STEP07 0 120 -EXITDOOR 128 72 -* DOOR3_6 0 0 -* DOOR3_4 64 0 -* DOOR3_5 88 0 -* T14_5 112 0 -EXITSIGN 64 16 -* EXIT1 0 0 -* EXIT2 32 0 -* EXIT2 40 0 -* EXIT2 48 0 -* EXIT2 56 0 -EXITSTON 64 128 -* W28_8 0 0 -* W28_8 0 64 -* EXIT1 16 22 -FIREBLU1 128 128 -FIREBLU2 128 128 -FIRELAV2 128 128 -FIRELAV3 128 128 -FIRELAVA 128 128 -FIREMAG1 128 128 -FIREMAG2 128 128 -FIREMAG3 128 128 -FIREWALA 128 112 -FIREWALB 128 112 -FIREWALL 128 112 - GLASS1 64 96 - GLASS1B 64 96 - GLASS2 64 96 - GLASS2B 64 96 - GRAY1 64 128 -* W33_7 0 0 -* W33_7 0 64 - GRAY2 64 72 -* W33_7 0 -8 -* W31_1 0 56 -* DUCT1 21 16 - GRAY4 64 128 -* W33_5 0 0 -* W33_5 0 64 - GRAY5 64 128 -* W33_7 0 0 -* W33_7 0 72 -* W33_8 0 64 - GRAY7 256 128 -* W33_8 0 120 -* W33_8 64 120 -* W33_8 128 120 -* W33_8 192 120 -* W32_1 64 0 -* W32_4 0 0 -* W32_4 128 0 -* W32_4 192 0 -* W32_4 0 56 -* W32_4 64 56 -* W32_4 192 56 -* W32_1 128 56 - GRAYBIG 128 128 -* WALL00_1 0 0 -* WALL00_1 64 0 -* WALL00_2 80 0 -GRAYDANG 64 128 -* W33_7 0 0 -* W33_7 0 64 -* PS15A0 14 72 -GRAYPOIS 64 72 -* WALL00_1 0 0 -* PS18A0 1 18 -GRAYTALL 128 128 -* WALL00_1 0 0 -* WALL00_1 64 0 -* WALL00_3 80 0 -GRAYVINE 256 128 -* WALL00_1 192 0 -* WALL00_1 64 0 -* WALL00_1 128 0 -* WALL00_1 0 0 -* W106_1 0 0 -GSTFONT1 64 128 -GSTFONT2 64 128 -GSTFONT3 64 128 - GSTGARG 64 128 - GSTLION 64 128 - GSTONE1 256 128 -* WALL48_1 0 0 -* WALL48_2 64 0 -* WALL48_3 128 0 -* WALL48_4 192 0 - GSTONE2 256 128 -* WALL59_3 0 0 -* WALL59_2 64 0 -* WALL59_3 128 0 -* WALL59_4 192 0 -GSTSATYR 64 128 -GSTVINE1 256 128 -* WALL48_1 0 0 -* WALL48_2 64 0 -* WALL48_3 128 0 -* WALL48_4 192 0 -* W106_1 0 0 -GSTVINE2 256 128 -* WALL48_1 0 0 -* WALL48_2 64 0 -* WALL48_3 128 0 -* WALL48_4 192 0 -* W107_1 0 0 -ICKDOOR1 64 72 -* WALL00_1 0 8 -* WALL00_2 -8 22 -* WALL70_3 0 0 -ICKWALL1 64 128 -* W32_4 0 64 -* WALL69_4 0 0 -ICKWALL2 64 128 -* WALL71_5 0 0 -* W33_5 0 64 -ICKWALL3 64 128 -* WALL72_7 0 0 -* WALL69_9 0 64 -* W67_2 32 64 -ICKWALL4 64 128 -* WALL72_5 0 0 -* WALL72_3 0 64 -ICKWALL5 64 128 -* WALL70_4 0 0 -* W32_4 0 64 -ICKWALL6 64 128 -* W32_4 0 64 -* W32_4 0 0 -* WALL70_2 4 0 -ICKWALL7 64 128 -* WALL70_9 28 64 -* W67_2 0 64 -* W67_1 0 0 - LITE2 64 128 -* WALL02_2 0 56 -* WALL02_2 0 0 -* FLAMP 5 0 -* FLAMP 35 0 - LITE3 32 128 -* WLITA0 0 0 -* WLITA0 0 8 -* WLITA0 0 16 -* WLITA0 0 24 -* WLITA0 0 32 -* WLITA0 0 40 -* WLITA0 0 48 -* WLITA0 0 56 -* WLITA0 0 64 -* WLITA0 0 72 -* WLITA0 0 80 -* WLITA0 0 88 -* WLITA0 0 96 -* WLITA0 0 104 -* WLITA0 0 112 -* WLITA0 0 120 -* WLITB0 8 120 -* WLITB0 8 112 -* WLITB0 8 104 -* WLITB0 8 96 -* WLITB0 8 88 -* WLITB0 8 80 -* WLITB0 8 72 -* WLITB0 8 64 -* WLITB0 8 56 -* WLITB0 8 40 -* WLITB0 8 48 -* WLITB0 8 32 -* WLITB0 8 24 -* WLITB0 8 16 -* WLITB0 8 8 -* WLITB0 8 0 -* WLITB0 16 0 -* WLITB0 16 8 -* WLITB0 16 16 -* WLITB0 16 24 -* WLITB0 16 32 -* WLITB0 16 40 -* WLITB0 16 48 -* WLITB0 16 56 -* WLITB0 16 64 -* WLITB0 16 72 -* WLITB0 16 80 -* WLITB0 16 88 -* WLITB0 16 96 -* WLITB0 16 104 -* WLITB0 16 112 -* WLITB0 16 120 -* WLITC0 24 0 -* WLITC0 24 8 -* WLITC0 24 16 -* WLITC0 24 24 -* WLITC0 24 32 -* WLITC0 24 40 -* WLITC0 24 48 -* WLITC0 24 56 -* WLITC0 24 64 -* WLITC0 24 72 -* WLITC0 24 80 -* WLITC0 24 88 -* WLITC0 24 96 -* WLITC0 24 104 -* WLITC0 24 112 -* WLITC0 24 120 - LITE4 16 128 -* WLITA0 0 0 -* WLITA0 0 8 -* WLITA0 0 16 -* WLITA0 0 24 -* WLITA0 0 32 -* WLITA0 0 40 -* WLITA0 0 48 -* WLITC0 8 48 -* WLITC0 8 32 -* WLITC0 8 24 -* WLITC0 8 40 -* WLITC0 8 16 -* WLITC0 8 8 -* WLITC0 8 0 -* T14_5 0 56 - LITE5 16 128 -* WLITA0 0 0 -* WLITA0 0 8 -* WLITA0 0 16 -* WLITA0 0 24 -* WLITA0 0 32 -* WLITA0 0 40 -* WLITA0 0 48 -* WLITA0 0 56 -* WLITA0 0 64 -* WLITA0 0 72 -* WLITA0 0 80 -* WLITA0 0 88 -* WLITA0 0 96 -* WLITA0 0 104 -* WLITA0 0 112 -* WLITA0 0 120 -* WLITC0 8 120 -* WLITC0 8 112 -* WLITC0 8 104 -* WLITC0 8 96 -* WLITC0 8 88 -* WLITC0 8 80 -* WLITC0 8 72 -* WLITC0 8 64 -* WLITC0 8 56 -* WLITC0 8 48 -* WLITC0 8 40 -* WLITC0 8 32 -* WLITC0 8 16 -* WLITC0 8 24 -* WLITC0 8 8 -* WLITC0 8 0 - LITE96 64 128 -* WALL62_1 -1 0 -* FLAMP 4 16 -* FLAMP 38 1 -LITEBLU1 8 128 -LITEBLU2 16 72 -LITEBLU3 16 128 -* W13_8 0 0 -* W13_8 0 56 -LITEBLU4 16 128 -* BLITA0 0 0 -* BLITA0 0 8 -* BLITA0 0 16 -* BLITA0 0 24 -* BLITA0 0 32 -* BLITA0 0 40 -* BLITA0 0 48 -* BLITA0 0 56 -* BLITA0 0 64 -* BLITA0 0 72 -* BLITA0 0 80 -* BLITA0 0 88 -* BLITA0 0 96 -* BLITA0 0 104 -* BLITA0 0 112 -* BLITA0 0 120 -* BLITC0 8 120 -* BLITC0 8 112 -* BLITC0 8 104 -* BLITC0 8 96 -* BLITC0 8 88 -* BLITC0 8 80 -* BLITC0 8 72 -* BLITC0 8 64 -* BLITC0 8 56 -* BLITC0 8 48 -* BLITC0 8 40 -* BLITC0 8 32 -* BLITC0 8 24 -* BLITC0 8 16 -* BLITC0 8 8 -* BLITC0 8 0 - LITEMET 128 128 -* WALL03_7 0 0 -* WALL03_7 0 64 -* WALL03_7 64 64 -* WALL03_7 64 0 -* FLAMP 19 34 -* FLAMP 81 34 - LITERED 16 128 -* W15_6 -4 56 -* W15_6 -4 0 -LITESTON 64 128 -* W28_8 0 64 -* W28_5 0 0 -* FLAMP 37 26 -* FLAMP 7 26 - LOGO 256 128 - LOGO3 256 128 - LOGO4 256 128 - LOGO5 64 128 -MARBFAC2 128 128 -MARBFAC3 128 128 -MARBFAC4 64 128 -MARBFACE 128 128 -MARBGRAY 64 128 - MARBLE1 128 128 - MARBLE2 128 128 - MARBLE3 128 128 -MARBLOD1 128 128 - METAL 64 128 - METAL1 64 128 -* WALL03_7 0 0 -* WALL03_7 0 64 - METAL2 64 128 - METAL3 64 128 - METAL4 64 128 - METAL5 64 128 - METAL6 64 128 - METAL7 64 128 -MIDBARS1 64 128 -MIDBARS3 64 72 - MIDBRN1 64 112 -MIDBRONZ 64 128 -MIDGRATE 128 128 -MIDSPACE 64 128 -MIDVINE1 256 128 -MIDVINE2 256 128 -MODWALL1 64 128 -MODWALL2 64 128 -MODWALL3 64 128 -MODWALL4 64 128 - NUKE24 64 24 -NUKEDGE1 128 128 -* WALL04_7 96 0 -* WALL04_5 112 0 -* WALL04_5 112 32 -* WALL04_5 96 32 -* NUKEDGE 64 104 -* WALL04_2 64 0 -* WALL04_2 48 0 -* WALL04_2 48 32 -* WALL04_2 64 32 -* NUKEDGE 0 104 -* WALL04_4 16 32 -* WALL04_5 32 0 -* WALL04_5 32 32 -* WALL04_3 80 32 -* WALL04_3 80 0 -* WALL04_3 0 32 -* WALL04_3 0 0 -* WALL04_4 16 0 -NUKEPOIS 128 128 -* WALL04_7 96 0 -* WALL04_5 112 0 -* WALL04_5 112 32 -* WALL04_5 96 32 -* NUKEDGE 64 104 -* WALL04_2 64 0 -* WALL04_2 48 0 -* WALL04_2 48 32 -* WALL04_2 64 32 -* NUKEDGE 0 104 -* WALL04_4 16 32 -* WALL04_5 32 0 -* WALL04_5 32 32 -* WALL04_3 80 32 -* WALL04_3 80 0 -* WALL04_3 0 32 -* WALL04_3 0 0 -* WALL04_4 16 0 -* PS20A0 0 68 -NUKESLAD 64 128 -PANBLACK 64 128 - PANBLUE 64 128 - PANBOOK 64 128 -PANBORD1 32 128 -PANBORD2 16 128 -PANCASE1 64 128 -PANCASE2 64 128 - PANEL1 64 128 - PANEL2 64 128 - PANEL3 64 128 - PANEL4 64 128 - PANEL5 64 128 - PANEL6 64 128 - PANEL7 64 128 - PANEL8 64 128 - PANEL9 64 128 - PANRED 64 128 - PIPE1 256 128 -* RP1_1 0 0 -* RP1_2 128 0 - PIPE2 256 128 -* TP2_1 0 0 -* TP2_2 128 0 - PIPE4 256 128 -* TP7_2 128 0 -* TP7_1 0 0 - PIPE6 256 128 -* TP3_2 128 0 -* TP3_1 0 0 - PIPES 64 128 -PIPEWAL1 64 128 -PIPEWAL2 64 128 - PLANET1 256 128 -* AG128_1 192 0 -* AG128_1 128 0 -* AG128_1 64 0 -* AG128_1 0 0 -* TSCRN2 4 69 -* TSCRN3 68 69 -* TSCRN4 132 69 -* TSCRN5 68 6 -* TSCRN6 4 6 -* TSCRN8 132 6 - PLAT1 128 128 - REDWALL 128 128 -REDWALL1 128 128 -* W15_5 64 56 -* W15_4 0 56 -* W15_4 0 0 -* W15_5 64 0 - ROCK1 64 128 - ROCK2 64 128 - ROCK3 64 128 - ROCK4 128 128 - ROCK5 128 128 -ROCKRED1 128 128 -ROCKRED2 128 128 -ROCKRED3 128 128 - SFALL 64 128 - SFALL1 64 128 - SFALL2 64 128 - SFALL3 64 128 - SFALL4 64 128 - SHAWN1 128 128 -* W13_1 0 56 -* W13_1 64 56 -* W13_1 64 0 -* W13_1 0 0 -* CYL1_1 0 0 - SHAWN2 64 128 - SHAWN3 64 72 - SILVER1 64 128 - SILVER2 64 128 - SILVER3 64 128 - SKIN2 128 128 -* HELL8_2 64 0 -* HELL8_4 0 0 -SKINBORD 64 128 -* HELL6_1 0 0 -* HELL8_3 32 0 - SKINCUT 256 128 -* W102_1 0 0 -* W102_2 128 0 -SKINEDGE 128 128 -* HELL6_2 0 0 -* HELL8_1 64 0 -SKINFACE 256 128 -* HELL5_1 0 0 -* HELL5_2 128 0 - SKINLOW 256 104 -* W92_1 0 0 -* W92_2 128 0 -SKINMET1 256 128 -* W98_1 0 0 -* W98_2 128 0 -SKINMET2 256 128 -* W99_1 0 0 -* W99_2 128 0 -SKINSCAB 256 128 -* W101_1 0 0 -* W101_2 128 0 -SKINSYMB 256 128 -* W103_1 0 0 -* W103_2 128 0 -SKINTEK1 256 128 -* W109_1 0 0 -* W109_2 128 0 -SKINTEK2 256 128 -SKSNAKE1 64 128 -SKSNAKE2 64 128 -SKSPINE1 128 128 -SKSPINE2 256 96 -* SPINE3_1 0 0 -* SPINE3_2 128 0 -SKULWAL3 128 128 -* WALL76_1 -12 0 -* WALL76_1 116 0 -SKULWALL 128 128 -* WALL79_1 -4 0 -* WALL79_1 124 0 - SKY1 256 128 - SKY2 256 128 - SKY3 256 128 - SK_LEFT 64 128 -SK_RIGHT 64 128 -SLADPOIS 64 128 -* WLA128_1 0 0 -* PS20A0 1 49 -SLADRIP1 64 128 -SLADRIP2 64 128 -SLADRIP3 64 128 -SLADSKUL 64 128 -* WLA128_1 0 0 -* SW2_2 21 65 -SLADWALL 64 128 - SLOPPY1 64 128 - SLOPPY2 64 128 - SPACEW2 64 128 - SPACEW3 64 128 - SPACEW4 64 128 -SPCDOOR1 64 128 -SPCDOOR2 64 128 -SPCDOOR3 64 128 -SPCDOOR4 64 128 -SP_DUDE1 128 128 -SP_DUDE2 128 128 -SP_DUDE3 64 128 -SP_DUDE4 64 128 -SP_DUDE5 64 128 -SP_DUDE6 64 128 -SP_DUDE7 128 128 -SP_DUDE8 128 128 -SP_FACE1 128 96 -SP_FACE2 64 128 - SP_HOT1 256 128 -* WALL49_1 0 0 -* WALL49_2 64 0 -* WALL49_3 128 0 -* WALL49_4 192 0 -SP_ROCK1 128 128 -SP_ROCK2 128 128 - STARBR2 128 128 -* SW16_4 32 0 -* SW15_4 0 0 -* SW15_6 64 0 -* SW16_6 96 0 - STARG1 64 128 -* SW12_1 0 0 -* SW12_2 32 0 - STARG2 128 128 -* SW17_1 0 0 -* SW17_2 32 0 -* SW17_3 64 0 -* SW18_5 96 0 - STARG3 128 128 -* SW19_3 64 0 -* SW19_4 0 0 - STARGR1 64 128 -* SW11_1 0 0 -* SW11_2 32 0 - STARGR2 128 128 -* SW15_1 0 0 -* SW16_2 32 0 -* SW15_3 64 0 -* SW16_1 96 0 -STARTAN1 64 128 -* SW12_4 0 0 -* SW12_5 32 0 -STARTAN2 128 128 -* SW17_6 64 0 -* SW17_5 32 0 -* SW18_7 96 0 -* SW17_4 0 0 -STARTAN3 128 128 -* SW19_2 0 0 -* SW19_1 64 0 - STEP1 32 16 -* STEP04 0 0 -* STEP05 0 8 - STEP2 32 16 -* SW11_4 0 -112 -* STEP03 0 0 - STEP3 32 16 -* STEP05 0 8 -* STEP05 0 0 - STEP4 32 16 -* STEP06 0 8 -* STEP06 0 0 - STEP5 32 16 -* STEP09 0 0 -* STEP08 0 8 - STEP6 32 16 -* STEP07 0 0 -* STEP10 0 8 -STEPLAD1 64 16 - STEPTOP 128 16 - STONE 256 128 -* WALL01_1 0 0 -* WALL01_2 16 0 -* WALL01_3 32 0 -* WALL01_4 48 0 -* WALL01_5 64 0 -* WALL01_6 80 0 -* WALL01_7 96 0 -* WALL01_8 112 0 -* WALL01_9 128 0 -* WALL01_A 144 0 -* WALL01_B 160 0 -* WALL01_C 176 0 -* WALL01_3 192 0 -* WALL01_1 208 0 -* WALL01_6 224 0 -* WALL01_A 240 0 -* WALL01_1 0 72 -* WALL01_2 16 72 -* WALL01_3 32 72 -* WALL01_4 48 72 -* WALL01_5 64 72 -* WALL01_6 80 72 -* WALL01_7 96 72 -* WALL01_8 112 72 -* WALL01_9 128 72 -* WALL01_A 144 72 -* WALL01_B 160 72 -* WALL01_C 176 72 -* WALL01_3 192 72 -* WALL01_1 208 72 -* WALL01_6 224 72 -* WALL01_A 240 72 -* W33_8 0 64 -* W33_8 0 120 -* W33_8 64 64 -* W33_8 64 120 -* W33_8 128 64 -* W33_8 128 120 -* W33_8 192 64 -* W33_8 192 120 - STONE2 128 128 -* W28_5 0 0 -* W28_5 64 64 -* W28_8 0 64 -* W28_8 64 0 - STONE3 128 128 -* W28_6 0 64 -* W28_6 64 0 -* W28_7 64 64 -* W28_7 0 0 - STONE4 64 128 - STONE5 64 128 - STONE6 64 128 - STONE7 64 128 -STONGARG 128 128 -* W28_7 0 64 -* W28_7 64 0 -* W28_6 64 64 -* W28_6 0 0 -* SW2_3 0 79 -* SW2_3 64 15 -STONPOIS 64 128 -* WALL01_1 0 0 -* WALL01_2 16 0 -* WALL01_3 32 0 -* WALL01_4 48 0 -* WALL01_4 48 64 -* WALL01_3 32 64 -* WALL01_2 16 64 -* WALL01_1 0 64 -* PS20A0 1 42 -* W33_8 0 120 - STUCCO 64 128 - STUCCO1 64 128 - STUCCO2 64 128 - STUCCO3 64 128 -SUPPORT2 64 128 -* SUPPORT2 0 0 -* SUPPORT2 40 0 -* SUPPORT2 20 0 -* SUPPORT2 0 72 -* SUPPORT2 20 72 -* SUPPORT2 40 72 -SUPPORT3 64 128 -* WALL42_3 20 0 -* WALL42_3 0 0 -* WALL42_3 40 0 - SW1BLUE 64 128 -* COMP03_1 0 0 -* COMP03_2 0 64 -* SW2_7 14 66 -SW1BRCOM 128 128 -* WALL62_1 0 0 -* SW1S0 48 72 - SW1BRIK 64 128 -* RW23_4 0 0 -* SW1S0 16 72 - SW1BRN1 128 128 -* WALL62_1 0 0 -* SW1S0 48 72 - SW1BRN2 64 128 -* WALL02_2 0 56 -* WALL02_2 0 0 -* SW4S0 20 79 -SW1BRNGN 64 128 -* WALL62_2 0 0 -* SW4S0 20 80 -SW1BROWN 128 128 -* WALL62_1 0 0 -* SW3S1 48 72 - SW1CMT 64 128 -* WALL54_1 -42 0 -* SW3S1 16 72 - SW1COMM 64 72 -* W13_1 0 0 -* SW1S0 15 18 - SW1COMP 64 128 -* COMP04_5 0 0 -* COMP03_4 32 64 -* COMP03_4 0 64 -* SW2S0 16 72 - SW1DIRT 64 128 -* WALL00_6 16 0 -* WALL00_7 32 0 -* WALL00_7 48 0 -* WALL00_7 0 0 -* SW1S0 16 20 - SW1EXIT 32 72 -* W33_8 0 64 -* WALL69_9 -2 0 -* SW2S0 0 16 - SW1GARG 64 128 -* WALL47_2 0 0 -* WALL42_6 12 62 - SW1GRAY 64 128 -* W31_1 0 64 -* W31_1 0 0 -* SW2S0 16 70 -SW1GRAY1 64 128 -* W31_1 0 64 -* W31_1 0 0 -* SW4S0 19 79 -SW1GSTON 64 128 -* WALL48_2 0 0 -* SW2_7 14 67 - SW1HOT 64 128 -* WALL49_1 0 0 -* SW2_7 13 66 - SW1LION 64 128 -* WALL47_2 0 0 -* WALL42_5 12 62 - SW1MARB 64 128 -* MWALL1_1 0 0 -* SW2_7 13 55 - SW1MET2 64 128 -* RW33_1 0 0 -* SW1S0 16 19 -SW1METAL 64 128 -* WALL03_7 0 64 -* WALL03_7 0 0 -* SW4S0 20 68 - SW1MOD1 64 128 -* RW31_1 0 0 -* SW4S0 20 80 -SW1PANEL 64 128 -* RW21_4 0 0 -* SW2_7 14 64 - SW1PIPE 128 128 -* TP2_2 0 0 -* SW3S0 48 76 - SW1ROCK 64 128 -* RW30_1 0 0 -* SW2_7 14 66 -SW1SATYR 64 128 -* WALL47_2 0 0 -* WALL42_1 12 60 - SW1SKIN 64 128 -* HELL6_3 0 0 -* SW2_5 0 59 -SW1SKULL 64 128 - SW1SLAD 64 128 -* WLA128_1 0 0 -* WARNB0 24 73 -SW1STARG 128 128 -* WALL62_1 0 0 -* SW1S0 48 72 -SW1STON1 64 128 -* W28_8 0 64 -* W28_8 0 0 -* SW1S0 16 78 -SW1STON2 128 128 -* WALL62_1 0 0 -* SW1S0 48 72 -SW1STON6 64 128 -* RW18_3 0 0 -* SW2S0 16 72 -SW1STONE 128 128 -* WALL62_1 0 0 -* SW1S0 48 72 -SW1STRTN 64 128 -* SW12_4 0 0 -* SW12_5 32 0 -* SW1S0 16 72 - SW1TEK 64 128 -* RW37_2 0 0 -* SW4S0 20 80 - SW1VINE 64 128 -* WALL00_1 0 0 -* W106_1 0 0 -* SW4S0 20 84 -SW1WDMET 64 128 -* RW26_1 0 0 -* EXIT2 16 48 -* EXIT2 24 48 -* EXIT2 32 48 -* EXIT2 40 48 -* EXIT2 40 64 -* EXIT2 32 64 -* EXIT2 24 64 -* EXIT2 16 64 -* W108_2 24 52 - SW1WOOD 64 128 -* WALL40_2 -64 0 -* SW2_7 14 66 - SW1ZIM 64 128 -* RW20_1 0 0 -* SW2_7 16 65 - SW2BLUE 64 128 -* COMP03_1 0 0 -* COMP03_2 0 64 -* SW2_8 14 66 -SW2BRCOM 128 128 -* WALL62_1 0 0 -* SW1S1 48 72 - SW2BRIK 64 128 -* RW23_4 0 0 -* SW1S1 16 72 - SW2BRN1 128 128 -* WALL62_1 0 0 -* SW1S1 48 72 - SW2BRN2 64 128 -* WALL02_2 0 56 -* WALL02_2 0 0 -* SW4S1 20 79 -SW2BRNGN 64 128 -* WALL62_2 0 0 -* SW4S1 20 80 -SW2BROWN 128 128 -* WALL62_1 0 0 -* SW3S0 48 72 - SW2CMT 64 128 -* WALL54_1 -42 0 -* SW3S0 16 72 - SW2COMM 64 72 -* W13_1 0 0 -* SW1S1 15 18 - SW2COMP 64 128 -* COMP04_5 0 0 -* COMP03_4 32 64 -* COMP03_4 0 64 -* SW2S1 16 72 - SW2DIRT 64 128 -* WALL00_6 16 0 -* WALL00_7 32 0 -* WALL00_7 48 0 -* WALL00_7 0 0 -* SW1S1 16 20 - SW2EXIT 32 72 -* W33_8 0 64 -* WALL69_9 -2 0 -* SW2S1 0 16 - SW2GARG 64 128 -* WALL47_2 0 0 -* WALL42_6 12 62 - SW2GRAY 64 128 -* W31_1 0 64 -* W31_1 0 0 -* SW2S1 16 70 -SW2GRAY1 64 128 -* W31_1 0 64 -* W31_1 0 0 -* SW4S1 19 79 -SW2GSTON 64 128 -* WALL48_2 0 0 -* SW2_8 14 67 - SW2HOT 64 128 -* WALL49_1 0 0 -* SW2_8 13 66 - SW2LION 64 128 -* WALL47_2 0 0 -* WALL42_5 12 62 - SW2MARB 64 128 -* MWALL1_1 0 0 -* SW2_8 13 55 - SW2MET2 64 128 -* RW33_1 0 0 -* SW1S1 16 19 -SW2METAL 64 128 -* WALL03_7 0 64 -* WALL03_7 0 0 -* SW4S1 20 68 - SW2MOD1 64 128 -* RW31_1 0 0 -* SW4S1 20 80 -SW2PANEL 64 128 -* RW21_4 0 0 -* SW2_8 14 64 - SW2PIPE 128 128 -* TP2_2 0 0 -* SW3S1 48 76 - SW2ROCK 64 128 -* RW30_1 0 0 -* SW2_8 14 66 -SW2SATYR 64 128 -* WALL47_2 0 0 -* WALL42_1 12 60 - SW2SKIN 64 128 -* HELL6_3 0 0 -* SW2_6 0 59 -SW2SKULL 64 128 - SW2SLAD 64 128 -* WLA128_1 0 0 -* WARNB0 24 73 -SW2STARG 128 128 -* WALL62_1 0 0 -* SW1S1 48 72 -SW2STON1 64 128 -* W28_8 0 64 -* W28_8 0 0 -* SW1S1 16 78 -SW2STON2 128 128 -* WALL62_1 0 0 -* SW1S1 48 72 -SW2STON6 64 128 -* RW18_3 0 0 -* SW2S1 16 72 -SW2STONE 128 128 -* WALL62_1 0 0 -* SW1S1 48 72 -SW2STRTN 64 128 -* SW12_4 0 0 -* SW12_5 32 0 -* SW1S1 16 72 - SW2TEK 64 128 -* RW37_2 0 0 -* SW4S1 20 80 - SW2VINE 64 128 -* WALL00_1 0 0 -* W106_1 0 0 -* SW4S1 20 84 -SW2WDMET 64 128 -* RW26_1 0 0 -* EXIT2 16 48 -* EXIT2 24 48 -* EXIT2 32 48 -* EXIT2 40 48 -* EXIT2 40 64 -* EXIT2 32 64 -* EXIT2 24 64 -* EXIT2 16 64 -* W108_2 24 52 - SW2WOOD 64 128 -* WALL40_2 -64 0 -* SW2_8 14 66 - SW2ZIM 64 128 -* RW20_1 0 0 -* SW2_8 16 65 -TANROCK2 64 128 -TANROCK3 64 128 -TANROCK4 64 128 -TANROCK5 64 128 -TANROCK7 64 128 -TANROCK8 64 128 -TEKBRON1 128 128 -* RW36_1 0 0 -* RW36_3 64 0 -TEKBRON2 64 128 -TEKGREN1 64 128 -TEKGREN2 64 128 -TEKGREN3 64 128 -TEKGREN4 64 128 -TEKGREN5 64 128 - TEKLITE 64 128 -TEKLITE2 64 128 -TEKWALL1 128 128 -* W17_1 0 -27 -* W17_1 0 16 -TEKWALL2 128 128 -TEKWALL3 128 112 -TEKWALL4 128 128 -TEKWALL5 128 128 -TEKWALL6 256 128 -* RW25_1 0 0 -* RW25_2 128 0 -* RW25_3 64 0 -* RW25_4 192 0 - WFALL 64 128 - WFALL1 64 128 - WFALL2 64 128 - WFALL3 64 128 - WFALL4 64 128 - WOOD1 256 128 -* WALL40_1 128 0 -* WALL40_2 0 0 - WOOD10 128 128 - WOOD12 64 128 - WOOD3 256 128 -* WALL97_1 0 0 -* WALL97_2 64 0 -* WALL97_2 192 0 -* WALL97_3 128 0 - WOOD4 64 128 -* WALL97_2 0 0 -* SW2_1 26 76 -* SW2_2 26 18 - WOOD5 256 128 -* W96_2 128 0 -* W96_1 0 0 - WOOD6 64 128 - WOOD7 64 128 - WOOD8 64 128 - WOOD9 64 128 -WOODGARG 64 128 -* WALL40_1 0 0 -* SW2_4 6 63 -WOODMET1 64 128 -WOODMET2 64 128 -WOODMET3 64 128 -WOODMET4 64 128 -WOODSKUL 64 128 -* WALL40_1 0 0 -* SW2_2 24 70 -WOODVERT 64 128 - ZDOORB1 128 128 - ZDOORF1 128 128 - ZELDOOR 128 128 - ZIMMER1 64 128 - ZIMMER2 64 128 - ZIMMER3 64 128 - ZIMMER4 64 128 - ZIMMER5 64 128 - ZIMMER7 64 128 - ZIMMER8 64 128 - ZZWOLF1 128 128 -ZZWOLF10 128 128 -ZZWOLF11 128 128 -ZZWOLF12 128 128 -ZZWOLF13 128 128 - ZZWOLF2 128 128 - ZZWOLF3 128 128 - ZZWOLF4 128 128 - ZZWOLF5 128 128 - ZZWOLF6 128 128 - ZZWOLF7 128 128 - ZZWOLF9 128 128 -ZZZFACE1 256 128 -ZZZFACE2 256 128 -ZZZFACE3 256 128 -ZZZFACE4 256 128 -ZZZFACE5 256 128 -ZZZFACE6 256 128 -ZZZFACE7 256 128 -ZZZFACE8 256 128 -ZZZFACE9 256 128 diff --git a/tools/cleanroom/sw1_sw2.py b/tools/cleanroom/sw1_sw2.py deleted file mode 100644 index 768b5192..00000000 --- a/tools/cleanroom/sw1_sw2.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/python - -from doom import Patch, Texture -import sys,re - -if len(sys.argv) != 2: - sys.stderr.write("usage: sw1_sw2.py \n") - sys.exit() - -infile = sys.argv[1] - -# TODO: a generalized form of this para should probably be moved into the -# Texture class -texture1 = file(infile, "r").read() -textures = {} -current = None -for line in texture1.split("\n"): - if len(line) == 0 or line[0] == ";" or line[0] == "#": - continue - elif line[0] == "*" and current: - junk,name,y,x= line.split() - current.patches.append(Patch(name,int(x),int(y))) - else: - line = line.split() - current = Texture(line[0],line[1],line[2]) - textures[line[0]] = current - -# a list of known switch textures -switches = { - "SW1S0": "SW1S1", - "SW2_1": "SW2_2", - "SW2_3": "SW2_4", - "SW2_5": "SW2_6", - "SW2_7": "SW2_8", - "SW2S0": "SW2S1", - "SW3S0": "SW3S1", - "SW4S0": "SW4S1" -} -# include the opposites -switches.update(dict([ (v,k) for k,v in switches.items() ])) - -for sw1 in [x for x in textures.values() if re.match("^SW1", x.name)]: - sw2n = sw1.name.replace("SW1","SW2") - if not textures.has_key(sw2n): - sys.stderr.write("error: %s not defined, skipping\n" % sw2n) - continue - sw2 = textures[sw2n] - if len(sw2.patches) != 0: - sys.stderr.write("error: %s has patches (%s)\n" % \ - (sw2.name, map(lambda x: x.name,sw2.patches))) - continue - - # now the magic happens - for patch in sw1.patches: - name = patch.name - if switches.has_key(patch.name): - name = switches[patch.name] - sw2.patches.append(Patch(name, patch.yoff,patch.xoff)) - textures[sw2n] = sw2 - -a = textures.values() -a.sort(lambda a,b: cmp(a.name,b.name)) -sys.stdout.write(''.join(map(str,a))) diff --git a/tools/cleanroom/tmp_cleanui.py b/tools/cleanroom/tmp_cleanui.py deleted file mode 100644 index ad6510cc..00000000 --- a/tools/cleanroom/tmp_cleanui.py +++ /dev/null @@ -1,362 +0,0 @@ -#!/usr/bin/python - -import sys -import gtk -import gtk.glade - -from doom import Patch, Texture - -class HellowWorldGTK: - """This is an Hello World GTK application""" - - def parse_texture_file(self,fname): - texture1 = file(fname, "r").read() - self.textures = {} - self.wip_textures = {} - textures = self.textures - current = None - for line in texture1.split("\n"): - if len(line) == 0 or line[0] == ";" or line[0] == "#": - continue - elif line[0] == "*" and current: - junk,name,y,x= line.split() - current.patches.append(Patch(name,int(x),int(y))) - else: - line = line.split() - current = Texture(line[0],line[1],line[2]) - self.wip_textures[line[0]] = Texture(line[0],line[1],line[2]) - textures[line[0]] = current - # now weed out the 1-patch ones - keys = self.textures.keys() - for key in keys: - if 1 == len(self.textures[key].patches): - del self.textures[key] - del self.wip_textures[key] - - def lhs_callback(self, treeview): - offs,col = treeview.get_cursor() - # TODO: sanity check the insane subscripting here - row = treeview.get_model()[offs[0]][0] - self.set_texture(row) - # clear out the patch-list for this texture - selected_patches = self.wTree.get_widget("selected_patches") - model = selected_patches.get_model() - model.clear() - wip_texture = self.wip_textures[row] - for patch in wip_texture.patches: - model.append(None, [ patch.name, patch.xoff, patch.yoff ]) - - - def rhs_drag_data_get(self,widget,ctx,selection,targettype,eventtime): - print "ZOMG" - - # patch selected on rhs - def rhs_select_cb(self, rhs, path, view_column): - model = rhs.get_model() - row = model[path[0]][0] - selected_patches = self.wTree.get_widget("selected_patches") - model = selected_patches.get_model() - model.append(None, [ row, 0, 0 ]) - # redraw the rhs. a bit hacky - current_texture_name = self.current_texture() - current_texture = self.wip_textures[current_texture_name] - current_texture.patches.append(Patch(row,0,0)) - self.init_texture_pixbuf(self.wip_textures[current_texture_name]) - # this redraws the lhs too, unnecessarily - self.set_texture(current_texture_name) - - def current_texture(self): - """return the name of the currently selected texture""" - lhs = self.wTree.get_widget("texture_list") - offs,col = lhs.get_cursor() - lhs_model = lhs.get_model() - return lhs_model[offs[0]][0] - - def rhs_cursor_cb(self, rhs): - offs,col = rhs.get_cursor() - rhs_model = rhs.get_model() - row = rhs_model[offs[0]][0] - - image = self.wTree.get_widget("current_patch") - image.set_from_file("../../patches/" + row.lower() + ".gif") - # scale the texture up - pixbuf = image.get_pixbuf() - if pixbuf: - scale = 2 - image.set_from_pixbuf(pixbuf.scale_simple( - pixbuf.get_width() * scale, - pixbuf.get_height() * scale, - gtk.gdk.INTERP_NEAREST - )) - - def init_texture_pixbuf(self, texture): - for patch in texture.patches: - # read the patches into pixbufs - # a horrid hack to get them client->server side - image = gtk.Image() - if not self.patch_pixbufs.has_key(patch.name): - image.set_from_file("../../patches/" + patch.name.lower() + ".gif") - pb = image.get_pixbuf() - self.patch_pixbufs[patch.name] = pb.add_alpha(True,chr(0),chr(255),chr(255)) - - texbuf = gtk.gdk.Pixbuf( - self.patch_pixbufs.values()[0].get_colorspace(), - self.patch_pixbufs.values()[0].get_has_alpha(), - self.patch_pixbufs.values()[0].get_bits_per_sample(), - int(texture.width), - int(texture.height)) - - texbuf.fill(0x00ffffff) - texbuf = texbuf.add_alpha(True,chr(0),chr(255),chr(255)) - texture.pixbuf = texbuf - - # copy each patch into the texture pixbuf - for patch in texture.patches: - - dest_x = max(0, patch.xoff) - dest_y = max(0, patch.yoff) - dest_height = min( - self.patch_pixbufs[patch.name].get_height(), - texbuf.get_height() - dest_y - ) - dest_width = min( - self.patch_pixbufs[patch.name].get_width(), - texbuf.get_width() - dest_x - ) - if patch.xoff < 0: - dest_width += patch.xoff - if patch.yoff < 0: - dest_height += patch.yoff - offset_x = patch.xoff - offset_y = patch.yoff - pb = self.patch_pixbufs[patch.name] - pb.composite( - texbuf, - dest_x, dest_y, dest_width, dest_height, - offset_x, offset_y, 1, 1, # scale - gtk.gdk.INTERP_NEAREST, 255) - - def set_texture(self, name): - # parse the example texture, fetch the width,height; - # create Patch objects and stuff them into a list - texture = self.textures[name] - image = self.wTree.get_widget("orig_texture") - - if not texture.pixbuf: - self.init_texture_pixbuf(texture) - - image.set_from_pixbuf(texture.pixbuf) - self.scale_up_texture(image) - - # now for the wip side - wip_image = self.wTree.get_widget("wip_texture") - wip_texture = self.wip_textures[name] - if not wip_texture.pixbuf: - self.init_texture_pixbuf(wip_texture) - wip_image.set_from_pixbuf(wip_texture.pixbuf) - self.scale_up_texture(wip_image) - - - def scale_up_texture(self, image): - # scale the texture up - pixbuf = image.get_pixbuf() - if pixbuf: - scale = 2 - image.set_from_pixbuf(pixbuf.scale_simple( - pixbuf.get_width() * scale, - pixbuf.get_height() * scale, - gtk.gdk.INTERP_NEAREST - )) - - def patch_list_key(self,treeview,event): - """handle key press events on the patch list""" - if gtk.keysyms.Delete == event.keyval: - offs,col = treeview.get_cursor() - # remove from data structure - texture = self.wip_textures[self.current_texture()] - del texture.patches[offs[0]] - # remove from UI - model = treeview.get_model() - iter = model.get_iter(offs) - model.remove(iter) - # redraw RHS - self.init_texture_pixbuf(texture) - wip_image = self.wTree.get_widget("wip_texture") - wip_image.set_from_pixbuf(texture.pixbuf) - self.scale_up_texture(wip_image) - - def cell_callback(self, cellrenderertext, path, new_text): - """cell edited in patch list""" - current_texture = self.wip_textures[self.current_texture()] - path = int(path) - new_text = int(new_text) - if self.cellrendererwidth == cellrenderertext: - current_texture.patches[path].xoff = new_text - column = 1 - else: - current_texture.patches[path].yoff = new_text - column = 2 - self.init_texture_pixbuf(current_texture) - wip_image = self.wTree.get_widget("wip_texture") - wip_image.set_from_pixbuf(current_texture.pixbuf) - self.scale_up_texture(wip_image) - - # update the model now - selected_patches = self.wTree.get_widget("selected_patches") - model = selected_patches.get_model() - iter = model.get_iter(path) - model.set_value(iter, column, new_text) - - - def patch_list_reordered(self,treemodel,path,iter,new_order): - print "ZOMG" - - - def __init__(self): - self.gladefile = "cleanroom.glade" - self.wTree = gtk.glade.XML(self.gladefile,"window1") - self.image1 = self.wTree.get_widget("orig_texture") - - window = self.wTree.get_widget("window1") - window.resize(1024,768) - - self.patch_pixbufs = {} - - # read in the IWAD texture1 lump and populate our LHS list - self.parse_texture_file("../../textures/combined.txt") - lhs = self.wTree.get_widget("texture_list") - treestore = gtk.TreeStore(str) - tmp_texnames = self.textures.keys() - tmp_texnames.sort() - for name in tmp_texnames: - if len(self.textures[name].patches) > 1: - treestore.append(None, [ name ]) - column = gtk.TreeViewColumn('Texture name ') - lhs.set_model(treestore) - lhs.append_column(column) - cell = gtk.CellRendererText() - column.pack_start(cell, False) - column.add_attribute(cell, "text", 0) - lhs.connect("cursor-changed", self.lhs_callback) - - # prepare the patch list - patch_list = self.wTree.get_widget("selected_patches") - treestore = gtk.TreeStore(str,int,int) - column = gtk.TreeViewColumn('Patch name') - patch_list.set_model(treestore) - patch_list.append_column(column) - cell = gtk.CellRendererText() - column.pack_start(cell, False) - column.add_attribute(cell, "text", 0) - - cell = gtk.CellRendererText() - self.cellrendererwidth = cell - cell.set_property("editable", True) - cell.connect("edited", self.cell_callback) - column = gtk.TreeViewColumn('X offset') - patch_list.append_column(column) - column.pack_start(cell, False) - column.add_attribute(cell, "text", 1) - - cell = gtk.CellRendererText() - cell.set_property("editable", True) - cell.connect("edited", self.cell_callback) - column = gtk.TreeViewColumn('Y offset') - patch_list.append_column(column) - column.pack_start(cell, False) - column.add_attribute(cell, "text", 2) - - patch_list.connect("key-press-event", self.patch_list_key) - patch_list.set_reorderable(True) - treestore.connect("rows-reordered", self.patch_list_reordered) - - # populate the RHS list with patch names - # yes, I learnt perl once. - patches = {} - for texture in self.textures.values(): - for patch in texture.patches: - patches[patch.name] = 1 - patches = patches.keys() - rhs = self.wTree.get_widget("all_patch_tree") - treestore = gtk.TreeStore(str) - patches.sort() - for name in patches: - treestore.append(None, [ name ]) - column = gtk.TreeViewColumn('Patch name') - rhs.set_model(treestore) - rhs.append_column(column) - cell = gtk.CellRendererText() - column.pack_start(cell, False) - column.add_attribute(cell, "text", 0) - rhs.connect("cursor-changed", self.rhs_cursor_cb) - rhs.connect("row-activated", self.rhs_select_cb) - - image = self.wTree.get_widget("current_patch") - image.drag_source_set(gtk.gdk.BUTTON1_MASK, [('text/plain', 0, - 80)], 0) # 80 = target type text - image.connect("drag_data_get", self.rhs_drag_data_get) - - self.set_up_progressbar() - - self.wTree.get_widget("window1").connect("destroy", gtk.main_quit) - self.wTree.get_widget("quit_menu_item").connect("activate", gtk.main_quit) - self.wTree.get_widget("saveas_menu_item").connect("activate", self.saveas_activated) - self.wTree.get_widget("save_menu_item").connect("activate", self.save_activated) - self.wTree.get_widget("open_menu_item").connect("activate", self.open_activated) - - # select the top-most texture - lhs.set_cursor( (0,) , None, False) - - def set_up_progressbar(self): - """We've "done" any textures in wip set with >0 patches""" - bar = self.wTree.get_widget("progressbar1") - done = len(filter(lambda x: len(x.patches) > 0, self.wip_textures.values())) - bar.set_fraction(float(done) / len(self.textures)) - bar.set_text("%d/%d" % (done, len(self.textures))) - - def saveas_activated(self, arg): - filesel = gtk.FileChooserDialog(action=gtk.FILE_CHOOSER_ACTION_SAVE, - buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_SAVE, gtk.RESPONSE_OK)) - if filesel.run() == gtk.RESPONSE_OK: - self.filename = filesel.get_filename() - filesel.destroy() - self.save_activated(arg) - - def save_activated(self, arg): - if not hasattr(self, "filename"): - self.saveas_activated(arg) - saveme = self.wip_textures.values() - saveme.sort(lambda a,b: cmp(a.name,b.name)) - writetome = open(self.filename,"w") - writetome.write("".join(map(str,saveme))) - writetome.close() - - def open_activated(self,arg): - filesel = \ - gtk.FileChooserDialog(action=gtk.FILE_CHOOSER_ACTION_OPEN, - buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OPEN, gtk.RESPONSE_OK)) - if filesel.run() == gtk.RESPONSE_OK: - self.filename = filesel.get_filename() - filesel.destroy() - print self.filename - - texture1 = file(self.filename, "r").read() - self.wip_textures = {} - current = None - for line in texture1.split("\n"): - if len(line) == 0 or line[0] == ";" or line[0] == "#": - continue - elif line[0] == "*" and current: - junk,name,y,x= line.split() - current.patches.append(Patch(name,int(x),int(y))) - else: - line = line.split() - current = Texture(line[0],line[1],line[2]) - self.wip_textures[line[0]] = current - self.set_up_progressbar() - -if __name__ == "__main__": - hwg = HellowWorldGTK() - gtk.main()