From 0ba0dbaa84cf141dbd2cff56499f91ec6cfc188f Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Thu, 24 Dec 2015 13:31:57 +0100 Subject: [PATCH] tools: Remove cleanroom script. This was written by Jon a long time ago to do a "clean room" recreation of the Freedoom texture lumps. I'm not sure it was ever actually finished or the result used, but regardless, it doesn't seem necessary to keep the script around any more. --- tools/cleanroom/TODO | 13 - tools/cleanroom/cleanroom.glade | 287 ------ tools/cleanroom/cleanroom.py | 42 - tools/cleanroom/create_new.py | 54 -- tools/cleanroom/doom.py | 26 - tools/cleanroom/images.py | 90 -- tools/cleanroom/jons_attempt.txt | 1429 ------------------------------ tools/cleanroom/sw1_sw2.py | 63 -- tools/cleanroom/tmp_cleanui.py | 362 -------- 9 files changed, 2366 deletions(-) delete mode 100644 tools/cleanroom/TODO delete mode 100644 tools/cleanroom/cleanroom.glade delete mode 100644 tools/cleanroom/cleanroom.py delete mode 100644 tools/cleanroom/create_new.py delete mode 100644 tools/cleanroom/doom.py delete mode 100644 tools/cleanroom/images.py delete mode 100644 tools/cleanroom/jons_attempt.txt delete mode 100644 tools/cleanroom/sw1_sw2.py delete mode 100644 tools/cleanroom/tmp_cleanui.py 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()